# Bom

BOM (Bill of Materials) management for electronics projects, the workflow skill that...

- Repository: https://github.com/aklofas/kicad-happy (1565 stars)
- Category: AI and agents
- License: MIT
- Last updated: 2026-11-01
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add aklofas/kicad-happy --skill bom -g -a claude-code -y`
Codex: `npx skills add aklofas/kicad-happy --skill bom -g -a codex -y`
Cursor: `npx skills add aklofas/kicad-happy --skill bom -g -a cursor -y`
Gemini CLI: `npx skills add aklofas/kicad-happy --skill bom -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add aklofas/kicad-happy`

## 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".

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# 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

The rest: https://github.com/aklofas/kicad-happy/blob/HEAD/skills/bom/SKILL.md
