fix-pool
Skill1 starsChanged 4 months agoMITView on GitHub
Findings→fixes pooler for a coordinator session. Polls the task manager for new issues (walkthrough/tester-filed or manual), triages each (auto-fix / investigate / hold-for-operator / duplicate), and dispatches throttled background fix agents that stop at PR. Use when a build-hub session runs alongside human testing slots and new findings should flow into the builder workflow without the operator relaying them. Arm with `/fix-pool arm`, check `/fix-pool status`, stop with `/fix-pool drain`.
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 2 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 26
Read the task-manager adapter per _shared/adapters/{tracker.kind}.md (resolved from .claude/project.yml / project-context).
- Distinctive: line 71
Surface mutex: Never dispatch a fix touching a surface an active testing slot is walking (the operator names the active surfaces at arm …
- Distinctive: line 76
Honest triage beats fast triage: If AUTO-FIX vs HOLD is unclear, it's HOLD.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill 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
Fix Pool — findings→fixes pooler
One coordinator session + N human testing slots produce a stream of freshly-filed issues. This skill turns the coordinator into the drain: poll → triage → dispatch → report, on a loop, with hard throttles. Capture stays with the testers (they have the context); pickup is centralized here (dedup + sequencing live in one place).
Invocation
/fix-pool arm [--interval 10m] [--max-agents 3] [--since <ISO|now>]
/fix-pool status
/fix-pool drain # stop polling; let in-flight fix agents finishResolve config first
Read the task-manager adapter per _shared/adapters/{tracker.kind}.md (resolved
from .claude/project.yml / project-context). All issue reads/links go through
the adapter — never a hardcoded API. State file: .claude/.fix-pool-state.json
(last_poll_iso, seen_ids[], dispatched{id→agent,pr}, held[]). Not
committed.
Arm (the loop)
On arm, record the baseline timestamp (--since, default now) and start a
polling cycle every --interval (default 10m) using the session's
wake/scheduling mechanism (background monitor or ScheduleWakeup — whatever the
harness provides; never a foreground sleep).
Each cycle:
- Poll — adapter: issues created since
last_poll_isoin the configured team/project (include tester-session-filed and manually-filed; exclude issues this session created itself unless labeled for the pool). Self-filter is mandatory in the poll query or first triage step — the hub files tickets too, and without it the pool re-triages its own output (observed live, 2026-07-17). Track hub-created ids in the state file and drop them on sight. Also drop issues whose domain an ACTIVE sibling workstream owns (e.g. a migration terminal's own ledger ticket) — that's a HOLD with a named owner, not a dispatch. Triage each new issue (read title+body, check
seen_ids):Verdict Criteria Action AUTO-FIXClear repro + scope is test-only, docs, or a small UI/logic fix; no schema, no auth/security semantics, no design decision Dispatch a fix agent (worktree, own branch, PR to the integration branch, never merges) INVESTIGATEReal defect, root cause unclear Dispatch an investigate agent: repro + root cause + proposed fix posted as an issue comment; fix only if the cause turns out AUTO-FIX-class HOLDSchema/migration, security posture, product/design decision, or anything one-way-door Add to held[]; surface in the next report; never auto-builtDUPMatches an open issue/known finding Link via adapter comment; no work - Throttle — at most
--max-agentsfix/investigate agents in flight (check TaskList); excess stays queued in order. New dispatches only as slots free. - Report — one short message per cycle only when something changed: new findings by verdict, dispatches started, PRs ready, held items. Silent cycles stay silent.
Hard rules
- PR-only. Pool agents never merge. Merges/deploys happen at operator break points — a deploy mid-test invalidates the testers' ground truth.
- No schema pushes, ever. Migration-class findings are always
HOLD. - Surface mutex. Never dispatch a fix touching a surface an active testing slot is walking (the operator names the active surfaces at arm time, or the walkthrough epics define them); queue until that slot completes.
- Dedup before dispatch. Two findings, one root cause → one agent, both issues linked.
- Honest triage beats fast triage. If AUTO-FIX vs HOLD is unclear, it's HOLD. A wrong auto-fix during a test session poisons two things at once.
Drain
drain: stop the poll loop, let in-flight agents finish and open their PRs,
emit a final consolidated report: all findings routed, PRs awaiting merge,
held items needing operator rulings. The pool is not drained until every
finding has a disposition.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
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.

