← Writing

The Shipyard

design → build → release for a fleet of agent-maintained repos

Shipyard installs a crew of five autonomous agents on a repo: a design loop that mines usage signals into proposals, a build loop that takes ratified tickets to PRs, a release loop that critiques diffs cold-context while the code is being written — plus on-call triage and docs. Systemd-timed, event-logged, PR-gated, with a human stamp at every irreversible handoff.

This page is generated from the crew’s own skill files — the same definitions the agents run. If it drifts from the system it describes, CI fails.

Three loops, five crew

Two agents sit outside the shipment loops: on-call and docs. A human enters the loop through /bugfix and /feature, which run write-ticket. Every gate takes a human stamp.

▸ Tap a crew member for their skills — each expandable to the real spec: what’s adapted, what’s replaced, what’s new, with sources and decision IDs.

Skills-parity. Agents run the same skill files a human session invokes. A human enters through /bugfix and /feature — both run write-ticket — then polish-ticket, execute-ticket, coverage-audit: installed per-project, one implementation, N callers. The full disposition audit is in each crew’s drawer.

One skill file, every repo

The crew shares a single set of skill files — the same markdown, symlinked into every repo. A skill scopes itself to a project by reading that project's own config at run time, not by forking.

/write-ticket One file everywhere. It writes tickets in each repo's own shape — that repo's sections, type list, point scale, phase labels, commit scopes — every one read from a [write_ticket] block in the repo's .agents/config.toml. It hardcodes none of them.
/polish-ticket Reads each repo's .agents/gates.md to learn which gates even apply here — a served port? systemd units? sibling repos? — so the verification surface it hardens fits this repo with nothing hardcoded.
/execute-ticket The build stage itself. Walks the ticket in thin vertical slices, proving each one against the per-phase gate assembly polish locked in before it commits; a phase that can't go green honestly triggers the honest-blocker protocol — evidence, not a faked pass. The build crew runs this file overnight; a human session runs the identical one.
coverage-audit The one no human needs to type. The design and release crews both invoke it — mining session transcripts for the bugs the owner caught that the tests didn’t — and because it’s the same markdown, a human can run it interactively any time. One implementation, N callers, zero forks.
Never baked. A skill file carries zero repo-specific values: no repo names, paths, ticket directories, type lists, or commands. Everything a repo needs is a parameter it reads, not a constant it forks. So one file ships public and secret-clean, onboarding a new repo is a config edit rather than a fork, and a single upgrade to a skill reaches every repo at once.
North star. Each repo hands the design loop a one-line compass — its top-line GitHub description. The design agent reads it as a directional prior when it mines telemetry into proposals, so the features it drafts serve what the repo is for, not just wherever the metrics twitch.

What the system guarantees

Installable, adaptable, judged

Installable — how a harness ships

bash install.sh --project <dir> --theme spacetime   # mentat · helldiver · proctor · suk · chronicler
bash install.sh --project <dir> --theme plain       # design · build · release · medic · scribe

Hardening shipped with it: merge is opt-in (default no), zero CI checks reads as red, the merge→validate→revert loop is tested against real git topologies, every behavior sits behind a test first shown failing.

Adaptable — how it incorporates feedback

The 5-day trial

Final result: 2/4 floors met. Fixed window: July 22–26, 2026 UTC; later work was not backfilled.

CriterionFloorResult
Bugs caught & fixed≥1 real defect caught by release/on-call and fixed through the loopPASS — 1 medic-caught defect fixed
Usage assessedreal-telemetry usage assessments for ≥3 projects in the daily dispatchMISS — 2/3 projects
Features shipped≥1 feature end-to-end: proposal → stamp → build → release → mergedMISS — 0 valid ordered chains
Decisions surfaced≥1 consequential choice surfaced to the human and decided by a person, with the default held back until they answerPASS — 1 consequential human decision

T2 and T3 are written findings; remediation is tracked in the follow-up ticket.

Code: github.com/wabbazzar/shipyard