M.Eng (Hons) First Class
Software engineer at Starship Technologies and co-founder of Purple Parrot. Previously at CERN and ESA. MEng (Hons, 1st) from the University of Plymouth. Based in Tallinn, Estonia.
Iâve been using Claude Code to do hardware design â schematic review, component selection, LCSC part number population, design calculations â and over the course of building SBS_hw (a custom BLDC motor controller for my DIY Onewheel and Robot Dog Butler) I built up a set of patterns that work really well.
This page documents that workflow and points to the kicad-template-master repo, which packages it all up for reuse on new boards.
Claude Code automatically reads a file called CLAUDE.md from the root of any project itâs opened in. Thatâs the entry point for the whole workflow.
A CLAUDE.md for a hardware project contains:
pgrep -fil kicad before editing .kicad_sch filesâ (KiCad corrupts files if you edit them while itâs open)When a fresh Claude session opens, it reads this and is immediately oriented â it knows the board topology, voltage constraints, open issues, and house rules without you re-briefing it.
JLCPCB requires an LCSC Cxxxxxx property on every component for assembly quoting. Doing this by hand in KiCad is tedious. The workflow instead:
.kicad_sch text files)scripts/add_lcsc.py â it patches each schematic in-place, skipping anything already populatedThe script handles all 6 sheets of SBS_hw (136 components) in about 2 seconds.
For standard 0603 passives, JLCPCB âBasic Partsâ have no per-component assembly fee. The jlcpcb-basic-parts.md file in the template has the C-numbers for the full standard value range â so you donât look them up every session.
Each non-trivial component gets its own folder:
manufacturing/
parts/
Infineon/
IRFS4115TRLPBF/
IRFS4115TRLPBF.md â thermal calcs, switching loss, snubber sizing
IRFS4115TRLPBF.pdf â datasheet (linked in KiCad Datasheet property)
Texas_Instruments/
DRV8301DCAR/
DRV8301DCAR.md
motor_controller/
ISSUES.md â board-level issue tracker (MC-001, MC-002, ...)
BOM.md
The individual .md files are the working design documents. At the end of the design theyâre collated into a single design_calcs.md â but not before. Premature collation just creates a doc that immediately goes stale.
The two-tier issue tracking (component issues in parts/, board-level issues in ISSUES.md) keeps things findable: you donât wade through a 500-line issue list to find the decoupling cap calculation.
The template includes a personal KiCad library (design/Kicad_Library/) as a git submodule. This means:
git submodule update --remoteThe trade-off: GitHubâs âUse this templateâ button doesnât clone submodules. You have to use the mirror method instead (documented in the template README).
GitHubâs built-in template system silently drops the submodule, so use the mirror method:
# 1. Create a blank repo at github.com/new
# 2. Bare-clone the template
git clone --bare https://github.com/maxsimmonds1337/kicad-template-master.git TEMP
# 3. Mirror-push to your new repo
cd TEMP
git push --mirror https://github.com/maxsimmonds1337/YOURPROJECT.git
# 4. Clean up
cd ..
rm -rf TEMP
# 5. Clone your new project normally (--recurse-submodules gets the library)
git clone --recurse-submodules https://github.com/maxsimmonds1337/YOURPROJECT.git
Then:
TEOXXXX_boardname.* files in design/ to match your projectCLAUDE.mdCLAUDE.md and be oriented immediatelyBefore BOM lock, check LCSC stock for every part. The lcsc and bom Claude skills can sweep the whole BOM automatically. The rule: any part with stock < 10Ă required quantity gets flagged, and an alternative C-number is documented in the componentâs .md file. LCSC stock drops fast on popular parts â stale stock numbers have caused problems.
For SBS_hw (VESC 6 MK5 derivative, 14S BLDC driver, ~155 unique components):
The CLAUDE.md at each session start meant no time spent re-orienting â the second session picked up the exact list of open issues from the first.