pitwallDocs

    Get started

    Overview

    What pitwall is, how the loop runs, and how to install it.

    What pitwall is

    pitwall is a plugin for Claude Code that runs your backlog as a loop. You plan once and answer every open question once, up front. Then the agent builds one task per round, proves it, gets a verdict from a verifier that did not write the code, and opens the PR. You merge.

    An agent left alone on a queue tends to fail the same few ways: it asks you something at 2am and waits, it calls a passing typecheck “done”, it grades its own work, and it guesses a business rule. pitwall is built against each of these:

    • Questions up front. /pitwall:queue asks everything only you can decide, once, as tick boxes. During the run the agent tries it, takes a recorded default, or parks the task. It never stops to ask.
    • Evidence, not claims. /pitwall:gauge runs your checks, drives the page in a browser, and hands you numbered steps only for what a machine cannot do.
    • A verdict from someone else. Every PR gets a fresh, read-only verifier, pinned to the exact code it checked. A new commit makes the verdict stale.
    • Humans merge. The agent never merges, force-pushes or touches a protected branch.

    The loop

    1. init. Read the repo and write its profile, once.
    2. plan. Short interview rounds; every answer lands in the spec, and the plan gets rows.
    3. queue. Pick the tasks the agent can finish alone, and ask every open question once.
    4. drive and lap. One task per round: branch, code, prove, review, verdict, PR. Then the next.
    5. merge-order. Which PR to merge first. You press the button.

    Stop between tasks with /pitwall:stop, or now with /pitwall:brake.

    Install

    1. Add the marketplace and the plugin in Claude Code.
    /plugin marketplace add aontwit/pitwall
    /plugin install pitwall@pitwall
    1. Set up each repo. Run /pitwall:init in it, then commit .claude/agent-loop.md (and the plan file, if init wrote one) to the base branch.
    2. Plan, queue, drive. /pitwall:plan when the plan has no rows yet, then /pitwall:queue and /pitwall:drive.

    You need a GitHub repo, an authenticated gh, and git, bash and Node 18+ on the machine that runs the loop. Browser checks need a dev server and a browser Claude can drive. For installing for a whole team (project scope), see the full README below.

    Where to go next

    The full READMEEverything in the repo's README: team installs, the profile, status, development.

    pitwall

    CI License: MIT GitHub stars

    The agent loop that queues your work, proves every PR, and leaves the merge to you.

    Plan in short interview rounds, then ask every remaining question once, up front. Then the agent builds one task per round, proves it, gets a verdict from a verifier that did not write the code, and opens the PR. 16 playbooks, 20 principles. Runs in Claude Code today; Codex, Cursor and Gemini CLI are planned.

    Quick start: /plugin marketplace add aontwit/pitwall, then /plugin install pitwall@pitwall, then run /pitwall:init in your repo.

    Why pitwall?

    An agent left alone on a queue fails in the same few ways: it asks you something at 2am and waits, it calls a passing typecheck “done”, it grades its own work, and it guesses a business rule instead of stopping.

    pitwall adds:

    • Questions up front, never mid-round. /pitwall:queue asks everything only a human can decide, once, as tick boxes. The run then follows a 3-step ladder: try it, take a recorded default, or park the task.
    • Evidence, not claims. /pitwall:gauge picks proof by what changed: level A runs your checks, level B drives the page in a browser, level C hands a human numbered steps. Nothing is ticked that was not run.
    • A verdict from someone who did not write the code. Every PR gets a fresh read-only verifier pinned to its patch-id. A new commit makes the verdict stale.
    • Humans merge. The agent builds, proves and opens the PR. It never merges, force-pushes or touches protected branches.
    • One profile per repo. Everything repo-specific (base branch, check commands, dev server, tracker, plan) lives in .claude/agent-loop.md. The plugin holds no repo values.

    How it works

    flowchart TD
        init["/pitwall:init<br/>write the profile"] --> plan["/pitwall:plan<br/>interview → spec + rows"]
        plan --> queue["/pitwall:queue<br/>pick tasks + ask once"]
        queue --> drive["/pitwall:drive"]
        drive --> lap
    
        subgraph lap ["/pitwall:lap · 1 task"]
            pick["pick next task"] --> branch["branch from base"]
            branch --> code["code<br/>(subagent per role)"]
            code --> gauge["/pitwall:gauge<br/>A checks · B browser"]
            gauge --> review["review panel<br/>(2 models, one prompt)"]
            review --> verify["independent verifier<br/>@ patch-id"]
            verify --> pr["open PR"]
        end
    
        pr -->|next round| pick
        gauge -.->|stuck after 2 methods| park["park + question<br/>for next briefing"]
        review -.->|CRITICAL on a park list| park
        park -.-> queue
        pr --> merge["/pitwall:merge-order<br/>human merges"]

    /pitwall:stop ends the loop after the current task. /pitwall:brake stops now and saves the work as a WIP commit.

    What’s included

    The skill: pitwall

    Every command is /pitwall:<command>. Or say what you want in plain words, English or Thai, and pitwall picks the playbook:

    /pitwall:lap
    /pitwall:pitwall fix the broken sort on the search page

    Commands

    CommandWhat it does
    /pitwall:initOne-time setup: read the repo, ask what it can’t read, write .claude/agent-loop.md
    /pitwall:doctorCheck the profile against the contract and say which section is missing
    /pitwall:planInterview you in rounds of 2–3 questions, record each answer in the spec, and write plan rows (docs-only PR)
    /pitwall:queuePick tasks the agent can finish alone (6 criteria), then ask every open question once
    /pitwall:driveStart the loop: one task per round until the queue is empty or you stop it
    /pitwall:lapRun exactly one round
    /pitwall:stopStop after the current task finishes
    /pitwall:brakeStop now; save unfinished work as a WIP commit
    /pitwall:merge-orderOrder your open PRs by stack and readiness, retarget merged parents
    /pitwall:secretaryRead past sessions and report what you keep repeating, as skill / rule candidates
    /pitwall:gaugeProve the work: Verify table with VERIFIED / PARTIAL / FAIL
    /pitwall:ticketCreate or update the tracker task for a piece of work

    Playbooks by task type

    TaskPlaybookIts guard
    Bugbug-fixReproduce on the real screen before and after the fix
    Refactor that must not change behaviourmove-onlyCharacterization test locked in the first commit
    Bring a number downratchetThe reviewer must say whether the drop is real or a dodged count
    Bring behaviour over from another branchportParity test with golden output from the source
    New featurefeatureName the data shape before any logic
    Read-only questioninvestigationCited answer, never code
    Spec and plan rowsplanEvery answer lands in a file before the next round

    Principles

    20 ways of thinking adapted from pstack, such as fix-root-causes, prove-it-works, attack-the-premise and never-block-on-the-human. A playbook cites the principle that changed a decision.

    The profile

    /pitwall:init writes .claude/agent-loop.md. /pitwall:doctor checks it.

    SectionHolds
    reponame, state path, the checkout the loop uses
    gitbase, protected branches, branch / commit / PR patterns, hooks
    checkslevel A commands: install, typecheck, lint, test, build
    level Bdev server, browser, pages, viewports, human-only steps
    states to buildrecipes for the states your tests need
    repo-specific evidencefile pattern → extra proof + level
    plan (optional)where the plan lives and how its rows look
    tracker (optional)clickup, github (GitHub Issues) or none (the PR is the record)
    agents per tasksubagent + model per role, review panel, checklists
    repo rulesyour rules files, principles turned off
    multi-machine (optional)hand off loop state between machines
    permissionsallow / deny for the machine that runs the loop
    languagelanguage for you, for PRs / commits, for tracker comments

    Status

    pitwall is pre-1.0. It has run end to end on two repos outside the one it came from (TypeScript, GitHub, tracker: none, Windows). /pitwall:init and /pitwall:doctor have also run on a Godot (GDScript) game repo.

    ProvenNot proven yet
    install from this repo, /pitwall:init, /pitwall:doctor/pitwall:brake, and /pitwall:stop during a task
    /pitwall:queue, including tasks typed in words and blocking on a question it must not guessa wakeup that picks a new task and reaches a PR on its own
    /pitwall:lap end to end: repro, fix, checks, browser evidence, two-model review, independent verifier, PR (3 PRs)/pitwall:merge-order and the sync after a PR merges
    /pitwall:drive start, a self-scheduled wakeup that re-enters the loop, /pitwall:stop between roundstracker: clickup in plugin form, tracker: github inside a lap
    routing from Thai and English requests (eval)the port, move-only and ratchet playbooks, multi-machine hand-off
    a /pitwall:lap on a repo outside JavaScript / TypeScript, macOS and Linux

    Installation

    /plugin marketplace add aontwit/pitwall
    /plugin install pitwall@pitwall
    ScopeWho gets itUse it for
    user (default)you, in every repoyour own work
    projecteveryone who clones the repo (written to .claude/settings.json, which you commit)a team that shares one profile
    localyou, in one repotrying it out

    Pick one with --scope, for example claude plugin install pitwall@pitwall --scope project. Update to a new release with /plugin marketplace update pitwall.

    --scope project writes only enabledPlugins. A teammate’s clone does not know where pitwall@pitwall comes from until the marketplace is in the same file, so add it before you commit:

    "extraKnownMarketplaces": {
      "pitwall": { "source": { "source": "github", "repo": "aontwit/pitwall" } }
    }

    Once a teammate accepts the workspace trust dialog, Claude Code registers the marketplace and loads pitwall from it, because the marketplace lists the plugin by a relative path (Require plugins per repository). /pitwall:init flags a project-scope install that is missing this entry.

    Then, in each repo:

    /pitwall:init

    Commit .claude/agent-loop.md (and PLAN.md, if init wrote one) to your base branch before the first /pitwall:lap: the loop never pushes to the base, and a lap stops on untracked files.

    Requirements

    • A GitHub repo and an authenticated gh CLI
    • git, bash and Node 18+ on the machine that runs the loop
    • For level B: a dev server and a browser Claude can drive
    • For tracker: clickup: the ClickUp MCP connector
    • For tracker: github: Issues turned on in the repo, and the labels the profile names already created

    Development

    npm test                      # doctor, references, PR-body check, secretary scan
    bash scripts/check-english.sh # files and commit messages stay English
    bash scripts/check-commit-msg.sh --all  # type(scope): summary, no co-author trailer
    claude plugin validate ./plugin --strict
    claude plugin eval plugin --scaffold --ablation none   # routing eval, calls the model

    git config core.hooksPath .githooks turns on the commit-msg and pre-push checks.

    Supported tools

    ToolStatus
    Claude CodeSupported
    Codex, Cursor, Gemini CLIPlanned

    Credits

    The principles, the feature, investigation and opening-a-pr playbooks and the subagent are adapted from pstack by Lauren Tan (MIT). Every adapted file keeps its source line, and the license is in plugin/skills/pitwall/principles/LICENSE-pstack.

    The docs site’s 3D models are Formula 1 Car by spsvision and V6 car engine by Blendoriano, both CC BY 4.0. They are reduced for the web: the car has new wheels, and the engine keeps only its assembled parts.

    License

    MIT