Agent skill

bom-generator

Generates Bill of Materials (BOM) from project descriptions for Arduino/ESP32/RP2040 projects. Use when user needs component lists, parts shopping lists, cost estimates, or asks "what parts do I need". Outputs formatted BOMs with part numbers, quantities, suppliers (DigiKey, Mouser, Amazon, AliExpress), and compatibility warnings. Run scripts/generate_bom.py for xlsx/csv export.

Stars 8
Forks 0

Install this agent skill to your Project

npx add-skill https://github.com/wedsamuel1230/arduino-skills/tree/main/skills/bom-generator

SKILL.md

BOM Generator

Creates comprehensive Bill of Materials for maker projects with supplier links and compatibility checks.

Resources

  • scripts/generate_bom.py - Python script for xlsx/csv/markdown BOM generation (requires openpyxl)
  • references/example-bom.md - Complete example BOM
  • assets/example-project.json - Sample project configuration for script

Quick Start

Generate BOM interactively:

bash
uv run --no-project scripts/generate_bom.py --interactive

Generate from JSON configuration:

bash
uv run --no-project scripts/generate_bom.py --json assets/example-project.json --output bom.xlsx

List component database:

bash
uv run --no-project scripts/generate_bom.py --list

Export formats: xlsx (default), csv, md, json

When to Use

  • User describes a project and needs parts list
  • User asks "what components do I need for X"
  • User wants to order parts for a design
  • User needs cost estimates

Workflow

Step 1: Gather Project Requirements

Ask user for:

1. Project description (what does it do?)
2. Target microcontroller (Arduino UNO/Nano/Mega, ESP32, RP2040)
3. Power source (USB, batteries, wall adapter)
4. Quantity (how many units to build?)
5. Budget constraints (optional)
6. Supplier preference (optional)

Step 2: Generate BOM

Run scripts/generate_bom.py --interactive for guided generation, or use this template format:

markdown
# Bill of Materials: [Project Name]

**Generated:** [Date]
**Target Board:** [MCU]
**Quantity:** [N] unit(s)
**Estimated Total:** $[X.XX] - $[Y.YY] (per unit)

## Core Components

