{
  "schema_version": 1,
  "type": "skill",
  "slug": "kicad-to-markdown",
  "title": "KiCad to Markdown",
  "brief": "Parses KiCad projects into structured markdown documents optimized for AI consumption — extracts components, netlist connectivity, hierarchical sheets, PCB layout, and design rules.",
  "version": "1.0.1",
  "tags": [],
  "license": "MIT",
  "discovery_triggers": [
    "parse kicad",
    "understand kicad",
    "analyze kicad",
    "kicad to markdown",
    "what's in this kicad project",
    "extract netlist",
    "read .kicad_sch",
    "summarize kicad project",
    "kicad summary"
  ],
  "discovery_pitch": "I can parse any KiCad project into AI-readable markdown — components, netlist, hierarchical sheets, PCB layout, design rules — so we can reason about the design without opening KiCad.",
  "source_path": "SKILL.md",
  "readme": "# KiCad to Markdown Parser\n\nConverts KiCad 6+ projects into structured, AI-readable markdown documents. Upload a `.zip` or point it at a project directory — get back a comprehensive breakdown of your schematic and PCB.\n\n## What It Extracts\n\n| Source File | Data Extracted |\n|-------------|---------------|\n| `.kicad_pro` | Project name, net class definitions, design settings |\n| `.kicad_sch` | Components, net labels, power symbols, wires, hierarchical sheets, **full netlist connectivity** |\n| `.kicad_pcb` | Footprints, traces, vias, zones, board outline, layer stackup, design rules |\n\n## Key Features\n\n- **Netlist extraction from schematics** — traces wires using union-find, resolves net names from labels and power symbols\n- **Hierarchical sheet support** — follows sub-sheets and extracts interface pins\n- **PCB layout parsing** — board dimensions, layer stackup, component placement, routing summary\n- **Coordinate system handling** — correctly transforms KiCad library Y-up to schematic Y-down with rotation/mirror support\n- **Labels on wire segments** — handles labels placed mid-wire, not just at endpoints\n- **Zip file support** — handles flat zips and single-subdirectory zips\n\n## Usage\n\n### CLI (preferred)\n\n```bash\ncd /home/adom/project/kicad-to-markdown\npython3 cli.py /path/to/project/ -o output.md\npython3 cli.py /path/to/project.zip -o output.md\n```\n\n### HTTP API\n\n```bash\n# Start server\ncd /home/adom/project/kicad-to-markdown\nuvicorn server:app --host 0.0.0.0 --port 8000 &\n\n# Upload zip → get markdown\ncurl -F \"[email protected]\" http://localhost:8000/parse\n\n# Upload zip → get JSON with stats\ncurl -F \"[email protected]\" http://localhost:8000/parse/json\n```\n\n## Output Structure\n\n```\n# KiCad Project: {name}\n## Overview — component count, net count, board dimensions\n## Components — table of all parts with ref, value, footprint, description\n## Connectivity (Netlist) — named nets then unnamed nets, each listing connected pins\n## Hierarchical Sheets — sub-sheet structure and interface pins\n## Power Nets — which components connect to each power rail\n## PCB Physical Layout\n  ### Board Outline, Layer Stackup, Component Placement\n  ### Routing Summary, Most Routed Nets, Copper Zones\n## Design Rules — net classes with clearance/trace width settings\n```\n\n## Example Output\n\nTested on real projects:\n- **Crosspoint Matrix 2CH 4x8** — 28 components, 78 PCB footprints, 169 nets, 7 hierarchical sheets, 4-layer 202×106mm board\n- **STLink V3 Mods** — 72 components, 2 sheets, 79 nets\n\n## Dependencies\n\nPython 3.10+, `kiutils`, `fastapi`, `uvicorn`, `python-multipart`, `click`.\n\n## Trigger Phrases\n\n- \"Parse a KiCad project\"\n- \"Convert KiCad to markdown\"\n- \"Understand a KiCad schematic\"\n- \"Extract netlist\"\n- \"Analyze a .kicad_sch\"\n- \"What's in this KiCad project\"",
  "author": {
    "id": "695820315b5f1e4db2fcf602",
    "name": "Kyle Bergstedt",
    "email": "[email protected]"
  },
  "visibility": {
    "public": true
  },
  "hero": null,
  "sample_prompts": [],
  "metadata": {},
  "created_at": "2026-05-28T05:30:09.595Z",
  "updated_at": "2026-05-28T05:30:09.595Z",
  "sub_skills": [],
  "parent_app": null
}