dev
LLM-focused workflow for working in this repo: compile Zig, run the orchestrated test runner, consume test-report.json/html artifacts, and discover/debug ConfigFlags.
Install
mkdir -p .claude/skills/dev && curl -L -o skill.zip "https://mcp.directory/api/skills/download/2333" && unzip -o skill.zip -d .claude/skills/dev && rm skill.zipInstalls to .claude/skills/dev
About this skill
Dev Module
This skill is written for LLMs working inside this repo. It focuses on the fastest, most reliable inner loop:
- rebuild Zig bindings when needed
- run the repo’s orchestrated test runner (
ato dev test --llm, not raw test output) - use the generated test reports (
artifacts/test-report.json,artifacts/test-report.html,artifacts/test-report.llm.json) - discover and use
ConfigFlags correctly (and inventory them repo-wide)
Quick Start
source .venv/bin/activate
ato dev compile
ato dev test --llm -k solver
ato dev test --llm --view HEAD --open
ato dev test --reuse --baseline HEAD~1
ato dev flags
Relevant Files
- CLI commands:
src/atopile/cli/dev.pyato dev compile(triggers Zig build viaimport faebryk.core.zig)ato dev test --llm(runstest/runner/main.pywith args; supports baseline/CI report helpers)
- Zig build-on-import glue:
src/faebryk/core/zig/__init__.py(ZIG_NORECOMPILE,ZIG_RELEASEMODE) - Config flags utility:
src/faebryk/libs/util.py(ConfigFlag,ConfigFlagInt, …) - Test runner + reports:
test/runner/main.py(artifacts/test-report.json,artifacts/test-report.html,artifacts/test-report.llm.json) - CI artifacts definition:
.github/workflows/pytest.yml(test-report.json,test-report.html)
Dependants (Call Sites)
- CI/CD: The
devcommands are the primary interface for GitHub Actions workflows. - Local Development: Developers use
ato dev compileafter modifying Zig code.
How to Work With / Develop / Test
Core Commands
ato dev compile: compile native extensions (graph/typegraph/sexp bindings).ato dev test --llm: runs the orchestrated test runner (defaults to-p test -p src); supports:-kfilter (-- -k ...also works via passthrough args)--baselinecomparisons (commit hash orHEAD~Nstyle)--view/--opento fetch and open thetest-report.htmlartifact from GitHub Actions (requiresghCLI)--cito apply the CI marker expression (not not_in_ci and not regression and not slow)--direct -k <testname>to run a single test viatest/runtest.py(tight single-test loops)
Test Reports (JSON as source of truth)
Local test runs write:
artifacts/test-report.json(single source of truth; outcomes/durations/memory/baseline compare status + stdout/stderr/logs/tracebacks; seetests[].output_full)artifacts/test-report.html(human dashboard; derived from JSON; controlled byFBRK_TEST_GENERATE_HTML=1)artifacts/test-report.llm.json(LLM-friendly; derived from JSON; ANSI stripped logs)
CI uploads both artifacts (see .github/workflows/pytest.yml):
test-report.jsontest-report.html
Notes for LLM debugging:
- Prefer
artifacts/test-report.jsonorartifacts/test-report.llm.jsonover raw output; they include structured failures, logs, baseline compare, and collection errors. - The HTML is best for quickly scanning long-running tests, worker crashes, and per-test output.
Remote/baseline behavior:
ato dev test --llm --baseline <commit>uses the CItest-report.jsonartifact as the baseline (requiresghCLI).ato dev test --llm --view <commit> --opencurrently fetches/opens only the HTML artifact; for JSON, download thetest-report.jsonartifact viagh run download.ato dev test --reuse --baseline <commit>rebuilds JSON/HTML/LLM against a baseline without rerunning tests.ato dev test --keep-openkeeps the live report server running after tests finish.
Useful test-runner environment variables (see test/runner/main.py):
FBRK_TEST_REPORT_INTERVAL(seconds; report refresh cadence)FBRK_TEST_LONG_THRESHOLD(seconds; “long test” threshold)FBRK_TEST_WORKERS(0= cpu count, negative scales workers)FBRK_TEST_GENERATE_HTML(1/0)FBRK_TEST_PERIODIC_HTML(1/0)FBRK_TEST_OUTPUT_MAX_BYTES(truncate preview output used by HTML;tests[].output_fullremains complete)FBRK_TEST_OUTPUT_TRUNCATE_MODE(headortail)FBRK_TEST_BIND_HOST(orchestrator bind host; default0.0.0.0)FBRK_TEST_REPORT_HOST(host used in printed report URL; default bind host)FBRK_TEST_PERF_THRESHOLD_PERCENT(default0.30)FBRK_TEST_PERF_MIN_TIME_DIFF_S(default1.0)FBRK_TEST_PERF_MIN_MEMORY_DIFF_MB(default50.0)
LLM quick usage:
artifacts/test-report.llm.jsonis always generated (ANSI stripped, full tests + logs).ato dev test --llmprints a concise summary + schema + jq hints (stdout only).- jq recipes are embedded in the report under
llm.jq_recipes. - Auto-LLM:
ato dev testenables the summary automatically when running under claude-code/codex-cli/cursor. - Force on/off via
FBRK_TEST_LLM=1orFBRK_TEST_LLM=0.
ConfigFlags (how to use + how to inventory)
ConfigFlag is the repo’s “toggle-by-env-var” mechanism. The environment variable name is the first argument to ConfigFlag(...).
Usage:
export SOME_FLAG=1
Inventory all ConfigFlags in-tree (preferred over trying to maintain a manual list):
ato dev flags
Prefer using ato dev flags when you want the full picture (types/defaults/descriptions + callsite counts) in one place.
High-leverage flags you’ll use often:
- Zig build:
ZIG_NORECOMPILE,ZIG_RELEASEMODE - Solver debug:
SLOG,SVERBOSE_TABLE,SPRINT_START,SMAX_ITERATIONS,SSHOW_SS_IS - Logs:
COLOR_LOGS,LOG_TIME,LOG_FILEINFO
Development Workflow
- Zig Changes: Edit files under
src/faebryk/core/zig/src/-> Runato dev compile. - Profiling: If something is slow, use
ato dev profile <command>to generate a flamegraph or stats.
Testing
- Main test entrypoint:
ato dev test --llm. - If you change CLI behavior, add/adjust tests under
test/that exercise the command surface.
Best Practices
- Use ConfigFlags: For experimental features or verbose debugging, use a
ConfigFlaginstead of commenting out code. - Compile often: Zig errors won’t be caught by Python tooling.
More by atopile
View all skills by atopile →You might also like
flutter-development
aj-geddes
Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.
drawio-diagrams-enhanced
jgtolentino
Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.
ui-ux-pro-max
nextlevelbuilder
"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."
godot
bfollington
This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.
nano-banana-pro
garg-aayush
Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.
fastapi-templates
wshobson
Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
Related MCP Servers
Browse all serversExtend your developer tools with GitHub MCP Server for advanced automation, supporting GitHub Student and student packag
Optimize your codebase for AI with Repomix—transform, compress, and secure repos for easier analysis with modern AI tool
Boost your productivity by managing Azure DevOps projects, pipelines, and repos in VS Code. Streamline dev workflows wit
Automate repository management, issue tracking, and merge requests with GitLab API integration for streamlined developme
Octocode seamlessly integrates with GitHub CLI and npm for fast code discovery, repo analysis, and commit tracking with
Effortlessly manage Google Cloud with this user-friendly multi cloud management platform—simplify operations, automate t
Stay ahead of the MCP ecosystem
Get weekly updates on new skills and servers.