Altium - the Altium Bridge
Public Made by Adomby adom
Adom Bridge for Altium Designer: a resident DelphiScript agent gives the AI eval, the 1,100-command process launcher, all 8 EDA surfaces with screenshots, compile/ERC, DRC, OutJob outputs, native SchLib/PcbLib authoring with STEP 3D bodies, and dialog handling by PID.
Skills
The skills this repo ships, by tier, each with a quick health read. Install the user skills with:
adom-wiki skills install adom/altium-bridgeDrive Altium Designer on the user's Windows PC from this container via the adom-bridge CLI (verbs altium_*). A resident DelphiScript agent inside Altium gives you eval (arbitrary DelphiScript statements), the 1,100-command process launcher (altium_run_command), open/show of every surface (project, schematic, 2D/3D board, library, symbol, footprint, 3D part) with a returned frame, compile/ERC with the Messages panel, DRC with violations, OutJob runs (Gerber, ODB++, NC drill, BOM, pick-and-place), dialog detection/dismissal by PID, and a full-state screenshot array. Trigger words: altium, altium designer, open in altium, show me the board in altium, altium schematic, altium pcb, altium 3d, altium gerber, altium outjob, altium bom, altium drc, altium erc, compile altium project, altium library, altium symbol, altium footprint, run delphiscript, altium_eval, altium_run_command, altium_state, altium demo, altium bridge.
Boards through the altium-bridge: create a wired test board sized to a part, define a real board shape, place library parts on schematics and boards (both coordinate frames normalized), swap footprints on a placed component with the wiring surviving, read ground truth back (pads/bodies/nets/tracks), and capture 2D/3D frames incl. the bottom view — plus the measured 3D camera facts (ResetCamera presets work, SetCamera is a no-op, orbiting needs a synthetic drag). Use for test boards, placement, footprint swaps, board frames. Trigger words — altium test board, place part on board, swap footprint, altium board shape, altium 3d camera, board bottom view, pcb report.
THE plan of record for the Altium Designer bridge (keyword `altium`, verbs `altium_*`) — every automation surface Altium exposes, measured on a real AD 26.9.1 install, ranked into lanes: the ScriptingSystem:RunScriptText eval, the resident DelphiScript agent (the REPL lane), the 1,109-command process-launcher catalog, X2.EXE -R command-line bootstrap, UIA over the VCL/DevExpress shell (and CDP for its WebView2 pages), the Altium 365 GraphQL API + embeddable viewer, file-format parsers, the native SDK extension, and the sign-in/license gates. Includes the verb catalog, the dialog doctrine, the phase plan with acceptance criteria, and the Phase 0 experiments still owed. Refer back here before any altium-bridge work. Trigger words — altium bridge, altium_ verbs, drive altium, control altium designer, altium automation, altium delphiscript, RunScriptText, altium process launcher, altium 365 api, altium sign in license, altium add-in, altium plan.
DEVELOPER-only publish recipe for shipping a new altium-bridge version to wiki.adom.inc/adom/altium-bridge: the version lockstep (bridge.json + BRIDGE_VERSION + package.json + manifest), the runtime zip build, repo push + release create, the skills-only pkg publish (stage from files[] to keep the tarball clean), and the studio-gated hero. Read when releasing the altium bridge. Trigger words — publish altium bridge, release altium bridge, ship altium bridge, bump altium bridge, altium bridge manifest, altium bridge pkg.
Install Altium Designer on the user's Windows PC from an Adom container via adom-bridge — sign in to altium.com (incl. Google SSO + account linking), pull the gated online installer, verify its Authenticode signature, launch it, and drive the wizard. Documents the hard UIPI wall: the installer elevates itself, so a non-elevated adom-bridge CANNOT click the wizard past the EULA page. Also the altium-setup-trial recipe: the account/MSA gate, the free-trial route, and Google SSO account linking. Trigger words — install altium, altium install, altium setup, altium setup trial, altium trial, altium free trial, altium designer, AltiumDesignerSetup, altium sign in, altium account, altium download, altium license, altium EULA, altium installer stuck, altium wizard not clicking, altium UIA.
More than one Altium can run at once (Altium Designer beside Altium Designer Develop), often driven by two different AI threads on one machine. How to address a specific one with instance:<pid|key|word>, why a verb REFUSES with ambiguous_instance instead of guessing, the per-instance agent workspace that stops two resident loops eating each other's requests, and the three places single-instance assumptions used to hide. Read before driving Altium on a machine where another AI thread may also be working, or when a verb returns ambiguous_instance. Trigger words — two altiums, altium designer develop, ADD vs AD, ambiguous_instance, instance selector, which altium, second instance, parallel ai threads, per-instance workspace.
Import KiCad parts into Altium Designer correctly, especially KiCad 10. Altium 26's own importer supports KiCad through 9 only — a raw v10 import silently drops property visibility (hidden fields arrive visible, piled on the symbol) and imports text in the wrong font. Two lanes: downgrade v10→v9 with tools/kicad_v10_to_v9.py then use Altium's importer, or convert natively with tools/kicad2altium.py + altium_build_footprint / altium_build_symbol_modes (no importer at all). Carries barrett-land/kicad10-to-altium's measured findings into the master altium-bridge skillpack. Trigger words — kicad to altium, kicad 10 altium import, overlapping fields after import, hidden fields visible, imported symbol wrong font, downgrade kicad 10 library.
Author native Altium libraries through the altium-bridge: symbols with N display modes (alternate symbols), footprints with via pads / rounded-rect pads / named mechanical layers, STEP or extruded 3D bodies that persist and sit on the pads, footprint variants as models on one component, parameters with the tri-vendor rule (Mouser preferred + DigiKey + LCSC), and the measured pin-1 check. Everything here was proven on the CH340G and LAN7800 imports. Use when creating or editing .SchLib/.PcbLib content, binding 3D bodies, building variant sets, or verifying pin-1. Trigger words — altium library authoring, altium display modes, alternate symbol altium, footprint variants, altium 3d body, solder ball layer, heatsink vias altium, pin-1 check.
Altium's On-Demand licence seat, and the ONE mistake that costs an hour: killing Altium strands the seat, after which the licence page reports it FREE (Seats 0/1) while refusing every claim with "License maximum usage reached". Covers the one-seat-per-machine rule (Altium Designer and Altium Designer Develop share it), how to swap the seat between apps, how to recover a stranded one, and why Develop's window title does not say it is licensed. Read when a verb returns not_licensed, when the title says "No License" or "Viewer", when a claim fails, or BEFORE closing or killing any Altium. Trigger words — altium licence, altium license, no license, viewer mode, license maximum usage reached, license renewal failed, seat, on-demand, use license, release license, stranded seat, altium_close force, two altiums one seat.
Checks and manufacturing outputs through the altium-bridge: compile/ERC with the Messages panel read back, DRC with violations, OutJob runs (Gerber, ODB++, NC drill, BOM, pick-and-place) with the files actually written, and the current caveats (headless STEP needs one click, PDF jobs, A365 token gating). Use when running design checks or generating fab/assembly outputs from Altium. Trigger words — altium drc, altium erc, compile altium, altium gerber, altium outjob, altium bom, pick and place, odb++, nc drill, altium step export.
Add any catalog component (resistor, capacitor, inductor, IC, connector, diode…) to the user's Altium Designer library with Mouser, DigiKey AND LCSC/JLCPCB part numbers attached — Mouser is Adom's preferred vendor; the exact `LCSC Part #` parameter keeps JLCPCB BOM + pick-and-place round-tripping. Drives Altium through the adom/altium-bridge verbs (resident DelphiScript agent). Three paths, cheapest first: REUSE an existing symbol for a new value (clone + parametric footprint, no fetch), CREATE from a downloaded .IntLib or a wiki part page, APPEND into an existing library (cross-lib copy). Supersedes barrett-land/altium-part-importer (same workflow, this bridge's verbs). Use when the user wants to "add a part/component/resistor/IC/chip to Altium", "import a footprint or symbol into Altium", or build out an Altium component library. For Adom's OWN machine pins/contacts use adom-library-importer instead.
DEVELOPER-only. Driving Altium Designer through Windows UI Automation (ab's desktop_ui_* verbs) instead of synthetic clicks, and the measured catalog of what AD26 actually exposes: dialogs, main menus, the document bar, and the WebView2 License Management page - plus where UIA is too slow to use and the agent wins instead. Read BEFORE adding any verb that touches an Altium window, and before reaching for desktop_click. Trigger words — altium uia, ui automation, desktop_ui_click, automation id, foreground, focus steal, cursor moved, click altium button, switch document tab, license management click, altium control catalog.
Import a component from the Adom wiki into Altium — one part page, or a whole Cloud Library (Colby's component cart) — with symbol, footprint, 3D body and Mouser/DigiKey/LCSC identity, in seconds, without foregrounding Altium. Covers the Cloud Library's Altium gap (export --format altium is phase 3; KiCad + Fusion ship today) and the working pipeline that closes it, plus the background proof captures the wiki front-end needs. Read when asked to "add this wiki part to Altium", "install my cloud library into Altium", or to prove an import worked. Trigger words — wiki part to altium, cloud library, adom-wiki library, import component altium, kicad_sym to altium, kicad_mod to altium, import_part, library export, prove the import.
DEVELOPER skill (never offered to everyday users) for working ON the altium-bridge: the resident DelphiScript agent architecture (file-drop REPL, per-digest generations, stale-agent auto-restart), the dialog pre-emption doctrine (the debugger breaks on ANY exception, so a raise IS a modal), the transaction-hygiene rule (dangling PreProcess = "a command is currently active"), the deploy loop (cross-compile bridge-rs + send_files the exe into the bridge cache + bridge_kill; agent_stop before agent_start for template changes), and the engine-halting identifier list. Read before editing agent/AdomAgent.pas.tmpl or bridge-rs/src/. Trigger words — edit altium bridge, altium agent template, delphiscript agent, deploy altium bridge, altium engine halt, undeclared identifier altium, bridge-rs.
No publish skills in this repo.
The app-to-wiki publish glue. Source-only (publish-skills/), never shipped in the tarball.
Health: the size chip is green when right-sized, yellow when getting long, red when the model likely skims it. A green check is a passed preamble/structure signal; an amber mark is a gentle nudge, not a hard failure.