Get started
Check the profile
/pitwall:doctorCompare the profile with the contract and name the section that is missing.
What it does
/pitwall:doctor checks the profile, .claude/agent-loop.md, against the contract every command relies on, and names any section that is missing or wrong. It is read-only: fixes go through /pitwall:init or through you.
Use it when
- you edited the profile by hand
- a command stopped and said a section is missing
- the repo changed tools, for example from npm to pnpm
Try it
/pitwall:doctor
What it checks
- The sections. Every required section is there (repo, git, checks, level B, states to build, repo-specific evidence, agents per task, repo rules, permissions, language), the tracker line is valid, and no
{{…}}placeholder is left. - What a script cannot see. The install command still matches the lockfile on the base, every check command exists, the base branch exists on the remote,
ghis signed in, and the tracker's tools are connected.
What you’ll see
A healthy profile:
ok repo
ok git
ok checks
ok level B
…
optional multi-machine (not set)
doctor: profile OK (.claude/agent-loop.md)
A profile with problems, each line explained in the report:
MISSING states to build
BAD tracker: the section must say `tracker: clickup`, `tracker: github` or `tracker: none`
UNFILLED 1 line(s) still hold a {{…}} placeholder:
doctor: 3 problem(s) in .claude/agent-loop.md
No profile at all: doctor says the repo has not set up pitwall and points to /pitwall:init.
The playbook the agent followsThe full spec for /pitwall:doctor. This page sums it up; when the two differ, the playbook wins.
playbook: doctor — is this repo’s profile complete?
Use for /pitwall:doctor, “check the profile”, and as the last step of init · read-only
bash <pitwall dir>/scripts/doctor.shfrom the repo root (another profile path → pass it as the argument)- Exit 3 → “this repo has not set up pitwall yet — run
/pitwall:init”, end - Exit 1 → report each
MISSING/BADline with what that section holds (the “Profile contract” table inSKILL.md), end - Exit 0 → also check what the script cannot: the install command’s package manager matches the lockfile on
origin/<base>(git ls-tree --name-only origin/<base>— a base that moved from one package manager to another leaves a stale profile; fix it with/pitwall:init redo), every command inchecksexists (package.jsonscript / binary on PATH),git→baseexists on origin (git ls-remote --heads origin <base>),gh auth statuspasses, trackerclickup→ its tools are connected, trackergithub→gh repo view --json hasIssuesEnabledis true and every label the tracker section names exists (gh label list --json name) · report one line per finding, or “profile OK”
Never edit the profile here — fixes go through init or the user