skill
KiCad Service
Public UnreviewedUse when the user asks about the KiCad service, KiCad CLI, DRC validation, ERC, Gerber export, symbol/footprint SVG rendering, STEP/GLB 3D model export, or any headless KiCad operation.
← Commit history
README.mdadded+152@@ -0,0 +1,152 @@+# KiCad Service++A shared KiCad CLI HTTP service running on a dedicated Adom container. Provides headless KiCad operations without needing KiCad installed locally.++**This is NOT the same as adom-desktop KiCad control.** Two different things:++| | KiCad Service (this skill) | adom-desktop KiCad |+|---|---|---|+| **Where KiCad runs** | Dedicated server container | User's Windows/Mac desktop |+| **GUI** | None — headless CLI only | Full KiCad GUI (schematic editor, PCB layout, 3D viewer) |+| **What it does** | DRC, Gerber export, SVG rendering, STEP/GLB export, symbol/footprint search | Open/close editors, install symbols/footprints, screenshot windows, handle dialogs |+| **Install needed** | None — already running | Yes — user installs Adom Desktop app |+| **Best for** | Automated validation, rendering, batch export | Interactive editing, visual inspection, demo recordings |++## When to use which++- "Run DRC on my board" → **KiCad Service** (this skill)+- "Open my schematic in KiCad" → **adom-desktop** (needs desktop install)+- "Export gerbers from a .kicad_pcb file" → **KiCad Service**+- "Show me the KiCad Symbol Editor" → **adom-desktop**+- "Render my footprint as SVG" → **KiCad Service**+- "Install this symbol into KiCad's library" → **adom-desktop**++## Service URL++```+https://coder.john-service-kicad-cli-5948815f6104358b.containers.adom.inc/proxy/8780+```++This is a shared service available to all Adom containers. Use `$KICAD_API` if set, otherwise use the URL above.++```bash+# Health check+curl -s "https://coder.john-service-kicad-cli-5948815f6104358b.containers.adom.inc/proxy/8780/health"+# → {"ok":true,"kicad_version":"9.0.7","uptime_seconds":...}+```++## API Client++JavaScript client with all functions:++```javascript+import { checkHealth, symSearch, pcbDrc, pcbExportGerbers, ... } from '/home/adom/project/gallia/viewer/kicad-api-client.js';+```++## Available Operations++### Health Check++```javascript+const health = await checkHealth();+// → { ok: true, kicadVersion: "9.0.1", uptimeSeconds: 12345, cacheSizeMb: 42 }+```++### Symbol Operations++```javascript+// Search for symbols+const results = await symSearch("STM32F103", 20);++// Get symbol details+const sym = await symGet("Device", "R");++// Export symbol as SVG+const svg = await symExportSvg("/path/to/file.kicad_sym", "SYMBOL_NAME");++// Export by library+name (cached)+const svg = await symExportSvgByName("Device", "R");+```++### Footprint Operations++```javascript+// List footprints+const fps = await fpList({ library: "Package_SO" });++// Export footprint as SVG+const svg = await fpExportSvg("/path/to/file.kicad_mod", "SOT-23");+const svg = await fpExportSvgByName("Package_SO", "SOT-23");++// Export as GLB (3D model)+const glb = await fpExportGlbByName("Package_SO", "SOT-23", "/tmp/sot23.glb");++// Export as STEP+const step = await fpExportStepByName("Package_SO", "SOT-23", "/tmp/sot23.step");++// Download footprint file+await fpDownload("Package_SO/SOT-23.kicad_mod", "/tmp/sot23.kicad_mod");+```++### PCB / Board Operations++```javascript+// Run Design Rule Check+const drc = await pcbDrc("/path/to/board.kicad_pcb");+// → { violations: [...], errorCount: 2, warningCount: 5 }++// Export Gerbers+const gerbers = await pcbExportGerbers("/path/to/board.kicad_pcb", "/tmp/gerbers/");++// Export board as GLB (3D model)+const glb = await boardExportGlb("/path/to/board.kicad_pcb", "/tmp/board.glb");++// Export footprint from PCB as STEP+const step = await pcbExportStep("/path/to/board.kicad_pcb", "U1", "/tmp/u1.step");+```++### 3D Model Operations++```javascript+// List available 3D models+const models = await models3dList({ library: "Package_SO" });++// Download a 3D model+await models3dDownload("Package_SO/SOT-23.step", "/tmp/sot23.step");+```++## Error Handling++The health check distinguishes three failure modes:++1. **Service healthy** — KiCad CLI available, ready for operations+2. **Node process down** — Container running but Node server crashed. The service auto-restarts, retry in 30s.+3. **Container unreachable** — ECONNREFUSED/ETIMEDOUT. Container may be stopped or not provisioned.++```javascript+const health = await checkHealth();+if (!health.ok) {+ console.error(health.status); // 'node_down' | 'container_unreachable' | 'unknown_error'+ console.error(health.suggestion); // Human-readable fix suggestion+}+```++## Which skills use the KiCad Service++- **board-creator** — DRC validation on generated PCB boards+- **symbol-creator** — SVG rendering of created symbols+- **footprint-creator** — SVG rendering, STEP/GLB export of footprints+- **3d-component-creator** — GLB export for 3D viewer+- **gerber-viewer** — Gerber file generation+- **instapcb** — DRC before manufacturing submission+- **library-creator** — Symbol/footprint validation++## NOT the same as adom-desktop++If the user wants to:+- **See the KiCad GUI** → they need `adom-desktop` (install the desktop app)+- **Open a schematic in the editor** → `adom-desktop`+- **Install a symbol into their local KiCad library** → `adom-desktop`+- **Control KiCad windows, handle dialogs** → `adom-desktop`++This service is for headless, API-driven operations only.
page.jsonadded+29@@ -0,0 +1,29 @@+{+ "schema_version": 1,+ "type": "skill",+ "slug": "kicad-service",+ "title": "KiCad Service",+ "brief": "Use when the user asks about the KiCad service, KiCad CLI, DRC validation, ERC, Gerber export, symbol/footprint SVG rendering, STEP/GLB 3D model export, or any headless KiCad operation.",+ "version": "1.0.0",+ "tags": [],+ "license": "MIT",+ "source_path": "SKILL.md",+ "readme": "# KiCad Service\n\nA shared KiCad CLI HTTP service running on a dedicated Adom container. Provides headless KiCad operations without needing KiCad installed locally.\n\n**This is NOT the same as adom-desktop KiCad control.** Two different things:\n\n| | KiCad Service (this skill) | adom-desktop KiCad |\n|---|---|---|\n| **Where KiCad runs** | Dedicated server container | User's Windows/Mac desktop |\n| **GUI** | None — headless CLI only | Full KiCad GUI (schematic editor, PCB layout, 3D viewer) |\n| **What it does** | DRC, Gerber export, SVG rendering, STEP/GLB export, symbol/footprint search | Open/close editors, install symbols/footprints, screenshot windows, handle dialogs |\n| **Install needed** | None — already running | Yes — user installs Adom Desktop app |\n| **Best for** | Automated validation, rendering, batch export | Interactive editing, visual inspection, demo recordings |\n\n## When to use which\n\n- \"Run DRC on my board\" → **KiCad Service** (this skill)\n- \"Open my schematic in KiCad\" → **adom-desktop** (needs desktop install)\n- \"Export gerbers from a .kicad_pcb file\" → **KiCad Service**\n- \"Show me the KiCad Symbol Editor\" → **adom-desktop**\n- \"Render my footprint as SVG\" → **KiCad Service**\n- \"Install this symbol into KiCad's library\" → **adom-desktop**\n\n## Service URL\n\n```\nhttps://coder.john-service-kicad-cli-5948815f6104358b.containers.adom.inc/proxy/8780\n```\n\nThis is a shared service available to all Adom containers. Use `$KICAD_API` if set, otherwise use the URL above.\n\n```bash\n# Health check\ncurl -s \"https://coder.john-service-kicad-cli-5948815f6104358b.containers.adom.inc/proxy/8780/health\"\n# → {\"ok\":true,\"kicad_version\":\"9.0.7\",\"uptime_seconds\":...}\n```\n\n## API Client\n\nJavaScript client with all functions:\n\n```javascript\nimport { checkHealth, symSearch, pcbDrc, pcbExportGerbers, ... } from '/home/adom/project/gallia/viewer/kicad-api-client.js';\n```\n\n## Available Operations\n\n### Health Check\n\n```javascript\nconst health = await checkHealth();\n// → { ok: true, kicadVersion: \"9.0.1\", uptimeSeconds: 12345, cacheSizeMb: 42 }\n```\n\n### Symbol Operations\n\n```javascript\n// Search for symbols\nconst results = await symSearch(\"STM32F103\", 20);\n\n// Get symbol details\nconst sym = await symGet(\"Device\", \"R\");\n\n// Export symbol as SVG\nconst svg = await symExportSvg(\"/path/to/file.kicad_sym\", \"SYMBOL_NAME\");\n\n// Export by library+name (cached)\nconst svg = await symExportSvgByName(\"Device\", \"R\");\n```\n\n### Footprint Operations\n\n```javascript\n// List footprints\nconst fps = await fpList({ library: \"Package_SO\" });\n\n// Export footprint as SVG\nconst svg = await fpExportSvg(\"/path/to/file.kicad_mod\", \"SOT-23\");\nconst svg = await fpExportSvgByName(\"Package_SO\", \"SOT-23\");\n\n// Export as GLB (3D model)\nconst glb = await fpExportGlbByName(\"Package_SO\", \"SOT-23\", \"/tmp/sot23.glb\");\n\n// Export as STEP\nconst step = await fpExportStepByName(\"Package_SO\", \"SOT-23\", \"/tmp/sot23.step\");\n\n// Download footprint file\nawait fpDownload(\"Package_SO/SOT-23.kicad_mod\", \"/tmp/sot23.kicad_mod\");\n```\n\n### PCB / Board Operations\n\n```javascript\n// Run Design Rule Check\nconst drc = await pcbDrc(\"/path/to/board.kicad_pcb\");\n// → { violations: [...], errorCount: 2, warningCount: 5 }\n\n// Export Gerbers\nconst gerbers = await pcbExportGerbers(\"/path/to/board.kicad_pcb\", \"/tmp/gerbers/\");\n\n// Export board as GLB (3D model)\nconst glb = await boardExportGlb(\"/path/to/board.kicad_pcb\", \"/tmp/board.glb\");\n\n// Export footprint from PCB as STEP\nconst step = await pcbExportStep(\"/path/to/board.kicad_pcb\", \"U1\", \"/tmp/u1.step\");\n```\n\n### 3D Model Operations\n\n```javascript\n// List available 3D models\nconst models = await models3dList({ library: \"Package_SO\" });\n\n// Download a 3D model\nawait models3dDownload(\"Package_SO/SOT-23.step\", \"/tmp/sot23.step\");\n```\n\n## Error Handling\n\nThe health check distinguishes three failure modes:\n\n1. **Service healthy** — KiCad CLI available, ready for operations\n2. **Node process down** — Container running but Node server crashed. The service auto-restarts, retry in 30s.\n3. **Container unreachable** — ECONNREFUSED/ETIMEDOUT. Container may be stopped or not provisioned.\n\n```javascript\nconst health = await checkHealth();\nif (!health.ok) {\n console.error(health.status); // 'node_down' | 'container_unreachable' | 'unknown_error'\n console.error(health.suggestion); // Human-readable fix suggestion\n}\n```\n\n## Which skills use the KiCad Service\n\n- **board-creator** — DRC validation on generated PCB boards\n- **symbol-creator** — SVG rendering of created symbols\n- **footprint-creator** — SVG rendering, STEP/GLB export of footprints\n- **3d-component-creator** — GLB export for 3D viewer\n- **gerber-viewer** — Gerber file generation\n- **instapcb** — DRC before manufacturing submission\n- **library-creator** — Symbol/footprint validation\n\n## NOT the same as adom-desktop\n\nIf the user wants to:\n- **See the KiCad GUI** → they need `adom-desktop` (install the desktop app)\n- **Open a schematic in the editor** → `adom-desktop`\n- **Install a symbol into their local KiCad library** → `adom-desktop`\n- **Control KiCad windows, handle dialogs** → `adom-desktop`\n\nThis service is for headless, API-driven operations only.",+ "author": {+ "id": "695820315b5f1e4db2fcf602",+ "name": "Kyle Bergstedt",+ "email": "[email protected]"+ },+ "visibility": {+ "public": true+ },+ "hero": null,+ "sample_prompts": [],+ "discovery_triggers": [],+ "discovery_pitch": null,+ "metadata": {},+ "created_at": "2026-05-28T05:29:50.623Z",+ "updated_at": "2026-05-28T05:29:50.623Z",+ "sub_skills": [],+ "parent_app": null+}