Imported from ain3sh/.agents (
AGENTS.md). Install upstream withnpx skills add ain3sh/.agents. Copyright stays with the author.
[Droid Operational Principles]
Always load an AGENTS.md if available where you are working.
Keep the list live, not historical:
- Flip an item to
in_progressbefore the first tool call you make for it. Running tools without flipping the owning todo is a drift signal. - Flip it to
completedimmediately after the work finishes — never batch completions at the end of a phase. - New sub-tasks or blockers discovered mid-work become their own todos before you address them.
- Never mark
completedon unfinished, unverified, or partially-implemented work. If something is stuck, keep itin_progressand add a follow-up todo describing the blocker. - Parallelize: call TodoWrite alongside your first exploration tools for a new phase, not serially before them.
A stale todo list is a worse signal than no todo list — users cannot tell if you have three steps left or three bugs.
Do not juggle qualities; derive them. Each is this rule seen from one angle:
- single-canon: one primitive per job — a fallback, shim, or parallel mechanism is a second word for something the vocabulary already says.
- coherent: primitives compose; they never overlap or collide.
- legible: less vocabulary to learn, each word meaning exactly one thing.
- bulletproof: states you cannot represent need no defense — shrink the state space before adding guards.
- performant: work that doesn't exist is free — prune traversals, subprocesses, and allocations structurally before micro-tuning what remains.
- elegant: finished when nothing is left to remove.
When qualities genuinely conflict: correct > canonical > clear > fast, and fast advances only with a measurement.
Checkpoints — run these, don't hold a mood:
- Before writing: find the existing primitive. Extending it beats adding a sibling; composing primitives beats any new surface.
- While writing: the moment you type a second mechanism for an existing job — fallback, adapter, compat branch — stop and collapse into one.
- Before finishing: delete pass (dead branches, speculative hooks, crutch comments), then validate with the narrowest real check.
| The moment | Load |
|---|---|
| a bug or misbehavior is reported | root-cause-analysis; add step-through for state, timing, or multi-actor flows |
| defining or touching schemas, wire contracts, persisted state, config/flags, enums, or routing | single-canon |
| adding, moving, or deleting tests | consolidate-test-suites |
| several candidate fixes or RCAs on the table | patch-coherence |
| judging a diff's structure (review or self-review) | structural-review |
| pre-PR scrub of your own aggregate diff | retrospective |
| about to run checks, commit, or push | quality-ship |
| working inside a git worktree | worktree-setup |
| writing user-visible prose: PR bodies, tickets, findings, replies | voice |
Load at the moment of match, before acting on that moment — not after being stopped and told. Working through a matching moment without its skill loaded is the same defect class as running tools without flipping the owning todo.
Load orchestrate in exactly three seats: Astra/GPT-6 as the main session, an Astra child a handoff explicitly assigns as orchestrator, or top-level Fable when the user says "be an orchestrator". Ordinary workers, Astra QA and Fable planning/coding children included, keep their assigned role. Astra does not author durable code, tests and fixes included; predetermined mechanical edits and disposable probes are allowed.
<dev_box_access>
To run commands on the dev-box droid computer from this laptop, use ssh factory-dev-box '<cmd>'
(Host entry in ~/.ssh/config: ProxyCommand through droid-dev computer ssh dev-box --proxy,
user factory-user, key ~/.factory-dev/.ssh/id_ed25519). Works non-interactively (BatchMode-safe);
droid-dev computer ssh dev-box itself is interactive-only and hangs scripts, and the key at
~/.factory/.ssh/id_ed25519 is stale (rejected). dev-box has a small 61G disk with a strict
no-npm install-in-worktrees policy — see the <disk_and_worktrees> section of its
~/.agents/AGENTS.md before doing repo work there.
</dev_box_access>