bom
BOM (Bill of Materials) management for electronics projects — the workflow skill that coordinates DigiKey, Mouser, LCSC, element14, JLCPCB, PCBWay, and KiCad…
Skill by aklofas
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/aklofas-bom
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: frontend, productivity, finance, agent-building, data-pipelines, spreadsheets
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/bom
What's inside
- Skill 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".
- License
- MIT
- Instructions
- 375 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (9)
- SKILL.md
- kicad-fields.md · references/
- ordering-and-fabrication.md · references/
- part-number-conventions.md · references/
- bom_manager.py · scripts/
- edit_properties.py · scripts/
- kicad_sexp.py · scripts/
- sync_datasheet_urls.py · scripts/
- translate_bom_pnp.py · scripts/
SKILL.md (first lines)
# 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.
```bash
# 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 --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
```bash
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 and skip already-downloaded parts.
```bash
python3 <digikey-skill-path>/scripts/sync_datasheets_digikey.py path/to/schematic.kicad_sch --recursive
python3 <lcsc-skill-path>/scripts/sync_datasheets_lcsc.py path/to/schematic.kicad_sch --recursive
python3 <element14-skill-path>/scripts/sync_datasheets_element14.py path/to/schematic.kicad_sch --recursive
```
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:
```bash
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 without overwriting (use `--overwrite` to replace). Run with `--dry-run` first to preview.
### Step 3: Gather Part Information
**Watch for comma-separated MPNs.** Some symbols track multiple physical parts (e.g., battery holder + clip). Split on commas and search each MPN independently — searching the combined string matches the wrong product.
Search strategy based on what's available:
- Has MPN → search distributors by MPN to get their PNs and stock
- Has distributor PN but no MPN → search that distributor, get MPN, then search others
- Has only Value + Footprint → search by description (e.g., "100nF 0402 X7R 16V")
Use the project's preferred distributor first, then alternates. Prototype: DigiKey primary, Mouser secondary. Production: LCSC.
### Step 4: Validate Matches
**Don't assume existing PNs are correct** — distributor PNs go stale (discontinued, renumbered). Verify existing PNs resolve against the API. If a PN returns 404, flag it for replacement.
For every match, verify:
1. **Package** matches the schematic footprint (see cross-reference table below)
2. **Specs** match (capacitance, resistance, voltage, tolerance)
3. **Description** makes sense (a resistor ref should get a resistor)
4. **Lifecycle** — not obsolete or EOL
5. **Datasheet URL** is a direct PDF link (not a product page)
If ambiguous, ask the user. A wrong part is worse than a missing part.
### Step 5: Update the Schematic
**KiCad coexistence.** The script detects KiCad's lock file and warns but proceeds. KiCad doesn't auto-detect external changes — it keeps its in-memory copy. If KiCad is open, tell the user: *"Close and reopen the schematic (File → Open Recent) to see the changes. Don't save from KiCad first."*
If unsaved KiCad work exists, ask them to save first (Ctrl+S), then run the script, then reopen.From aklofas/kicad-happy, MIT.
More from aklofas/kicad-happy
- 0.832score
datasheets
aklofas
Extract structured specifications from electronic component datasheet PDFs — pinouts, electrical characteristics, peripherals, topology, and features.
SkillAFreshness: A★ 1.5KClaude Code +9 - 0.832score
spice
aklofas
Run automatic SPICE simulations on subcircuits detected from KiCad schematic analysis — validates filter frequencies, divider ratios, opamp gains, LC…
SkillAFreshness: A★ 1.5KClaude Code +9 - 0.832score
mouser
aklofas
Search Mouser Electronics for electronic components — secondary source for prototype orders.
SkillAFreshness: A★ 1.5KClaude Code +9 - 0.832score
lcsc
aklofas
Search LCSC Electronics for electronic components — find parts by LCSC number (Cxxxxx) or MPN, check stock/pricing, download datasheets, analyze specifications.
SkillAFreshness: A★ 1.5KClaude Code +9 - 0.832score
emc
aklofas
EMC pre-compliance risk analysis for KiCad PCB designs — 18 check categories, 44 rule IDs covering ground planes, decoupling, I/O filtering, switching…
SkillAFreshness: A★ 1.5KClaude Code +9 - 0.832score
element14
aklofas
Search Newark, Farnell, and element14 for electronic components — find parts by MPN or distributor part number, check pricing/stock, download datasheets…
SkillAFreshness: A★ 1.5KClaude Code +9 - 0.832score
digikey
aklofas
Search DigiKey for electronic components and download datasheets — primary source for prototype orders and the preferred API method for fetching datasheets.
SkillAFreshness: A★ 1.5KClaude Code +9 - 0.826score
jlcpcb
aklofas
JLCPCB PCB fabrication and assembly — BOM/CPL generation, basic vs extended parts, assembly constraints, design rules, ordering workflow.
SkillAFreshness: A★ 1.5KClaude Code +9 - 0.821score
kicad
aklofas
Analyze KiCad projects and PDF schematics: schematics, PCB layouts, Gerbers, footprints, symbols, netlists, and design rules.
SkillAFreshness: A★ 1.5KClaude Code +9 - 0.693score
pcbway
aklofas
PCBWay PCB fabrication and assembly — turnkey/consigned assembly, design rules, ordering workflow.
SkillAFreshness: A★ 1.5KClaude Code +9 - 0.587score
Cursor rules · aklofas/kicad-happy
aklofas
1 Cursor rule file from aklofas/kicad-happy: kicad-happy.
TemplateAFreshness: A★ 1.5KCursor
Signals
- Stars
- 1,497
- Forks
- 131
- Open issues
- 3
- Last commit (this folder)
- Oct 6, 2026 (21 days ago)
- Last release
- Oct 23, 2026 (4 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/aklofas/kicad-happy
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from aklofas
- 0.832score
datasheets
aklofas
Extract structured specifications from electronic component datasheet PDFs — pinouts, electrical characteristics, peripherals, topology, and features.
SkillAFreshness: A★ 1.5KClaude Code +9 - 0.832score
spice
aklofas
Run automatic SPICE simulations on subcircuits detected from KiCad schematic analysis — validates filter frequencies, divider ratios, opamp gains, LC…
SkillAFreshness: A★ 1.5KClaude Code +9 - 0.832score
mouser
aklofas
Search Mouser Electronics for electronic components — secondary source for prototype orders.
SkillAFreshness: A★ 1.5KClaude Code +9 - 0.832score
lcsc
aklofas
Search LCSC Electronics for electronic components — find parts by LCSC number (Cxxxxx) or MPN, check stock/pricing, download datasheets, analyze specifications.
SkillAFreshness: A★ 1.5KClaude Code +9 - 0.832score
emc
aklofas
EMC pre-compliance risk analysis for KiCad PCB designs — 18 check categories, 44 rule IDs covering ground planes, decoupling, I/O filtering, switching…
SkillAFreshness: A★ 1.5KClaude Code +9 - 0.832score
element14
aklofas
Search Newark, Farnell, and element14 for electronic components — find parts by MPN or distributor part number, check pricing/stock, download datasheets…
SkillAFreshness: A★ 1.5KClaude Code +9
Cite this page
bom skill. Agent Mart. https://agentmart.dev/skills/aklofas-bom (last updated 2026-10-24)