| Qty | Component | Specifications | Est. Price | Supplier Links |
|-----|-----------|----------------|------------|----------------|
| 1 | [MCU Board] | [specs] | $X.XX | [DigiKey](#) / [Amazon](#) |
| ... | ... | ... | ... | ... |

## Sensors & Input

| Qty | Component | Specifications | Est. Price | Supplier Links |
|-----|-----------|----------------|------------|----------------|
| ... | ... | ... | ... | ... |

## Output Devices

| Qty | Component | Specifications | Est. Price | Supplier Links |
|-----|-----------|----------------|------------|----------------|
| ... | ... | ... | ... | ... |

## Power Components

| Qty | Component | Specifications | Est. Price | Supplier Links |
|-----|-----------|----------------|------------|----------------|
| ... | ... | ... | ... | ... |

## Passive Components

| Qty | Component | Specifications | Est. Price | Supplier Links |
|-----|-----------|----------------|------------|----------------|
| ... | ... | ... | ... | ... |

## Mechanical & Connectors

| Qty | Component | Specifications | Est. Price | Supplier Links |
|-----|-----------|----------------|------------|----------------|
| ... | ... | ... | ... | ... |

## Tools Required (if not owned)
- [ ] Tool 1
- [ ] Tool 2

## Compatibility Warnings
⚠️ [Any voltage/current/timing concerns]

## Substitution Notes
💡 [Alternative components if primary unavailable]

Component Database

Microcontrollers

Board Voltage GPIO Flash Price Range Best For
Arduino UNO R3 5V 14 32KB $12-25 Beginners, most tutorials
Arduino Nano 5V 14 32KB $3-20 Compact projects
Arduino Mega 5V 54 256KB $15-40 Many I/O, large programs
ESP32 DevKit 3.3V 34 4MB $5-15 WiFi, Bluetooth, IoT
ESP32-C3 3.3V 22 4MB $4-10 Low-cost WiFi
RP2040 Pico 3.3V 26 2MB $4-6 Dual-core, PIO
RP2040 Pico W 3.3V 26 2MB $6-8 Pico + WiFi

Common Sensors

Sensor Interface Voltage Price Use Case
DHT22/AM2302 1-Wire 3.3-5V $3-8 Temperature + humidity
BME280 I2C/SPI 3.3V $5-15 Temp + humidity + pressure
BMP280 I2C/SPI 3.3V $2-8 Temp + pressure (no humidity)
DS18B20 1-Wire 3-5.5V $2-5 Waterproof temperature
HC-SR04 GPIO 5V $1-3 Ultrasonic distance
VL53L0X I2C 3.3V $5-12 Laser distance (accurate)
MPU6050 I2C 3.3V $2-8 Accelerometer + gyroscope
BNO055 I2C 3.3V $25-35 9-DOF IMU (best accuracy)
VEML7700 I2C 3.3V $4-8 Ambient light (lux)
MAX30102 I2C 3.3V $5-12 Heart rate + SpO2

Displays

Display Interface Resolution Price Notes
16x2 LCD I2C 16 chars $3-8 Need I2C backpack
20x4 LCD I2C 20 chars $5-12 Larger text display
SSD1306 OLED I2C 128x64 $3-8 Sharp, no backlight needed
SSD1306 OLED I2C 128x32 $3-6 Compact OLED
ST7735 TFT SPI 128x160 $5-10 Color, fast refresh
ILI9341 TFT SPI 240x320 $8-15 Larger color display
E-Paper SPI Various $15-40 Low power, no refresh

Motors & Actuators

Type Driver Needed Price Notes
SG90 Servo None (PWM) $2-5 180°, weak torque
MG996R Servo None (PWM) $5-10 Strong, metal gears
28BYJ-48 Stepper ULN2003 $3-6 Cheap, slow, weak
NEMA17 Stepper A4988/DRV8825 $8-15 Strong, precise
DC Motor + Gearbox L298N/TB6612 $5-15 High speed available
Linear Actuator L298N $15-40 Push/pull motion

Motor Drivers

Driver Channels Max Current Voltage Price
L298N 2 2A/ch 5-35V $3-8
TB6612FNG 2 1.2A/ch 4.5-13.5V $3-8
A4988 1 stepper 2A 8-35V $2-5
DRV8825 1 stepper 2.5A 8.2-45V $3-6
TMC2209 1 stepper 2A 4.75-28V $8-15

Power Components

Component Specs Price Use Case
LM7805 5V 1A linear $0.50 Simple 5V reg
AMS1117-3.3 3.3V 1A linear $0.30 3.3V from 5V
LM2596 Module Adj. 3A buck $2-4 Efficient step-down
MT3608 Module Adj. 2A boost $1-3 Step-up voltage
TP4056 Module LiPo charger $1-2 Battery charging
18650 Holder 1-4 cells $1-5 Battery mounting
JST Connectors 2-pin $2-5/10pk Battery connections

Passive Components (Buy Kits!)

Kit Type Typical Contents Price Recommendation
Resistor Kit 600+ pcs, 1/4W $8-15 Get once, use forever
Capacitor Kit Ceramic + electrolytic $10-20 Essential
LED Kit 5mm various colors $5-10 Common needs
Button Kit Tactile switches $5-8 Various sizes
Diode Kit 1N4148, 1N4007, etc $5-8 Protection circuits

Supplier Guide

Speed vs Cost Trade-offs

Supplier Shipping Price Best For
DigiKey 1-3 days $$$ Precise specs, datasheets, urgent
Mouser 1-3 days $$$ Wide selection, quality
Amazon 1-2 days $$ Quick delivery, returns easy
Adafruit 3-5 days $$$ Quality, tutorials, support
SparkFun 3-5 days $$$ Breakout boards, learning
AliExpress 2-6 weeks $ Bulk, budget, clones
LCSC 1-2 weeks $$ Chinese components, good quality

Part Number Patterns

DigiKey: Descriptive codes
  - 1N4007-TP → 1N4007 diode
  - SER0006 → Servo motor

Mouser: Manufacturer part numbers
  - Search by exact MPN

Amazon: ASIN codes
  - Search by product name + specs

AliExpress: Store + product ID
  - Check reviews, sold count

Compatibility Checks

Voltage Level Matrix

                     Can Connect To:
From:        3.3V Logic    5V Logic
─────────────────────────────────────
3.3V MCU     ✅ Direct     ⚠️ Level shifter
5V MCU       ⚠️ Divider    ✅ Direct
3.3V Sensor  ✅ Direct     ⚠️ May work*
5V Sensor    ❌ Damage!    ✅ Direct

* Some 3.3V sensors are 5V tolerant - check datasheet

Current Budget Check

Source Limits:
- Arduino 5V pin: 500mA max (from USB)
- Arduino GPIO: 40mA max per pin
- ESP32 3.3V: 500mA max
- ESP32 GPIO: 40mA max
- RP2040 GPIO: 16mA max

Always calculate:
Total current = Σ(component currents)
If total > source limit → external power needed

I2C Address Conflicts

Common I2C addresses to watch:

0x3C - SSD1306 OLED
0x27 - PCF8574 LCD backpack  
0x3F - PCF8574A LCD backpack
0x68 - MPU6050, DS3231 RTC
0x76 - BME280 (default)
0x77 - BME280 (alternate), BMP280
0x48 - ADS1115 ADC
0x50 - AT24C32 EEPROM

Output Format Options

Markdown Table (Default)

Best for documentation, GitHub READMEs.

CSV Export

csv
Qty,Component,Specifications,Unit Price,Total,Supplier,Link
1,Arduino UNO R3,ATmega328P,15.00,15.00,Amazon,https://...

Shopping Cart Links

Provide direct "Add to Cart" links where possible.

Example BOM Output

See references/example-bom.md for complete example.

Expand your agent's capabilities with these related and highly-rated skills.

wedsamuel1230/arduino-skills

battery-selector

Helps choose the right battery type and charging solution for Arduino/ESP32/RP2040 projects. Use when user asks about battery options, charging circuits, power source selection, or says "what battery should I use". Covers chemistry selection, safety, voltage regulation, and charging circuits.

8 0
Explore
wedsamuel1230/arduino-skills

circuit-debugger

Systematic hardware debugging guide for Arduino/ESP32/RP2040 circuits. Use when user reports: circuit not working, components getting hot, no power, intermittent failures, unexpected behavior, sensor not responding, LED not lighting, motor not spinning. Guides through power checks, continuity testing, signal tracing, and component isolation using multimeter techniques.

8 0
Explore
wedsamuel1230/arduino-skills

readme-generator

Auto-generates professional README.md files for Arduino/ESP32/RP2040 projects following open-source best practices. Use when user wants to document their project for GitHub, needs help writing a README, or says "make my project shareable". Follows awesome-readme standards with sections for Overview, Hardware, Software, Setup, Usage, Troubleshooting, and Contributing.

8 0
Explore
wedsamuel1230/arduino-skills

power-budget-calculator

Calculates total power consumption and battery life for Arduino/ESP32/RP2040 projects. Use when user asks about battery life, power requirements, current draw, or needs to estimate runtime. Includes sleep mode analysis, power optimization tips, and battery sizing recommendations. Run scripts/calculate_power.py for accurate calculations.

8 0
Explore
wedsamuel1230/arduino-skills

arduino-serial-monitor

Tools for reading and analyzing Arduino serial monitor output for enhanced debugging. Provides real-time monitoring, data logging, filtering, and pattern matching to help troubleshoot Arduino sketches using arduino-cli or Arduino IDE.

8 0
Explore
wedsamuel1230/arduino-skills

freertos-patterns

8 0
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results