Skip to content

/bom

BOM (Bill of Materials) management for electronics projects — the workflow skill that coordinates DigiKey, Mouser, LCSC, element14, JLCPCB, PCBWay, and KiCad skills around a unified BOM lifecycle. Create, update, and maintain BOMs with part numbers, costs, quantities stored as

From plugin
kicad-happy
1.6k11 skills

Claude Code

$ npx -y skills add aklofas/kicad-happy --skill bom --agent claude-code

SKILL.md

bom.SKILL.md
name: bom
description: BOM (Bill of Materials) management for electronics projects — the workflow skill that coordinates DigiKey, Mouser, LCSC, element14, JLCPCB, PCBWay, and KiCad skills around a unified BOM lifecycle. Create, update, and maintain BOMs with part numbers, costs, quantities stored as KiCad symbol properties. ALWAYS trigger this skill for any task involving component sourcing, pricing, ordering, distributor searches, BOM export, or fabrication preparation — even if the user names a specific distributor or fab house (e.g. "search DigiKey for...", "generate JLCPCB BOM", "order from Mouser"). This skill analyzes the schematic for sourcing gaps, recommends which distributor/fab skills to call for each gap, and writes results back as symbol properties — the agent (or user) performs the actual searches via the called skills. Also trigger on phrases like "what parts do I need", "order components", "how much will this cost", "export for JLCPCB", "find parts for this board", "compare pricing", or "check stock".

BOM Management

BOM data lives in **KiCad schematic symbol properties** as the single source of truth. This skill orchestrates the full lifecycle: analyze the schematic, search distributors, validate parts, write properties back, export tracking CSVs, and generate order files.

Related Skills

| Skill | Purpose | |-------|---------| | `kicad` | Read/analyze schematics, PCB, footprints | | `digikey` | Search DigiKey, download datasheets (primary prototype source) | | `mouser` | Search Mouser (secondary prototype source) | | `lcsc` | Search LCSC (production/JLCPCB parts) | | `element14` | Search Newark/Farnell/element14 (international) | | `jlcpcb` | PCB fabrication & assembly ordering | | `pcbway` | Alternative PCB fab & assembly |

Scripts

Use `<skill-path>` to reference the BOM skill directory.

# Analyze schematic (JSON output, recursive sub-sheets)
python3 <skill-path>/scripts/bom_manager.py analyze path/to/schematic.kicad_sch --json --recursive

# Export BOM tracking CSV (creates new or merges with existing)
python3 <skill-path>/scripts/bom_manager.py export path/to/schematic.kicad_sch -o bom/bom.csv --recursive

# Generate per-distributor order files (5 boards + 2 spares/line)
python3 <skill-path>/scripts/bom_manager.py order bom/bom.csv --boards 5 --spares 2

# Quick single-distributor order (bypasses Chosen_Distributor column)
python3 <skill-path>/scripts/bom_manager.py order bom/bom.csv --distributor digikey

# Write properties to schematic (dry-run first, then apply)
echo '{"R1": {"MPN": "RC0805FR-0710KL", "Manufacturer": "Yageo"}}' \
  | python3 <skill-path>/scripts/edit_properties.py path/to/schematic.kicad_sch --dry-run

# Sync datasheet URLs from manifest.json back into schematic Datasheet properties
python3 <skill-path>/scripts/sync_datasheet_urls.py path/to/schematic.kicad_sch --recursive --dry-run

# Translate KiCad/Altium BOM and CPL files into JLCPCB upload format
# (`pnp --bom` filter drops orphan designators — see skills/jlcpcb/SKILL.md
# for the 3-step PCBA upload workflow)
python3 <skill-path>/scripts/translate_bom_pnp.py bom input_bom.csv -o jlc_bom.csv
python3 <skill-path>/scripts/translate_bom_pnp.py pnp input_cpl.csv -o jlc_cpl.csv --units <in|mm> --bom jlc_bom.csv

Workflow

Skip steps that don't apply. Common shortcuts:

  • **"Add Mouser PNs"** — search Mouser by MPN for each part → validate → write to schematic → update CSV
  • **"Fill in the gaps"** — run analyzer with `--gaps-only`, address each missing field
  • **"Update datasheet URLs"** — run `sync_datasheet_urls.py` to backfill empty Datasheet fields from the datasheets manifest
  • **"Prepare for production"** — ensure every part has an LCSC number, check stock, set Chosen_Distributor to LCSC

Step 1: Understand the Project

