Step 1 of 7 · how deep it runs depends on how sure the change must be

frame

about 9,600 tokens

frame as it installs, each line coloured by where its words came from.

  • 7 files
  • 9 edits
  • 369 sentences left out
  • 4 sources
  • last changed 2026-10-21
  • step 1 of 7

Replaces grilling, grill-with-docs, research and prototype (retired 2026-10-08).

The text

SKILL.md

about 710 tokens
  • greenline

---

name: "frame"

description: "Turn a request into a shared understanding before any plan or code: the intent, what is out of scope, the terms and the questions still open, at the depth the change's mode gives the frame step. Use when the mode reaches frame, when the owner says \"grill me\" or \"grill with docs\", and when a term is doing two jobs."

---

greenlineFacts are the agent's to find at every depth; decisions the owner's

Frame turns a request into a shared understanding of what is wanted before any plan or code exists: the intent, what is out of scope, the terms, and the questions still open. It runs where the change's mode reaches the frame step, at the depth the mode gives it, and alone when the owner asks for it by name: "grill me", "grill with docs", or a term doing two jobs, which it names in one line with the sharper word it proposes. It also runs mid-work, at any step, the moment scope, intent or a term turns out unclear: that ambiguity is put to the owner at the inline depth, never guessed through. Asked for by name, or loaded by a start, with no change open, it runs at the written depth, its result stays in the reply, and it writes no file. It reads the settled decisions first, in the repository's decision home and the change's record, and reopens none of them. It never plans and never builds: what is built, and in which order, is the plan step's. Facts are yours to look up first, decisions the owner's.

greenlineFrame names the intent and puts the one open question

## The method

Name the intent, and find the one consequential question the request leaves open, if there is one. A term the request leaves unclear is such a question: put it to the owner, never settle it by your own reading. Ask it with your recommended answer and wait.

greenlineReads the repository's documents first, so no question asks what they settle

Read the repository's documents before the first question: its decision home, its glossary (the repository's own, or `GLOSSARY.md` where it keeps none) and the records of earlier changes in the same area, so that no question asks what they already settle.

greenlineThe interview runs to its end; the owner answers each open behaviour

Where the frame interviews the owner, run the interview in [references/interview.md](references/interview.md) to its end: every behaviour the request leaves open goes to the owner, each with your recommended answer, and none is settled on your own.

greenlineSays when frame reads its research and prototype pages

## When asking cannot settle a question

Two kinds of question are answered by work rather than by asking, and each has its page, read only when one arises:

- A question that waits on a fact the repository does not hold, which primary sources must answer: [references/research.md](references/research.md).

- A question only trying can answer, whether a logic or state model feels right or what a screen should look like, or a design with no precedent whose shape is not chosen yet: [references/prototype.md](references/prototype.md).

greenlineThe handoff names the mode's next step, never a fixed skill

## Handoff

Consumes: the request and the change record's front matter (its mode and why); at the written depth, the repository's decision home, its glossary and the records of earlier changes in the same area Produces: the change record's frame section in .greenline/ledger/<id>.md, one line at the inline depth, and at the written depth the confirmed restatement, its out-of-scope list, the settled terms and any open question; the reply alone when no change is open Next: the next step of the change's mode

SKILL.md as installed, byte for byte SHA-256 0b429630ba9292da4c9850d2c2aacb17d670e3ba5e2fcb7a1b2bedaa4fd7b8dc

references/interview.md

about 1,300 tokens
  • Matt Pocock's skills
  • Addy Osmani's agent-skills
  • Jesse Vincent's Superpowers
  • greenline
greenlineOpens the interview: written depth, or a start's questions in one round

# The interview

Frame reads this page when it interviews the owner, after the repository's documents, and runs the interview to its end; a start's own questions are asked here at any depth, in one round.

greenlineTies the sources' "user" to greenline's owner once, not in every sentence

In the interview, the user is the owner of the request.

Matt Pocock's skillsgrilling/SKILL.md

Interview the user relentlessly until you reach a shared understanding. Map this as a **design tree**: every decision branches into the decisions that hang off it.

Addy Osmani's agent-skillsinterview-me/SKILL.md

Before asking anything, write down your current best read of what the user wants in **one sentence**, plus an honest confidence number (0–100%):

```

HYPOTHESIS: You want a way to answer "how are we doing?" in standup, and "dashboard" was the convention that came to mind.

CONFIDENCE: ~30% — missing: who it's for, what "metrics" means in context, and what success looks like

```

The number forces honesty. If you wrote down a high number but can't actually predict the user's reactions to the next three questions you'd ask, the number is wrong. Start at the confidence level you can defend.

When confidence is below ~70%, append a brief reason on the same line — what's still unresolved or missing. This tells the user exactly what the interview needs to surface, and prevents the number from being a vague signal.

Matt Pocock's skillsgrilling/SKILL.md

Work the tree in **rounds**. The **frontier** is every decision whose prerequisites are already settled: the questions you can ask _now_ without guessing at answers you haven't heard yet. Ask the whole frontier in one round: number each question and give your recommended answer. Then wait for the user's answers before the next round.

Format a round like so:

```

❓ **Q1** - **<question title>**: <question body, might be multiple paragraphs, including multiple choices>

➡️ <your recommended answer>

---

❓ **Q2** - **<question title>**: <question body, might be multiple paragraphs, including multiple choices>

➡️ <your recommended answer>

```

Each round the user answers reshapes the tree: settled decisions push the frontier outward and unblock questions that depended on them. Recompute the frontier and ask the next round. A question whose answer depends on another question still open in this round belongs to a _later_ round, not this one.

greenlineEach round goes in the reply ending the turn, no side channel

Put each round in the reply that ends your turn, and wait there for the answers: a question put through a side channel the user may not see, such as a harness's asynchronous input call, is not asked. A decision the scope the user accepted already settles is yours: decide it within that scope and name it to the user as your choice; one it leaves open still goes to the user.

Matt Pocock's skillsdomain-modeling/SKILL.md

### Challenge against the glossary

When the user uses a term that conflicts with the existing language in the repository's glossary, call it out immediately. "Your glossary defines 'cancellation' as X, but you seem to mean Y. Which is it?"

### Sharpen fuzzy language

When the user uses vague or overloaded terms, propose a precise canonical term. "You're saying 'account': do you mean the Customer or the User? Those are different things."

### Discuss concrete scenarios

When domain relationships are being discussed, stress-test them with specific scenarios. Invent scenarios that probe edge cases and force the user to be precise about the boundaries between concepts.

### Cross-reference with code

When the user states how something works, check whether the code agrees. If you find a contradiction, surface it: "Your code cancels entire Orders, but you just said partial cancellation is possible. Which is right?"

Addy Osmani's agent-skillsinterview-me/SKILL.md

The most dangerous answers are the ones where the user says what a thoughtful answer *sounds like* rather than what they actually want. Watch for:

- Answers that pattern-match best-practice talk ("I want it to be scalable", "clean architecture") without specifics

- Answers that defer to convention ("the way most apps do it", "the standard approach")

- Phrases like "I should probably…", "I think I'm supposed to…", "good engineering practice says…"

- Buzzwords as goals — when "modern", "scalable", "robust" are the answer instead of a specific outcome

When you hear these, the question to ask is:

> *"If you didn't have to justify this to anyone, what would you actually want?"*

That single question often does more work than the previous five.

Addy Osmani's agent-skillsinterview-me/SKILL.md

When your confidence is high, write back what you now think the user wants. Keep it tight (5–8 lines), use their language where possible, and structure it so the user can confirm or correct line by line:

```

Here's what I now think you want:

- Outcome: <one line>

- User: <one line — who benefits>

- Why now: <one line — what changed>

- Success: <one line — how we know it worked>

- Constraint: <one line — the binding limit>

- Out of scope: <one line — what we're explicitly not doing>

Yes / no / refine?

```

Including "Out of scope" is non-negotiable. Half of misalignment is silent disagreement about what is *not* being built.

Jesse Vincent's Superpowersbrainstorming/SKILL.md

Separate what they said from assumptions. Invite correction and incorporate their answer before treating this as the design brief.

Matt Pocock's skillsgrilling/SKILL.md

The session is done when the frontier is empty: every branch of the design tree visited, nothing left silently assumed; a start's own questions end with their one round. Do not act on it until the user confirms you have reached a shared understanding.

references/research.md

about 450 tokens
  • Matt Pocock's skills
  • greenline
greenlineOpens research: frame reads it for a missing fact; the owner decides

# Research

Frame reads this page when a frame question waits on a fact the repository does not hold. The fact is found here; the decision it informs stays with the owner. A question researched for its own sake, with no change open, gets its cited answer in the reply and writes no file.

greenlineReads itself or through one briefed fresh agent it waits for

Read the sources yourself, or, inside a change, hand the reading to one fresh agent through the harness's delegation and wait for its report before the next round; no agent reads while the conversation goes on. That agent gets the one brief every fresh agent gets, with the question as its extra and frame, with this page, as the skill it works by; it starts no agent of its own, and its report is named for the step the reading serves, as frame's references page says. Its reading is its own: cite its report, and do not record its sources as ones you consulted.

The reading's job:

Matt Pocock's skillsresearch/SKILL.md

1. Investigate the question against **primary sources** (official docs, source code, specs, first-party APIs), not a secondary write-up of them. Follow every claim back to the source that owns it.

2. Write the findings to a single Markdown file, citing each claim's source.

3. Save it where the repo already keeps such notes; match the existing convention, and if there is none, it is the change's, as below.

greenlineA research note lives in the change's folder or the plan's research

The change's note is a file in its folder, or, when the work splits into tickets, in the research of its plan directory, which the plan step writes. The frame section cites it, with the question, the supported findings, the counterevidence and the limits of the sources. When a fresh agent did the reading, its report in the change's folder is the change's note; where the note belongs in the repository's own home or a plan directory's research, write it there from the report and link the report.

references/prototype.md

about 1,300 tokens
  • Matt Pocock's skills
  • pstack
  • Jesse Vincent's Superpowers
  • greenline

greenlineOpens prototype: when frame tries things, and that disposable code never ships

Frame reads this page when a frame question can be answered only by trying: whether a logic or state model feels right, what a screen should look like, or which of several shapes a design with no precedent should take. Establish the question, which branch below it needs, and whether the result is disposable or meant to ship. A promising prototype does not silently become production code: the validated decision moves into the real code through the change's build, and the disposable code never enters the shipping source tree. The answer returns to frame, and the frame section cites it.

Matt Pocock's skillsprototype/SKILL.md

A prototype is **throwaway code that answers a question**. The question decides the shape.

## Pick a branch

Identify which question is being answered, using the user's prompt, the surrounding code, or by asking if the user is around:

- **"Does this logic / state model feel right?"** → [LOGIC.md](prototype/LOGIC.md). Build a single shareable HTML file (free-play buttons plus tabbed guided walkthroughs) that pushes the state machine through cases that are hard to reason about on paper, and that a non-developer can drive.

greenlineLinks the UI page under prototype/; the new path rewrote the sentence

- **"What should this look like?"** → [UI.md](prototype/UI.md). Generate several radically different UI variations on a single route, switchable via a URL search param and a floating bottom bar.

Matt Pocock's skillsprototype/SKILL.md

The two branches produce very different artifacts, so getting this wrong wastes the whole prototype. If the question is genuinely ambiguous and the user isn't reachable, default to whichever branch better matches the surrounding code (a backend module → logic; a page or component → UI) and state the assumption at the top of the prototype.

pstackprinciple-exhaust-the-design-space/SKILL.md

When a novel interaction or architectural decision has no established precedent, explore several concrete alternatives before implementation. Building the wrong thing costs more than exploring three options.

**The rule.** When the right answer is not obvious, build 2-3 competing prototypes or sketches. Compare them side by side. Only then commit. Design it twice is this rule by another name. A second flavor of the first shape does not count.

**When it applies:**

- Novel UI interactions (no prior art in the codebase)

- Architectural choices with multiple viable approaches

- Product design decisions where user experience depends on feel, not logic

**When it doesn't:**

- Mechanical implementation where the pattern is established

- Bug fixes or refactors with a clear target state

- Changes where constraints dictate a single viable approach

Jesse Vincent's Superpowersbrainstorming/SKILL.md

**Exploring approaches:**

- Propose 2-3 different approaches with trade-offs

- Present options conversationally with your recommendation and reasoning

- Lead with your recommended option and explain why

- YAGNI ruthlessly - remove unnecessary features from every approach and design

Matt Pocock's skillsprototype/SKILL.md

## Rules that apply to both

greenlinePrototype code stays out of the shipping tree and out of worktrees

1. **Throwaway from day one, and clearly marked as such.** Keep the prototype code out of the shipping source tree: a runnable experiment lives in the change's own working files, under its own id; one that needs the real modules and pages around it lives on a throwaway branch in the one checkout, discarded or kept on the owner's word; and a sketch that touches no source may live in a scratch directory outside the repository. Never a worktree, never a second checkout. Name it so a casual reader can see it's a prototype, not production. For throwaway UI routes, obey whatever routing convention the project already uses; don't invent a new top-level structure.

Matt Pocock's skillsprototype/SKILL.mdgreenlineA prototype runs from one command; the task runner gains no entry

2. **Trivial to run.** A UI prototype starts from one documented command run from the experiment's directory or its throwaway branch with the tools already available: `pnpm <name>`, `python <path>`, `bun <path>`, etc.; the shipping task runner gains no prototype entry. A logic demo is a single HTML file the user double-clicks. Either way, no thinking required to start it.

Matt Pocock's skillsprototype/SKILL.md

3. **No persistence by default.** State lives in memory. Persistence is the thing the prototype is _checking_, not something it should depend on. If the question explicitly involves a database, hit a scratch DB or a local file with a clear "PROTOTYPE, wipe me" name.

