Implements one feature per invocation in a fresh context. Reads app_spec.xml / feature_list.json / last-session.md / DECISIONS.md / git log, picks the next failing feature, builds and verifies it through the UI, flips its passes to true, commits. Output ends with FEATURE_PASSED:<n>, STUCK:<n>:<reason>, NOTHING_TO_DO, or ERROR:<reason>.
Runs once at project start. Reads app_spec.xml and produces feature_list.json (200+ features), init.sh, README, and the initial git commit. Output ends with INIT_OK or INIT_FAIL:<reason>.
Triggered after 3 consecutive STUCK results on the same feature index. Either finds a working approach for the stuck feature, or marks it blocked:true in feature_list.json so the orchestrator skips it. Output ends with RESOLVED:<n>, BLOCKED:<n>:<reason>, or ERROR:<reason>.
Build an app_spec.xml from scratch through Socratic Q&A. Use BEFORE /build-app when there is no app_spec.xml yet, or when the operator asks "help me write a spec", "scaffold my project spec", or "set up app_spec.xml". Walks the operator through templates/spec-template.xml section by section, asks 1–3 targeted questions per section, skips inapplicable sections, and writes the final app_spec.xml.
Amend app_spec.xml mid-build for scope changes without breaking the "features only flip false→true" invariant. Use when the operator says "also add X", "drop feature Y", "we need a nightly batch job for Z", or otherwise wants to change scope after the build has started. Edits app_spec.xml in place AND appends new features to feature_list.json (existing entries are never modified).
Uses power tools
Uses Bash, Write, or Edit tools
No model invocation
Executes directly as bash, bypassing the AI model
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
A Claude Code plugin for unattended, long-horizon app builds. The operator writes a spec, runs one slash command, and walks away. A small orchestrator dispatches fresh-context subagents one feature at a time, for hours or days, until every feature in feature_list.json is verified passing.
A cairn is a pile of stones left to mark a trail for whoever comes next. That is the design metaphor: each session leaves durable markers — passing tests, commit messages, decisions — so the next fresh-context agent can pick up the trail without ever having seen the prior session's reasoning.
This project is a direct descendant of Anthropic's autonomous-coding quickstart — the original two-agent reference harness (Python + Claude Agent SDK) that demonstrated long-running autonomous coding via an initializer-then-coder loop driven by a 200-entry feature_list.json. That quickstart is the thing that drove direction here. The core ideas survive intact:
feature_list.json of end-to-end tests.passes: false → true. They are never edited, reordered, or removed.initializer that runs once to scaffold, then a coder that runs many times.cairn-builder keeps all of that and pushes further on three axes:
commands/build-app.md), not an external script. There is no agent.py, no Agent SDK loop, no requirements.txt. Install the plugin, run /build-app, and the operator's Claude Code session is the orchestrator.claude-progress.txt as a single rolling log. cairn-builder splits that into DECISIONS.md (durable architectural choices with replacement semantics) and last-session.md (a bounded, overwrite-only hand-off note). claude-progress.txt is deprecated here.The whole design is a context-discipline pattern, not a code framework.
operator
|
/spec-author skill (Socratic Q&A -> app_spec.xml)
|
/build-app command <-- the orchestrator (YOU)
|
+----------------+-----------------+
| | |
initializer coder stuck-resolver
(runs once) (runs many) (3-strike escalation)
| | |
+----------------+-----------------+
|
feature_list.json
DECISIONS.md
last-session.md
git log
| Role | File | Lifetime | What it does |
|---|---|---|---|
| Orchestrator | commands/build-app.md | Persists across whole run | Routes only. Inspects state via jq / grep. Dispatches exactly one subagent per iteration. Never reads app source, the spec, the feature list, or any project doc. |
| Initializer | agents/initializer.md | Runs once | Reads app_spec.xml, writes feature_list.json (≥200 entries), init.sh, README.md, seeds DECISIONS.md, makes the initial commit. |
| Coder | agents/coder.md | Fresh context, runs many times | Picks the next failing feature, implements it, verifies through the UI, flips passes:true, commits. |
| Stuck-resolver | agents/stuck-resolver.md | Fresh context, escalation | Triggered when the same feature hits the 3-strike .stuck counter. Either gets it working or marks blocked:true. |
| Spec author | skills/spec-author/SKILL.md | Operator-facing | Walks the operator through writing app_spec.xml section by section. Run before /build-app. |
| Spec updater | skills/spec-updater/SKILL.md | Operator-facing | Amends app_spec.xml mid-run for scope changes. Appends to feature_list.json without editing existing entries. |
Subagents end their final message with exactly one line, on a line by itself, matching one of:
npx claudepluginhub bholzer/claude-cairn-builderBrennan's personal collection of skills, agents, and commands
Comprehensive UI/UX design plugin for mobile (iOS, Android, React Native) and web applications with design systems, accessibility, and modern patterns
Multi-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Ultra-compressed communication mode. Cuts ~75% of tokens while keeping full technical accuracy by speaking like a caveman.
Standalone image generation plugin using Nano Banana MCP server. Generates and edits images, icons, diagrams, patterns, and visual assets via Gemini image models. No Gemini CLI dependency required.
Write feature specs, plan roadmaps, and synthesize user research faster. Keep stakeholders updated and stay ahead of the competitive landscape.
Curate auto-memory, promote learnings to CLAUDE.md and rules, extract proven patterns into reusable skills.