KEEL · YARD v0.10.0

Sample-novel walkthrough

The Salt Ledger is the sample novel the starter builds: 24 pages, three characters (Kael, Vess, Immy), one arc, three beats, three leaves — every layer of Keel populated. This lesson touches every feature once, in the order you would really use them. Budget: twenty minutes.

1 · In: launch and sign in

PS> powershell -ExecutionPolicy Bypass -File C:\ai\workspace\keel\start-keel.ps1

At the login: password mvp, Enter. (Or F2 for dev mode — the lesson works either way.)

2 · The Map — walk the spine

You land on view 1. The rail's tree shows the whole spine with status glyphs; everything in the sample is ● canon. Press j and k: the selection moves, the detail box under the tree shows each node's card, and the center pane previews the prose of the selected beat's first leaf.

keel frames … s-0001 — read-only preview · Enter to edit ● 1 The Departure ● 1.1.1 Beat 1 ◄ selected Kael crossed the coastal trading city with ● 1.1.2 Beat 2 the light failing behind the roofs. ● 1.1.3 Beat 3 Vess said nothing at first, and the silence ⚠ frontier: 1.1.3 did most of the arguing.

The ⚠ frontier warning on the tree's border says beat 1.1.3 is the last one specified — the spine runs dry after it. A warning, never a block.

3 · Enter — write in a leaf

With a beat selected, press Enter. Keel checks the leaf out (you hold its lock now) and opens the editor — the thick cyan ✎ border. The keys are vim-lite:

i / Escinsert text / back to normal mode
h j k l · w b emove by character, line, word
dd · cw · yy · p · udelete line, change word, yank, paste, undo
^ssave · the foot shows ●unsaved until you do
^ffocus — dim everything but the current paragraph
^ehand the leaf to your own $EDITOR and reload

Type a sentence. One sentence per line is the house style — Keel keeps diffs readable that way.

4 · ^m — markup

Press ^m. With no selection you get block directives — pick break to drop a @break scene break. Select a few words first (v in normal mode) and ^m offers inline directives instead: think wraps the selection as @think{...}, interior monologue the typesetter renders in italics.

5 · ^g — Davy

┌ DAVY ──────────────────────────────┐ │ instruct: Kael counts the coins and │finds one missing. Four sentences.▏ │ │ │ │ Enter generate · ^; inspect context │ │ · Esc close │ └─────────────────────────────────────┘

Type what you want, Enter — the draft streams in; a accepts it into the leaf, r rejects. Nothing is ever written without your accept, and accepted spans are logged (the foot's ✎% shows AI density). Press ^; before generating to inspect the exact context the DAVY sees — every section pinnable.

Davy needs ANTHROPIC_API_KEY set in your environment. Without it you get the honest refusal — "no AI provider configured" — and everything else in Keel still works.

6 · Out to the command line

Quit (^s then q) and stay in the series folder. Every TUI feature has a command twin. Proofread your edited leaf:

PS> keel proofread s-0001 --accept s-0001 r2 — corrections ([-…-] {+…+}): The light failed behind the [-roofs roofs-]{+roofs+}. s-0001 r3 — corrections applied and marked proofread

The ✂ mark is per-revision — edit the leaf again and it returns to unproofread, visibly, in keel status and at render time. Explore the ledger the sample seeded:

PS> keel promise list P-01 what does Kael finally owe? (opens b-v1.1.1.1 · ✓ paid in b-v1.1.1.1) PS> keel fact list F-0001 e-coastal-trading-city the coastal trading city keeps a ledger of its own PS> keel search "ledger" s-0001 scene … the city kept its own [ledger] of comings and goings …

7 · Amend a beat — the blast radius

The centerpiece. Change a canon beat's exit contract and watch Keel compute what that breaks:

PS> keel co b-v1.1.1.2 PS> notepad checked-out\b-v1.1.1.2.yaml # change exits_with, save PS> keel amend b-v1.1.1.2 -m "the debt is named" amendment a-1 opened — b-v1.1.1.2 (exits_with) blast radius (2 impacts): ⛔ b-v1.1.1.3 b-v1.1.1.2 changed exits_with — b-v1.1.1.3's enters_with must be re-satisfied ⚠ s-0002 realizes b-v1.1.1.2 — contract fields changed: exits_with PS> keel land a-1 keel: a-1 has unresolved blocking impacts — reconcile them or land with --waive

Landing is refused while a ⛔ stands. Reconcile the successor into the changeset, then land — everything flips canon in one transaction, and the unreconciled ⚠ becomes tracked debt:

PS> keel co b-v1.1.1.3 # fix its enters_with to match PS> keel ci b-v1.1.1.3 -m "re-satisfy entry" --changeset a-1 PS> keel land a-1 a-1 landed — 2 revisions canon tracked debt — these show ⚠ stale until reconciled: ⚠ s-0002 — realizes b-v1.1.1.2

8 · Back in — worldline, review, the book

Relaunch (keel). Press 4: the review view lists a-1 as landed. Press 7: the worldline lays the three leaves on a horizontal line — c for reading order, t for story time across the five eras, ←→ selects, Enter opens a leaf. Then press F5: the whole book typesets to a B-format PDF and opens. Finally, from the command line:

PS> keel export --epub # an e-book PS> keel snapshot lesson-done # pin every revision under a name PS> keel render --publish # view it at localhost:8000/preview/the-salt-ledger.pdf

You have now touched everything

The spine and its gate, the editor, markup, Davy, proofreading, the ledger, an amendment with a real blast radius, the worldline, and the book itself. Where to go deeper: the writing workflow · the spine handbook · Davy · amendments & blast radius · the book pipeline.