4. **Skip the polish.** No tests, no error handling beyond what makes the prototype _runnable_, no abstractions. The point is to learn something fast.

5. **Surface the state.** After every action (logic) or on every variant switch (UI), print or render the full relevant state so the user can see what changed.

greenlinePromotes the relied-on copy into the change's folder; a branch is contextMatt Pocock's skillsprototype/SKILL.md

6. **Capture it when done.** Capture the prototype itself as a **primary source**: copy what the decision relies on into the change's folder, and cite that copy; a prototype built on a throwaway branch may be kept there, out of main, on the owner's word, with a pointer to that branch in the frame section, which is context and never evidence. Capture the answer too (the verdict, the question it settled, and its limits) in the frame section; when the work splits into tickets, the prototypes of its plan directory carry the question, the answer, the limits and the branch pointer. The change's build, not frame, folds the validated decision into the real code. The main branch keeps only the validated decision.

references/prototype/LOGIC.md

about 1,500 tokens
  • Matt Pocock's skills
Matt Pocock's skillsprototype/LOGIC.md

# Logic Prototype

A single, self-contained HTML file (a **shareable demo**) that lets anyone drive a state model by clicking buttons. Use this when the question is about **business logic, state transitions, or data shape**: the kind of thing that looks reasonable on paper but only feels wrong once you push it through real cases.

Because it's one file with nothing to install, you can hand it to a non-developer (a designer, a PM, a domain expert) and let them feel the model for themselves. So it speaks their language, not the code's.

## When this is the right shape

- "I'm not sure if this state machine handles the edge case where X then Y."

- "Does this data model actually let me represent the case where..."

- "I want to feel out what the API should look like before writing it."

- Anything where someone wants to **press buttons and watch state change**.

If the question is "what should this look like," this is the wrong branch. Use [UI.md](UI.md).

## Process

### 1. State the question

Before writing code, write down what state model and what question you're prototyping. One paragraph, at the top of the demo (in a visible intro, not just a comment). A logic prototype that answers the wrong question is pure waste, so make the question explicit so it can be checked later, whether the user is watching now or returning to it AFK.

### 2. Isolate the logic in a portable module