python3 <skill-path>/scripts/bom_manager.py analyze path/to/schematic.kicad_sch --json --recursive

The output tells you the project's field naming convention, which distributors are populated, what's missing, and the preferred distributor. Also look for an existing BOM tracking CSV in the project directory or `bom/` folder.

The script covers common patterns, but some projects use internal key systems or parametric fields. See `references/part-number-conventions.md` for the full catalog. Read the schematic if something seems off.

Step 2: Sync Datasheets

**Do this immediately.** Datasheets are essential context for validation and part selection. Run the preferred distributor's sync first; if some fail, try others — they share the same `datasheets/` directory, skip already-downloaded parts, and still try parts another distributor could not find. Pass the root schematic; sub-sheets are followed automatically.

python3 <digikey-skill-path>/scripts/sync_datasheets_digikey.py path/to/schematic.kicad_sch
python3 <lcsc-skill-path>/scripts/sync_datasheets_lcsc.py path/to/schematic.kicad_sch
python3 <element14-skill-path>/scripts/sync_datasheets_element14.py path/to/schematic.kicad_sch

DigiKey is best (direct PDF URLs). element14 is reliable (no bot protection). LCSC works for LCSC-only parts. Mouser is a last resort (often blocks downloads).

**Tell the user where datasheets are** (e.g., `hardware/<project>/datasheets/`). They'll reference them often.

**Cross-revision projects:** Use a single shared datasheets directory at the project level rather than per-revision. The same MPN's datasheet doesn't change between revisions.

Re-sync after writing new MPNs (Step 5) — the scripts are idempotent. Then backfill Datasheet URLs into the schematic:

python3 <skill-path>/scripts/sync_datasheet_urls.py path/to/schematic.kicad_sch --recursive

This reads `datasheets/manifest.json` (legacy name `index.json` still supported) and writes discovered datasheet URLs into empty schematic `Datasheet` properties. Opportunistic — only fills blanks. If a schematic already has a different URL, it warns about the mismatch witho

Read more
@aklofas
Ships withkicad-happy

AI-powered design review for KiCad. Analyzes schematics, PCB layouts, and Gerbers. Catches real bugs before you order boards.

Stars on GitHub

Momentum

stars in total
1.6k
Star history of aklofas/kicad-happy on GitHub, a chart by star-history.com

Other skills on kicad-happy.

datasheets
Auto-invoked

datasheets

Extract structured specifications from electronic component datasheet PDFs — pinouts, electrical characteristics, peripherals,…

@aklofas@aklofasInstall Skill
digikey
Auto-invoked

digikey

Search DigiKey for electronic components and download datasheets — primary source for prototype orders and the preferred API…

@aklofas@aklofasInstall Skill
element14
Auto-invoked

element14

Search Newark, Farnell, and element14 for electronic components — find parts by MPN or distributor part number, check…

@aklofas@aklofasInstall Skill
emc
Auto-invoked

emc

EMC pre-compliance risk analysis for KiCad PCB designs — 18 check categories, 44 rule IDs covering ground planes, decoupling, I/O…

@aklofas@aklofasInstall Skill
jlcpcb
Auto-invoked

jlcpcb

JLCPCB PCB fabrication and assembly — BOM/CPL generation, basic vs extended parts, assembly constraints, design rules, ordering…

@aklofas@aklofasInstall Skill
kicad
Auto-invoked

kicad

Analyze KiCad projects and PDF schematics: schematics, PCB layouts, Gerbers, footprints, symbols, netlists, and design rules.…

@aklofas@aklofasInstall Skill

More skills from other plugins.

api-review

api-review

Produce the "Playwright 1.xx API Review" artifact for a range of commits - the public API additions and the breaking or behavior…

@microsoft@microsoftInstall Skill
add-e2e-selectors

add-e2e-selectors

Add reliable @grafana/e2e-selectors to interactive elements and key containers in the Grafana frontend. Use when adding e2e…

grafana1d78k
@grafana@grafanaInstall Skill
promptfoo-evals

promptfoo-evals

Write, refine, run, and QA promptfoo evaluation suites: promptfooconfig.yaml, prompts, providers, vars, tests, assertions,…

@promptfoo@promptfooInstall Skill
deepeval

deepeval

DeepEval evaluation workflow for AI agents and LLM applications. TRIGGER when the user wants to evaluate or improve an AI agent,…

@confident-ai@confident-aiInstall Skill

Questions about bom.

Which coding agents can use bom?
bom installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.