bottleneck-map
Skill47 starsChanged 12 days agoApache-2.0View on GitHub
Map the current "what is limiting us right now?" state across the running agent fleet and the live GitHub issue backlog. Runs fleet bottleneck detection plus issue triage, records the dominant system bottlenecks, open-work bottlenecks, and the durable process loop to run next. Use when the operator asks for bottlenecks, open-work constraints, fleet health, issue/backlog limits, or a durable ongoing process for keeping both visible.
In this repository150 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- .github/copilot-instructions.mdCopilot instructions
- llms-full.txtllms.txt
- llms.txtllms.txt
- agent-readinessSkill
- appeal-scoreSkill
- ci-repairSkill
- claim-repro-scoreSkill
- clear-out-wipSkill
- commit-cleanSkill
- conflation-scoreSkill
- cross-validateSkill
- curate-clusterSkill
- debt-cleanSkill
- debt-orchestratorSkill
- disambiguation-scoreSkill
- dojo-rsi-scoreSkill
- dos-dispatch-loopSkill
- dos-dispatchSkill
- dos-next-upSkill
- dos-replanSkill
- dos-witness-claimSkill
- field-borrowSkill
- fleet-waveSkill
- git-subagent-syncSkill
- goalSkill
- guard-rsi-scoreSkill
- harness-creatorSkill
- harness-gardenSkill
- industry-scoreSkill
- issue-orchestratorSkill
- issue-queueSkill
- issue-triageSkill
- lightgap-scoreSkill
- memory-compactSkill
- milestone-scoreSkill
- modularizeSkill
- negframe-scoreSkill
- opencode-waveSkill
- operator-heaviness-scoreSkill
- persona-scoreSkill
- phased-planSkill
- plan-auditSkill
- quality-scoreSkill
- question-loopSkill
- refresh-cachedoc-numbersSkill
- refresh-readmeSkill
- releaseSkill
- resume-watchdog-auditSkill
- run-it-all-nightSkill
- score-2xSkill
- scorecardSkill
- scout-loopSkill
- signal-firstSkill
- skill-lifecycleSkill
- skill-overlapSkill
- skill-scoreSkill
- slop-scoreSkill
- sota-checkSkill
- The first 60 shown.
The file
Show its rules and text
We split this skill into the rules it gives an agent
20 rules. About 0 are common, 10 are distinctive, and 10 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈10
Distinctive · estimate
This author's own choices. Worth a look.
10
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 24
Read .claude/project.yaml from the repo root.
- Very specific: line 31
If either helper is absent, print one line naming the missing key and stop.
- Very specific: line 36
If the tools lane is safe to mutate, run the cheap registry-only CLI pass:
- Very specific: line 71
Use --audit only when the question is specifically about token/cache waste or top spenders.
- Very specific: line 93
Run the same read-only issue pass /issue-triage uses:
- Distinctive: line 100
Read the markdown report and actions manifest.
- Very specific: line 121
Keep two outputs: stop/continue dispatch now and what durable loop should improve next.
- Distinctive: line 124
Use this table. The first true row wins.
- Distinctive: line 136
Never say "work on everything." Pick one limiter and one next loop.
- Distinctive: line 140
When the operator asks for a map, writes should be a tracked dated note under:
- Distinctive: line 155
Keep the note short enough to read in one screen.
- Very specific: line 166
Only make that tools/control_pane.loops.json edit when the tools lane is safe to edit.
- Very specific: line 179
Do not run gh issue edit, gh issue close, gh issue comment, or gh issue assign from this skill.
- Very specific: line 181
Do not run the fleet_bottleneck.py CLI while another worker holds the tools lane.
- Distinctive: line 183
Do not treat a stale/missing fleet registry as healthy.
- Very specific: line 185
Do not treat orphan as "unimportant." P0/P1 orphan work is the top backlog coordination cost.
- Distinctive: line 187
Do not recommend more workers while account throttling, auth, or recovery bottlenecks score CRITICAL.
- Distinctive: line 189
Do not publish account directory names, session IDs, auth details, reset timestamps, private host paths, or token/cost details in a tracked …
- Distinctive: line 192
Do not paste full issue reports or bottleneck JSON into chat.
- Distinctive: line 197
Run at the start of a dispatch window, after a large issue-filing burst, after any fleet stall, and before marking the operating process …
≈ “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
/bottleneck-map - system + backlog limiter map
Wraps
tools/fleet_bottleneck.pyandtools/issue_triage.py. The point is one operator answer: what is the actual limiter right now, what issue work is blocked behind it, and which durable loop should run next?
This skill is a read-mostly coordination pass. It may write local evidence
artifacts and a dated note, but it must never mutate GitHub state. Labeling,
closing, assigning, or commenting on issues stays in /issue-triage and still
requires operator approval.
Project Contract
Read .claude/project.yaml from the repo root. Required keys:
python- interpreter path, defaultpython.helpers.fleet_bottleneck- fleet/system bottleneck helper.helpers.issue_triage- open-issue triage helper.audits_dir- ignored operator snapshots, defaultdocs/_audits/.
If either helper is absent, print one line naming the missing key and stop. Do
not reconstruct these scans by hand from ad hoc gh issue list pages.
Step 1 - Refresh System Bottlenecks
If the tools lane is safe to mutate, run the cheap registry-only CLI pass:
<p> <h.fleet_bottleneck> report --no-audit
<p> <h.fleet_bottleneck> json --no-audit --out tools/_registry/bottleneck-map-latest.jsonThe CLI refreshes tools/_registry/BOTTLENECKS.txt, bottlenecks.json, and
fleet_bottleneck.prom as a side effect. If tools is held by another worker,
do not run the CLI. Use a read-only import of collect() + rank_bottlenecks()
instead and write only the human note under docs/notes/:
PowerShell form:
@'
import importlib.util, json
from pathlib import Path
p = Path("tools/fleet_bottleneck.py")
spec = importlib.util.spec_from_file_location("fleet_bottleneck", p)
m = importlib.util.module_from_spec(spec)
spec.loader.exec_module(m)
snap = m.collect(audit=False)
ranked = m.rank_bottlenecks(snap)
r = snap.get("registry") or {}
print(json.dumps({
"generated_utc": snap.get("generated_utc"),
"health": ranked.get("health"),
"headline": ranked.get("headline"),
"counts": r.get("counts"),
"top_bottlenecks": ranked.get("bottlenecks", [])[:8],
}, indent=2, default=str))
'@ | python -Use --audit only when the question is specifically about token/cache waste or
top spenders; it reads transcripts and is slower:
<p> <h.fleet_bottleneck> reportExtract only the load-bearing fields:
healthand registry age.- headline bottleneck.
- top 3-6 ranked bottlenecks with score/severity/symptom/fix.
- active slot counts:
active,workers_on_throttled,rate_limited,auth_blocked,auto_resume,hanging. - classification: evidence scope, horizon, and weight.
Interpretation rule: if any system bottleneck is CRITICAL, do not recommend launching more workers as the first move. Name the recovery/account fix first, but do not confuse a transient gate with the most important durable problem.
Step 2 - Refresh Issue/Open-Work Bottlenecks
Run the same read-only issue pass /issue-triage uses:
<p> <h.issue_triage> --markdown --out <audits_dir>/issue-triage-<YYYY-MM-DD>.md
<p> <h.issue_triage> --actions --out <audits_dir>/issue-actions-<YYYY-MM-DD>.jsonRead the markdown report and actions manifest. Extract:
- open issue count and missing-label counts.
- orphan P0/P1 count.
- mechanical action count vs review-only count.
- top P0 rows and the top P1 rows if they explain the bottleneck.
Interpretation rule: if mechanical actions are zero and review-only actions are large, the backlog bottleneck is judgment/ownership, not stale cleanup. Do not invent automatic closes.
Step 3 - Decide The Next Loop
First classify each bottleneck:
| Field | Values | Rule |
| Evidence scope | public, operator-private | Public evidence is GitHub issue numbers/titles/labels, public docs, and commit refs. Operator-private evidence is account names/dirs, auth state, session IDs, transcript details, reset times, private host paths, and token/cost details. Tracked public notes should aggregate or redact private evidence. |
| Horizon | transient, semi-durable, structural | Rate limits, auth failures, temporary API errors, and at-cap pressure are transient unless repeated across passes. Watchdog absence, auto-resume backlog, stale telemetry, and surfacing backlog are semi-durable operating-loop problems. Missing labels, orphan P0/P1, broken routing, and missing ownership are structural open-work problems. |
| Weight | dispatch-gating, process-debt, strategic | Transient CRITICAL/HIGH rows gate dispatch now but should be rechecked before becoming strategy. Semi-durable rows become process debt if still present next pass. Structural rows carry strategic weight because they do not clear with time. |
Keep two outputs: stop/continue dispatch now and what durable loop should
improve next. They are allowed to differ.
Use this table. The first true row wins.
| Evidence | Bottleneck | Next durable loop |
| fleet health CRITICAL/HIGH from transient account pressure | system capacity gate | pause/cap dispatch; recheck after reset/relogin before treating it as strategic debt |
| fleet health CRITICAL/HIGH from recovery/telemetry rows | semi-durable recovery debt | fix watchdog/auto-resume/surfacing; keep broad dispatch capped |
| issue mechanical actions > 0 | stale/dormant gardening | ask operator to approve /issue-triage mechanical batch |
| orphan P0/P1 > 0 | ownership/claiming | claim/defer the top rows; then dispatch one issue per worker |
| needs-priority/area dominates | taxonomy debt | run focused /issue-triage --scope priority or --scope area |
| system green and top issues routed | execution | run issue-dispatch / DOS dispatch with witness gates |
| repeated same blocker over passes | process debt | file or update a small process issue naming the missing guard |
Never say "work on everything." Pick one limiter and one next loop.
Step 4 - Record A Dated Note When Asked
When the operator asks for a map, writes should be a tracked dated note under:
docs/notes/BOTTLENECK-MAP-YYYY-MM-DD.mdUse this shape:
- Evidence gathered: exact commands, UTC timestamp, output files.
- System bottleneck map: ranked table from
fleet_bottleneck. - GitHub/open-work map: triage counts, top P0/P1 rows, action-manifest shape.
- Scope/horizon/weight map: public vs operator-private, transient vs structural.
- Durable loops: which skill/process runs daily, weekly, and before dispatch.
- Next-pass done condition: concrete numbers that should fall.
Keep the note short enough to read in one screen. Link the ignored audit files instead of pasting large JSON.
Step 5 - Hand Off To Standing Loops
The permanent process home is the fleet control pane:
python tools/fleet_control_pane.py loop-add bottleneck-map --scope repo --status-cmd "<status command>" --applyOnly make that tools/control_pane.loops.json edit when the tools lane is safe
to edit. Until then, write the pending hook into the dated note and keep this
skill as the manual front door.
The standing loop should be read-only and should report ACTION, not mutate:
- ACTION if fleet health is CRITICAL/HIGH.
- ACTION if orphan P0/P1 is nonzero.
- ACTION if needs-priority or needs-area regresses above the last baseline.
- PASS if the counts are flat/improved and system health is below HIGH.
Hard Rules
- Do not run
gh issue edit,gh issue close,gh issue comment, orgh issue assignfrom this skill. - Do not run the
fleet_bottleneck.pyCLI while another worker holds thetoolslane; importcollect()/rank_bottlenecks()read-only instead. - Do not treat a stale/missing fleet registry as healthy. Say "flying blind" and fix telemetry first.
- Do not treat
orphanas "unimportant." P0/P1 orphan work is the top backlog coordination cost. - Do not recommend more workers while account throttling, auth, or recovery bottlenecks score CRITICAL.
- Do not publish account directory names, session IDs, auth details, reset timestamps, private host paths, or token/cost details in a tracked public note; aggregate them unless the operator explicitly asks for private output.
- Do not paste full issue reports or bottleneck JSON into chat; summarize the top evidence and point at the generated files.
Cadence
Run at the start of a dispatch window, after a large issue-filing burst, after
any fleet stall, and before marking the operating process healthy. On a loop
cadence, this skill is the front door; it routes into /issue-triage,
issue-dispatch, or recovery/account maintenance.
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.

