app
Adom Fields
Public Made by Adomby adom
Adom Fields: where the current and the heat go on your board.
← Commit history
Publish 0.1.0
13 files changed
+174
SKILL.mdadded+54@@ -0,0 +1,54 @@+---+name: adom-fields+description: Solve where the current and the heat go on a KiCad board and show it on the board in 3D (Adom Fields): current density per loaded net, heat flow in each copper layer with the vias, temperature over the board in still and moving air, the nets by what they carry, the hot parts by their rise, the issues with the fix; a server the AI drives over a live channel (view, select, issue, toast, tour) for the human to explore and for the AI Flow video. Trigger words: adom-fields, fields, current density, heat map, thermal analysis, copper pour analysis, thermal vias, where does the current go, hot tab, temperature rise, IR drop, current neck, heat flow.+---++# Adom Fields++One binary, three commands, one app. The AI does the analysis; the human explores the board; the AI drives the same view on camera.++## Solve++```+adom-fields analyze --board <board.kicad_pcb> --spec <spec.json> --out fields+```++The board must be saved with its zones filled (the filled polygons are the copper). The spec is the AI Flow spec: `loads` (net: amps, maxRiseC), `hot` (ref: watts, tabNet), `copperUm`, `hotMaxRiseC`, `thermalVias` (pad, count), optional `stackupMm` (three dielectric thicknesses). About two minutes for a 65 x 75 mm four-layer board at the default 0.2 mm cell; `--pitch 0.1` is four times longer and sharper.++What comes out, in `fields/fields.json` and `fields/tex/`:+- `nets`, ordered by amps then by peak density: peak A/mm² and where, the layers, the copper mm², the Joule loss, the vias.+- `chips`, hottest first: the rise at the tab in still and moving air, and where its watts go within 3 mm (along its layer, down its vias, through the bare dielectric, to the air), with how many vias the spec asked for.+- `issues`: `current-neck` (a loaded net over 60 A/mm², about what IPC-2221 allows at 35 µm for 10 °C), `tab-rise` (over the budget), `thermal-vias` (fewer than the spec asks), each with `at`, `layer`, `net`, `reference` and a `fix`.+- textures per layer: `J-<layer>.png` (all nets), `J-<net>-<layer>.png`, `q-<layer>.png` (heat flow, W/mm), `T-<layer>.png` and `Tm-<layer>.png` (rise, still and moving air), `copper-<layer>.png`, plus `.raw.png` 16-bit values for the readout.++Terminals per net: the wire pads and connectors (MC*, J*, P*) on one side; on the other the spec's hot parts on the net (a FET's tab and its source pins both count), else the Q and U parts, else the parts with real pads, each part's share by its pad area. A net with neither is skipped and says so.++## Serve and show++```+adom-fields serve --fields fields --port 8874 &+```++Open `https://<slug>.adom.cloud/proxy/8874/` in pup, the browser, or a Hydrogen webview (never localhost from outside the container). The app: a 44 px header, the board in 3D (Babylon, gradient ground, zoom to the cursor), the field painted on the picked layer with the other layers faded, the vias as dots, the hot parts labelled with their rise, the legend, the readout under the cursor, the nets and hot parts on the left, the issues and the method on the right. Phone: the two side panels open from the header buttons.++## Drive it (the AI's wheel)++```+adom-fields ui view --quantity current|heat|temperature [--layer F.Cu|In1.Cu|In2.Cu|B.Cu] [--camera top|iso|bottom|fit] [--air still|moving]+adom-fields ui select --net +VBAT # one net lit alone (current)+adom-fields ui select --chip Q3 # fly to a hot part, heat view+adom-fields ui issue --index 0 # fly to an issue+adom-fields ui toast "20 A through a 1.5 mm neck"+adom-fields ui state | console+adom-fields tour --pause-ms 2500 # the scripted walkthrough: nets by relevance, each field, the hot parts, the issues+```++The server: `GET /state`, `GET /console` (the UI's log), `GET /events` (SSE), `GET /fields.json`, `POST /ui/view|select|issue|toast`. State lives on the server; the UI, the CLI and the AI see the same view.++## In the AI Flow video++Record the pup window (Adom Bridge `desktop_record_window_start` on it) while `adom-fields tour` runs: the clip is the fields step, the toasts are the captions, the AI's own analysis on the board in 3D.++## Honest limits (0.1)++DC only (no skin effect, no switching loss on the copper); one copper thickness for all layers; the 1.6 mm stack is 0.2 / 1.065 / 0.2 mm unless `stackupMm` says otherwise; convection is a flat coefficient on both faces (10 or 25 W/m²K), no heatsink, no enclosure, no radiation; the tab watts come from the spec, not from a switching model. It is a screen that finds the necks and the starved tabs, and shows them; it is not a datasheet number.
bin/adom-fieldsadded⋯ 1 unchanged line ⋯
docs/hero.pngadded⋯ 1 unchanged line ⋯
docs/screenshots/current-top.pngadded⋯ 1 unchanged line ⋯
docs/screenshots/heat-iso.pngadded⋯ 1 unchanged line ⋯
docs/screenshots/issue-zoom.pngadded⋯ 1 unchanged line ⋯
docs/screenshots/temperature-iso.pngadded⋯ 1 unchanged line ⋯
install.shadded+7@@ -0,0 +1,7 @@+#!/bin/bash+set -e+HERE="$(cd "$(dirname "$0")" && pwd)"+mkdir -p "$HOME/.local/bin" "$HOME/.claude/skills/adom-fields"+cp "$HERE/bin/adom-fields" "$HOME/.local/bin/adom-fields" && chmod +x "$HOME/.local/bin/adom-fields"+cp "$HERE/skills/adom-fields/SKILL.md" "$HOME/.claude/skills/adom-fields/SKILL.md"+echo "OK: adom-fields installed at ~/.local/bin/adom-fields. Run 'adom-fields --version'."
package.jsonadded+57@@ -0,0 +1,57 @@+{+ "slug": "adom-fields",+ "type": "app",+ "version": "0.1.0",+ "title": "Adom Fields",+ "brief": "Adom Fields: where the current and the heat go on your board.",+ "summary": "Current density on the copper, heat flow through the pours and the vias, and the temperature over the board, solved from the board file itself and shown on the board in 3D. The AI does the analysis and drives the view; the human orbits, zooms, hovers for the number under the cursor, and reads the nets by what they carry and the issues by what to fix. A step in Adom's AI Flow: the walkthrough goes into the video.",+ "description": "Adom Fields reads a KiCad board (its filled polygons, tracks, pads and vias) and a spec (which nets carry what current, which parts dissipate what) and solves three fields on it: the DC current density of every loaded net between its terminals; the heat flow in each copper layer, coupled through the dielectric and every via barrel, from the hot tabs and from the Joule loss of that current; and the temperature rise over the whole board in still and in moving air. Then it serves the board in 3D: the fields painted on each layer, the vias drawn, the hot parts labelled, the nets ordered by what they carry, the issues (a neck where the current squeezes, a tab over its rise budget, a chip missing its thermal vias) with the fix, and the number under the cursor. Everything the UI does a command does, over a live channel, so the AI shows the board off on camera.",+ "category": "Developer Tools",+ "tags": [+ "kicad",+ "pcb",+ "current density",+ "thermal",+ "heat",+ "copper pours",+ "vias",+ "3d",+ "analysis",+ "eda"+ ],+ "status": "live",+ "discovery_pitch": "Solve where the current and the heat go on a KiCad board and show it on the board in 3D: current density per net, heat flow per layer with the vias, temperature over the board, the nets by what they carry, the issues with the fix. One command to solve, one to serve, one to drive it on camera.",+ "discovery_triggers": [+ "adom-fields",+ "current density",+ "heat map of a board",+ "thermal analysis of a pcb",+ "copper pour analysis",+ "thermal vias",+ "where does the current go",+ "hot mosfet tab",+ "temperature rise of a board",+ "IR drop",+ "current neck",+ "heat flow in copper",+ "fields"+ ],+ "sample_prompts": [+ "solve the fields of this board and show me where the 20 A goes",+ "which mosfet tab runs hottest and why",+ "walk me through the copper pours with the heat on them",+ "is any track carrying too much current"+ ],+ "hero": {+ "path": "docs/hero.png"+ },+ "bundled": true,+ "scripts": {+ "install": "./install.sh",+ "uninstall": "./uninstall.sh"+ },+ "install": {+ "binary": "bin/adom-fields"+ },+ "dependencies": {}+}
screenshots/hero.pngadded⋯ 1 unchanged line ⋯
screenshots/showcase.pngadded⋯ 1 unchanged line ⋯
skills/adom-fields/SKILL.mdadded+54@@ -0,0 +1,54 @@+---+name: adom-fields+description: Solve where the current and the heat go on a KiCad board and show it on the board in 3D (Adom Fields): current density per loaded net, heat flow in each copper layer with the vias, temperature over the board in still and moving air, the nets by what they carry, the hot parts by their rise, the issues with the fix; a server the AI drives over a live channel (view, select, issue, toast, tour) for the human to explore and for the AI Flow video. Trigger words: adom-fields, fields, current density, heat map, thermal analysis, copper pour analysis, thermal vias, where does the current go, hot tab, temperature rise, IR drop, current neck, heat flow.+---++# Adom Fields++One binary, three commands, one app. The AI does the analysis; the human explores the board; the AI drives the same view on camera.++## Solve++```+adom-fields analyze --board <board.kicad_pcb> --spec <spec.json> --out fields+```++The board must be saved with its zones filled (the filled polygons are the copper). The spec is the AI Flow spec: `loads` (net: amps, maxRiseC), `hot` (ref: watts, tabNet), `copperUm`, `hotMaxRiseC`, `thermalVias` (pad, count), optional `stackupMm` (three dielectric thicknesses). About two minutes for a 65 x 75 mm four-layer board at the default 0.2 mm cell; `--pitch 0.1` is four times longer and sharper.++What comes out, in `fields/fields.json` and `fields/tex/`:+- `nets`, ordered by amps then by peak density: peak A/mm² and where, the layers, the copper mm², the Joule loss, the vias.+- `chips`, hottest first: the rise at the tab in still and moving air, and where its watts go within 3 mm (along its layer, down its vias, through the bare dielectric, to the air), with how many vias the spec asked for.+- `issues`: `current-neck` (a loaded net over 60 A/mm², about what IPC-2221 allows at 35 µm for 10 °C), `tab-rise` (over the budget), `thermal-vias` (fewer than the spec asks), each with `at`, `layer`, `net`, `reference` and a `fix`.+- textures per layer: `J-<layer>.png` (all nets), `J-<net>-<layer>.png`, `q-<layer>.png` (heat flow, W/mm), `T-<layer>.png` and `Tm-<layer>.png` (rise, still and moving air), `copper-<layer>.png`, plus `.raw.png` 16-bit values for the readout.++Terminals per net: the wire pads and connectors (MC*, J*, P*) on one side; on the other the spec's hot parts on the net (a FET's tab and its source pins both count), else the Q and U parts, else the parts with real pads, each part's share by its pad area. A net with neither is skipped and says so.++## Serve and show++```+adom-fields serve --fields fields --port 8874 &+```++Open `https://<slug>.adom.cloud/proxy/8874/` in pup, the browser, or a Hydrogen webview (never localhost from outside the container). The app: a 44 px header, the board in 3D (Babylon, gradient ground, zoom to the cursor), the field painted on the picked layer with the other layers faded, the vias as dots, the hot parts labelled with their rise, the legend, the readout under the cursor, the nets and hot parts on the left, the issues and the method on the right. Phone: the two side panels open from the header buttons.++## Drive it (the AI's wheel)++```+adom-fields ui view --quantity current|heat|temperature [--layer F.Cu|In1.Cu|In2.Cu|B.Cu] [--camera top|iso|bottom|fit] [--air still|moving]+adom-fields ui select --net +VBAT # one net lit alone (current)+adom-fields ui select --chip Q3 # fly to a hot part, heat view+adom-fields ui issue --index 0 # fly to an issue+adom-fields ui toast "20 A through a 1.5 mm neck"+adom-fields ui state | console+adom-fields tour --pause-ms 2500 # the scripted walkthrough: nets by relevance, each field, the hot parts, the issues+```++The server: `GET /state`, `GET /console` (the UI's log), `GET /events` (SSE), `GET /fields.json`, `POST /ui/view|select|issue|toast`. State lives on the server; the UI, the CLI and the AI see the same view.++## In the AI Flow video++Record the pup window (Adom Bridge `desktop_record_window_start` on it) while `adom-fields tour` runs: the clip is the fields step, the toasts are the captions, the AI's own analysis on the board in 3D.++## Honest limits (0.1)++DC only (no skin effect, no switching loss on the copper); one copper thickness for all layers; the 1.6 mm stack is 0.2 / 1.065 / 0.2 mm unless `stackupMm` says otherwise; convection is a flat coefficient on both faces (10 or 25 W/m²K), no heatsink, no enclosure, no radiation; the tab watts come from the spec, not from a switching model. It is a screen that finds the necks and the starved tabs, and shows them; it is not a datasheet number.
uninstall.shadded+2@@ -0,0 +1,2 @@+#!/bin/bash+rm -f "$HOME/.local/bin/adom-fields"; rm -rf "$HOME/.claude/skills/adom-fields"; echo "OK: adom-fields removed"