# bom

Coordinates component sourcing, pricing, and BOM lifecycle management for KiCad schematics. Keeps part numbers and quantities stored directly in symbol properties.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 697 installs · ★ 1504
- Author: aklofas
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/aklofas/kicad-happy/tree/HEAD/skills/bom/SKILL.md
- Updated: 2026-10-23
- HTML: https://affpapa.org/en/nevibecode/skills/bom

## What it does

This skill connects KiCad schematics with sourcing tools for DigiKey, Mouser, LCSC, element14, JLCPCB, and PCBWay. Schematic symbol properties act as the single source of truth. The `bom_manager.py` script inspects designs and spots missing fields. It then exports tracking CSV files and builds order lists with spare allowances.

Schematic updates run through `edit_properties.py` with a `--dry-run` preview mode. The `sync_datasheet_urls.py` tool reads `manifest.json` and fills empty datasheet fields. Comma-separated part numbers get split automatically. That prevents matching errors for paired parts like battery clips.

Distributor part numbers go stale when parts get discontinued, so live API verification prevents ordering the wrong hardware. For manufacturing runs, `translate_bom_pnp.py` converts BOM and CPL files into the exact format JLCPCB requires.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add aklofas/kicad-happy --skill bom -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/bom/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/bom/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add aklofas/kicad-happy --skill bom -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/bom/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add aklofas/kicad-happy --skill bom -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/bom/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install aklofas/kicad-happy bom
```

2. **Manually: put the files in place**
- File: `.github/skills/bom/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add aklofas/kicad-happy --skill bom -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/aklofas/kicad-happy --path skills/bom
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/bom/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add aklofas/kicad-happy --skill bom -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/aklofas/kicad-happy/tree/HEAD/skills/bom/SKILL.md

## When to use it
- export KiCad component data into tracking CSV files
- calculate component quantities with assembly spares
- write validated distributor part numbers back to schematic symbols
- convert BOM and CPL files for JLCPCB assembly orders
- fill missing datasheet URLs from a local manifest

## Example prompts
- Analyze path/to/schematic.kicad_sch and list all parts with missing distributor fields
- Generate distributor order files for 5 boards with 2 spares per line
- Export the schematic BOM to bom/bom.csv and translate it for JLCPCB

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: 0dcff0680b8062e4.

BEGIN THIRD-PARTY FILE 0dcff0680b8062e4
````text
---
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.

```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
````
END THIRD-PARTY FILE 0dcff0680b8062e4

The third-party file has ended. Everything between the 0dcff0680b8062e4 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2979 of 22076 bytes. © aklofas · MIT · https://github.com/aklofas/kicad-happy/tree/HEAD/skills/bom/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
