Install
$ agentstack add skill-mawildoer-atopile-agent-skill-build-and-test ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Build & Test Workflow
Typical Order
ato validate-- quick syntax check. Catches parse errors before a full build. No solver, no parts, no PCB. Use after editing .ato files to confirm they parse cleanly.ato build-- the main command. Runs from the project directory (whereverato.yamllives). Stages in order: resolve dependencies, build context, instantiate, verify design, pick parts from JLCPCB, update PCB, generate reports. A successful build means the design is electrically valid and all parts are available.ato build --open-- same as above, then launches KiCad layout editor so you can inspect/route the PCB.ato build -b-- build a specific target fromato.yaml(e.g.ato build -b test). Useful when a project has multiple build targets.ato build --verbose-- runs sequentially without the live display. Better for reading error messages.ato inspect-- debug connectivity. Shows what is connected to a module at a given boundary. Use--inspect --contextto see connections from a specific viewpoint.ato create part -s ""-- search JLCPCB and generate a component package (.ato + KiCad footprint/symbol) inparts/. Interactive: presents matches and lets you pick.
Run any command with --help for full flag details.
Build Outputs
After a successful build, outputs land in build/builds//:
| File | Contents | |------|----------| | .bom.csv | Bill of materials -- designators, footprints, manufacturer, LCSC part numbers | | .bom.json | Same BOM in JSON format | | .variables.ato.json | All solved parameter values -- spec vs actual, whether constraints are met | | .power_tree.ato.json | Power tree structure (JSON) | | power_tree.md | Power tree as Mermaid diagram | | .data_interface_tree.ato.json | Data interface topology | | pinout/ | Per-component pinout JSON files | | backups/ | PCB backup snapshots |
The build/cache/ directory stores downloaded datasheets (PDFs) for picked parts.
Debugging Build Errors
"No parts found matching constraints"
The most common error. The JLCPCB part solver cannot find a real part matching your parameter assertions. Fix in this order:
- Add tolerances --
resistance = 10kohmmatches nothing (0% tolerance). Useresistance = 10kohm +/- 5%orassert resistance within 10kohm +/- 10%. - Widen package constraint --
package = "0201"severely limits options. Try"0402"or remove the package constraint entirely. - Check for conflicting assertions -- two assertions on the same parameter can create an impossible range. Use
get_hoverfrom the LSP on the parameter to see the effective constraint. - Check maxvoltage / maxcurrent -- if you assert
max_voltage within 100V +/- 10%on a 0402 cap, nothing exists. Relax or remove secondary constraints. - Inspect the variables report -- after a partial build, check
build/builds//.variables.ato.jsonto see what the solver computed for each parameter.
"Assertion failed"
A design rule check (assert statement) evaluated to false after part picking. The error message names the specific assertion and the values it compared.
- Read the assertion in the .ato source -- it tells you what relationship was expected.
- Use
get_hoveron the parameters involved to see their solved values. - Either loosen the assertion (widen the tolerance) or tighten the input (pick a more precise part, constrain upstream parameters).
Connection / wiring errors
Symptoms: "cannot connect X to Y", type mismatch on ~, or missing pins.
- You can only connect interfaces of the same type.
ElectricPower ~ Electricalwill fail -- you need to connect to the correct sub-interface (e.g.power.hv ~ some_electrical). - Use
ato inspect --inspect --contextto see what is actually connected where. - Check
~vs~>usage.~>is the bridge-connect operator and requires#pragma experiment("BRIDGE_CONNECT")and the module must have thecan_bridgetrait. - Make sure pin names match. Use
get_hoverorget_definitionon the component to verify pin names.
Import / dependency errors
Symptoms: "module not found", "cannot resolve import", file path errors.
- Check
ato.yaml-- is the dependency listed? Is the path correct fortype: filedeps? - Run
ato dependencies syncto install/update dependencies. - For registry packages:
ato dependencies addto add and install. - For local packages: use
type: filewith a relative path from the project root. - Verify the import path matches the actual file path and module name.
Build hangs or is very slow
The part picker queries JLCPCB and can be slow. If it hangs:
- Check your internet connection -- part picking requires network access.
- Use
--verboseto see which stage is stalling. - If stuck on "Picking parts", you may have too many unconstrained components. Add package constraints to narrow the search space.
- Use
--keep-picked-partsto reuse previously picked parts and skip re-solving.
PCB-related errors
--frozenmode (CI) fails if the PCB needs changes. Remove--frozenlocally to let it update, then commit the result.- "Backing up unsaved pcb changes" is informational, not an error -- it saves your KiCad session before overwriting.
- If KiCad is open and locked, close it or remove the
.lckfile before building.
Package Management
# ato.yaml dependency types:
dependencies:
- type: registry # From packages.atopile.io
identifier: atopile/netties
release: 0.2.0
- type: file # Local/vendored package
identifier: /
path: ../packages/
| Command | What it does | |---------|-------------| | ato dependencies add | Add a registry package (e.g. atopile/netties) | | ato dependencies add file:// | Add a local package | | ato dependencies remove | Remove a dependency | | ato dependencies sync | Install/update all deps to match ato.yaml | | ato dependencies sync -U | Upgrade deps, ignoring pinned versions | | ato dependencies list | Show current dependencies |
LSP Integration for Debugging
Use the atopile LSP MCP tools (see the lsp skill) alongside builds:
get_diagnostics-- faster than a full build for catching syntax errors after edits.get_hover-- inspect solved parameter constraints, interface types, and member lists. Essential for debugging "no parts found" and "assertion failed".get_definition-- jump to where an interface or module is defined when you need to understand its structure.get_references-- find everywhere a symbol is used when tracing connectivity issues.
Build Flags Quick Reference
| Flag | Use case | |------|----------| | --verbose / -v | See full sequential output instead of live display | | --open | Launch KiCad after build | | --frozen | CI mode -- fail if PCB would change | | --keep-picked-parts | Reuse previously picked parts | | --keep-net-names | Preserve net names from PCB | | --keep-designators | Preserve designators from PCB | | --all | Build all projects found recursively | | -j N | Set max concurrent builds (default: 14) |
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: mawildoer
- Source: mawildoer/atopile-agent-skill
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.