Skip to content
Automation
Command

/pcb-from-bom

Start a PCB project from an existing LCSC BOM file (CSV with C-numbers) and a design-intent description.

From plugin
192 skills1 agents2 commands1 MCP
shell
$ npx -y skills add BeckhamLabsLLC/kicad-jlcpcb --agent claude-code

Ships with kicad-jlcpcb. Installing the plugin gets this command.

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/pcb-from-bom

Context preview

What this command does when you run it.

Start a PCB project from an existing LCSC BOM file (CSV with C-numbers) and a design-intent description.

Command definition

pcb-from-bom.md
name: pcb-from-bom
description: Start a PCB project from an existing LCSC BOM file (CSV with C-numbers) and a design-intent description.
argument-hint: "[path to BOM CSV] [optional: design intent notes]"
allowed-tools:
  - Read
  - Write
  - Glob
  - Grep
  - mcp__kicad-jlcpcb__detect_kicad
  - mcp__kicad-jlcpcb__create_project
  - mcp__kicad-jlcpcb__load_project
  - mcp__kicad-jlcpcb__session_resume
  - mcp__kicad-jlcpcb__lcsc_resolve_bom
  - mcp__kicad-jlcpcb__part_pin_map
  - mcp__kicad-jlcpcb__pcb_generate
  - mcp__kicad-jlcpcb__easyeda_handoff

/pcb-from-bom

Start a KiCad project from an existing BOM CSV. Skips part sourcing and goes straight to pin-map fetch + wired `.kicad_pcb` + EasyEDA handoff.

Instructions

1. Detect KiCad, create or resume the project

Call `detect_kicad`. If the target project directory already exists, call `load_project` on it and check the returned `session` summary — if `resume_available` is true, offer the user a resume-or-restart choice (same pattern as `/pcb-new` step 2). Otherwise call `create_project`.

2. Read the BOM

Use `Read` to load the CSV. Auto-detect the column layout — common forms:

  • `Reference, Value, LCSC, Quantity`
  • `Designator, Value, LCSC Part #, Qty`
  • `Comment, Designator, Footprint, LCSC`

Convert each row into a `{lcsc, qty}` dict.

3. Resolve the BOM

Call `lcsc_resolve_bom` with the rows. Validates every C-number against the live jlcparts mirror and catches any out-of-stock or discontinued parts.

4. **CHECKPOINT — present the BOM**

Same as `/pcb-new` step 5. Show the user resolved/unresolved/cost and get confirmation.

5. Interpret design intent

If the BOM file has a design-intent section (GPIO table, functional descriptions, schematic notes) or the user provided notes alongside the BOM:

a. **Read it carefully.** The design intent tells you how parts connect.

b. **Map every IC to a reasonable footprint.** KiCad stdlib names are listed in `/pcb-new` step 6. For ICs not in KiCad stdlib, pick the closest package-family footprint (SOT-23-6, QFN-24, SOIC-8, etc.) — the user can swap it in EasyEDA later.

c. **Call `part_pin_map`** for each IC whose pinout you're unsure about. It returns `{pin_name: pad_num}` so you know what the nets need to reference.

d. **Build the nets dict.** Map power rails, buses (I2C, SPI, UART, USB), and signal lines based on the design intent. Reference pins by name, not number — the plugin resolves them.

If the BOM has no design intent and the user provided no notes: warn them that you'll generate a components-only spec (no nets), and they'll have to wire things up manually in KiCad or EasyEDA.

6. Generate + hand off

Call `pcb_generate` with the spec, then `easyeda_handoff` on the result. Relay the handoff instructions to the user verbatim.

Read more
Read it on GitHub ↗
Ships withkicad-jlcpcb

From "I want a board that does X" to a wired .kicad_pcb EasyEDA can auto-route and JLCPCB can build — in a single Claude Code conversation. kicad-jlcpcb is a Claude Code plugin + MCP server that automates the tedious half of going from idea to fab.

Get the whole plugin, auto-invoked
Stats
19
Stars
0
Views
0
Forks
Maintained
Maintenance
Python
Language
MIT
License
3mo ago
Last commit
3mo ago
Created

Repo: BeckhamLabsLLC/kicad-jlcpcb

More commands in this plugin
See everything inside