fernworks
greenline

Your agents forget.
Your repo won't.

One command installs 38 engineering skills into Codex and Claude Code, and turns every stage — decisions, specs, tickets, reviews, evidence — into Markdown a fresh agent picks up cold.

$ npx greenline init Read the docs →

Offline · no telemetry · no account · identical in Codex and Claude Code

205tests green in the tracker agents built
29msp95 command palette, measured on 10,000 issues
21decisions recorded, each with its rejected alternative
0settled questions re-decided in the second project

Two projects, built end to end by headless agents on this system.

The test is the session after this one.

Close the laptop mid-project. Open a different agent tomorrow. It reads the files, not the chat.

agent — greenline paused
add SSO to the dashboard
One thing decides the schema: when an SSO session and a local password session disagree about who you are, which one wins?
SSO wins. linking an account revokes the local login.
Recorded. Rejected: keeping both alive — two sources of truth for identity. Accepted cost: linking logs you out once.
+.green-line/work/007-sso/decisions.md  revision 1
Nothing left to decide. Writing the spec, pinned to decisions r1.
+.green-line/work/007-sso/spec.md  consumes decisions@1
$ greenline status
INIT-007 007-sso planned tickets 0/3
  frontier: INIT-007/TKT-001
TKT-001 is the frontier. Claim it and build it test-first?
go
Built to its acceptance criteria. 14 tests, all green. result_commit recorded.
$ greenline doctor
  no effects
  ok

Nothing above is remembered. Every answer came out of Markdown in the repo.

Eight stages. Every one leaves a file.

Idea → decisions → spec → tickets → build → review → verify → close. The frontier is what's ready to build. The harvest is what the next project starts from.

The greenline pipeline Seven stations on one line — Shape, Specify, Decompose, Build, Review, Verify, Close — each depositing a file; review findings loop back to Build, and Close harvests into a decisions book the next initiative reads before shaping. the next initiative reads the book before shaping findings and NOT VERIFIED send the ticket back Shape — grilled until nothing's ambiguous Shape decisions.md Specify — a contract, pinned to revisions; your explicit word Specify spec.md Decompose — tracer-bullet tickets, falsifiable criteria Decompose tickets/ Build — one ticket, one worktree, test-first Build evidence/ Review — a different session, never the builder Review reviews/ Verify — measured, or honestly NOT VERIFIED Verify VERIFIED Close — your word, plus the harvest Close complete DECISIONS.md the book dashed halo = your explicit word
  1. Shape decisions.mdgrilled until nothing's ambiguous
  2. Specify spec.mda contract, pinned to revisions — your explicit word
  3. Decompose tickets/tracer-bullet tickets, falsifiable criteria
  4. Build evidence/one ticket, one worktree, test-first
  5. Review reviews/a different session, never the builder
  6. Verify VERIFIEDmeasured, or honestly NOT VERIFIED
  7. Close completeyour word, plus the harvest
  8. findings and NOT VERIFIED send the ticket back to Build
  9. Close harvests into DECISIONS.md — the next initiative reads it before shaping
Every file has an id, a status, and a revision. Git carries the history. Read the pipeline →

The doctor teaches.

Contracts are checked after the fact, and every refusal names its own cure — so agents repair in one turn instead of guessing. In the second project, every decision, spec, ticket and review was born valid: zero refusals.

Decisions compound.

Closing a project promotes the rulings that outlive it into a decisions book the next project reads before shaping anything. Sixteen rulings carried forward; a fresh agent applied one earlier refusal to a question that hadn't come up yet.

Nobody reviews their own work.

Review runs in a different session against the committed range; a broken finding sends the ticket back with a runnable reproduction attached. Reviews caught multibyte corruption at a chunk boundary, reproduced with a 70,000-character round-trip before the fix.

The proof is two builds, not a testimonial.

No customers to quote yet. So here is exactly what was built, by what, and what was measured.

meridian — a keyboard-first, Linear-style issue tracker.

Driven end to end by headless agents: a 13-ticket decision map, 21 recorded decisions each carrying its rejected alternative, nine reviews written by sessions that didn't write the code, 205 tests green. The command palette measured at 29ms p95 over 10,000 issues — instrument and raw output committed beside the number, so it can be re-taken.

pulse — a habit-tracker CLI, across two projects.

The second project was shaped by a fresh agent that had never seen the first. It read the harvested decisions book, wrote out what each ruling forbids, applied a precedent to a question that hadn't come up yet, and re-decided nothing. 41 tests, speed measured. That handoff is the whole thesis — and it was the hardest part to make work.

Both runs are recorded in full, misses included — the times a skill didn't fire are written down next to the times it did.

Start in one command.

Runs inside any Git repository. Nothing leaves your machine.

$ npx greenline init

Quickstart · The pipeline · Recipes · The skills · Doctor reference