Put the actual logic (the bit that's answering the question) in a single `<script>` block written as a small, pure module that could be lifted out and dropped into the real codebase later. The page around it is throwaway; this module isn't.

The right shape depends on the question:

- **A pure reducer**: `(state, action) => state`. Good when actions are discrete events and state is a single value.

- **A state machine**: explicit states and transitions. Good when "which actions are even legal right now" is part of the question.

- **A small set of pure functions** over a plain data type. Good when there's no implicit current state, just transformations.

- **A class or module with a clear method surface** when the logic genuinely owns ongoing internal state.

Pick whichever shape best fits the question being asked, *not* whichever is easiest to wire to a page. Keep it pure: no DOM, no `document`, no button handlers reaching inside it. The page calls into it; nothing flows the other direction. This is what makes the prototype useful past its own lifetime: once the question's answered, the validated reducer / machine / function set lifts into the real module on its own.

### 3. Build the shareable HTML file

One file, plain HTML/CSS/JS: no framework, no bundler, no server, everything inline so it opens by double-click and survives being emailed around. Anyone should be able to run it by opening it.

Write it for a non-developer. Every label is in **domain language**, not code: buttons and state read like the business, not the reducer. Explain in plain words what's happening.

Lay it out with a clean hierarchy, top to bottom:

1. **Title and one-line explanation** of what this demo lets you explore (the question from step 1).

2. **Current state**: the full relevant state, rendered as a readable panel (labelled fields, not a raw JSON dump), re-rendered after every click so the change is visible. Where it helps a non-developer follow, call out what just changed.

3. **Free-play buttons**: one button per action, always available, so anyone can poke at the model in any order. Each click dispatches its action and re-renders the state.

4. **Guided walkthroughs**: a set of **scenarios**, one per tab. Each tab holds a short plain-language description of the scenario (the situation it sets up and what to watch for) and underneath it, the ordered **buttons to press** for that scenario. Each step is a real button: clicking it performs that action and moves to the next step. Starting a walkthrough resets to a known initial state so the scenario runs the same way every time.

Choose scenarios that demonstrate the awkward cases, the ones hard to reason about on paper: the happy path, a tricky edge case, an attempt at something that should be illegal.

Keep it beautiful but restrained: clean typography, generous spacing, one accent colour. No animations, no gimmicks: nothing that competes with the state and the buttons.

### 4. Hand it over

Send them the file, or open it for them. They'll click through the walkthroughs and free-play whenever they get to it; the interesting moments are when they say "wait, that shouldn't be possible" or "huh, I assumed X would be different"; those are the bugs in the _idea_, which is the whole point. If they want new actions or a new scenario, add them. Prototypes evolve.

### 5. Capture the answer and the prototype

Once the prototype has answered its question, capture the answer, then capture the prototype the way the [prototype page](../prototype.md) describes. The logic-specific mapping: the validated reducer / machine / function set lifts into the real module (the decision, absorbed); the HTML shell rides along to the throwaway branch that keeps the prototype as context, never evidence, and being one self-contained file, it stays trivially re-runnable there.

## Anti-patterns

- **Don't add tests.** A prototype that needs tests is no longer a prototype.

- **Don't wire it to the real database.** Use in-memory state unless the question is specifically about persistence.

- **Don't generalise.** No "what if we wanted to support X later." The prototype answers one question.

- **Don't blur the logic and the page together.** If the pure module references the DOM, `document`, or button handlers, it's no longer liftable. Keep the page as a thin shell over a pure module.

- **Don't reach for a framework, bundler, or server.** One file the recipient double-clicks; a React app or a dev server defeats "shareable".

- **Don't ship the HTML shell into production.** The page is optimised for being clicked through by hand. The logic module behind it is the bit worth keeping.

references/prototype/UI.md

about 1,700 tokens
  • Matt Pocock's skills
Matt Pocock's skillsprototype/UI.md

# UI Prototype

Generate **several radically different UI variations** on a single route, switchable from a floating bottom bar. The user flips between variants in the browser, picks one (or steals bits from each), then throws the rest away.

If the question is about logic/state rather than what something looks like, this is the wrong branch. Use [LOGIC.md](LOGIC.md).

## When this is the right shape

- "What should this page look like?"

- "I want to see a few options for this dashboard before committing."

- "Try a different layout for the settings screen."

- Any time the user would otherwise spend a day picking between three vague mockups in their head.

## Two sub-shapes: strongly prefer sub-shape A

A UI prototype is much easier to judge when it's **butting up against the rest of the app**: real header, real sidebar, real data, real density. A throwaway route on its own is a vacuum: every variant looks fine in isolation. Default to sub-shape A whenever there's a plausible existing page to host the variants. Only reach for sub-shape B if the prototype genuinely has no nearby home.

### Sub-shape A: adjustment to an existing page (preferred)

The route already exists. Variants are rendered **on the same route**, gated by a `?variant=` URL search param. The existing data fetching, params, and auth all stay. Only the rendering swaps. This is the default; pick it unless there's a specific reason not to.

If the prototype is for something that doesn't yet have a page but *would naturally live inside one* (a new section of the dashboard, a new card on the settings screen, a new step in an existing flow), it's still sub-shape A. Mount the variants inside the host page.

### Sub-shape B: a new page (last resort)

Only use this when the thing being prototyped genuinely has no existing page to live inside (e.g. an entirely new top-level surface, or a flow that can't be embedded anywhere sensible).

Create a **throwaway route** following whatever routing convention the project already uses. Don't invent a new top-level structure. Name it so it's obviously a prototype (e.g. include the word `prototype` in the path or filename). Same `?variant=` pattern.

Before committing to sub-shape B, sanity-check: is there really no existing page this could be embedded in? An empty route hides design problems that a populated one would expose.

In both sub-shapes the floating bottom bar is identical.

## Process

### 1. State the question and pick N

Default to **3 variants**. More than 5 stops being radically different and starts being noise, so cap there.

Write down the plan in one line, in the prototype's location or a top-of-file comment:

> "Three variants of the settings page, switchable via `?variant=`, on the existing `/settings` route."

This works whether the user is here to push back or not.

### 2. Generate radically different variants

Draft each variant. Hold each one to:

- The page's purpose and the data it has access to.

- The project's component library / styling system (TailwindCSS, shadcn, MUI, plain CSS, whatever).

- A clear exported component name, e.g. `VariantA`, `VariantB`, `VariantC`.

Variants must be **structurally different**: different layout, different information hierarchy, different primary affordance, not just different colours. Three slightly-tweaked card grids isn't a UI prototype, it's wallpaper. If two drafts come out too similar, redo one with explicit "do not use a card grid" guidance.

### 3. Wire them together

Create a single switcher component on the route:

```tsx

// pseudo-code, adapt to the project's framework

const variant = searchParams.get('variant') ?? 'A';

return (

<>

{variant === 'A' && <VariantA {...data} />}

{variant === 'B' && <VariantB {...data} />}

{variant === 'C' && <VariantC {...data} />}

<PrototypeSwitcher variants={['A','B','C']} current={variant} />

</>

);

```

For sub-shape A (existing page): keep all the existing data fetching above the switcher; only the rendered subtree changes per variant.

For sub-shape B (new page): the throwaway route under `/prototype/<name>` mounts the same switcher.

### 4. Build the floating switcher

A small fixed-position bar at the bottom-centre of the screen with three pieces:

- **Left arrow**: cycles to the previous variant (wraps around).

- **Variant label**: shows the current variant key and, if the variant exports a name, that name too. e.g. `B (Sidebar layout)`.

- **Right arrow**: cycles forward (wraps around).

Behaviour:

- Clicking an arrow updates the URL search param (use the framework's router, e.g. `router.replace` on Next, `navigate` on React Router, etc) so the variant is shareable and reload-stable.

- Keyboard: `←` and `→` arrow keys also cycle. Don't intercept arrow keys when an `<input>`, `<textarea>`, or `[contenteditable]` is focused.

- Visually distinct from the page (e.g. high-contrast pill, subtle shadow) so it's obviously not part of the design being evaluated.

- Hidden in production builds: gate on `process.env.NODE_ENV !== 'production'` or an equivalent check, so a stray prototype merge can't ship the bar to users.

Put the switcher in a single shared component so both sub-shapes can reuse it. Locate it wherever shared UI lives in the project.

### 5. Hand it over

Surface the URL (and the `?variant=` keys). The user will flip through whenever they get to it. The interesting feedback is usually **"I want the header from B with the sidebar from C"**, which is the actual design they want.

### 6. Capture the answer and clean up

Once a variant has won, capture the answer (which variant and why), then capture the prototype the way the [prototype page](../prototype.md) describes. Let the change's build fold the winner into the real code and move the rest onto the throwaway branch, not into main:

- **Sub-shape A**: fold the winner into the existing page; drop the losing variants and the switcher from main.

- **Sub-shape B**: promote the winning variant to a real route; drop the throwaway route and the switcher from main.

The full set of variants is context, never evidence, so it lands on the throwaway branch, not the bin, since variant components and the switcher left in the main branch rot fast and confuse the next reader.

## Anti-patterns

- **Variants that differ only in colour or copy.** That's a tweak, not a prototype. Real variants disagree about structure.

- **Sharing too much code between variants.** A shared `<Header>` is fine; a shared `<Layout>` defeats the point. Each variant should be free to throw out the layout.

- **Wiring variants to real mutations.** Read-only prototypes are fine. If a variant needs to mutate, point it at a stub: the question is "what should this look like", not "does the backend work".

- **Promoting the prototype directly to production.** The variant code was written under prototype constraints (no tests, minimal error handling). Rewrite it properly when you fold it in.

references/greenline.md

about 2,600 tokens
  • greenline
greenlineOpens frame's mechanics page: its depths and what precedes the section

# Frame: the practice's mechanics

This page holds the frame step at each mode's depth and where its work lands, with what comes before it: the orientation, reading the situation, a question, the proposal, where the commits go and the record's opening. Read it with `SKILL.md` when the mode reaches frame, and when AGENTS.md's index sends you here.

greenlineQuick writes one line; regular answers its questions; careful interviews

## The depths

- **Inline, at quick.** Run `SKILL.md`'s method for the intent and the one open question. The change record's frame section, in `.greenline/ledger/<id>.md`, is that one line: the intent, then the open question with its answer, or a start's answers, or none. The line credits the owner only with a choice the owner made, in the request or in an answer; a choice you made is written as yours. It also names each floor found and where it came from, and under a mode the owner chose below one, the floor's reason.

- **Written, at regular.** Read the repository's documents first, as `SKILL.md` says, and write the frame without an interview round with the owner: the section restates the ask, states the acceptance, names every floor found with where it came from, and lists the open questions the request leaves, each answered from the repository and the request with the answer taken, so the owner can correct it on the proposal.

- **Written, at careful, and when frame is asked for by name.** Read the repository's documents, then run the interview in [interview.md](interview.md) to its end. At this depth every behaviour the request leaves open goes to the owner through the interview, each with your recommended answer, and none is settled on your own. A question to the owner goes in the reply that ends your turn, and you wait there for the answer; never put it through a side channel the owner may not see, such as a harness's asynchronous user-input call. A behaviour the scope the owner accepted already settles is yours: decide it within that scope and name it in the frame section and the reply as your choice; one it leaves open still goes to the owner. The frame section holds the confirmed restatement with its out-of-scope list, the terms the interview settled, the floors found with where each came from, and any question the owner chose to leave open.

greenlineWhere research and prototypes land: the brief, report, folder and plan directory

## Where research and prototypes land

A fresh agent that does the research page's reading gets the one brief every fresh agent gets (`.greenline/ledger/README.md`, "The brief and the relay note"), and its report is `.greenline/ledger/<id>/<step>-<n>.md`, named for the step the reading serves. The change's folder is `.greenline/ledger/<id>/`, its working files `.greenline/tmp/<id>/`, and a plan directory, whose research and prototypes the plan step writes, `.greenline/plans/<NNN-name>/`. A prototype, a probe and every other scratch file of the change go in its own working files, `.greenline/tmp/<id>/` under the id of its record, never in a folder under another id.

greenlineThe orientation on an empty tree or a first request

## The orientation

With no change record on any branch, local or remote-tracking, the first request for a change is the orientation: on an empty tree (commits `none`, languages `none found`) it is `groundwork`, its own change before a feature request or the request's own when it asks for setup; otherwise a survey, `architecture-survey` where installed or a read of the top-level documents, its result written into the knowledge homes `.greenline/WORK.md` names under a quick record opened first. Load a start only at the orientation, when the request begins in its row's situation in AGENTS.md, or when the owner names it: it runs until it hands the job to a mode.

greenlineReads the request, the records, the instructions and the decisions

## Reading the situation

Find the intent, the current work, the authority and the affected roots in the repository's evidence: the request, the open and stopped change records under `.greenline/ledger/`, the repository's own instructions (its contributing or law file and the instructions outside the managed markers of AGENTS.md) and its decision home. Before your first proposal in a session, read the situation line `greenline status` prints. Read the decisions book, `.greenline/DECISIONS.md`, when it exists. A path's nesting neither inherits nor overrules a decision; sibling roots stay independent. Lost context requires rereading the material the work needs, not crediting a compaction summary as a full read.

greenlineA question or a named step needs no mode or record

## Questions and named steps

A question needs no mode and no record, and neither does a step asked for by name that changes no file ("review this branch", "verify this", "grill me"), or a start that edits no file. A decision or a term written only into the knowledge homes (the decisions book, the ADR home, the glossary) opens a quick record first, as every write does. A factual question about this repository is answered from its files, as AGENTS.md's loop says. A follow-up inside an open change joins that change.

greenlineStates the mode, its cost and floors, then waits for the owner

## The proposal

Before any edit, state the mode you would use from the table in AGENTS.md, the reason, its cost in agents and rounds, any floor or risk you found, and whether this session can start a second agent: it can when the harness exposes a delegation tool in this session, and you never start one to find out. Then state where the commits go, below, and wait. The owner accepts it or names another mode or branch, and that choice is final; a mode named above yours has its cost in agents and rounds restated before the work. A request that names a mode or a branch has chosen it. Proceed without waiting in two cases only: the request names the mode, or the workspace's `proceed` setting allows the proposed mode (none by default). The owner's yes to a mode is the record's choice line, `owner` or `accepted`, written after the proposal: a request to commit, to checkpoint, to "go ahead" or to put a fix straight into a file is not that yes, and neither are words saying to implement without asking. A `choice: standing` applies only where `proceed` admits the mode, that mode and every faster one; elsewhere the hooks refuse it. The proposal still comes before the first edit, the mode stated as taken with its reason and the where line, and asks only a substantive choice the request leaves open. The proposal, and any question with it, goes in the reply that ends your turn, never through a side channel the owner may not see.

Raising the mode during the work is a new proposal and waits the same way. Under a mode the owner named, a floor or a risk found later is reported and changes nothing; under a proposal the owner accepted, propose the raise it calls for. Either way the record names every floor found, as the ledger guide says. While the tree holds another change's uncommitted edits, propose no new change: say so and wait for the owner, whatever `proceed` or the request allows. A change's id is chosen at its proposal, or earlier for a start's working file.

greenlineThe branch from local facts, no network command before the proposal

## Where the commits go

The where line names the branch the change's commits will go to, read from local facts only, the current branch, the default branch, the remotes, a pull-request template and a CI workflow, with no network command: read the remote's state only as the repository holds it, its remote list, `refs/remotes/<remote>/HEAD` and the remote-tracking branches beside it, and the current branch's upstream, and before the proposal never run `git ls-remote`, `git fetch`, `git pull` or any other command that contacts a remote. It is the current branch when that is not the default branch or the repository has no remote, and otherwise a new branch, `greenline/<id>`. On a detached HEAD, name no branch and ask. The default branch is `origin/HEAD`, else `init.defaultBranch`, else the branch HEAD names unless it is a change's branch, as the ledger guide defines one, and with none, name no branch and ask; on another change's branch, never that branch: the default branch where there is no remote, and otherwise one made from it, `greenline/<id>`. A repository rule pulling the other way, in a contribution guide or a branch policy, is named beside the branch the local facts give, never in its place. In a repository with no remote, the git hooks hold the change whose record is open on the current branch, the default one included, as on a branch of its own: its trailer on every commit, no commit before its `choice` line. Where no change is open on the branch HEAD names, as on the default branch of a repository with a remote, which is never a change's branch, the hooks hold the workspace: they refuse a commit there, a local landing's close aside, and a write outside `.greenline/ledger/` and `.greenline/tmp/`.

Where a repository rule forbids committing on the branch the local facts give and the request names no branch, ask which, recommending `greenline/<id>`, and start once it is answered; a branch the owner leaves to you is one the repository's rules allow, never one they forbid. A worktree holds the change's checkout only on the owner's request and only where the harness runs the session in it; you never make one.

greenlineOpens the record from its skeleton, every section kept

## Opening the record

Before the first edit, switch to the branch the proposal named, creating it when it is new, and write `.greenline/ledger/<id>.md` from the skeleton for its mode in `.greenline/ledger/README.md`, which says when it is `open` or `stopped`. Every mode keeps the whole record: a step the mode does not run holds the one line `none at <mode>`, written as the record opens. One session writes the record at a time, the one holding the change. The change's first commit carries its record: `greenline status` reads history only from the commit where the first change record entered.

greenlineWhat governs, and what each authority permits

## Authority

Instructions and standing grants, explicit repository choices and actual platform constraints govern. Conventions are evidence; a consultation informs a justified gap and settles nothing the repository decided. Source prestige grants no authority. Surface a real conflict with its evidence rather than averaging opposing advice, and continue independent authorized work when a conflict blocks only another part. Maintain authority permits scoped upkeep of established choices; observe authority leaves proposed changes for the owner. Choose roots explicitly; the CLI does not infer which scope governs. The owner names the work; you maintain the practice's installed files only as that work and its grant warrant.

The edits

Red is upstream's text; green is what greenline shipped in its place.

What the edit kinds mean
method
changes what the method does, under a recorded ruling
correction
fixes an error
scope
fits the text to this skill
pointer
re-points a reference
smaller edits
rename, relocate or adjust tool details
  1. Edit 2 method references/interview.md:93

    Upstream: The session is done when the frontier is empty: every branch of the design tree visited, nothing left silently assumed.

    Shipped: The session is done when the frontier is empty: every branch of the design tree visited, nothing left silently assumed; a start's own questions end with their one round.

    A start's own questions end with their one round

    Full reason

    A start that sends its own questions here asks them in one round at any depth, so for those questions the session ends with that round, not with an empty frontier.

    Ruling R5

  2. Edit 4 pointer references/prototype.md:11

    Upstream: → [LOGIC.md](LOGIC.md).

    Shipped: → [LOGIC.md](prototype/LOGIC.md).

    Links the logic page at its new place under prototype/

    Full reason

    The logic branch's page stands under prototype/ beside this reference file.

  3. Edit 5 pointer references/prototype/LOGIC.md:58

    Upstream: Once the prototype has answered its question, capture the answer, then capture the prototype the way the [SKILL](SKILL.md) describes.

    Shipped: Once the prototype has answered its question, capture the answer, then capture the prototype the way the [prototype page](../prototype.md) describes.

    Links the capture rule to frame's prototype page, one level up

    Full reason

    The page that describes the capture is frame's prototype reference file, one directory up.

  4. Edit 6 correction references/prototype/LOGIC.md:58

    Upstream: The logic-specific mapping: the validated reducer / machine / function set lifts into the real module (the decision, absorbed); the HTML shell rides along to the throwaway branch that keeps the prototype as a primary source, and being one self-contained file, it stays trivially re-runnable there.

    Shipped: The logic-specific mapping: the validated reducer / machine / function set lifts into the real module (the decision, absorbed); the HTML shell rides along to the throwaway branch that keeps the prototype as context, never evidence, and being one self-contained file, it stays trivially re-runnable there.

    A throwaway branch is context, never evidence, as rule 6 says

    Full reason

    The prototype page's rule 6 makes the copy in the change's folder the primary source and a throwaway branch context, never evidence; this page called the branch the primary source.

  5. Edit 7 pointer references/prototype/UI.md:100

    Upstream: Once a variant has won, capture the answer (which variant and why), then capture the prototype the way the [SKILL](SKILL.md) describes.

    Shipped: Once a variant has won, capture the answer (which variant and why), then capture the prototype the way the [prototype page](../prototype.md) describes.

    Links the capture rule to frame's prototype page, one level up

    Full reason

    The page that describes the capture is frame's prototype reference file, one directory up.

  6. Edit 8 pointer references/prototype/UI.md:100

    Upstream: Fold the winner into the real code and move the rest onto the throwaway branch, not into main:

    Shipped: Let the change's build fold the winner into the real code and move the rest onto the throwaway branch, not into main:

    Frame never builds; the change's build folds in the winning variant

    Full reason

    frame never builds: the change's build folds the winning variant into the real code, as the prototype page's rule 6 says.

  7. Edit 9 correction references/prototype/UI.md:105

    Upstream: The full set of variants is the primary source, so it lands on the throwaway branch, not the bin, since variant components and the switcher left in the main branch rot fast and confuse the next reader.

    Shipped: The full set of variants is context, never evidence, so it lands on the throwaway branch, not the bin, since variant components and the switcher left in the main branch rot fast and confuse the next reader.

    Variants kept on the branch are context, never evidence, per rule 6

    Full reason

    The prototype page's rule 6 makes the copy in the change's folder the primary source and a throwaway branch context, never evidence; this page called the variants on the branch the primary source.

2 smaller edits

Renames, locations and tool details, each with its reason.

  1. Edit 1 relocate references/interview.md:42

    Upstream: When the user uses a term that conflicts with the existing language in `GLOSSARY.md`, call it out immediately.

    Shipped: When the user uses a term that conflicts with the existing language in the repository's glossary, call it out immediately.

    Checks terms against the repository's own glossary, not a fixed file

    Full reason

    Frame's written depth reads the repository's own glossary, or GLOSSARY.md where it keeps none, so the interview checks a term against that glossary rather than a fixed file.

  2. Edit 3 relocate references/research.md:11

    Upstream: Save it where the repo already keeps such notes; match the existing convention, and if there is none, put it somewhere sensible and say where.

    Shipped: Save it where the repo already keeps such notes; match the existing convention, and if there is none, it is the change's, as below.

    Puts research notes in the change's folder when the repository keeps none

    Full reason

    Where the repository keeps no such notes, greenline names the home, the change's folder or the plan directory's research, in place of somewhere sensible.

What greenline wrote

The full reason for every passage greenline wrote, in the order of the text.

  1. SKILL.md:6 scope

    The title and the opening paragraph in the step skill's own voice: what frame produces, where it runs (the step of the change's mode, at that mode's depth) and the three direct asks it keeps from grilling, grill-with-docs and domain-modeling, grilling's firing mid-work on an unclear scope, intent or term, that a named ask, or a start loading it, with no change open runs at the written depth and writes nothing, that settled decisions are read first and never reopened, and what it never does; it replaces the scope paragraphs of grilling and grill-with-docs and the preambles of the grafted sources.

  2. SKILL.md:8 method

    grilling's rule that facts are the agent's to find and decisions the owner's moves from the interview page onto the opening, so the inline depth, which never reads that page, keeps it; it credits grilling, whose sentences the page drops. R1

    Credits: Matt Pocock's skills

  3. SKILL.md:10 method

    Frame's method, the intent and the one consequential question put to the owner with a recommended answer, an unclear term among such questions; the depths it runs at and the one line it writes stand on the references page since J-93 S2. R2

  4. SKILL.md:14 method

    grill-with-docs, a stub that only loaded grilling and domain-modeling, contributes its mode of grilling with the documents read first, written here as a passage of the written depth; its initiative and decisions.md homes are the change record now. R3

    Credits: Matt Pocock's skills

  5. SKILL.md:16 method

    Frame's interview runs to its end where the frame interviews the owner, every open behaviour put to the owner with a recommended answer; which depth interviews and what the section holds stand on the references page since J-93 S2. R4

  6. SKILL.md:18 pointer

    research and prototype become frame's reference files, loaded on demand (R22); this passage says when each is read.

  7. SKILL.md:25 method

    A step skill's handoff names the next step of the change's mode, never a fixed skill (the plan's rule for step skills); it consumes the request and the record's front matter and produces the record's frame section at the depth the mode gives, or the reply alone when no change is open. R5

  8. references/interview.md:1 scope

    The interview becomes a reference file of frame at S6 of the plan procedures-on-the-line, read only at the written depth, except a start's own questions, asked at any depth in one round: its title and opening line say when frame reads it, as research.md's do, in place of the section heading the spine's grafts joined. Since J-93 S2 the depth that interviews is named on frame's references page.

  9. references/interview.md:5 rename

    The spine and its grafts say the user, as their authors wrote it; this line ties that word to greenline's owner once, rather than editing every sentence (the bound on a name edit).

  10. references/interview.md:38 method

    A round reaches the owner only in the reply that ends the turn; the comparison J-60 S3b saw an interview put through Codex's asynchronous input call, which an exec session never shows, and the agent built on its own defaults without naming them. R6

  11. references/interview.md:56 scope

    interview-me's step heading without its step number, since the step joins grilling's interview rather than a five-step process of its own.

  12. references/interview.md:71 scope

    interview-me's step heading without its step number, since the step joins grilling's interview rather than a five-step process of its own.

  13. references/research.md:1 scope

    research becomes a reference file of frame (R22): its scope says when frame reads it, at either depth, that the decision stays the owner's, and that a read-only request writes nothing, in place of the stage-dispatch paragraph the old skill opened with.

  14. references/research.md:5 method

    Upstream spun up a background agent beside the requester; the step reads itself or, inside a change, through one fresh agent it waits for, briefed and named as the ledger guide gives every fresh agent and delegating nothing, its reading not the requester's own. Since J-93 S2 the front names its homes by their nouns, their paths on frame's references page. R7

    Credits: Matt Pocock's skills

  15. references/research.md:13 relocate

    greenline's homes for a research note when the repository has none: the change's folder beside its record, or the plan directory's research when the work splits; the frame section cites it, with the four parts the old skill required; a fresh agent's report stays in the change's folder. Since J-93 S2 the front names its homes by their nouns, their paths on frame's references page.

  16. references/prototype.md:3 scope

    prototype becomes a reference file of frame (R22): its scope says when frame reads it, at either depth, settles the disposable-or-ship distinction, keeps disposable code out of production and returns the answer to frame, in place of the stage-dispatch paragraph the old skill opened with.

  17. references/prototype.md:12 pointer

    The UI branch's page stands under prototype/ beside this reference file; the new path changes more than half of the short sentence, so it is written here and credits its source.

    Credits: Matt Pocock's skills

  18. references/prototype.md:16 scope

    The heading for principle-exhaust-the-design-space and brainstorming's approaches passage, the rule for when two or three structurally different options are sketched (R3).

  19. references/prototype.md:41 method

    upstream's rules 1 and 2 place prototype code next to the module it prototypes and add a task-runner entry; greenline keeps disposable code out of the shipping tree (the change's working files or a throwaway checkout) and adds no runner entry, which changes where the method works; carried from the prototype skill, its scratch home now the change's working files. R20 of 2026-10-07 (the one checkout, never a worktree) supersedes the ruling of 2026-09-11 on this one point: the isolated throwaway checkout it allowed becomes a throwaway branch in the one checkout, discarded or kept on the owner's word, or a scratch directory outside the repository for a sketch that touches no source, never a worktree and never a second checkout. Since J-93 S2 the front names its homes by their nouns, their paths on frame's references page. J-102 S2: the working files are the change's own, under its id. R8

    Credits: Matt Pocock's skills

  20. references/prototype.md:42 method

    upstream's rules 1 and 2 place prototype code next to the module it prototypes and add a task-runner entry; greenline keeps disposable code out of the shipping tree and adds no runner entry, which changes where the method works; carried from the prototype skill. R20 of 2026-10-07 (the one checkout, never a worktree) supersedes the ruling of 2026-09-11 on this one point: the isolated throwaway checkout it allowed becomes a throwaway branch in the one checkout, discarded or kept on the owner's word, or a scratch directory outside the repository for a sketch that touches no source, never a worktree and never a second checkout. R9

    Credits: Matt Pocock's skills

  21. references/prototype.md:46 method

    Rule 6's capture: frame never builds, so the fold into the real code is left to the change's build and the capture comes first; the relied-on copy is promoted into the change's folder beside its record and cited there, a throwaway branch exists only for a prototype built in an isolated checkout and its pointer is context, never evidence; the frame section, or the plan directory's prototypes when the work splits, holds the answer, in place of the ticket and initiative homes the prototype skill named. R20 of 2026-10-07 (the one checkout, never a worktree) supersedes the ruling of 2026-09-11 on this one point: the isolated throwaway checkout it allowed becomes a throwaway branch in the one checkout, discarded or kept on the owner's word, or a scratch directory outside the repository for a sketch that touches no source, never a worktree and never a second checkout. Since J-93 S2 the front names its homes by their nouns, their paths on frame's references page. R10

    Credits: Matt Pocock's skills

  22. references/greenline.md:1 method

    Frame's references page opens: the frame step at each mode's depth and what precedes the section, which the block's sentences and, since J-93 S2, the front's depth bullets moved here. R11

  23. references/greenline.md:5 method

    Frame's depths at each mode and what its section holds there: quick's one line, regular's written frame answering its own questions for the owner to correct, careful's interview with its confirmed restatement; moved from the front's depth bullets by J-93 S2. J-98 S1: a question to the owner goes in the reply that ends the turn, never a side channel, and a behaviour the accepted proposal's scope settles is decided and named as the agent's, after the comparison J-60 S3b saw an interview put through Codex's asynchronous input call that an exec session never shows. R12

  24. references/greenline.md:11 method

    Where frame's research and prototype pages land in the workspace, the agent's brief, its report, the change's folder, its working files and a plan directory, moved from those pages' prose by J-93 S2 so their fronts name homes by their nouns. J-102 S2: a prototype and every scratch file of the change go under the change's own id, never another's. R13

  25. references/greenline.md:15 method

    Frame's references page: the orientation on an empty tree or a first request. The block's sentences on it move here whole, so the block carries the loop, the promises, the modes and the situation index, and no promise leaves the installation. J-102 S2: the survey's result enters the knowledge homes under a quick record opened first, as every write does. R14

  26. references/greenline.md:19 method

    Frame's references page: reads the request, the records, the instructions and the decisions. The block's sentences on it move here whole, so the block carries the loop, the promises, the modes and the situation index, and no promise leaves the installation. R11

  27. references/greenline.md:23 method

    Frame's references page: a question or a named step needs no mode or record. The block's sentences on it move here whole, so the block carries the loop, the promises, the modes and the situation index, and no promise leaves the installation. J-102 S2: a decision or a term written into the knowledge homes opens a quick record first, as every write does. R14

  28. references/greenline.md:27 method

    Frame's references page: states the mode, its cost and floors, then waits for the owner. The block's sentences on it move here whole, so the block carries the loop, the promises, the modes and the situation index, and no promise leaves the installation. J-98 S1: the proposal and its question go in the reply that ends the turn, never a side channel. J-102 S2: the yes is the choice line written after the proposal, a request to commit or go ahead being none, and a standing choice applies only where proceed admits the mode. R15

  29. references/greenline.md:33 method

    Frame's references page: the branch from local facts, no network command before the proposal. The block's sentences on it move here whole, so the block carries the loop, the promises, the modes and the situation index, and no promise leaves the installation. J-98 S1: the where line says what the git hooks hold on the branch it names, the default branch of a repository with no remote included. J-102 S2: while no change is open on the branch HEAD names the hooks hold the workspace, the default branch of a repository with a remote included. R16

  30. references/greenline.md:39 method

    Frame's references page: opens the record from its skeleton, every section kept. The block's sentences on it move here whole, so the block carries the loop, the promises, the modes and the situation index, and no promise leaves the installation. R11

  31. references/greenline.md:43 method

    Frame's references page: what governs, and what each authority permits. The block's sentences on it move here whole, so the block carries the loop, the promises, the modes and the situation index, and no promise leaves the installation. R11

What it left out

Matt Pocock's skills

Matt Pocock's skills, grilling/SKILL.md: 4 of 17 sentences left out
  1. Finding _facts_ is your job, never the user's.
  2. When a frontier question needs a fact from the environment (filesystem, tools, etc.), dispatch a sub-agent to find it; don't ask the user for anything you could look up yourself. 2 sentences left out: Moved onto frame's opening, so the inline depth, which never reads the interview page, has it too; the opening's sentence replaces it and credits grilling. R1 replaced by line 8 of SKILL.md
  3. Don't block on it: a running exploration is an unsettled prerequisite, so only the questions downstream of it wait for the sub-agent to report; ask the rest of the frontier now. left out: upstream kept asking the rest of the frontier while a sub-agent looked a fact up; under the portability ruling the agent looks it up itself before the next round, so nothing runs beside the conversation and no question waits on a running exploration. R17 replaced by line 8 of SKILL.md
  4. The _decisions_ are the user's: put each to them and wait. left out: Moved onto frame's opening, so the inline depth, which never reads the interview page, has it too; the opening's sentence replaces it and credits grilling. R1 replaced by line 8 of SKILL.md
Matt Pocock's skills, domain-modeling/SKILL.md: 29 of 44 sentences left out
  1. # Domain Modeling
  2. Actively build and sharpen the project's domain model as you design.
  3. This is the *active* discipline: challenging terms, inventing edge-case scenarios, and writing the glossary and decisions down the moment they crystallise.
  4. (Merely *reading* `GLOSSARY.md` for vocabulary is not this skill: that's a one-line habit any skill can do.
  5. This skill is for when you're changing the model, not just consuming it.)
  6. ## File structure
  7. Most repos have a single context:
  8. ``` / ├── GLOSSARY.md ├── docs/ │ └── adr/ │ ├── 0001-event-sourced-orders.md │ └── 0002-postgres-for-write-model.md └── src/ ```
  9. If a `GLOSSARY-MAP.md` exists at the root, the repo has multiple contexts.
  10. The map points to where each one lives:
  11. ``` / ├── GLOSSARY-MAP.md ├── docs/ │ └── adr/ ← system-wide decisions ├── src/ │ ├── ordering/ │ │ ├── GLOSSARY.md │ │ └── docs/adr/ ← context-specific decisions │ └── billing/ │ ├── GLOSSARY.md │ └── docs/adr/ ```
  12. Create files lazily: only when you have something to write.
  13. If no `GLOSSARY.md` exists, create one when the first term is resolved.
  14. If no `docs/adr/` exists, create it when the first ADR is needed. 14 sentences left out: domain-modeling's title, its framing and its file structure belong to its glossary half, which stays in domain-modeling until S14 moves it to the close step (R22); frame takes the questioning half only.
  15. ## During the session left out: The session heading gives way to frame's interview heading, under which the four questioning sections stand. replaced by line 1 of references/interview.md
  16. 15 sentences taken
  17. ### Update GLOSSARY.md inline
  18. When a term is resolved, update `GLOSSARY.md` right there.
  19. Don't batch these up: capture them as they happen.
  20. Use the format in [GLOSSARY-FORMAT.md](./GLOSSARY-FORMAT.md).
  21. `GLOSSARY.md` should be totally devoid of implementation details.
  22. Do not treat `GLOSSARY.md` as a spec, a scratch pad, or a repository for implementation decisions.
  23. It is a glossary and nothing else.
  24. ### Offer ADRs sparingly
  25. Only offer to create an ADR when all three are true:
  26. **Hard to reverse**: the cost of changing your mind later is meaningful
  27. **Surprising without context**: a future reader will wonder "why did they do it this way?"
  28. **The result of a real trade-off**: there were genuine alternatives and you picked one for specific reasons
  29. If any of the three is missing, skip the ADR.
  30. Use the format in [ADR-FORMAT.md](./ADR-FORMAT.md). 14 sentences left out: The inline glossary updates and the ADR offer are domain-modeling's glossary half, which stays there until S14 moves it to the close step (R22); frame records a settled term in its section and writes no glossary.
Matt Pocock's skills, research/SKILL.md: 2 of 6 sentences left out
  1. Spin up a **background agent** to do the research, so you keep working while it reads. left out: upstream spins up a background agent so the requester keeps working while it reads; under the portability ruling the step reads itself or through one delegated agent it waits for. R17 replaced by line 5 of references/research.md
  2. Its job: left out: "Its job" named the background agent; the job now belongs to whoever reads, which the written lead-in names. replaced by line 5 of references/research.md
Matt Pocock's skills, prototype/SKILL.md: 5 of 33 sentences left out
  1. → [UI.md](UI.md). left out: The UI branch's link moves under prototype/; the sentence is written with the new path. replaced by line 12 of references/prototype.md
  2. 5 sentences taken
  3. Locate the prototype code close to where it will actually be used (next to the module or page it's prototyping for) so context is obvious, but name it so a casual reader can see it's a prototype, not production. left out: upstream's rules 1 and 2 place prototype code next to the module it prototypes and add a task-runner entry; greenline keeps disposable code out of the shipping tree and adds no runner entry, which changes where the method works; carried from the prototype skill. R19 replaced by line 41 of references/prototype.md
  4. 2 sentences taken
  5. A UI prototype starts from one command in the project's task runner: `pnpm <name>`, `python <path>`, `bun <path>`, etc. A logic demo is a single HTML file the user double-clicks. left out: upstream's rules 1 and 2 place prototype code next to the module it prototypes and add a task-runner entry; greenline keeps disposable code out of the shipping tree and adds no runner entry, which changes where the method works; carried from the prototype skill. R19 replaced by line 42 of references/prototype.md
  6. 11 sentences taken
  7. Fold any validated decision into the real code, then capture the prototype itself as a **primary source**: commit it to a throwaway branch, out of main, and leave a context pointer to that branch on the implementation issue.
  8. Capture the answer too (the verdict and the question it settled) in the issue or a commit. 2 sentences left out: Rule 6's capture names an implementation issue and a commit; greenline promotes the relied-on copy into the change's folder and keeps the answer in the frame section, or the plan directory's prototypes when the work splits. replaced by line 46 of references/prototype.md

Matt Pocock's skills, prototype/LOGIC.md: all 75 sentences taken

Matt Pocock's skills, prototype/UI.md: all 90 sentences taken

Matt Pocock's skills, grill-with-docs/SKILL.md: all left out
  1. Call the Skill tool twice, for "grilling" and "domain-modeling". left out: upstream's one sentence calls the Skill tool for grilling and domain-modeling; frame holds both methods itself, so nothing is loaded, and the stub's mode of reading the documents first is written as a passage of the written depth. replaced by line 14 of SKILL.md

Addy Osmani's agent-skills

Addy Osmani's agent-skills, interview-me/SKILL.md: 150 of 171 sentences left out
  1. # Interview Me
  2. ## Overview
  3. What people ask for and what they actually want are different things.
  4. They ask for "a dashboard" because that's what one asks for, not because a dashboard solves their problem.
  5. They say "make it faster" without a number to hit.
  6. The cheapest moment to find this gap is before any plan, spec, or code exists.
  7. Once you've started building, switching costs are real, and the user will rationalize the wrong thing into a "good enough" thing.
  8. The misfit gets locked in.
  9. This skill closes the gap before it costs anything.
  10. The other Define-phase skills assume you already know roughly what you want: `idea-refine` generates variations from an idea, `spec-driven-development` writes the requirements down, `doubt-driven-development` stress-tests a plan after you've drafted one.
  11. Interview-me is the part before all of those, where you ask one question at a time, with your best guess attached, until you can predict what the user is going to say before they say it.
  12. ## When to Use
  13. Apply this skill when:
  14. The ask is missing at least one of: **who** the user is, **why** they want it, what **success** looks like, what the binding **constraint** is
  15. The request is conventional rather than specific ("build me X", "make it faster") and you can't unpack the convention without guessing
  16. You're tempted to start with assumptions you haven't surfaced
  17. The user hasn't said which value they're optimizing for when two reasonable ones are in tension (simplicity vs. flexibility, cost vs. speed) 17 sentences left out: interview-me's title, overview and triggers: frame's scope paragraph and description say when it runs, and the overview's argument restates the catch the hypothesis and the restatement carry. replaced by line 6 of SKILL.md
  18. The user explicitly invokes: "interview me", "grill me", "before we start, are we sure?", "stress-test my thinking" left out: The direct asks, "grill me" among them, are frame's trigger rows, kept in its scope paragraph and description. replaced by line 6 of SKILL.md
  19. **When NOT to use:**
  20. The ask is unambiguous and self-contained ("rename this variable", "fix this typo")
  21. The user has explicitly asked for speed over verification
  22. Pure information requests ("how does X work?", "what does this code do?")
  23. Mechanical operations (renames, formats, file moves)
  24. You already have ≥95% confidence; re-read the stop condition below before assuming you don't 6 sentences left out: When not to interview: the change's mode decides, and the inline depth asks only the one consequential question, so a settled or mechanical ask spends no round. replaced by line 10 of SKILL.md
  25. ## Loading Constraints
  26. This skill needs a live, responsive user.
  27. **Do not invoke in non-interactive contexts** like CI pipelines, scheduled runs, `/loop`, or autonomous-loop.
  28. If you're in one of those and the ask is underspecified, flag that as a blocker for the user instead of guessing. 4 sentences left out: An unattended run is the block's concern: the agent proposes a mode and waits, or proceeds under the owner's setting, and frame's decisions are always put to the owner.
  29. ## The Process
  30. ### Step 1: Hypothesize, with a confidence number 2 sentences left out: The process heading and step 1's numbered heading: the hypothesis joins grilling's interview as its opening paragraph, with no step number of its own. replaced by line 9 of references/interview.md
  31. 7 sentences taken
  32. ### Step 2: Ask one question at a time, each with a guess attached
  33. Format:
  34. ``` Q: <one focused question> GUESS: <your hypothesis for the answer, with the reasoning that produced it> ```
  35. Wait for the user to react before asking the next question.
  36. **Why one at a time, not a batch:**
  37. The user can't react to your hypotheses if you bury them in a list
  38. Batches encourage skim-reading and surface answers
  39. The third question often depends on the answer to the first; asking them all at once locks in the wrong framing
  40. The user's energy for thinking carefully is finite; spend it one question at a time
  41. **Why attach a guess:**
  42. The user reacts faster to a wrong guess than they generate an answer from scratch
  43. It commits you to a hypothesis you can be visibly wrong about, which keeps you honest
  44. It surfaces *your* assumptions, which is what the interview is meant to expose
  45. The risk here is a polite user agreeing with your guess to be agreeable.
  46. Mitigate by being visibly willing to be wrong, and occasionally guess in a direction you expect the user to push back on. 15 sentences left out: Step 2 asks one question at a time; the ruled contradiction keeps grilling's whole frontier in one round, numbered with a recommended answer each, which already holds back the questions that depend on answers not yet heard (contradiction 1). R18 replaced by line 20 of references/interview.md
  47. ### Step 3: Listen for "want vs. should want" left out: Step 3's numbered heading, written without its number. replaced by line 40 of references/interview.md
  48. 9 sentences taken
  49. ### Step 4: Restate intent in the user's own words left out: Step 4's numbered heading, written without its number. replaced by line 58 of references/interview.md
  50. 5 sentences taken
  51. ### Step 5: Confirm — explicit yes, not "whatever you think"
  52. The gate is an explicit "yes."
  53. The following are **not** yes:
  54. "Whatever you think is best."
  55. → The user is delegating, which means they don't have 95% confidence either.
  56. Re-ask with two concrete options framed as a choice.
  57. "Sounds good."
  58. → Ambiguous.
  59. Ask: "Anything you'd refine?"
  60. Silence isn't confirmation.
  61. "Sure, let's go."
  62. → Often a polite exit, not an endorsement.
  63. Same follow-up.
  64. Silence followed by "okay let's start."
  65. → The user has given up on the interview, not converged.
  66. Stop and ask whether you've missed something.
  67. If they correct you, fold the correction in and restate.
  68. Loop until you get an explicit yes. 18 sentences left out: Step 5's confirmation duplicates grilling's closing rule, that nothing is acted on until the user confirms the shared understanding; the slice grafts interview-me's hypothesis, its want-against-should probe and its restatement only. replaced by line 90 of references/interview.md
  69. ### Step 6: Terminal Turn & Stop Rule (CRITICAL)
  70. When the user confirms the statement of intent with an explicit "yes":
  71. **Deliver the confirmed Statement of Intent.**
  72. **Offer downstream paths** (offer to save it to `docs/intent/[topic].md`, draft a spec with `spec-driven-development`, or move to task planning after the spec).
  73. **STOP YOUR TURN IMMEDIATELY.**
  74. Do NOT invoke tools or start downstream work in this turn.
  75. Hand control back to the user to choose the next step. 7 sentences left out: Step 6 is addressed to an agent ("STOP YOUR TURN IMMEDIATELY") and offers its own homes; frame's handoff names the next step of the change's mode and its section is the record's. replaced by line 25 of SKILL.md
  76. ### The 95% Confidence Stop
  77. You're done when you can answer yes to this:
  78. *Can I predict the user's reaction to the next three questions I would ask?*
  79. If yes, you have shared understanding.
  80. Stop interviewing and produce the restate.
  81. If no, you're not done; ask the next question.
  82. This is a checkable test, not a vibe.
  83. It also has a floor: if you've gone several rounds and still can't predict, that's information about the ask, not a reason to keep grinding.
  84. Stop and tell the user: "I've asked X questions and I still can't predict your reactions.
  85. Something foundational is missing.
  86. Want to step back?" 11 sentences left out: The stop test duplicates grilling's end, the frontier empty with nothing silently assumed, and the hypothesis paragraph already carries the test of predicting the next three answers. replaced by line 90 of references/interview.md
  87. ## Output
  88. The output of this skill is a **confirmed statement of intent**: the restate from Step 4, with an explicit yes from Step 5.
  89. That's the deliverable.
  90. Specs, plans, and task lists are downstream; they consume the intent this skill produces.
  91. If the user wants the intent to persist (a multi-session project, a handoff to another collaborator), offer to save it to `docs/intent/[topic].md`.
  92. Only save if they confirm. 6 sentences left out: The output is the change record's frame section, never a docs/intent file the owner is offered. replaced by line 16 of SKILL.md
  93. ## Example
  94. A short before-and-after.
  95. **Without `interview-me`:**
  96. ``` User: build me a dashboard for our metrics Agent: <starts proposing chart libraries and layouts> ```
  97. The agent has assumed: who it's for, what metrics, what "for our team" means, what success looks like.
  98. None of these are stated.
  99. Every assumption is a place the user can later say "that's not what I meant."
  100. **With `interview-me`:**
  101. ``` User: build me a dashboard for our metrics Agent: HYPOTHESIS: You want a way to answer "how are we doing?" in standup, and "dashboard" came to mind because that's the conventional answer. CONFIDENCE: ~30% — missing: who it's for, what "metrics" are, and what success looks like Q: When you say "how are we doing?", who's asking — you alone, the engineering team in standup, or up the chain (e.g., your manager, an exec, a board)? GUESS: engineering team in standup, because "we" usually scopes that way and standups are where this question gets asked. If it's for execs the metrics and the framing change a lot. User: It's actually for me. I keep losing track of which experiments are running and what their early signal looks like. Agent: Updated read: not a team dashboard at all. It's a personal experiment tracker. Confidence: ~60% — still missing: what "early signal" means and what done looks like. Q: Is the gap that you don't know which experiments exist, or that you can't see their results in one place? GUESS: the second one. You have a list of experiments somewhere, but their results live in five different tools, and reconciling them by hand is what you're tired of. User: First one actually. I literally don't have a list. They're spread across different docs. Agent: <continues> ```
  102. Two questions in, the agent has discovered the actual ask isn't "a dashboard."
  103. It's "a list."
  104. Different artifact, different scope, different work.
  105. The dashboard would have been wrong. 13 sentences left out: An illustration; the hypothesis and the probe stand without it.
  106. ## Interaction with Other Skills
  107. **`idea-refine`**: downstream.
  108. If the confirmed intent is "I want X but I don't know how to scope it," hand off to `idea-refine` to generate variations against the now-explicit intent.
  109. **`spec-driven-development`**: downstream.
  110. If the confirmed intent is concrete ("I want X for Y users with Z success criteria"), hand off to `spec-driven-development` to write it down.
  111. **`planning-and-task-breakdown`**: two hops downstream of this skill (after the spec).
  112. **`doubt-driven-development`**: opposite end of the timeline.
  113. Interview-me is pre-decision intent extraction; doubt-driven is post-decision artifact review.
  114. Both catch divergence, but at different moments.
  115. **`source-driven-development`**: orthogonal.
  116. Interview-me clarifies what the user wants; SDD verifies framework facts.
  117. They don't compete. 12 sentences left out: The skills it names are addyosmani's and not installed; the handoff names the next step of the change's mode. replaced by line 25 of SKILL.md
  118. ## Common Rationalizations
  119. | Rationalization | Reality |
  120. |---|---|
  121. | "The ask is clear enough" | If you can't write the user's desired outcome in one sentence right now, the ask isn't clear. Run Step 1 before deciding. |
  122. | "Asking too many questions wastes their time" | Time wasted by 4–6 targeted questions is small. Time wasted by building the wrong thing is enormous, and the user is the one bearing that cost. |
  123. | "I'll figure it out as I build" | Switching costs after code exists are 10x what they are now. Discovery during implementation is rework. |
  124. | "They said 'whatever you think,' so I should just decide" | "Whatever you think" is delegation, not decision. Re-ask with two concrete options as a choice. |
  125. | "I should give them several options to pick from" | Options work when the user knows what they want and is choosing between trade-offs. They don't know what they want yet. Listing options widens the search; asking narrows it. |
  126. | "If I attach my guess, I'm leading them" | Leading is the point. Reacting is faster than generating from scratch. The risk is sycophancy, not leading; mitigate by being visibly willing to be wrong. |
  127. | "We've talked enough, I get it" | Test it: can you predict their reaction to the next three questions? If not, you don't get it yet. |
  128. | "The user said yes, we're done" | If the yes followed a vague restate or an open-ended "sounds good," the yes is hollow. Restate concretely and re-confirm. |
  129. ## Red Flags 12 sentences left out: The rationalizations argue for the method rather than state a step, an order or a criterion of it.
  130. Three or more questions in a single message: that's batching, not interviewing left out: The red flag against three questions in one message contradicts grilling's whole frontier in one round, ruled for grilling (contradiction 1). R18 replaced by line 20 of references/interview.md
  131. A question without your hypothesis attached: that's surveying, not committing
  132. Accepting "whatever you think is best" as a terminal answer
  133. Producing a spec, plan, or task list before the user has explicitly confirmed your restate
  134. Invoking tools or starting downstream work immediately upon intent confirmation instead of stopping the turn
  135. Questions framed as "what would be best practice?"
  136. instead of "what do you actually want?"
  137. The user gives a sophistication-signaling answer ("scalable", "clean", "modern") and you accept it without probing whether it's what they actually want
  138. Three or more rounds without your confidence visibly rising: you're asking the wrong questions, step back and reframe
  139. A confidence number below ~70% with no reason attached: the user can't help close the gap if they don't know what's missing
  140. Saving the intent doc before the user has confirmed (the doc itself implies a yes the user didn't give)
  141. Skipping the "Out of scope" line in the restate (silent disagreement about non-goals is half of misalignment)
  142. ## Verification
  143. After applying interview-me:
  144. [ ] An explicit hypothesis with a confidence number was stated in the first turn
  145. [ ] Every confidence number below ~70% was accompanied by a one-line reason (what's still unresolved or missing)
  146. [ ] Questions were asked one at a time, each with the agent's guess attached
  147. [ ] At least one "what would you actually want if you didn't have to justify it?"
  148. probe ran when the user gave a sophistication-signaling or convention-signaling answer
  149. [ ] A concrete restate (Outcome / User / Why now / Success / Constraint / Out of scope) was written back to the user
  150. [ ] The user confirmed the restate with an explicit yes (not "whatever you think," not "sounds good," not silence)
  151. [ ] At the stop point, the agent could predict reactions to the next three questions it would ask
  152. [ ] Upon receiving explicit confirmation, stopped the turn immediately without invoking tools or starting downstream work
  153. [ ] Any handoff to a downstream skill (`idea-refine`, `spec-driven-development`) was framed in terms of the confirmed intent, not the original underspecified ask 23 sentences left out: The red flags and the verification checklist turn interview-me's steps into warnings and boxes to tick, a form this skill does not carry; the steps taken and the ruled contradictions stand without them.

Jesse Vincent's Superpowers

Jesse Vincent's Superpowers, brainstorming/SKILL.md: 177 of 184 sentences left out
  1. # Brainstorming Ideas Into Designs
  2. Help turn ideas into fully formed designs and specs through natural collaborative dialogue.
  3. Start by classifying how much process the request needs, then work through your path: understand the context, refine the idea, present a design, and get your human partner's approval.
  4. ## Establish Shared Understanding
  5. The outcome of brainstorming is an understanding your human partner can recognize and correct, grounded in what they want to accomplish. 5 sentences left out: brainstorming's title and overview: frame's scope paragraph states what the shared understanding is for. replaced by line 6 of SKILL.md
  6. **Discover intent.**
  7. Use the request and available context to identify the intended outcome, who it is for, and what success looks like.
  8. When that information is missing, ask one focused question about purpose or intended use before proposing features or an approach.
  9. Knowing the app genre does not tell you why your partner wants it.
  10. Gathering missing requirements does not ask them to authorize the task again. 5 sentences left out: Discovering intent by one focused question before any proposal contradicts grilling's frontier, ruled for grilling (contradiction 1); the hypothesis and the rounds discover the intent. R18 replaced by line 20 of references/interview.md
  11. **Write back your understanding.** left out: The item's label; the two sentences taken stand under the restatement's heading. replaced by line 58 of references/interview.md
  12. Summarize the intended outcome, relevant constraints, and success criteria in a short note your partner can assess. left out: Summarizing the outcome, constraints and success criteria in a short note duplicates interview-me's restatement, which this skill takes. replaced by line 71 of references/interview.md
  13. 2 sentences taken
  14. **Carry intent into the design.**
  15. Preserve the agreed understanding in the selected path's design artifact: the written spec for architectural work, or the in-chat design/probe for bounded work and spikes.
  16. Check proposed features and technical choices against that understanding.
  17. When the request already supplies the purpose and constraints, reflect that understanding instead of asking the same questions again.
  18. Keep the note concise; its accuracy and the opportunity to correct it matter. 5 sentences left out: Carrying the intent into a design is the plan step's, which reads the frame section.
  19. <HARD-GATE> Before taking any implementation action, including invoking an implementation skill, writing product code, scaffolding, installing product dependencies, or creating an external project, complete the selected path's prerequisites:
  20. Spike: the human partner approves the question and probe.
  21. Bounded: the human partner approves the short in-chat design.
  22. Architectural: the human partner reviews and approves the written spec, then reviews the written implementation plan and selects its execution method.
  23. Conversational design approval only permits writing the spec; written-spec approval only permits invoking writing-plans.
  24. A reply approves the stage actually presented.
  25. Approval of an idea or feature scope does not approve artifacts that do not exist yet.
  26. Resume at the earliest incomplete stage; do not turn one approval into permission to skip the rest of the selected path.
  27. Read-only project exploration is allowed while those prerequisites remain incomplete.
  28. </HARD-GATE>
  29. ## Three Paths
  30. Before your first question, classify the request and say the classification out loud — "this looks bounded, so I'll present a short design here rather than write a spec" — so your human partner can override it:
  31. **Spike** — a feasibility question ("can we...", "is it possible...", "quick and dirty is fine") whose output is an answer, not code you keep.
  32. Present the question and what you'll try in 2-3 sentences, get a nod, then find out as cheaply as correctness allows.
  33. No design doc, no spec file.
  34. Report findings as a recommendation; anything you built stays labeled throwaway.
  35. **Bounded** — a well-scoped change to code that already exists in this repo: a new flag, a small endpoint, a one-file fix.
  36. Understanding the kind of app is not enough — bounded means the flow you are changing is already here to read.
  37. If there is no existing flow to change, the task is not bounded.
  38. Ask the clarifying questions that matter, present a short design IN CHAT (a few sentences to a few short paragraphs), and STOP.
  39. Implementation starts only after your human partner says yes to that design — a bounded task's approval is as hard a gate as an architectural one.
  40. No spec file, no implementation plan document.
  41. **Architectural** — new projects, new subsystems, changes that restructure how components fit together or alter interfaces others depend on.
  42. Follow the full process: questions, approaches, sectioned design, written spec, then the writing-plans skill.
  43. When in doubt between two paths, take the heavier one.
  44. The ratchet is one-way: hidden complexity discovered mid-task upgrades the path — stop, say so, and step up.
  45. Nothing downgrades mid-task.
  46. ## Anti-Pattern: "Too Simple To Need Approval"
  47. Every path ends with your human partner approving the required design before implementation.
  48. A bounded change may need only two sentences in chat.
  49. A new todo-list project is architectural and requires the written spec and planning handoffs.
  50. Scale the artifact to the selected path; complete that path's reviews before implementation.
  51. ## Red Flags
  52. | Thought | Reality |
  53. |---------|---------|
  54. | "This is too simple to need a design" | Follow the selected path: a bounded change gets a short chat design; an architectural change gets the written spec and planning handoffs. |
  55. | "I'll call it bounded and skip the spec" | Reaching for a label to skip work IS the doubt — take the heavier path. |
  56. | "It's bounded and the design is obvious — I'll start while they read it" | The gate is the approval, not the design's length. Present, then stop until you hear yes. |
  57. | "I understand this kind of app, so it's bounded" | Bounded measures the repo, not your familiarity. A new project has no existing flow — it is architectural. |
  58. | "The spike works, so I'll keep the code" | A spike's output is an answer. Keeping the code is a new request — classify it. |
  59. | "It grew, but I'm almost done — no need to re-classify" | Hidden complexity upgrades the path mid-task. Stop and say so. |
  60. | "They approved the spike, so the follow-up change is approved too" | Each task gets its own classification and its own approval. |
  61. ## Checklist
  62. Classify first, announce the path, then create a task for each item on your path and complete them in order.
  63. **Spike:**
  64. **Explore project context** — enough to frame the probe
  65. **Present question + probe plan** — 2-3 sentences
  66. **Get approval** — a nod is enough
  67. **Investigate** — as cheaply as correctness allows
  68. **Report findings** — a recommendation; label anything built as throwaway
  69. **Bounded:**
  70. **Explore project context** — check files, docs, recent commits
  71. **Ask clarifying questions** — one at a time, the ones that matter
  72. **Present short design in chat** — approach, files touched, testing
  73. **Get approval** — STOP and wait for an explicit yes; presenting the design and starting in the same breath is skipping the gate
  74. **Implement** — proceed with the normal development workflow (TDD applies); no plan document
  75. **Architectural:**
  76. **Explore project context** — check files, docs, recent commits
  77. **Offer the visual companion just-in-time** — NOT upfront.
  78. The first time a question would genuinely be clearer shown than described, offer it then (its own message); on approval its browser tab opens for you.
  79. If no visual question ever arises, never offer it.
  80. See the Visual Companion section below.
  81. **Ask clarifying questions** — one at a time, understand purpose/constraints/success criteria
  82. **Propose 2-3 approaches** — with trade-offs and your recommendation
  83. **Present design** — in sections scaled to their complexity, get user approval after each section
  84. **Write design doc** — save to `docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md` and commit
  85. **Spec self-review** — quick inline check for placeholders, contradictions, ambiguity, scope (see below)
  86. **User reviews written spec** — ask user to review the spec file before proceeding
  87. **Transition to implementation** — invoke writing-plans skill to create implementation plan
  88. ## Process Flow
  89. ```dot digraph brainstorming { "Classify: spike / bounded / architectural" [shape=diamond]; "Present question + probe (2-3 sentences)" [shape=box]; "Ask clarifying questions (bounded)" [shape=box]; "Present short design in chat" [shape=box]; "Human approves?" [shape=diamond]; "Investigate; report recommendation" [shape=doublecircle]; "Implement via normal workflow (no plan doc)" [shape=doublecircle]; "Explore project context" [shape=box]; "Ask clarifying questions" [shape=box]; "Propose 2-3 approaches" [shape=box]; "Present design sections" [shape=box]; "User approves design?" [shape=diamond]; "Write design doc" [shape=box]; "Spec self-review\n(fix inline)" [shape=box]; "User reviews spec?" [shape=diamond]; "Invoke writing-plans skill" [shape=doublecircle]; "Hidden complexity? Upgrade path" [shape=box]; "Classify: spike / bounded / architectural" -> "Present question + probe (2-3 sentences)" [label="spike"]; "Classify: spike / bounded / architectural" -> "Ask clarifying questions (bounded)" [label="bounded"]; "Classify: spike / bounded / architectural" -> "Explore project context" [label="architectural"]; "Present question + probe (2-3 sentences)" -> "Human approves?"; "Ask clarifying questions (bounded)" -> "Present short design in chat"; "Present short design in chat" -> "Human approves?"; "Human approves?" -> "Investigate; report recommendation" [label="spike: yes"]; "Human approves?" -> "Implement via normal workflow (no plan doc)" [label="bounded: yes"]; "Hidden complexity? Upgrade path" -> "Classify: spike / bounded / architectural"; "Explore project context" -> "Ask clarifying questions"; "Ask clarifying questions" -> "Propose 2-3 approaches"; "Propose 2-3 approaches" -> "Present design sections"; "Present design sections" -> "User approves design?"; "User approves design?" -> "Present design sections" [label="no, revise"]; "User approves design?" -> "Write design doc" [label="yes"]; "Write design doc" -> "Spec self-review\n(fix inline)"; "Spec self-review\n(fix inline)" -> "User reviews spec?"; "User reviews spec?" -> "Write design doc" [label="changes requested"]; "User reviews spec?" -> "Invoke writing-plans skill" [label="approved"]; } ```
  90. **Terminal states are path-bound.**
  91. Architectural: the ONLY skill you invoke after brainstorming is writing-plans — never frontend-design, mcp-builder, or any other implementation skill.
  92. Bounded: after approval, implementation proceeds directly through the normal development workflow; no plan document.
  93. Spike: the terminal state is a reported recommendation.
  94. ## The Process
  95. The subsections below serve the bounded and architectural paths (a spike stops at "present the probe, get a nod").
  96. Sections from **Exploring approaches** onward are architectural-path depth — for bounded work, context plus a few questions plus a short in-chat design is the whole process. 78 sentences left out: The hard gate, the three paths, their checklist and the process flow duplicate and contradict the trunk's mode proposal and its waits, and their spec and plan handoffs are the plan step's; declined against the trunk (R18), with the visual companion not taken. R18
  97. **Understanding the idea:**
  98. Check out the current project state first (files, docs, recent commits)
  99. Before asking detailed questions, assess scope: if the request describes multiple independent subsystems (e.g., "build a platform with chat, file storage, billing, and analytics"), flag this immediately.
  100. Don't spend questions refining details of a project that needs to be decomposed first.
  101. If the project is too large for a single spec, help the user decompose into sub-projects: what are the independent pieces, how do they relate, what order should they be built?
  102. Then brainstorm the first sub-project through the normal design flow.
  103. Each sub-project gets its own spec → plan → implementation cycle. 7 sentences left out: Exploring the project first is the written depth's reading of the documents, and splitting a request of several subsystems is wayfinder's, a start, before any change's frame. replaced by line 14 of SKILL.md
  104. For appropriately-scoped projects, ask questions one at a time to refine the idea
  105. Prefer multiple choice questions when possible, but open-ended is fine too
  106. Only one question per message - if a topic needs more exploration, break it into multiple questions
  107. Focus on understanding: purpose, constraints, success criteria 4 sentences left out: One question per message contradicts grilling's whole frontier in one round, ruled for grilling (contradiction 1). R18 replaced by line 20 of references/interview.md
  108. 5 sentences taken
  109. **Presenting the design:**
  110. Once you believe you understand what you're building, present the design
  111. Scale each section to its complexity: a few sentences if straightforward, up to 200-300 words if nuanced
  112. Ask after each section whether it looks right so far
  113. Cover: architecture, components, data flow, error handling, testing
  114. Be ready to go back and clarify if something doesn't make sense
  115. **Design for isolation and clarity:**
  116. Break the system into smaller units that each have one clear purpose, communicate through well-defined interfaces, and can be understood and tested independently
  117. For each unit, you should be able to answer: what does it do, how do you use it, and what does it depend on?
  118. Can someone understand what a unit does without reading its internals?
  119. Can you change the internals without breaking consumers?
  120. If not, the boundaries need work.
  121. Smaller, well-bounded units are also easier for you to work with - you reason better about code you can hold in context at once, and your edits are more reliable when files are focused.
  122. When a file grows large, that's often a signal that it's doing too much.
  123. **Working in existing codebases:**
  124. Explore the current structure before proposing changes.
  125. Follow existing patterns.
  126. Where existing code has problems that affect the work (e.g., a file that's grown too large, unclear boundaries, tangled responsibilities), include targeted improvements as part of the design - the way a good developer improves code they're working in.
  127. Don't propose unrelated refactoring.
  128. Stay focused on what serves the current goal.
  129. ## After the Design (architectural path)
  130. **Documentation:**
  131. Write the validated design (spec) to `docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md`
  132. (User preferences for spec location override this default)
  133. Use elements-of-style:writing-clearly-and-concisely skill if available
  134. Commit the design document to git
  135. **Spec Self-Review:** After writing the spec document, look at it with fresh eyes:
  136. **Placeholder scan:** Any "TBD", "TODO", incomplete sections, or vague requirements?
  137. Fix them.
  138. **Internal consistency:** Do any sections contradict each other?
  139. Does the architecture match the feature descriptions?
  140. **Scope check:** Is this focused enough for a single implementation plan, or does it need decomposition?
  141. **Ambiguity check:** Could any requirement be interpreted two different ways?
  142. If so, pick one and make it explicit.
  143. Fix any issues inline.
  144. No need to re-review — just fix and move on.
  145. **User Review Gate:** After the spec review loop passes, ask the user to review the written spec before proceeding:
  146. "Spec written and committed to `<path>`.
  147. Please review it and let me know if you want to make any changes before we start writing out the implementation plan."
  148. Wait for the user's response.
  149. If they request changes, make them and re-run the spec review loop.
  150. Only proceed once the user approves.
  151. **Implementation:**
  152. Invoke the writing-plans skill to create a detailed implementation plan
  153. Do NOT invoke any other skill.
  154. writing-plans is the next step. 46 sentences left out: Presenting the design, designing for isolation, the spec, its self-review, its review gate and the implementation handoff are the plan step's and its spec, which plan takes from to-spec and writing-plans.
  155. ## Visual Companion
  156. A browser-based companion for showing mockups, diagrams, and visual options during brainstorming.
  157. Available as a tool — not a mode.
  158. Accepting the companion means it's available for questions that benefit from visual treatment; it does NOT mean every question goes through the browser.
  159. **Offering the companion (just-in-time):** Do NOT offer it upfront.
  160. Wait until a question would genuinely be clearer shown than told — a real mockup / layout / diagram question, not merely a UI *topic*.
  161. The first time that happens, offer it then, as its own message: > "This next part might be easier if I show you — I can put together mockups, diagrams, and comparisons in a browser tab as we go.
  162. It's still new and can be token-intensive.
  163. Want me to?
  164. I'll open it for you."
  165. **This offer MUST be its own message.**
  166. Only the offer — no clarifying question, summary, or other content.
  167. Wait for the user's response.
  168. If they accept, start the server with `--open` so their browser opens to the first screen automatically.
  169. If they decline, continue text-only and don't offer again unless they raise it.
  170. **Per-question decision:** Even after the user accepts, decide FOR EACH QUESTION whether to use the browser or the terminal.
  171. The test: **would the user understand this better by seeing it than reading it?**
  172. **Use the browser** for content that IS visual — mockups, wireframes, layout comparisons, architecture diagrams, side-by-side visual designs
  173. **Use the terminal** for content that is text — requirements questions, conceptual choices, tradeoff lists, A/B/C/D text options, scope decisions
  174. A question about a UI topic is not automatically a visual question.
  175. "What does personality mean in this context?"
  176. is a conceptual question — use the terminal.
  177. "Which wizard layout works better?"
  178. is a visual question — use the browser.
  179. If they agree to the companion, read the detailed guide before proceeding: `skills/brainstorming/visual-companion.md` 25 sentences left out: The visual companion is a browser server of one harness's install, not taken (R3); a diagram in the reply is the show-me habit's.

pstack

pstack, principle-exhaust-the-design-space/SKILL.md: 1 of 17 sentences left out
  1. # Exhaust the Design Space left out: The principle's title gives way to the section heading of the prototype page it joins. replaced by line 16 of references/prototype.md

The ledger entry

greenline's ledger logs how each skill was made and changed, with a reason for each entry.

2026-10-21 2026-10-21-frame-the-owners-yes

The yes is the choice line; standing only where proceed admits

The yes is the choice line written after the proposal, never a request to commit or go ahead; standing holds only where proceed admits the mode. Knowledge-home writes open a quick record; scratch stays under the change's id (J-102 S2).

Authorised by
2026-10-21 The operator's cards of 2026-10-21, "Fix first, then ship (Recommended)" and the scope card naming 1 to 7 (docs/DECISIONS.md, the rows of 2026-10-21): 0.1.0 ships with its hooks whole, and frame, groundwork and build say what the owner's yes is, that the setup record precedes the setup commit, that a trailer-shaped line of another key after a refusal is no answer to it, and that scratch goes under the change's own id
Pages it touched
references/greenline.md, references/prototype.md
Rulings, R1 to R38
  1. The operator's ruling R21 of 2026-10-08 on orchestration ("orchestration related skills ... have be re thought in to being usable on all harnesses") and the second R3 ruling of that day, "yes go ahead", on the portable forms: grilling looks a fact up itself before the next round, research reads itself or through one delegated agent the step waits for, and no agent runs beside the conversation; the operator's card answers of 2026-10-12 on the first evaluation's brief, "The roster after the cut": frame's "finding facts is your job" moves from the interview page onto frame's opening, so both depths have it
  2. The operator's rulings of 2026-10-04, "cool then lock everything in", and R12, "two wait is good": a step runs at the depth the change's mode gives it, inline being one line of its section and written a section the builder writes, and planned work waits before planning and after ticketing; the operator's card answers of 2026-10-12 on the first evaluation's brief, "The roster after the cut", and the card of 2026-10-14, "The record's frame section": a start's frame answers live in the change record's frame section, its own questions asked in one round at any depth, and frame loaded by a start with no change open runs at the written depth; The operator's card of 2026-10-15 on the QA series, "One fix job after the fifth family", and the card of that day, "Words at the list edit the entry; at a ticket's open they override", with the delegation of 2026-10-16 whose words finalise the fix job's slices: a request that names a mode is taken as chosen and goes on with no yes awaited, a question asked only for a choice it leaves open; the record names every floor found and, where the owner names a mode below one, says so with choice owner and the floor's reason; a mode named at the ticket list edits the entry and one named at a ticket's open overrides it; the builder reads the reviewer's brief at the inline depth only; and at the written frame depth every open behaviour goes to the owner through the interview, an inline frame line crediting the owner only with the owner's answers; The operator's words of 2026-10-18 on the redesign (N-56, items 2 and 7), "we need the upstream prose upfront and references hold how to work meaning the artefacts etc" and, on the ingest procedures, "we wanna have there prose .. what we don't wanna have is there artefact system and fit them to use ours": a skill's front is the upstream prose its recipe cuts, and greenline's mechanics, where the step's work lands, its section's form, its commands and its depths at each mode, stand on its references page (J-93 S2)
  3. The operator's ruling of 2026-10-04 on the stub trigger (C15): an upstream body under about 100 words triggers the stub rubric, and grill-with-docs and implement are stubs, in the operator's words "cool then lock everything in"; The operator's ruling R22 of 2026-10-08 on the re-cut brief, "yes amend, with one change": frame is made from grilling, grill-with-docs and the questioning half of domain-modeling, with research and prototype as its reference files, and plan from to-spec and to-tickets
  4. The operator's rulings of 2026-10-04, "cool then lock everything in", and R12, "two wait is good": a step runs at the depth the change's mode gives it, inline being one line of its section and written a section the builder writes, and planned work waits before planning and after ticketing; The operator's card of 2026-10-15 on the QA series, "One fix job after the fifth family", and the card of that day, "Words at the list edit the entry; at a ticket's open they override", with the delegation of 2026-10-16 whose words finalise the fix job's slices: a request that names a mode is taken as chosen and goes on with no yes awaited, a question asked only for a choice it leaves open; the record names every floor found and, where the owner names a mode below one, says so with choice owner and the floor's reason; a mode named at the ticket list edits the entry and one named at a ticket's open overrides it; the builder reads the reviewer's brief at the inline depth only; and at the written frame depth every open behaviour goes to the owner through the interview, an inline frame line crediting the owner only with the owner's answers; The operator's words of 2026-10-18 on the redesign (N-56, items 2 and 7), "we need the upstream prose upfront and references hold how to work meaning the artefacts etc" and, on the ingest procedures, "we wanna have there prose .. what we don't wanna have is there artefact system and fit them to use ours": a skill's front is the upstream prose its recipe cuts, and greenline's mechanics, where the step's work lands, its section's form, its commands and its depths at each mode, stand on its references page (J-93 S2)
  5. The operator's rulings of 2026-10-04, "cool then lock everything in", and R12, "two wait is good": a step runs at the depth the change's mode gives it, inline being one line of its section and written a section the builder writes, and planned work waits before planning and after ticketing; the operator's card answers of 2026-10-12 on the first evaluation's brief, "The roster after the cut", and the card of 2026-10-14, "The record's frame section": a start's frame answers live in the change record's frame section, its own questions asked in one round at any depth, and frame loaded by a start with no change open runs at the written depth
  6. The operator's card of 2026-10-20 that opened J-98, "All of it: a two-slice fast job before 0.1.0 (Recommended)" (docs/DECISIONS.md, the rows of 2026-10-20): the cold review REV-lean-design and the comparison J-60 S3b found a frame interview put through a side channel the owner never saw, so a question goes in the reply that ends the turn
  7. The operator's ruling R21 of 2026-10-08 on orchestration ("orchestration related skills ... have be re thought in to being usable on all harnesses") and the second R3 ruling of that day, "yes go ahead", on the portable forms: grilling looks a fact up itself before the next round, research reads itself or through one delegated agent the step waits for, and no agent runs beside the conversation; The operator's cards of 2026-10-14 on part 3 of the-whole-change, each "Rule as proposed": one agent at a time through the harness's delegation, in the change's one checkout and never a worktree; one brief for every fresh agent, the change's front matter, its acceptance, its id, the path of its report and the skill it works by, then the step's extras, and no fresh agent delegates; every fresh agent's report is <step>-<n>.md in the change's folder; the fix rounds are per step, and a fix after verify is not reviewed again outside a loop without the owner's word; verify's verdicts stand as the agent gave them; and where the harness has no delegation the block's fallback runs every depth above written; The operator's words of 2026-10-18 on the redesign (N-56, items 2 and 7), "we need the upstream prose upfront and references hold how to work meaning the artefacts etc" and, on the ingest procedures, "we wanna have there prose .. what we don't wanna have is there artefact system and fit them to use ours": a skill's front is the upstream prose its recipe cuts, and greenline's mechanics, where the step's work lands, its section's form, its commands and its depths at each mode, stand on its references page (J-93 S2)
  8. The operator's ruling R20 of 2026-10-07, "greenline should not support parralel subs right now at all .. only linear sub flow ..and not worktrees also": a method about parallel dispatch or worktree isolation is declined; series-s7-roster-2026-09-11: the operator's ruling of 2026-09-11 that the plan's open items be finished with the maintainer's recommendations; the recommendation, recorded in that file, keeps the nine method edits; The operator's words of 2026-10-18 on the redesign (N-56, items 2 and 7), "we need the upstream prose upfront and references hold how to work meaning the artefacts etc" and, on the ingest procedures, "we wanna have there prose .. what we don't wanna have is there artefact system and fit them to use ours": a skill's front is the upstream prose its recipe cuts, and greenline's mechanics, where the step's work lands, its section's form, its commands and its depths at each mode, stand on its references page (J-93 S2); The operator's cards of 2026-10-21, "Fix first, then ship (Recommended)" and the scope card naming 1 to 7 (docs/DECISIONS.md, the rows of 2026-10-21): 0.1.0 ships with its hooks whole, and frame, groundwork and build say what the owner's yes is, that the setup record precedes the setup commit, that a trailer-shaped line of another key after a refusal is no answer to it, and that scratch goes under the change's own id
  9. The operator's ruling R20 of 2026-10-07, "greenline should not support parralel subs right now at all .. only linear sub flow ..and not worktrees also": a method about parallel dispatch or worktree isolation is declined; series-s7-roster-2026-09-11: the operator's ruling of 2026-09-11 that the plan's open items be finished with the maintainer's recommendations; the recommendation, recorded in that file, keeps the nine method edits
  10. The operator's ruling R20 of 2026-10-07, "greenline should not support parralel subs right now at all .. only linear sub flow ..and not worktrees also": a method about parallel dispatch or worktree isolation is declined; The operator's words of 2026-10-18 on the redesign (N-56, items 2 and 7), "we need the upstream prose upfront and references hold how to work meaning the artefacts etc" and, on the ingest procedures, "we wanna have there prose .. what we don't wanna have is there artefact system and fit them to use ours": a skill's front is the upstream prose its recipe cuts, and greenline's mechanics, where the step's work lands, its section's form, its commands and its depths at each mode, stand on its references page (J-93 S2)
  11. The operator's words of 2026-10-18 on the redesign (N-56), "we need the upstream prose upfront and references hold how to work meaning the artefacts etc" and "we need only three modes I guess, quick, regular, careful ... Either way it needs to maintain artefacts for audit .. but we can change the spine for each"; and J-93's finalise words of 2026-10-18, "Finalise all six now; S1 opens after J-92 (Recommended); quick, regular, careful (Recommended); The builder's written verify, no fresh verifier (Recommended)": a step's mechanics, where its work lands, its section's form and its commands, live in its references page, each sentence moved from the block under the ruling that first placed it there
  12. The operator's words of 2026-10-18 on the redesign (N-56, item 3), "we need only three modes I guess, quick, regular, careful ... Either way it needs to maintain artefacts for audit .. but we can change the spine for each", with the design N-56 states: quick a one-line frame and acceptance, regular a written frame and plan with no interview, careful the interview; and the cards of 2026-10-19, "quick, regular, careful (Recommended)": at regular this section stands over the written depth's interview, which the ruling of 2026-10-17 gave every written frame, until the step's page is re-cut; The operator's rulings of 2026-10-04, "cool then lock everything in", and R12, "two wait is good": a step runs at the depth the change's mode gives it, inline being one line of its section and written a section the builder writes, and planned work waits before planning and after ticketing; the operator's card answers of 2026-10-12 on the first evaluation's brief, "The roster after the cut", and the card of 2026-10-14, "The record's frame section": a start's frame answers live in the change record's frame section, its own questions asked in one round at any depth, and frame loaded by a start with no change open runs at the written depth; The operator's card of 2026-10-15 on the QA series, "One fix job after the fifth family", and the card of that day, "Words at the list edit the entry; at a ticket's open they override", with the delegation of 2026-10-16 whose words finalise the fix job's slices: a request that names a mode is taken as chosen and goes on with no yes awaited, a question asked only for a choice it leaves open; the record names every floor found and, where the owner names a mode below one, says so with choice owner and the floor's reason; a mode named at the ticket list edits the entry and one named at a ticket's open overrides it; the builder reads the reviewer's brief at the inline depth only; and at the written frame depth every open behaviour goes to the owner through the interview, an inline frame line crediting the owner only with the owner's answers; The operator's words of 2026-10-18 on the redesign (N-56, items 2 and 7), "we need the upstream prose upfront and references hold how to work meaning the artefacts etc" and, on the ingest procedures, "we wanna have there prose .. what we don't wanna have is there artefact system and fit them to use ours": a skill's front is the upstream prose its recipe cuts, and greenline's mechanics, where the step's work lands, its section's form, its commands and its depths at each mode, stand on its references page (J-93 S2); The operator's card of 2026-10-20 that opened J-98, "All of it: a two-slice fast job before 0.1.0 (Recommended)" (docs/DECISIONS.md, the rows of 2026-10-20): the cold review REV-lean-design and the comparison J-60 S3b found a frame interview put through a side channel the owner never saw, so a question goes in the reply that ends the turn
  13. The operator's words of 2026-10-18 on the redesign (N-56, items 2 and 7), "we need the upstream prose upfront and references hold how to work meaning the artefacts etc" and, on the ingest procedures, "we wanna have there prose .. what we don't wanna have is there artefact system and fit them to use ours": a skill's front is the upstream prose its recipe cuts, and greenline's mechanics, where the step's work lands, its section's form, its commands and its depths at each mode, stand on its references page (J-93 S2); The operator's cards of 2026-10-21, "Fix first, then ship (Recommended)" and the scope card naming 1 to 7 (docs/DECISIONS.md, the rows of 2026-10-21): 0.1.0 ships with its hooks whole, and frame, groundwork and build say what the owner's yes is, that the setup record precedes the setup commit, that a trailer-shaped line of another key after a refusal is no answer to it, and that scratch goes under the change's own id
  14. The operator's words of 2026-10-18 on the redesign (N-56), "we need the upstream prose upfront and references hold how to work meaning the artefacts etc" and "we need only three modes I guess, quick, regular, careful ... Either way it needs to maintain artefacts for audit .. but we can change the spine for each"; and J-93's finalise words of 2026-10-18, "Finalise all six now; S1 opens after J-92 (Recommended); quick, regular, careful (Recommended); The builder's written verify, no fresh verifier (Recommended)": a step's mechanics, where its work lands, its section's form and its commands, live in its references page, each sentence moved from the block under the ruling that first placed it there; The operator's card of 2026-10-21, "A record for every write (Recommended)" (docs/DECISIONS.md, the rows of 2026-10-21): a close asked for by name that writes only to the decisions book, the ADR home or the glossary, and the orientation's survey writing its result into the knowledge homes, each open a quick record first, so the hooks' hold on a workspace while no change is open is one rule with no list of exempt paths
  15. The operator's words of 2026-10-18 on the redesign (N-56), "we need the upstream prose upfront and references hold how to work meaning the artefacts etc" and "we need only three modes I guess, quick, regular, careful ... Either way it needs to maintain artefacts for audit .. but we can change the spine for each"; and J-93's finalise words of 2026-10-18, "Finalise all six now; S1 opens after J-92 (Recommended); quick, regular, careful (Recommended); The builder's written verify, no fresh verifier (Recommended)": a step's mechanics, where its work lands, its section's form and its commands, live in its references page, each sentence moved from the block under the ruling that first placed it there; The operator's card of 2026-10-20 that opened J-98, "All of it: a two-slice fast job before 0.1.0 (Recommended)" (docs/DECISIONS.md, the rows of 2026-10-20): the cold review REV-lean-design and the comparison J-60 S3b found a frame interview put through a side channel the owner never saw, so a question goes in the reply that ends the turn; The operator's cards of 2026-10-21, "Fix first, then ship (Recommended)" and the scope card naming 1 to 7 (docs/DECISIONS.md, the rows of 2026-10-21): 0.1.0 ships with its hooks whole, and frame, groundwork and build say what the owner's yes is, that the setup record precedes the setup commit, that a trailer-shaped line of another key after a refusal is no answer to it, and that scratch goes under the change's own id; The operator's card of 2026-10-21, "Fix it in this job (Recommended)" (docs/DECISIONS.md, the rows of 2026-10-21): no page says the request's own words let the agent go on without a yes, a standing choice applying only where the proceed setting admits the mode
  16. The operator's words of 2026-10-18 on the redesign (N-56), "we need the upstream prose upfront and references hold how to work meaning the artefacts etc" and "we need only three modes I guess, quick, regular, careful ... Either way it needs to maintain artefacts for audit .. but we can change the spine for each"; and J-93's finalise words of 2026-10-18, "Finalise all six now; S1 opens after J-92 (Recommended); quick, regular, careful (Recommended); The builder's written verify, no fresh verifier (Recommended)": a step's mechanics, where its work lands, its section's form and its commands, live in its references page, each sentence moved from the block under the ruling that first placed it there; The operator's card of 2026-10-20 that opened J-98, "All of it: a two-slice fast job before 0.1.0 (Recommended)" (docs/DECISIONS.md, the rows of 2026-10-20): the cold review REV-lean-design and the comparison J-60 S3b found the hooks holding nothing on the default branch where the frame rule sends a change's commits in a repository with no remote, so the hooks hold an open record there and the where line says so; The operator's cards of 2026-10-21, "Fix first, then ship (Recommended)" and the scope card naming 1 to 7 (docs/DECISIONS.md, the rows of 2026-10-21): pre-commit and the harness hook's write refusal hold a greenline workspace while no change is open, and a standing choice counts as the owner's yes only where the proceed setting admits the record's mode
  17. The operator's ruling R21 of 2026-10-08 on orchestration ("orchestration related skills ... have be re thought in to being usable on all harnesses") and the second R3 ruling of that day, "yes go ahead", on the portable forms: grilling looks a fact up itself before the next round, research reads itself or through one delegated agent the step waits for, and no agent runs beside the conversation
  18. The operator's rulings of 2026-10-08 on the intake R3 ("yes go ahead"): interview-me, brainstorming's intent and approaches passages and principle-exhaust-the-design-space combine into frame, brainstorming's path classification, gate and spec parts are declined, and the contradictions stand as recommended, grilling's whole frontier in one round over one question per message
  19. series-s7-roster-2026-09-11: the operator's ruling of 2026-09-11 that the plan's open items be finished with the maintainer's recommendations; the recommendation, recorded in that file, keeps the nine method edits
  20. R22 of 2026-10-08, "yes amend, with one change": frame is made from grilling, grill-with-docs and the questioning half of domain-modeling, with research and prototype as its reference files
  21. the R3 rulings of 2026-10-08, "yes go ahead": interview-me, brainstorming's intent and approaches passages and principle-exhaust-the-design-space combine into it, and grilling's whole frontier in one round stands over one question per message
  22. R21 of 2026-10-08: the agent looks a fact up itself before the next round and research reads itself or through one delegated agent the step waits for
  23. R20 of 2026-10-07, "not worktrees also": prototype works in the one checkout, never a worktree or a second checkout
  24. the rulings of 2026-10-04, "cool then lock everything in", on the depths a mode gives a step and on grill-with-docs as a stub (C15)
  25. research is not a stub (the decisions row of 2026-10-07)
  26. the prototype rules carried from series-s7-roster-2026-09-11, superseded by R20 on the checkout alone
  27. J-59, on the operator's words of 2026-10-09 ('okay then implement all of this'): a gist of at most twelve words on every account whose reason is stated; no text, measure or method changes
  28. R44 of 2026-10-11, "S6, right after S5, same worker, normal route", and the ruling made that day under the operator's delegation ("i want you to finish implementing them from here and out"): frame's interview moves to references/interview.md, which its written depth reads
  29. The operator's cards of 2026-10-14 on part 3 of the-whole-change, each "Rule as proposed": one agent at a time through the harness's delegation, in the change's one checkout and never a worktree; one brief for every fresh agent, the change's front matter, its acceptance, its id, the path of its report and the skill it works by, then the step's extras, and no fresh agent delegates; every fresh agent's report is <step>-<n>.md in the change's folder; the fix rounds are per step, and a fix after verify is not reviewed again outside a loop without the owner's word; verify's verdicts stand as the agent gave them; and where the harness has no delegation the block's fallback runs every depth above written
  30. The operator's card answers of 2026-10-12 on the first evaluation's brief, "The roster after the cut": frame's interview page names the repository's glossary, its rule that facts are the agent's to find and decisions the owner's stands on frame's opening for both depths, and frame loaded by a start with no change open runs at the written depth
  31. The operator's card of 2026-10-14, "The record's frame section": a start's four frame answers live in the change record's frame section, and the start writes no section of its own for them
  32. The operator's card of 2026-10-15 on the QA series, "One fix job after the fifth family", and the card of that day, "Words at the list edit the entry; at a ticket's open they override", with the delegation of 2026-10-16 whose words finalise the fix job's slices: a request that names a mode is taken as chosen and goes on with no yes awaited, a question asked only for a choice it leaves open; the record names every floor found and, where the owner names a mode below one, says so with choice owner and the floor's reason; a mode named at the ticket list edits the entry and one named at a ticket's open overrides it; the builder reads the reviewer's brief at the inline depth only; and at the written frame depth every open behaviour goes to the owner through the interview, an inline frame line crediting the owner only with the owner's answers
  33. The operator's words of 2026-10-18 on the redesign (N-56, item 3), "we need only three modes I guess, quick, regular, careful ... Either way it needs to maintain artefacts for audit .. but we can change the spine for each", with the design N-56 states: quick a one-line frame and acceptance, regular a written frame and plan with no interview, careful the interview; and the cards of 2026-10-19, "quick, regular, careful (Recommended)": at regular this section stands over the written depth's interview, which the ruling of 2026-10-17 gave every written frame, until the step's page is re-cut
  34. The operator's words of 2026-10-18 on the redesign (N-56, items 2 and 7), "we need the upstream prose upfront and references hold how to work meaning the artefacts etc" and, on the ingest procedures, "we wanna have there prose .. what we don't wanna have is there artefact system and fit them to use ours"; and J-93 S2's finalise words of 2026-10-19, "Fast route, merged slices, parallel jobs (Recommended)": a skill's front is the upstream prose its recipe cuts, and its mechanics, where its work lands, its section's form, its depths at each mode and its commands, stand on its references page
  35. The operator's card of 2026-10-20 that opened J-98, "All of it: a two-slice fast job before 0.1.0 (Recommended)" (docs/DECISIONS.md, the rows of 2026-10-20): every finding of the cold review REV-lean-design and the comparison J-60 S3b is fixed before 0.1.0
  36. The operator's cards of 2026-10-21, "Fix first, then ship (Recommended)" and the scope card naming 1 to 7 (docs/DECISIONS.md, the rows of 2026-10-21): 0.1.0 ships with its hooks whole, and frame, groundwork and build say what the owner's yes is, that the setup record precedes the setup commit, that a trailer-shaped line of another key after a refusal is no answer to it, and that scratch goes under the change's own id
  37. The operator's card of 2026-10-21, "A record for every write (Recommended)" (docs/DECISIONS.md, the rows of 2026-10-21): a close asked for by name that writes only to the decisions book, the ADR home or the glossary, and the orientation's survey writing its result into the knowledge homes, each open a quick record first, so the hooks' hold on a workspace while no change is open is one rule with no list of exempt paths
  38. The operator's card of 2026-10-21, "Fix it in this job (Recommended)" (docs/DECISIONS.md, the rows of 2026-10-21): no page says the request's own words let the agent go on without a yes, a standing choice applying only where the proceed setting admits the mode
10 earlier entries
  1. 2026-10-20 2026-10-20-frame-questions-in-the-reply

    A frame question goes in the reply that ends the turn

    Pages it touched: references/greenline.md, references/interview.md

  2. 2026-10-19 2026-10-19-frame-front-and-references

    Frame's depths and mechanics move from its front to its references

    Pages it touched: SKILL.md, references/greenline.md, references/interview.md, references/prototype.md, references/research.md

  3. 2026-10-19 2026-10-19-frame-references

    Frame's mechanics move from the block to its references page

    Pages it touched: references/greenline.md

  4. 2026-10-17 2026-10-17-frame-asks-and-credits-the-owner

    Frame asks what is open and credits the owner only with answers

    Pages it touched: SKILL.md

  5. 2026-10-14 2026-10-14-frame-facts-at-both-depths

    Frame's opening keeps the facts rule and a start's depth

    Pages it touched: SKILL.md, references/interview.md, references/prototype.md, references/research.md

  6. 2026-10-14 2026-10-14-frame-research-agent-brief

    A research agent gets the one brief and writes a named report

    Pages it touched: references/research.md

  7. 2026-10-11 2026-10-11-frame-interview

    The interview moves to a page only the written depth reads

    Pages it touched: SKILL.md, references/interview.md

  8. 2026-10-09 2026-10-09-frame-gists

    Every account gets a short gist for the website

  9. 2026-10-09 2026-10-09-frame-branch-context

    The throwaway branch is context, never evidence

    Pages it touched: references/prototype/LOGIC.md, references/prototype/UI.md

  10. 2026-10-08 2026-10-08-frame-recipe

    Frame is made from grilling, with research and prototype as references

    Pages it touched: SKILL.md, references/prototype.md, references/prototype/LOGIC.md, references/prototype/UI.md, references/research.md