app
Adom Footprint
Public Made by Adomby adom
KiCad footprint creator with layer HUD viewer and delivery to KiCad/Fusion 360
← Commit history
Publish 1.0.4
7 files changed
+186−28
SKILL.mdadded+132@@ -0,0 +1,132 @@+---+name: adom-footprint+description: "Use when the user asks to create a KiCad footprint, make a .kicad_mod, design a PCB footprint, build a footprint for a part, preview a footprint in FpView, lint a footprint, send a footprint to KiCad or Fusion 360, or view pad positions and solder blob layout. Also trigger for footprint-related questions like pad size, courtyard rules, or silk overlap."+---++# adom-footprint++Creates, previews, lints, validates, and delivers KiCad PCB footprints (.kicad_mod) with an interactive FpView HTML5 viewer. Supports delivery to KiCad, Fusion 360, and Altium.++## Architecture++```+adom-footprint (Rust binary)+ +-- adom-footprint serve -> starts Node.js HTTP server on :8782+ +-- adom-footprint create -> creates footprints from pad JSON+ +-- adom-footprint lint -> lint via design-rule checks+ +-- adom-footprint health -> version check++Node.js server (footprint-creator/)+ +-- POST /fp/create -> create footprint from pad JSON+ +-- POST /fp/preview -> refresh FpView viewer+ +-- POST /fp/lint -> design-rule lint+ +-- POST /fp/validate -> artifact completeness check+ +-- POST /fp/deliver -> send to KiCad/Fusion 360/Altium+ +-- GET /fp/list -> list available footprints+ +-- GET /viewer/:name -> FpView interactive viewer+ +-- GET /health -> service health+```++## Quick start++```bash+# Start the server+adom-footprint serve &++# Create a footprint from JSON+echo '{"footprintName":"QFN-20","pads":[...],"body":{...}}' | adom-footprint create++# Preview in FpView+adom-footprint preview --name QFN-20+# -> http://localhost:8782/viewer/QFN-20++# Lint a footprint+adom-footprint lint --name QFN-20+adom-footprint lint --path /path/to/custom.kicad_mod++# Send to KiCad+adom-footprint deliver --name QFN-20 --target kicad+```++## Commands++| Command | Description |+|---|---|+| `serve [-p port]` | Start HTTP server (default :8782) |+| `create [--file json]` | Create footprint from pad JSON (stdin or file) |+| `preview --name NAME` | Generate/refresh FpView viewer |+| `lint --name NAME` or `--path FILE` | Design-rule lint |+| `validate --name NAME` | Check artifact completeness |+| `deliver --name NAME --target kicad/fusion360/altium` | Send to desktop EDA |+| `health` | Check service health |+| `install` | Install Claude Code skill + completions |+| `completions bash/zsh/fish` | Generate shell completions |++## FpView viewer++The interactive HTML5 footprint viewer includes:+- Dark Adom theme with zoom/pan+- Pad hover highlighting (teal #00b8b1)+- Rich tooltips: pad number, name, size, shape, layer+- Toggle layers: Grid, Solder blobs, Labels+- Solder blob visualization (250um dots for InstaPCB jetting)+- Sticky click-to-pin tooltips+- Cursor coordinates (mm)++## Lint checks++The linter validates against KiCad and InstaPCB design rules:+- Courtyard present and 0.25mm minimum clearance+- Fabrication outline on F.Fab layer+- Pin 1 marker on silkscreen+- No silk-pad overlap+- Pad numbering sequential+- Pad size minimums for solder-jet compatibility++## Dependencies++| Dependency | Required? | Why |+|---|---|---|+| Node.js 18+ | Yes | Runs the HTTP server and FpView generator |+| service-kicad | Optional | SVG export for FpView rendering, footprint library search |+| adom-lbr | Optional | Converts footprint to .lbr for Fusion 360 delivery |+| adom-desktop | Optional | One-click delivery to desktop KiCad/Fusion 360/Altium |+| adom-symbol | Recommended | Symbol + footprint created together for complete component |++## Footprint storage++Footprints are stored at:+```+/home/adom/project/project-content/schematics/footprints/<NAME>/+ <NAME>.kicad_mod <- the footprint+ <NAME>-metadata.json <- pad count, description, tags, timestamps+ <NAME>-fpview.html <- interactive FpView viewer (cached)+ <NAME>.svg <- rendered SVG (from service-kicad)+```++## Create JSON format++```json+{+ "footprintName": "QFN-20",+ "description": "QFN-20 4x4mm 0.5mm pitch",+ "tags": "QFN QFN-20",+ "pads": [+ {"number": "1", "x": -1.75, "y": -1.0, "dx": 0.8, "dy": 0.25, "shape": "roundrect"},+ {"number": "2", "x": -1.75, "y": -0.5, "dx": 0.8, "dy": 0.25, "shape": "roundrect"},+ ...+ {"number": "21", "x": 0, "y": 0, "dx": 2.6, "dy": 2.6, "shape": "roundrect"}+ ],+ "body": {"x1": -2.0, "y1": -2.0, "x2": 2.0, "y2": 2.0},+ "courtyard": {"x1": -2.25, "y1": -2.25, "x2": 2.25, "y2": 2.25}+}+```++## .kicad_mod format notes++- Coordinate system: Y-positive is DOWN (opposite of schematic symbols)+- Pad types: smd, thru_hole, np_thru_hole+- Pad shapes: rect, circle, oval, roundrect+- Key layers: F.Cu, F.Paste, F.Mask, F.SilkS, F.Fab, F.CrtYd+- Courtyard: 0.25mm clearance minimum around body+- Filename must match internal footprint name
bin/adom-footprintadded+2@@ -0,0 +1,2 @@+#!/bin/bash+echo "adom-footprint v0.1.0 — replace this stub with your binary or script."
install.shadded+14@@ -0,0 +1,14 @@+#!/bin/bash+# install.sh for adom-footprint (app).+# Runs from the extracted module directory (~/project/adom_modules/adom-footprint/).+set -euo pipefail++DIR="$(cd "$(dirname "$0")" && pwd)"+cd "$DIR"++# App install: link the binary onto PATH.+BIN_DIR="${HOME}/.local/bin"+mkdir -p "$BIN_DIR"+install -m 0755 "$DIR/bin/adom-footprint" "$BIN_DIR/adom-footprint"+echo "Installed adom-footprint -> $BIN_DIR/adom-footprint"+
package.jsonadded+11@@ -0,0 +1,11 @@+{+ "slug": "adom-footprint",+ "version": "1.0.4",+ "type": "app",+ "description": "A live PCB-footprint viewer with a floating Layers HUD and the InstaPCB 300um solder-paste dispensing dots no other tool shows.",+ "dependencies": {},+ "tags": ["eda","kicad","footprint","pcb","instapcb"],+ "hero": { "type": "image", "path": "screenshots/hero.png" },+ "scripts": { "install": "./install.sh", "uninstall": "./uninstall.sh" },+ "needs_sudo": false+}
page.json+20−28@@ -1,36 +1,28 @@ {- "schema_version": 1, "slug": "adom-footprint",+ "version": "1.0.4", "type": "app",- "version": "1.0.0",- "title": "adom-footprint",- "brief": "A live PCB-footprint viewer with a floating Layers HUD and the InstaPCB 300um solder-paste dispensing dots.",- "readme": "# adom-footprint\n\n**A live PCB-footprint viewer with a floating Layers HUD — and the InstaPCB solder-paste dispensing dots that no other PCB tool shows.**\n\nadom-footprint renders a `.kicad_mod` through the shared `service-kicad` (no local KiCad), crops tightly to the part, and themes it onto a dark PCB canvas. It reads legacy KiCad-5 `(module …)` footprints as well as modern ones. Standalone Rust, no Node, no gallia.\n\n## The Layers HUD\n\nA draggable, collapsible floating panel toggles each layer independently:\n\n- **Copper · Assembly (F.Fab) · Courtyard** — the KiCad-rendered geometry.\n- **Paste apertures** — the stencil openings.\n- **InstaPCB paste dots `NEW`** — the **actual 300 µm solder-paste dispensing positions**, computed by Adom and overlaid as real dots. Adom's InstaPCB line jets paste dot-by-dot instead of using a stencil, so a footprint in the Adom ecosystem carries *where the paste will land* — a first in PCB CAD.\n\n## Send to\n\nKiCad (native footprint), Fusion 360 / Altium / OrCAD (`.lbr` via **adom-lbr**).\n\n## Part of the Adom EDA family\n\nOpened from **chip-fetcher**; pairs with **adom-symbol**, **adom-lbr**, and **ds2sf**.\n\n## Run it\n\n```bash\nadom-footprint serve --port 8783 # live app (AI-drivable: /state, /load, /deliver, /eval)\nadom-footprint render --file part.kicad_mod --out part.svg\n```\nMIT, contributions welcome.\n",- "install": {- "binary_name": "adom-footprint",- "install_dir": "",- "install_hint": "",- "version_cmd": ""+ "description": "A live PCB-footprint viewer with a floating Layers HUD and the InstaPCB 300um solder-paste dispensing dots no other tool shows.",+ "dependencies": {},+ "tags": [+ "eda",+ "kicad",+ "footprint",+ "pcb",+ "instapcb"+ ],+ "hero": {+ "type": "image",+ "path": "screenshots/hero.png" },+ "scripts": {+ "install": "./install.sh",+ "uninstall": "./uninstall.sh"+ },+ "needs_sudo": false,+ "visibility": "public", "author": {- "id": "6738b00a4dc87b8adbb0a5a3", "name": "John Lauer", "email": "[email protected]"- },- "tags": [],- "license": "proprietary",- "visibility": {- "public": true- },- "hero": {- "type": "image",- "path": "docs/hero.png"- },- "sample_prompts": [],- "discovery_triggers": [],- "discovery_pitch": null,- "metadata": {},- "created_at": "2026-06-21T21:37:21.473Z",- "updated_at": "2026-06-21T21:37:21.473Z",- "skills": []+ } }
screenshots/hero.pngadded⋯ 1 unchanged line ⋯
uninstall.shadded+7@@ -0,0 +1,7 @@+#!/bin/bash+# uninstall.sh for adom-footprint (app).+set -euo pipefail++rm -f "${HOME}/.local/bin/adom-footprint"+echo "Uninstalled adom-footprint"+