Specline canon 2.3.0-draft Docs For agents ↗
Specline · canon 2.3.0-draft · the handbook

One shape for
every feature
you design.

Specline gives every feature the same structure — so a plan is something you and an agent can produce, check, and trust the same way every time, instead of a blank page and a different shape on each one. A deterministic checker keeps it honest; you keep the judgment.

Loopshape → ratify → build → graduate
Your gatesratify · accept
The checkerdoctor — structure only
Start attier 0 — one spec
01 · What this is

The structure, made real

You write a plan, hand it to a model, it more or less follows it. The next feature has a different shape and different gaps. Nothing is wrong, but nothing is consistent — and inconsistency is where things get missed.

Specline fixes the shape. Every feature becomes the same kind of folder, with the same sections, and a checker (doctor) that tells you when a plan doesn't fit. A convention everyone agrees to but nothing enforces is just a suggestion; Specline makes it something you can actually rely on.

A convention without a validator is a suggestion.

02 · The loop

Four moves

A feature moves through four steps. You're only ever on the two ends — shaping the intent and approving the result. The middle runs itself.

01
Shape
you + agent
02
Ratify
you — gate
03
Build
agent
04
Graduate
agent · archive
reshape is normal
SHAPE → RATIFY → BUILD → GRADUATE. Reshaping returns to shaping at any time — a transition, not a failure.

Shape — you and an agent talk the feature through and write the spec; unknowns become logged questions with a default, so nothing blocks. Ratify — you read it in one sitting and approve. Build — the agent implements against the ratified spec. Graduate — on ship, the spec is archived and a short knowledge note records why the code is the way it is.

03 · The spec folder

The same files, every time

That sameness is the benefit. Read one spec and you can read them all.

docs/specs/0007-trade-in-quote/
  spec.md            # the contract — what we're building and why
  relations.md       # how this feature connects to others
  status.md          # the build's memory (once you start building)
  open-questions.md  # decisions not yet made (optional)

spec.md always carries the same sections, in the same order:

spec.md
---
id: 0007
slug: trade-in-quote
status: draft
decider: jonathan
---

# Trade-In Quote

## Intent        # what + why, and the appetite (how big?)
## Non-goals     # what this deliberately won't do
## Behavior      # numbered, observable statements
## Business rules # the must / must-not constraints
## Acceptance checks # how you know it's done
## Out of scope   # deferred for later

Why the number 0007? So features can reference each other by a name that never changes even if you rename or move them. It's bookkeeping — the agent assigns it; you can mostly ignore it.

04 · The product record

One structured home for the whole product

Specline isn't just a folder for specs. It defines docs/ as the product's source of truth — one structured place holding everything that determines the product: its intent, its decisions, its strategy, what actually shipped, and the trail of what was promised.

"docs" usually means afterthought — written late, read never. Here it's the reverse: the primary, prescriptive record the product is built from, and the descriptive memory of what it became. Every directory earns its place.

docs/
  architecture.md     # system shape — read first
  conventions/        # standards, templates, the canon + tier pin
  decisions/          # repo-local ADRs — append-only (ADR > spec > knowledge)
  strategy/           # vision, roadmap, launch contracts — dated, archived
  technical/          # cross-cutting patterns — only when non-obvious
  specs/              # IN-FLIGHT — prescriptive, temporary
  knowledge/          # SHIPPED — descriptive, permanent
  archive/            # TERMINAL — contracts, read-only
  relations-index.yml # generated reverse-edge index

Some of these doctor enforces; the rest are conventions the canon defines and you maintain. Knowing which is which is the difference between a rule and a habit.

DirectoryHoldsdoctor
architecture.mdSystem shape; the read-first orientation.convention
conventions/Standards, templates, the canon-version + tier pin.reads the pin
decisions/Repo-local ADRs, append-only. Precedence: ADR > spec > knowledge.convention
strategy/Vision, roadmap snapshots, launch contracts.convention
technical/Cross-cutting implementation patterns.convention
specs/In-flight features — prescriptive, temporary.enforced
knowledge/Shipped reality — descriptive, permanent.enforced
archive/Terminal contracts — permanent, read-only.enforced

doctor validates the lifecycle-core — specs/, knowledge/, archive/, the pin, ids, links. decisions/, strategy/, and technical/ are defined by the canon but maintained by you: convention, not policed.

05 · Feature memory

How a feature is documented

A feature's documentation changes posture as it moves through the loop — from a contract you're building toward, to a description of what you built.

