| name | atopile-skills |
| description | How to write and maintain `.claude/skills/*/SKILL.md` files: source-of-truth-first process, verification steps, and conventions. Use when this capability is needed. |
Skills Skill (Maintaining Skill Docs)
This skill describes the process for maintaining the skill documentation under .claude/skills/*/SKILL.md.
The goal is that future LLM edits stay accurate, actionable, and grounded in the repo (not vibes).
Quick Start
When updating any skill:
- Find the module’s “source-of-truth” docs (README/design notes).
- Verify claims directly in code (entrypoints + invariant-enforcing files).
- Fix incorrect paths/APIs/tests by searching the repo.
- Add/update a small
## Quick Start that actually runs in this repo.
- Validate frontmatter + referenced paths.
What “Good” Looks Like
A good skill doc is:
- Specific: points at exact files and the real entrypoints.
- Invariant-driven: documents the correctness rules enforced by the code (not aspirational design).
- Runnable: Quick Start snippets compile/import (or at least match the current API surface).
- Traceable: any non-obvious claim can be traced to a file path in the repo.
Standard Workflow (Source-of-Truth First)
1) Inventory the skill’s scope
- Identify the module boundary (directories, packages) and key consumers (“call sites”).
- Prefer using
rg over memory: look for imports, entrypoints, and key classes/functions.
2) Read the docs, then the code that enforces invariants
Use this hierarchy:
- A module README/design doc (if present)
- The runtime entrypoint(s) used by the rest of the repo
- The files that enforce invariants (the places that must remain correct)
- Tests that codify behavior
Examples:
- Solver:
src/faebryk/core/solver/README.md + src/faebryk/core/solver/symbolic/invariants.py
- Graph:
src/faebryk/core/zig/src/graph/graph.zig + src/faebryk/core/zig/src/python/graph/graph_py.zig + generated stubs
- Library:
tools/library/gen_F.py is the source-of-truth for _F.py
3) Fix wrong statements (don’t preserve broken history)
Common failure modes in skill docs:
- stale file paths (
atopile/src/... vs src/...)
- renamed entrypoints (
lsp_server.py vs imaginary server.py)
- test paths that no longer exist
- claims about behavior that conflict with the actual API surface (especially Zig bindings)
Rule: if you can’t prove it from the repo, either remove it or label it as a hypothesis with a pointer to where to verify.
4) Add a minimal, correct ## Quick Start
Quick Start should be:
- 5–20 lines
- uses the public API surface as used elsewhere in the repo
- avoids placeholders like
src/.../something.zig
Good patterns:
- CLI snippet for user-facing flows (
ato build, ato dev test --llm)
- Python snippet for core APIs (
GraphView.create() / TypeGraph.create(...))
5) Validation checklist (required)
- Frontmatter YAML parses and contains
name and description.
- Every referenced
src/, tools/, and test/ path exists (exclude generated build outputs).
- Any code identifiers mentioned (classes/functions) exist (
rg check).
- Quick Start uses correct import paths and function signatures.
Style/Structure Conventions
Prefer this ordering:
- One-paragraph summary
## Quick Start
## Relevant Files
## Dependants (Call Sites)
## How to Work With / Develop / Test
## Best Practices / ## Invariants (when applicable)
Keep the doc concise and “repo-local”: avoid external links unless they’re stable standards docs.
Source: atopile/atopile — distributed by TomeVault.