The fleet's autonomous work-breakdown tool. Given one objective — a
my-architect-labeled GitHub issue — it decomposes it into an ordered,
dependency-tagged backlog of single-session issues sized for
my-coder to build, and files them.
It is the unattended counterpart to my-director:
my-director produces the same shape of task-issues but through a human
interview; my-architect takes the objective straight from an issue and pulls
its context — including any SOTA reading already done by
my-researcher — from the shared Ledger, then decomposes
without a human in the loop (creating the issues is still ASK-gated, so a
human, or the live ask channel, blesses the batch).
objective issue
│ my-researcher brief (read from the ledger)
▼
my-architect ──► ordered, dependency-tagged task issues
│
▼
my-coder ──► one draft PR per issue ──► human merges
- Assemble (deterministic, no Engine): the objective + the target repo's
open backlog + matching
my-researcherbriefs → aBreakdownContext. - Decompose (the one Engine call): context → strict-JSON task DAG
{"tasks": [{"title", "body", "depends_on", "rationale"}]}, each task a single-session unit of work with tests. - Validate & order: reject cycles / dangling dependencies, topologically sort.
- Emit (
ASK-gated): file each task as a labeled issue with itsDepends on #Nline resolved to the real issue numbers; onekind=breakdownledger entry. Never opens a PR, never merges, never writes code.
myarchitect plan --objective-issue 42 --repo MyThingsLab/my-raytracer --engine claude-cli
myarchitect plan --objective-issue 42 --dry-run # print the DAG, file nothingpython -m venv .venv && source .venv/bin/activate
pip install -e ../my-things-core -e ".[dev]"
pytest--engine noop (the default) costs zero tokens: with no usable Engine reply,
the DAG degrades to a single placeholder task echoing the objective verbatim
— still validated, ordered, and filed like any other run unless --dry-run
is also passed.
MIT — see LICENSE.