From kicad
Use when executing a schematic placement plan (plan mode) or modifying an existing schematic (modification mode).
How this skill is triggered — by the user, by Claude, or both
Slash command
/kicad:schematic-designThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
<CRITICAL-RULE>
EVERY KiCad operation has a corresponding MCP tool. Do NOT claim a tool does not exist without first listing all available tools. Key tools that MUST be used instead of file writes:
add_symbol — create custom symbol definitions in .kicad_sym filescreate_symbol_library — create new .kicad_sym library filescreate_schematic — create new .kicad_sch filescreate_project — create new .kicad_pro project files
If you find yourself thinking "there's no MCP tool for this," you are
wrong. Check the tool list again.
This skill executes schematic plans mechanically. All intelligence (component selection, coordinate calculation, wiring decisions) happened in prior phases. This skill reads a plan and executes it.
When this skill activates, announce the mode:
Then proceed directly to the pre-flight checks for the appropriate mode. Do not ask the user what to do — the plan or user instructions are the input. Report progress as each placement/wiring step completes, but keep updates brief (one line per step).
Reads specs/schematic-plan.md and executes mechanically. The plan
file is the sole source of truth — ignore prior conversation context
about how the plan was created. Read the plan, execute the plan.
Pre-flight checks:
specs/schematic-plan.md exists and its reviewer returned
APPROVEDset_page_size immediately if
not A4list_lib_symbolsExecution order:
create_project, create_schematic, etc.)create_sym_lib_table)add_symbol)place_component per coordinate table)wire_pins_to_net callannotate_schematic to assign reference designators.
For hierarchical designs, pass project_path to avoid cross-sheet
ref conflicts.validate_hierarchy from root to check
for orphaned labels, direction mismatches, duplicate refs.No plan artifact required. User instructions serve as the plan.
Pre-flight checks:
list_schematic_componentslist_lib_symbols to
verify its lib_id exists before placementFollow existing spacing/wiring/naming conventions in the schematic.
| Situation | Response |
|---|---|
| Symbol not found | STOP. Do not fuzzy-match or substitute. Report the error. If a previously-verified symbol is missing, instruct the user to re-run from circuit-design to re-validate the BOM. |
| Position outside page bounds | STOP. Report error. The plan's page calculation should have prevented this. Instruct the user to re-run schematic-plan. |
| connect_pins fails | Try wire_pins_to_net for that connection. If that fails, report and continue with remaining wiring. |
| ERC violations | Report violations. Invoke verification skill. |
IMPORTANT: Use TodoWrite to create todos for EACH checklist item below.
specs/schematic-plan.md exists and is APPROVED? refs remaining| Thought | Reality |
|---|---|
| "This pin name is close enough" | Use the exact pin name from the plan. The plan was verified against get_symbol_info. |
| "I can adjust the coordinates slightly" | Use the exact coordinates from the plan. The plan was verified against page bounds. |
| "I'll add an extra component not in the plan" | Do not improvise. If the design needs changes, go back to schematic-plan. |
| "The plan is probably outdated, I'll adapt" | The plan is the source of truth. If it's wrong, re-plan. Don't patch on the fly. |
Run run_erc. Zero violations → proceed to pcb-layout.
Violations → invoke verification skill.
Commit strategy: Commit after schematic-design completes and ERC passes (not after each chunk). If ERC fails, fix violations via verification skill, then commit the clean state. Do not commit intermediate broken states.
All coordinates are on the 1.27mm grid (auto-snapped by the tools).
Minimum spacing (for modification mode and plan verification):
Title block clearance: ~108x32mm at bottom-right corner. On A4 landscape (297x210mm), keep components within X < 180mm and Y < 175mm.
Use connect_pins (direct Manhattan wire) when:
Use wire_pins_to_net (batch: multiple pins to one net label) when:
add_power_symbol for VCC, GND, and named power railswire_pins_to_net for custom power nets (VIN_PROT, 5V_REL, etc.)PWR_FLAG on every power net that would otherwise trigger
"power pin not driven" ERC errorsauto_pwr_flag=False in wire_pins_to_net when:
_N (e.g., RESET_N, CS_N)Reading / inspection:
get_schematic_summary — get item counts for a sheetlist_schematic_components — list symbols on a sheetlist_schematic_labels — list net labels on a sheetlist_schematic_wires — list wires on a sheetlist_schematic_global_labels — list global labels on a sheetlist_schematic_hierarchical_labels — list hierarchical labels on a sheetlist_schematic_sheets — list hierarchical sheet blocks on a sheetlist_schematic_junctions — list junctions on a sheetlist_schematic_no_connects — list no-connect flags on a sheetlist_schematic_bus_entries — list bus entries on a sheetget_symbol_pins — get pin names and types for a placed symbolget_pin_positions — get placed pin coordinates (for wiring)get_net_connections — trace a net to see what's connectedlist_unconnected_pins — find pins that need wiring or no-connectPlacing components:
place_component — place a symbol instance on the schematicmove_component — reposition a placed componentremove_component — delete a placed componentset_component_property — change reference, value, footprint, etc.set_page_size — resize the schematic sheetadd_lib_symbol — load a symbol from a library into the schematicWiring and connectivity:
connect_pins — direct Manhattan wire between two pinswire_pins_to_net — connect multiple pins to a named net labeladd_wires — add raw wire segments by coordinateadd_label — place a net labeladd_global_label — place a global (cross-sheet) labeladd_junctions — add junction dots at wire intersectionsno_connect_pin — mark a pin as intentionally unconnectedremove_label / remove_wire / remove_junction — cleanupPower and decoupling:
add_power_symbol — place VCC, GND, +3V3, PWR_FLAG, etc.auto_place_decoupling_cap — auto-place a decoupling cap near an ICAnnotations and hierarchy:
add_text — add text annotations to the sheetadd_hierarchical_label — add a hierarchical label for sheet-to-sheet connectionsremove_hierarchical_label — remove a hierarchical label by name or UUIDmodify_hierarchical_label — modify text, shape, or position of a hierarchical labelannotate_schematic — auto-assign reference designators (project server)remove_text — remove text annotations by position or contentHierarchy management (project server):
add_hierarchical_sheet / remove_hierarchical_sheet — create/remove sub-sheet blocksmodify_hierarchical_sheet — change sheet name, file, dimensionsadd_sheet_pin / remove_sheet_pin — manage pins on sheet blocksvalidate_hierarchy — check for orphaned labels/pins, direction mismatcheslist_hierarchy / get_sheet_info — inspect hierarchy structureis_root_schematic — check if a schematic is root or sub-sheetmove_hierarchical_sheet — reposition a sheet block on the canvasreorder_sheet_pages — change the page order of hierarchical sheetsduplicate_sheet — create a copy of a sheet with new UUIDsflatten_hierarchy — merge all sub-sheets into a single flat schematictrace_hierarchical_net — trace a net across the hierarchy for debuggingexport_hierarchical_netlist — export netlist with hierarchy info
(use instead of export_netlist for hierarchical designs)add_hierarchical_sheet — create the sub-sheet block on the parentadd_sheet_pin — add pins to the sheet block for each signal crossing the boundaryadd_hierarchical_label for each pinvalidate_hierarchy — verify pins match labels, no orphansduplicate_sheet — creates a copy with new UUIDs and a new fileannotate_schematic with project_path — assigns unique refs across all copiesannotate_schematic with project_path — assign refs to all ? componentsvalidate_hierarchy from root — check for duplicates, orphans, mismatchesset_component_property to reset to X?, then re-annotaterun_erc — only after validate_hierarchy is cleantrace_hierarchical_net — follow the net across sheet boundariesget_net_connections — check connections on each sheetlist_cross_sheet_nets — see all nets crossing boundariesadd_sheet_pin, add_hierarchical_label, or connect_pinsflatten_hierarchy — merge all sheets into one (creates new file, non-destructive)move_hierarchical_sheet — reposition sheet blocks on the parentreorder_sheet_pages — change page numbering ordervalidate_hierarchy — verify structure is still validremove_text — delete temporary text annotationsvalidate_hierarchy — check for new orphaned labels or direction mismatchesannotate_schematic — reassign any ? refs introduced during modificationsVerification and export:
run_erc — run electrical rules checkexport_schematic — export schematic as PDF/SVGexport_netlist — generate netlist for PCB importexport_bom — export bill of materialsSymbol authoring (when a part isn't in KiCad's libraries):
create_symbol_library — create a project-local .kicad_sym fileadd_symbol — define a custom symbol with pins, footprint, datasheetlist_lib_symbols / get_symbol_info — browse available symbolsWhen a part is not in KiCad's built-in libraries, create a custom symbol using MCP tools — NEVER by writing .kicad_sym files directly:
create_symbol_library — create a project-local .kicad_sym file
(if it doesn't exist yet)add_symbol — define the symbol with pin names, pin types, pin
numbers, footprint, and datasheetadd_lib_symbol — load the custom symbol into the schematicAfter completing placement and wiring:
run_erc to check for violationswire_pins_to_net or no_connect_pin
3.5. If components have ? references, run annotate_schematic with
project_path before re-running ERC.npx claudepluginhub productofamerica/mcp-server-kicadEdits and creates KiCad 6+ schematic (.kicad_sch) files: modify values, add/remove components, update connections, and generate schematic content from specs or ASCII diagrams.
Routes 17 KiCad MCP tools for schematic creation, PCB layout, autorouting, DRC, and Gerber export. Enforces serialized PCB ops and library-first lookup.
Automates KiCad to EasyEDA to JLCPCB PCB workflow: project setup, LCSC part sourcing, pin-map fetching, fully-wired .kicad_pcb generation via pcbnew, and EasyEDA handoff for routing and ordering.