← Commit history

Initial commit: app/mosfet-iv-visualizer

Kyle Bergstedt ·f216507981 ·4mo ago
2 files changed +119
README.mdadded+86
@@ -0,0 +1,86 @@+# MOSFET IV Characterization Visualizer++Interactive web-based visualizer for MOSFET IV curves. Plot Drain Current (Id) vs Drain-to-Source Voltage (Vds) with multiple gate voltage (Vgs) sweeps, overlay data from different devices, compute saturation boundaries, and extract device parameters.++**Source:** [adom-inc/mosfet-visualizer](https://github.com/adom-inc/mosfet-visualizer)++## Installation++Clone from GitHub and start the server. Idempotent — safe to run multiple times.++```bash+INSTALL_DIR="/home/adom/mosfet-visualizer"++if [ -d "$INSTALL_DIR/.git" ]; then+  echo "[mosfet-visualizer] Updating..."+  cd "$INSTALL_DIR" && git pull origin main+else+  echo "[mosfet-visualizer] Installing..."+  git clone https://github.com/adom-inc/mosfet-visualizer.git "$INSTALL_DIR"+fi++cd "$INSTALL_DIR" && npm install --production+bash "$INSTALL_DIR/start-mosfet-visualizer.sh"+```++Verify: `curl -sf http://127.0.0.1:8778/health`++The service auto-starts via `service.json` if placed in `$GALLIA_DIR/services/`. No CLI binary needed — Claude uses the HTTP API directly.++## Features++- **Multiple Vgs sweep curves** with per-sweep color coding+- **Device overlay** — compare multiple MOSFETs on the same chart+- **Custom legend** — eyeball toggle per device and per sweep, sweep count badges+- **Saturation boundary detection** — compute the linear/saturation region boundary via knee detection algorithm+- **Parameter extraction** — threshold voltage (Vth), on-resistance (Rds_on)+- **Linear/Log scale toggle** — essential for subthreshold characterization+- **Crosshair cursor** with hover tooltip showing exact Vds, Id, Vgs values+- **Export** — PNG, SVG, CSV, JSON+- **CSV import** — drag-and-drop curve tracer CSV files directly onto the chart+- **Real-time API control** — WebSocket pushes all state changes to the frontend instantly+- **Shot log** — monitor all API calls with timestamps and durations++## Data Formats++### JSON Sweeps+```json+{+  "action": "plot",+  "device": { "id": "IRF540N", "name": "IRF540N", "type": "NMOS" },+  "sweeps": [+    { "vgs": 4.0, "data": [{ "vds": 0, "id": 0 }, { "vds": 5, "id": 0.5 }] }+  ]+}+```++### Curve Tracer CSV+Column triplets per sweep: `VN (V), IN (A), RN (Ohm)` — auto-detected from headers.++## AI Prompts++| Prompt | What it does |+|--------|-------------|+| "Install the MOSFET IV visualizer" | Clones repo, installs deps, starts server |+| "Plot my MOSFET IV curves from this CSV file" | Reads CSV, sends to visualizer |+| "Show me the MOSFET visualizer with sample data" | Starts server, loads demo, opens panel |+| "Compute the saturation boundary curve" | Runs knee finder, draws red dashed parabola |+| "What's the threshold voltage?" | Analyzes data, extracts Vth |+| "Switch to log scale" | Toggles Y-axis to log10 |+| "Overlay my BSS138 data on the IRF540N" | Adds second device for comparison |++## Keyboard Shortcuts++| Key | Action |+|-----|--------|+| L | Toggle linear/log scale |+| K | Compute/clear saturation curve |+| S | Load sample data |+| R | Reset zoom |++## Architecture++- **Server:** Node.js HTTP + WebSocket (port 8778)+- **Frontend:** Self-contained HTML with Plotly.js+- **Brand:** Adom dark theme (teal #00b8b0)+- **No CLI needed** — Claude reads the skill and uses `curl` to control the API
page.jsonadded+33
@@ -0,0 +1,33 @@+{+  "schema_version": 1,+  "type": "app",+  "slug": "mosfet-iv-visualizer",+  "title": "MOSFET IV Characterization Visualizer",+  "brief": "Interactive web-based visualizer for MOSFET IV curves (Id vs Vds). Plot multiple Vgs sweeps, overlay devices, compute saturation boundaries, and extract Vth/Rds(on).",+  "version": "0.1.0",+  "tags": [],+  "license": "MIT",+  "install": {+    "binary_name": "mosfet-iv-visualizer",+    "install_dir": "",+    "install_hint": "",+    "version_cmd": ""+  },+  "readme": "# MOSFET IV Characterization Visualizer\n\nInteractive web-based visualizer for MOSFET IV curves. Plot Drain Current (Id) vs Drain-to-Source Voltage (Vds) with multiple gate voltage (Vgs) sweeps, overlay data from different devices, compute saturation boundaries, and extract device parameters.\n\n**Source:** [adom-inc/mosfet-visualizer](https://github.com/adom-inc/mosfet-visualizer)\n\n## Installation\n\nClone from GitHub and start the server. Idempotent — safe to run multiple times.\n\n```bash\nINSTALL_DIR=\"/home/adom/mosfet-visualizer\"\n\nif [ -d \"$INSTALL_DIR/.git\" ]; then\n  echo \"[mosfet-visualizer] Updating...\"\n  cd \"$INSTALL_DIR\" && git pull origin main\nelse\n  echo \"[mosfet-visualizer] Installing...\"\n  git clone https://github.com/adom-inc/mosfet-visualizer.git \"$INSTALL_DIR\"\nfi\n\ncd \"$INSTALL_DIR\" && npm install --production\nbash \"$INSTALL_DIR/start-mosfet-visualizer.sh\"\n```\n\nVerify: `curl -sf http://127.0.0.1:8778/health`\n\nThe service auto-starts via `service.json` if placed in `$GALLIA_DIR/services/`. No CLI binary needed — Claude uses the HTTP API directly.\n\n## Features\n\n- **Multiple Vgs sweep curves** with per-sweep color coding\n- **Device overlay** — compare multiple MOSFETs on the same chart\n- **Custom legend** — eyeball toggle per device and per sweep, sweep count badges\n- **Saturation boundary detection** — compute the linear/saturation region boundary via knee detection algorithm\n- **Parameter extraction** — threshold voltage (Vth), on-resistance (Rds_on)\n- **Linear/Log scale toggle** — essential for subthreshold characterization\n- **Crosshair cursor** with hover tooltip showing exact Vds, Id, Vgs values\n- **Export** — PNG, SVG, CSV, JSON\n- **CSV import** — drag-and-drop curve tracer CSV files directly onto the chart\n- **Real-time API control** — WebSocket pushes all state changes to the frontend instantly\n- **Shot log** — monitor all API calls with timestamps and durations\n\n## Data Formats\n\n### JSON Sweeps\n```json\n{\n  \"action\": \"plot\",\n  \"device\": { \"id\": \"IRF540N\", \"name\": \"IRF540N\", \"type\": \"NMOS\" },\n  \"sweeps\": [\n    { \"vgs\": 4.0, \"data\": [{ \"vds\": 0, \"id\": 0 }, { \"vds\": 5, \"id\": 0.5 }] }\n  ]\n}\n```\n\n### Curve Tracer CSV\nColumn triplets per sweep: `VN (V), IN (A), RN (Ohm)` — auto-detected from headers.\n\n## AI Prompts\n\n| Prompt | What it does |\n|--------|-------------|\n| \"Install the MOSFET IV visualizer\" | Clones repo, installs deps, starts server |\n| \"Plot my MOSFET IV curves from this CSV file\" | Reads CSV, sends to visualizer |\n| \"Show me the MOSFET visualizer with sample data\" | Starts server, loads demo, opens panel |\n| \"Compute the saturation boundary curve\" | Runs knee finder, draws red dashed parabola |\n| \"What's the threshold voltage?\" | Analyzes data, extracts Vth |\n| \"Switch to log scale\" | Toggles Y-axis to log10 |\n| \"Overlay my BSS138 data on the IRF540N\" | Adds second device for comparison |\n\n## Keyboard Shortcuts\n\n| Key | Action |\n|-----|--------|\n| L | Toggle linear/log scale |\n| K | Compute/clear saturation curve |\n| S | Load sample data |\n| R | Reset zoom |\n\n## Architecture\n\n- **Server:** Node.js HTTP + WebSocket (port 8778)\n- **Frontend:** Self-contained HTML with Plotly.js\n- **Brand:** Adom dark theme (teal #00b8b0)\n- **No CLI needed** — Claude reads the skill and uses `curl` to control the API\n",+  "author": {+    "id": "695820315b5f1e4db2fcf602",+    "name": "Kyle Bergstedt",+    "email": "[email protected]"+  },+  "visibility": {+    "public": true+  },+  "hero": null,+  "sample_prompts": [],+  "discovery_triggers": [],+  "discovery_pitch": null,+  "metadata": {},+  "created_at": "2026-05-28T05:29:23.339Z",+  "updated_at": "2026-05-28T05:29:23.339Z",+  "skills": []+}\ No newline at end of file