Instructions for electronics-specific logic and build processes: netlists, PCBs, build steps, and exporters. Use when implementing or modifying build steps, exporters, PCB generation, or BOM/netlist output.
cd ~/.claude/skills
git clone https://github.com/atopile/atopile.git atopile mkdir -p ~/.claude/skills/domain-layer
curl -fsSL https://raw.githubusercontent.com/atopile/atopile/HEAD/.claude/skills/domain-layer/SKILL.md \
-o ~/.claude/skills/domain-layer/SKILL.md The domain layer (primarily src/atopile/build_steps.py and src/faebryk/exporters/) encompasses the logic and processes specific to electronic hardware engineering. This includes the build pipeline that transforms a compiled graph into manufacturing artifacts (Gerbers, BOMs, Pick & Place).
Run the standard build pipeline from a project directory (where ato.yaml lives):
ato build
src/atopile/build_steps.py
Muster class (a DAG-based task runner).generate_bom, generate_manufacturing_data, update_pcb, etc.src/atopile/build.py (constructs app graph from .ato or .py, runs unit inference)src/faebryk/exporters/
layout_sync.py).jlcpcb.py, etc.).src/atopile/layout.py (generates .layouts.json module→layout mapping)src/atopile/kicad_plugin/README.md (plugin workflow overview)src/atopile/cli/build.py): The ato build command directly invokes build_steps.muster to execute the pipeline.generate_3d_render).generate_bom depends on build_design).update_pcb).atopile.config (not covered here, but relevant).src/faebryk/exporters/ and register a wrapper function in build_steps.py using @muster.register.test/end_to_end/ or test/integration/.ato build on a sample project and inspect the generated artifacts (Gerbers, BOM csv).ato dev test --llm test/test_muster.py -qvirtual=True for targets that just group other targets (e.g. all or default).update_pcb or layout_sync logic to avoid dataloss of user’s manual PCB routing.You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup
Use when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically questionable - requires technical rigor and verification, not performative agreement or blind implementation
Use when completing tasks, implementing major features, or before merging to verify work meets requirements
Use when starting feature work that needs isolation from current workspace or before executing implementation plans - ensures an isolated workspace exists via native tools or git worktree fallback
Use when starting any conversation - establishes how to find and use skills, requiring skill invocation before ANY response including clarifying questions