In flight, it lives in docs/specs/NNNN-slug/: prescriptive — what we intend to build. Temporary by design.

When it ships, it graduates into two permanent homes at once:

archive/NNNN/spec.md — the contract

The final spec, verbatim, status: shipped, acceptance results linked. Read-only forever. What was promised.

doctor · read-only prescriptive

knowledge/NNNN/ — the living description

Present-tense docs of what's true now — intent, rules, and rationale, reorganized for a reader. What it became.

gate · judgment descriptive

The in-flight spec is then deleted — the contract survives only in archive/. A feature is never in specs/ and archive/ at once.

If a knowledge doc would lose an argument with the code, it shouldn't exist. If it records why the code is the way it is, it can't lose that argument.

That's the test for what belongs in knowledge/: keep intent, rules, and rationale; cut anything the code already says. Tense and posture are a judgment call at the gate — doctor only checks that knowledge/ carries no lifecycle files.

Migrating an existing repo

Already-shipped features never had a Specline spec, so there's no contract to archive. In practice you populate knowledge/NNNN-slug/ directly from your existing descriptive docs — they're usually already knowledge-shaped — assign an id, and let archive/ fill as features go forward. Backfill a minimal contract only where the original still carries value. doctor permits knowledge without an archived spec, so a migrated repo is conformant from day one.

06 · The split

Two gates, one machine

Specline draws one hard line: structure is checked by a machine; meaning is judged by you.

doctor — the machine

Checks structure only: is the folder shaped right, do the links resolve, are the IDs consistent. Deterministic, runs no AI, makes no judgment. Same answer every time.

doctor · enforced structure

you — the two gates

Judge meaning: is this the right thing to build, is it sized right, is the spec actually good. A machine can't and shouldn't do that.

gate · ratifygate · accept judgment

So you're only ever on the two ends. The middle runs itself.

07 · Honest marketing

Claims & failure modes

A claim without a failure mode is marketing.

Every promise Specline makes names the condition under which it breaks.

ClaimMechanismFails when
Consistent structure, every featureOne fixed folder shape, checked by doctorYou skip the checker — then it's a convention again
Rework caught at the cheapest momentAcceptance checks run inside the work, not at a demoChecks are written unfalsifiably
Memory that survives staff & modelsGraduation writes knowledge; archive preserves contractsGraduation is skipped
An agent can plan with you, not just codeThe methodology is served to the agent as a toolThe repo never carries the brief, so the agent isn't aware
Audit trailEvery shipped feature resolves to an archived specArchive integrity breaks — a doctor error
08 · Adoption

Start light

You do not adopt all of Specline at once. You pick a tier, and doctor enforces only the one you declare.

Tier 0
One spec. A single feature in the Specline shape. An afternoon. See if the structure helps before anything else.
Tier 1 · start here
The loop. The folder shape, the four moves, the ratify gate. Almost certainly all you need as a solo planner.
Tier 2 · later
Parallel-work governance. Expiry timers, decision budgets, quarantine — for a team running many features at once. Noise for one person.

If a rule isn't earning its keep for you, you're at the wrong tier. That's a setting, not a failure.

09 · Day to day

How you use it

When you're ready, you do almost nothing to brief the agent:

Drop the CLAUDE.md brief into your repo. Open a fresh agent chat and say, in your own words — "Let's shape a new feature: …" or "Migrate this plan into Specline with me: …". The agent pulls the methodology itself, asks you the shaping questions, and produces the spec folder, checking its own work with doctor as it goes. You read the result in one sitting and approve it.

Point your agent here

Everything an agent needs to operate Specline, in the format it reads best — the raw canon, served at a stable URL.

$curl -s https://specline.dev/spec.md

You don't memorize the rules and you don't paste the canon. The agent learns the methodology from the tool; you bring the judgment.

10 · The checker

The doctor

doctor is the deterministic validator. It reads only markdown, YAML, and folder structure — it never runs your code, never calls a model, never touches the network. One question, the same answer every time: is this repo structurally valid?

It checks things like:

CheckSeverity
Every spec folder has spec.md and relations.mderror
Frontmatter parses; id & slug match the directoryerror
IDs are unique and accounted forerror
Every relative link resolveserror
status.md has the required sectionserror
Unknown keys or sections (newer canon)warning

It runs at your command, in CI, or as a tool the agent calls while it writes. What it never does is judge meaning — tense, sizing, whether the spec is right. That stays yours, at the two gates.

Same input, same output, every run.