master
John Lauer Product name out of hints, examples and docs (wiki #118); skills package 1.0.152 4c212c6 5d ago

Prompt for Codex Astra: route the placed ESC G431, on camera, and report the numbers

Paste everything below the line into Codex (GPT-6 Astra) in Hydrogen. Astra routes the placed ESC G431 board through the KiCad Bridge's IPC routing verbs, one net per commit, while the desktop records, and files a wiki issue with the video and the numbers so the take goes on the routing chart next to Freerouting's and Claude Fable 5.1's.


You are GPT-6 Astra in Codex inside Hydrogen. John wants a screen recording of you routing a real board: the Adom ESC G431 (STM32G431, DRV8300 gate driver, six MOSFET 3-phase bridge, TPSM365 buck, INA181 current sense, 64 x 74 mm, four copper layers), already placed, with no copper on it except two full-board planes: GND on In1.Cu and +3V3 on In2.Cu. You plan every trace yourself and land it through the bridge as native undo steps. Do all of it yourself; do not ask John to do any step you can do.

Read first:

  • adom-wiki pkg install adom/kicad-bridge, then the kicad-bridge SKILL.md sections "Live routing" and "Placement", and the kicad-autorouting skill. The routing verbs: kicad_routing_state {filePath} (revision, pads with net and layer, existing copper, netsRemaining), kicad_route_net {filePath, expectedRevision, net, points|paths, width, dryRun?} (one native undo step per call; points is a list of pad refs like "U5.12" and waypoints [x, y] or {"x":..,"y":..,"layer":"B.Cu"}, a layer change inside the list means a via there; paths is a list of such lists for a branched net; a clearance hit answers drc_rejected and nothing lands; a stale revision answers stale_board), kicad_remove_route {filePath, itemIds}, kicad_routing_validate {filePath} (KiCad DRC on the live board: errors, unconnected, violations). The demo notes: https://wiki.adom.inc/adom/kicad-bridge/files/docs/esc-demo.md

The fixture (public): curl -sLo esc-g431-fable-placed-planes.kicad_pcb https://wiki.adom.inc/api/pages/adom/kicad-bridge/files/demo/routing/esc/esc-g431-fable-placed-planes.kicad_pcb. Send it to the desktop with adom-bridge --ai-thread "<your thread name>" --target arav-rog send_files {"filePaths":["<container path>"],"dest":"C:/Users/arav/Downloads/adom-gate/esc-demo/astra-routing","reason":"..."}. Work on THAT copy only. It is Claude Fable 5.1's placement, so the three engines route the same board.

Rules that are not optional:

  1. Desktop arav-rog, Windows user arav. Confirm kicad_status says kicad-bridge 1.0.3 or newer and KiCad 10.0.1 or newer, and kicad_ipc_api {} says enabled. Pass --ai-thread on every call. If KiCad is running, kicad_close {} first and stop if it reports unsaved work.

  2. Never save the board, never touch any other board, never kill KiCad, do not install or run Freerouting (this take is the AI engine only; Freerouting gets its own take).

  3. Get the board on camera the way the placement take did: kicad_open_board {"filePath": B, "foreground": true, "foregroundReason": "John asked for a screen recording of Astra routing the ESC on the test box"}, maximize with desktop_ui_window {"hwnd": H, "action": "maximize"}, wait until the status bar no longer says "Loading Footprint Libraries", kicad_send_key {"hwnd": H, "key": "ctrl+home"}, and about 25 s after opening desktop_bring_to_front {"hwnd": H, "reason": "..."} once. Confirm with desktop_screenshot_screen {} that the board is visible and the canvas is not white. (On a user's own box you would instead switch KiCad to its fallback canvas and record the window in the background; that recipe is in the placement prompt on the page.)

  4. Read kicad_routing_state and plan the routing yourself. Rules of the board: track 0.25 mm and clearance 0.2 mm by default (read the file's setup and netclass blocks and use them), via 0.8 mm with a 0.4 mm drill; signal traces on F.Cu and B.Cu with vias between them; the three phase nets (/DRV_SHA, /DRV_SHB, /DRV_SHC), +VBAT and the MOSFET drain and source connections want 1.0 mm tracks where the space allows and at least 0.5 mm; GND and +3V3 pads are NOT routed as traces: each such SMD pad gets a short stub and a via to its plane (In1.Cu for GND, In2.Cu for +3V3), thru-hole pads already reach the planes. Keep the current sense path (shunt to INA) short and paired. Route the short nets first. A drc_rejected means your plan crossed something: change the plan, do not force it. Write your own router or plan by hand; do not copy Claude's plan (it is on the page).

  5. Record before the first commit: desktop_record_start {"monitor": 0, "audio": false, "fps": 30, "reason": "Astra routing the ESC G431", "maxDurationMs": 1800000}. Then land the plan with kicad_route_net, one net per call, passing the previous reply's revision as expectedRevision, about a second between calls so a viewer can follow. Do not speed anything up.

  6. Finish with kicad_routing_validate: it must report the errors and unconnected count truthfully; the take is done only at 0 new errors and 0 unconnected (the 13 inherited library errors on this board, six malformed MOSFET courtyards and seven U2 pad clearances, are known and do not count). Unconnected items are not a result, they are a failed take: do what a human does until the ratsnest is gone. Route the failed nets first, use smaller vias where the rules allow (0.6 mm with a 0.3 mm drill is legal here; keep 0.8/0.4 on +VBAT and the phase nets), rip up and reroute, and when the same pins keep failing go back to placement: move the parts that block the escapes (test points, indicator LEDs and pull-ups out of the 2.5 mm band beyond the MCU's pin rows, the crystal and its two capacitors next to the oscillator pins) with kicad_move_footprint, then route again. The kicad-place-route-loop skill in the kicad-bridge package is the checklist. Report every loop you made, and keep the clock running through all of it. Then desktop_record_stop, pull_file the MP4, check frames at the start, middle and end, transcode to 1920 wide H.264 (ffmpeg -i in.mp4 -vf scale=1920:-2 -c:v libx264 -crf 22 -pix_fmt yuv420p -movflags +faststart -an out.mp4), make a poster, push both to the adom/codex page under docs/videos/ (adom-wiki repo push adom/codex --files ...), and confirm the MP4 URL returns 200. 6b. Routed is not finished: copper pours come next, before the numbers. Install the kicad-bridge skills package again (adom-wiki pkg install adom/kicad-bridge) and read the kicad-copper-pours skill; it says which nets get a pour (ground on both outer layers, the +VBAT rail block, one compact pour per phase, the GND_OUT return through the shunt), which never do (the bootstrap and gate-drive nodes, the crystal, the BEMF dividers and comparator inputs, the sense taps), the priorities, and the offline gate (tools/add_pours.py on the kicad-bridge page, then KiCad's DRC). The bridge verbs are new in 1.0.5 (insiders): kicad_add_zone {filePath, expectedRevision, zones:[{net, layers, polygon, priority, connection}]} lands the pours as one undo step after a filled DRC preflight, and kicad_zone_state {filePath, refill:true} reads back the filled copper per layer, which is the ablation metric (the 3rd party fab mills the copper away; every square millimetre a pour keeps is copper not removed). On arav-rog install 1.0.4 first: bridge_install {"manifestUrl":"https://wiki.adom.inc/api/v1/pages/insiders/files/kicad-bridge/version.json","force":true} and confirm kicad_status says 1.0.5. Report the filled copper per layer before and after the pours, and every net you chose not to pour and why. If a pour is choked by a trace or a part, move it (the loop skill) and route again; the clock keeps running.

  7. The numbers, all of them, in the issue. First and most important: (a0) the wall clock from the moment John pasted this prompt to the moment the issue is filed, in minutes. Note the paste time in UTC as your very first action and put both timestamps in the issue; this is the number that goes on the chart, because it is what the human waited. Then, in the shape of https://wiki.adom.inc/api/pages/adom/kicad-bridge/files/demo/placement/fable/fable-stats.json: (a) planning time, first kicad_routing_state to first kicad_route_net, wall clock; (b) routing time, first commit to last, wall clock, and the number of commits, nets routed, segments, vias and total copper length in mm; (c) the validate result: errors, unconnected, violation types; (d) your session's token usage for this task (input, cached input, output) and the model name; (e) the dollar cost at OpenAI's published per-token price for the model (state the price and where it is published) and that cost as a percentage of a $200 per month plan; (f) sub-agents or worker threads spawned (zero is fine); (g) the bridge calls with timestamps; (h) what you rejected or retried, including any take you discarded.

  8. File the issue: adom-wiki issue create adom/kicad-bridge --category show-and-tell --title "Astra routing video: ESC G431 through kicad_route_net" --body "<video URL, poster URL, the numbers in 7, the exact commands>". No em dashes.

  9. Close KiCad with kicad_close {"discardChanges": true} and tell John the issue URL and the video URL.

The kicad-bridge maintainer thread watches that issue tracker and will cut your take into the routing video and put your numbers on the chart next to Freerouting's and Claude Fable 5.1's.