pitwallDocs

    The loop

    Plan

    /pitwall:plan

    Interview the owner in short rounds and turn every answer into spec and plan rows.

    What it does

    /pitwall:plan is the front of the loop. It interviews you in short rounds of tick-box questions, writes every answer into the spec or the plan before the next round, and ends with plan rows that /pitwall:queue can pick. It never writes code, and it ends with a docs-only PR that you merge.

    Use it when

    • the repo is new and has no spec yet
    • the next phase of the plan still says TBD
    • a decision changed and the spec and rows must follow it

    Try it

    /pitwall:plan                      choose the mode itself
    /pitwall:plan phase-3              open that phase
    /pitwall:plan prices now include tax

    The mode follows from what it finds: new (no spec: the whole product), phase (one phase still TBD), or amend (a decision you describe in words).

    How it runs

    1. Read first. The spec, the plan, the repo rules and the questions already answered. Anything a file answers is never asked.
    2. Ask in rounds. Two or three questions per round, recommended answer first, each option saying what it does to the plan. Only questions whose prerequisites are settled; a question that reshapes everything is asked alone.
    3. Record as it goes. Product decisions go into the spec, marked (owner <date>); order and process decisions into the plan's answered table. Nothing stays only in chat.
    4. Write rows. Each row cites a spec section, names its files (about eight at most) and has a checkable "Done when". A row that needs a human verdict becomes a gate row.
    5. Open the PR. A docs-only PR with a table of decision, where it landed and the date. You merge it, then run /pitwall:queue.

    What you’ll see

    From round two on, each round starts with a summary you can correct. The example comes from a made-up repo, acme/shop.

    Last round
      · v1 sells to logged-in customers only (owner, 2026-10-11)
      · prices are shown with tax included
      · phase 2 ends when search and checkout pass on a phone
    
    Q1  Is this right?
        ● Yes, continue (recommended)   ○ Change something
    Q2  How should search sort by default?
        ● Relevance (recommended): the row adds a relevance score
        ○ Newest first: no score, simpler row

    A row it writes into the plan:

    | P2-04 | Sort search results by price | src/search/sort.ts, src/search/sort.test.ts |
      Done when: low → high and high → low both order correctly; equal prices keep newest first · spec §4.2

    Next steps

    Merge the plan PR, then /pitwall:queue. Anything still undecided stays labelled open, and a phase that is not ready keeps TBD, so the queue skips it.

    The playbook the agent followsThe full spec for /pitwall:plan. This page sums it up; when the two differ, the playbook wins.

    playbook: plan — interview the owner, write the spec and the plan rows

    Use for /pitwall:plan · the front of the loop: an empty repo, a phase whose rows are still TBD, or a decision that changed → spec + plan rows that /pitwall:queue can pick · it runs outside the loop, so it asks in rounds (SKILL.md rule 3 still governs the loop) · it never writes code and ends with a docs-only PR that the human merges · the shape follows two existing interview patterns: a whole-product interview first, then one small interview per phase or change, each confirmed before it stops

    Arguments: none = choose the mode in step 0 · /pitwall:plan <phase> = that phase · /pitwall:plan <a changed decision in words> = amend

    0. Mode (read only, no questions)

    Read the profile plan section: plan location, spec, question banks (both optional) · no profile → stop: “run /pitwall:init first”

    ModeWhenCovers
    newno spec file, or it is emptythe whole product: brief, then each area, then phases, then the first phase’s rows
    phasethe argument names a phase, or the next phase in reading order has rows marked TBDthat phase only: its open items, then its rows
    amendthe argument describes a decision that changedthat decision, the spec section it touches, and the rows it affects

    1. Read before asking

    • Read the spec, the plan files (git show origin/<base>:<path>), the repo rules and the plan’s answered questions
    • Make the list for this mode: items the spec labels open or deferred, rows marked TBD, people gates, plan open questions, and anything the question bank files ask
    • Drop every question a file already answers. A likely reading becomes a claim the owner can correct, not a menu
    • No question bank in the profile → use the generic order in step 2

    2. Ask in rounds

    • AskUserQuestion with 2–3 questions per round and ≤ 4 options each. Write them in the profile’s user language, put the recommended option first with its marker, and make each description say what the option does to the plan
    • Ask only the frontier: questions whose prerequisites are settled. A dependent question waits for the next round. A root question that reshapes everything after it is asked alone. Examples: what the product is, who it is for, the riskiest question
    • From round 2 on, put a 3–6 line summary of the last round in the message and make the first question “is this right?”
    • Record each round (step 3) before you ask the next one
    • Stop when every item on the step 1 list is answered or recorded as open, and the owner confirms the last summary. If the owner says stop, record what is answered and leave the rest open
    • Generic order for mode new:
      1. brief: what it is, who it is for, the riskiest question, the date that holds while scope moves, and what it will not do
      2. MVP line: what is in v1 and what comes later
      3. each area of the spec, from the question bank
      4. phases: order by risk, the people gates (🚪), and what each phase ends with
      5. how the loop runs: queue the whole phase, one lap at a time, or split rows with people

    3. Record as you go

    Work on a branch from the profile’s agent branch pattern (<id> = plan) · nothing stays only in chat, because context compaction loses it

    • Product decisions go into the spec, in the section they belong to, with (owner <date>). Anything still undecided gets the spec’s open label
    • Order and process decisions go into the plan’s answered table (question · answer · date). Items still open go to the profile’s open questions location
    • Rows follow the profile row format. Each row cites a spec section, names its files (≤ ~8), and has a checkable “Done when”. Dependencies go in the task text (“needs X merged”)
    • A row that needs a human verdict is a 🚪 gate row. A phase that is not ready keeps TBD, so /pitwall:queue skips it
    • A decision that changes a ticked row adds a new row that cites the old id. Ticked rows are never edited

    4. Check

    • Read every new or changed row back: does it have files, “Done when” and a spec reference?
    • Run the profile’s level A checks that cover docs (lint, commit message)
    • Every answered question can be found in a file. Quote each one with the line where it landed

    5. PR + report

    • Commit with the profile pattern (a docs type), push the branch, and open a PR against the base. The body has a table of decision · where it lands · date, the checks that ran, and Decisions to confirm (defaults taken, or “none”)
    • opening-a-pr.md and its verifier row do not apply. A plan PR has no code to verify, and the owner confirmed every decision live
    • Report in the profile’s user language: what was decided, where it landed, what is still open, and the PR link. Next steps: merge, then /pitwall:queue

    Never

    Write code · tick a row · answer an open item yourself · ask what a file answers · ask more than 3 questions in a round