super-board
CLAUDE.md572 starsChanged 39 days agoMITView on GitHub
This repo ships nine skills under skills/: five you type (super-board, super-collect, ui-refine-loop, visual, git-sync) and four the board runs (the lane workers super-build, super-qa, super-review, plus pr-security-review, which super-qa runs on every PR). Cloudflare's security-audit is not shipped: get.sh and onboard fetch it with npx skills, and no lane runs it. Architecture findings come from /super-collect architecture. Worktree cleanup (hooks/cleanup-wt.py) is a hook, not a skill. README skill tables are generated by scripts/super-board-readme-sync.py from SKILL.md frontmatter and skills/families.json. **super-board…
In this repository9 other files it gives its agents.
- git-syncSkill
- pr-security-reviewSkill
- super-boardSkill
- super-buildSkill
- super-collectSkill
- super-qaSkill
- super-reviewSkill
- ui-refine-loopSkill
- visualSkill
The file
We split this CLAUDE.md into the rules it gives an agent
9 rules. About 0 are common, 3 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 14
Verify preconditions (clean git, no orphan workers, GraphQL quota, etc.).
- Distinctive: line 24
Wait on individual workers or relay their work.
- Distinctive: line 27
If a problem surfaces during the run, the orchestrator's reply is: "I saw X.
- Very specific: line 34
Check its --check before GitHub writes, migrations, merges, and new dispatch.
- Very specific: line 36
Call sb_gh_guard_check 200 before any burst of gh calls.
- Very specific: line 37
Prefer local git blame / git log over gh api graphql for any sub-agent that doesn't need fresh state.
- Very specific: line 90
NEVER rewrite a whole PR body: scripts/super-board-pr-body.sh rewrites one block.
- Very specific: line 91
ALWAYS change a format in writing-standard.md first, then the templates and tests/test_writing_format.py.
- Very specific: line 95
Run bash tests/run-safety.sh for the offline suite.
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
super-board — agent-facing notes
This repo ships nine skills under skills/: five you type (super-board, super-collect,
ui-refine-loop, visual, git-sync) and four the board runs (the lane workers super-build, super-qa,
super-review, plus pr-security-review, which super-qa runs on every PR). Cloudflare's
security-audit is not shipped: get.sh and onboard fetch it with npx skills, and no lane runs it. Architecture findings come from /super-collect architecture.
Worktree cleanup (hooks/cleanup-wt.py) is a hook, not a skill. README skill tables are generated
by scripts/super-board-readme-sync.py from SKILL.md frontmatter and skills/families.json.
The cardinal rule
super-board is an autonomous trader. The interactive Claude session that invokes /super-board run is an orchestrator, NOT a worker. Its only jobs are:
- Verify preconditions (clean git, no orphan workers, GraphQL quota, etc.).
- Dispatch per the config's
worker_backend:"workflow"(default) — stay in-session and run the wave loop inskills/super-board/references/run-workflow.md: plan a wave, claim assignees, launch thesuper-board-wavedynamic workflow, reconcile, repeat. Lane agents inside the workflow do all product work."claude-p"(legacy, explicit opt-in only) — spawn the headless runnernohup .claude/bin/super-board-run.sh <slug> &, report PID + log path, exit. The runner refuses to start (exit 78) unless the config sets this value.
- Report back to the user (dispatch confirmation, or one status line per wave).
The orchestrator MUST NOT:
- Build, test, review, or fix issues itself. All product work is delegated to workflow lane agents (or
claude -pworkers on the legacy backend). - Patch the dispatcher script or skill files mid-run, even if it sees a problem. Capture the symptom and tell the user; wait for explicit approval.
- Wait on individual workers or relay their work. They write their evidence back to the GitHub issue + PR. The orchestrator's user-facing output is the dispatch confirmation (claude-p) or one short report per wave (workflow), not the run result.
- Hold context for multi-card progress. State lives on the GitHub Project board + the inflight lockfiles, not in the orchestrator's session.
If a problem surfaces during the run, the orchestrator's reply is: "I saw X. Want me to dig in or stop the runner?" — not "I went ahead and fixed it."
Worker rules
Workers (super-build, super-qa, super-review) share the dispatcher's gh token bucket. They MUST:
- Required GitHub reads use
.claude/bin/super-board-github-read.py; exit 79 stops the run. - Check its
--checkbefore GitHub writes, migrations, merges, and new dispatch; preserve work when halted. - Source
.claude/bin/super-board-gh-guard.sh(scripts/in this repo) at worker start. - Call
sb_gh_guard_check 200before any burst ofghcalls. - Prefer local
git blame/git logovergh api graphqlfor any sub-agent that doesn't need fresh state. - Cap adversarial sub-agents at 50 gh calls each. If a sub-agent runs out, it returns
confidence: insufficient_datarather than burning the shared quota. - Append
gh-quota-on-exit: graphql=<n>/5000 rest=<n>/5000to the PR handoff comment.
See skills/super-board/references/rate-limit-etiquette.md for the full discipline.
Installation contract
install.sh [--no-hooks] [--protect-main] [--hosts claude,codex,opencode] <target> copies the pack
once into the target project's shared .agents/ tree, then links each host folder into it: one
link per skill under skills/, one per file under bin/, workflows/, hooks/. .claude/ is
always linked; .codex/ and .opencode/ only when that folder already exists, a config host
key names it, super-board-host.sh reports it, or --hosts asks. A real-directory .claude/
install is replaced by links on upgrade; a user's own links and anything not super-board's are
left alone; where no symlink can be made the file is copied. Settings and run state stay in .claude/.
.agents/
├── skills/<all nine>/...
├── hooks/guard-*.py, cleanup-wt.py (wired into settings.json; --no-hooks skips)
├── workflows/super-board-wave.js, ui-refine-loop.js
└── bin/super-board-*.sh (incl. pr-body), super-board-*.py (status, merge-policy, agents-md, settings, setup), super-qa-file-bug.sh, super-review-file-refactor.shIt also refreshes the managed <!-- super-board:begin … --> block in the target's AGENTS.md when
one exists (nothing outside the markers), records an older install in
.claude/super-board/upgrade.json, prints grouped emoji output, and asks nothing:
super-board onboard asks the questions. Onboard's 🔍 Checks (scripts/super-board-setup.py)
fixes must-haves and finishes upgrades with no question.
Board shape (v3.0.0)
Columns are always Backlog · Ready · Building · QA · Review · Blocked · Done — no Skipped, no
per-board variant. Labels qa · bug · feature route cards: qa skips Building, everything
else (and no label) is built. Change routing in scripts/super-board-wave-plan.sh,
workflows/super-board-wave.js and run.md → "Lanes and label routing" together.
Skills call the dispatcher scripts as .claude/bin/<script>.
Writing
Commits, PR bodies, tickets and comments in this repo follow
skills/super-board/references/writing-standard.md, the same standard super-board writes into
every project it is installed in.
| Thing | Format |
| Commit | <emoji> [type] scope: subject + short bullets (✨ feat · 🐛 fix · 🔧 chore · ♻️ refactor · 🧪 test · ⚡ perf · 📝 docs · 👷 ci · 💄 ui · 🔒 security · ⏪ revert · 🚧 wip) |
| PR body | marker blocks, one owner each: status · problem · solution · ac · history · visual · risk |
| Ticket | Problem · Context · Fix · Acceptance Criteria · Risk · Blocked by (+ Evidence for bugs) |
| Comment | [role] [label] status · Did · ✅ Done · ❌ Not done · Next · ≤ 8 lines |
| PR author notes | Purpose · What changed · Why it matters, in native file/inline review comments; follow skills/super-board/references/pr-author-notes.md |
- NEVER rewrite a whole PR body:
scripts/super-board-pr-body.shrewrites one block. - ALWAYS change a format in
writing-standard.mdfirst, then the templates andtests/test_writing_format.py.
Release checks
Run bash tests/run-safety.sh for the offline suite. A pushed v* tag runs the same checks
on Linux/macOS plus status-reader smoke checks, then publishes only if they pass. Follow
RELEASING.md; it also lists the settings needed to limit manual bypass.
Map pages (diagrams/)
Every map page must be listed in the nav and in Explore, from the registry diagrams/_shared/maps.json. To add one: create diagrams/<map>/map.json (or map.py), add its entry (title, blurb, path, thumb, logo) to the registry, add a 960x600 thumb, run python3 diagrams/_shared/sync_explore.py then python3 diagrams/_shared/build_skillmap.py <map>. The build and sync_explore.py --check fail if a map page has no registry entry or the Explore cards are stale.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

