APP

MOSFET IV Characterization Visualizer

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).

Demo walkthrough — sample data, saturation boundary, log scale, device overlay

Install this skill

Paste this into Claude Code (VS Code panel, Adom editor, or terminal) to install:

Fetch the Adom Wiki app "MOSFET IV Characterization Visualizer" (slug: mosfet-iv-visualizer) at https://wiki-ufypy5dpx93o.adom.cloud/wiki/apps/mosfet-iv-visualizer. This is a knowledge-only app — no binary. Call GET https://wiki-ufypy5dpx93o.adom.cloud/api/v1/pages/mosfet-iv-visualizer, extract the .page.skill_source field, and save it to ~/.claude/skills/mosfet-iv-visualizer/SKILL.md (create the directory). Then confirm by showing the first 10 lines of the saved file.

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

Installation

Clone from GitHub and start the server. Idempotent — safe to run multiple times.

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

{
  "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

PromptWhat 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

KeyAction
LToggle linear/log scale
KCompute/clear saturation curve
SLoad sample data
RReset 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

Screenshots

AI Skill — how Claude uses this app

Edit AI Skill

name: mosfet-visualizer description: Use when the user wants to visualize MOSFET IV curves, plot drain current vs drain-to-source voltage, characterize MOSFETs, overlay IV data from multiple devices, compare MOSFET devices, or analyze MOSFET parameters (Vth, Rds_on, gm). Also use when installing the MOSFET visualizer. Trigger phrases include "MOSFET IV", "IV curves", "characterize MOSFET", "drain current", "Vds vs Id", "plot MOSFET", "MOSFET visualizer", "saturation boundary", "knee point", "curve tracer data", "install mosfet visualizer".

MOSFET IV Characterization Visualizer

Interactive web-based visualizer for MOSFET IV curves (Id vs Vds). Supports multiple Vgs sweeps, device overlay, saturation boundary detection, and real-time API control.

Source: https://github.com/adom-inc/mosfet-visualizer Port: 8778

Installation

Run this block to install or update. It's idempotent — safe to run multiple times.

INSTALL_DIR="/home/adom/mosfet-visualizer"

if [ -d "$INSTALL_DIR/.git" ]; then
  echo "[mosfet-visualizer] Updating..."
  cd "$INSTALL_DIR" && git pull origin main 2>&1
else
  echo "[mosfet-visualizer] Installing..."
  git clone https://github.com/adom-inc/mosfet-visualizer.git "$INSTALL_DIR" 2>&1
fi

cd "$INSTALL_DIR" && npm install --production 2>&1 | tail -3

# Start the server (idempotent)
bash "$INSTALL_DIR/start-mosfet-visualizer.sh"

Verify Installation

curl -sf http://127.0.0.1:8778/health && echo " OK" || echo " NOT RUNNING"

Open the Visualizer

Open a Web View tab pointing to /proxy/8778/viz:

# Get a leaf pane ID
PANE_ID=$(adom-cli hydrogen workspace get 2>/dev/null | python3 -c "
import json,sys
layout = json.load(sys.stdin)
def find_leaf(node):
    if node.get('type') == 'leaf': return node['id']
    if node.get('type') == 'split': return find_leaf(node.get('second', node.get('first', {})))
    return None
print(find_leaf(layout['root']))
")

PROXY_BASE=$(echo "$VSCODE_PROXY_URI" | sed 's|{{port}}.*||')

adom-cli hydrogen workspace add-tab \
  --panel-id "$PANE_ID" \
  --panel-type "adom/a1b2c3d4-0031-4000-a000-000000000031" \
  --display-name "MOSFET IV Visualizer" \
  --display-icon "mdi:chart-line" \
  --initial-state "{\"url\":\"${PROXY_BASE}8778/viz\"}"

Load Data

Sample data:

curl -s -X POST http://127.0.0.1:8778/ \
  -H 'Content-Type: application/json' \
  -d '{"action":"sample"}'

CSV from curve tracer:

CSV=$(cat /path/to/sweeps.csv)
python3 -c "
import json, sys
csv = sys.stdin.read()
print(json.dumps({'action':'plot_csv','device':{'id':'DUT1','name':'My MOSFET'},'csv':csv,'filename':'sweeps.csv'}))
" <<< "$CSV" | curl -s -X POST http://127.0.0.1:8778/ -H 'Content-Type: application/json' -d @-

JSON sweeps:

{
  "action": "plot",
  "device": { "id": "IRF540N-s1", "name": "IRF540N", "type": "NMOS" },
  "sweeps": [
    { "vgs": 4.0, "data": [{ "vds": 0, "id": 0 }, { "vds": 1, "id": 0.25 }, { "vds": 5, "id": 0.5 }] }
  ]
}

API Actions (POST / with JSON body)

ActionDescription
plotAdd device with JSON sweeps
plot_csvAdd device from curve tracer CSV
overlayAdd multiple devices at once
sampleLoad built-in demo data
clearClear all data
removeRemove device by id
toggle_deviceToggle device visibility (eyeball)
toggle_sweepToggle individual sweep visibility
compute_saturationCompute and show saturation boundary line
clear_saturationHide saturation boundary
set_configChange settings (e.g., {"scale":"log"})
analyzeExtract Vth, Rds(on) from data

All actions update the frontend in real-time via WebSocket — no page refresh needed.

CSV Format

Column triplets per sweep: VN (V), IN (A), RN (Ohm) where N is 1-indexed:

V1 (V),I1 (A),R1 (Ohm),V2 (V),I2 (A),R2 (Ohm),...
38.32,0.0009,...

Optionally pass vgs_values: [0, 1, 2, ...] to label sweeps with their Vgs voltages.

Real-Time Control

The server has a WebSocket at ws://127.0.0.1:8778/ws. Claude can control the visualizer live:

# Toggle a device's visibility
curl -s -X POST http://127.0.0.1:8778/ -H 'Content-Type: application/json' \
  -d '{"action":"toggle_device","id":"DUT1"}'

# Compute saturation boundary
curl -s -X POST http://127.0.0.1:8778/ -H 'Content-Type: application/json' \
  -d '{"action":"compute_saturation"}'

# Switch to log scale
curl -s -X POST http://127.0.0.1:8778/ -H 'Content-Type: application/json' \
  -d '{"action":"set_config","scale":"log"}'

Shot Log

Monitor API activity: curl http://127.0.0.1:8778/shotlog?tail=10

Example AI Prompts

  • "Plot my MOSFET IV curves from this CSV file"
  • "Show me the MOSFET visualizer with sample data"
  • "Overlay my BSS138 data on top of the IRF540N"
  • "Compute the saturation boundary curve"
  • "What's the threshold voltage of this MOSFET?"
  • "Switch to log scale to see subthreshold behavior"
  • "Export the IV data as CSV"
  • "Install the MOSFET IV visualizer"

Keyboard Shortcuts

KeyAction
LToggle linear/log scale
KCompute/clear saturation curve
SLoad sample data
RReset zoom
EscClear readout

Updating

cd /home/adom/mosfet-visualizer && git pull origin main && npm install --production
# Restart: kill old process, start new
pkill -f 'node.*mosfet-visualizer.*server.js' 2>/dev/null; bash start-mosfet-visualizer.sh

Sub-Skills
?
What are Sub-Skills?

Sub-skills are community-contributed AI skill extensions for this component. They teach AI assistants about specific tools, configurators, or workflows.

Examples:

  • A manufacturer’s configuration tool for a motor controller
  • A community-written design guide for an amplifier circuit
  • An automated test/validation script for a sensor module

How to add one: Click Add Sub-Skill, provide the URL to your skill and a brief description. Submissions are reviewed by the Adom team before going live.

No sub-skills yet. Be the first to contribute one!