jam
Skill0 starsChanged 4 months agoApache-2.0View on GitHub
Fully autonomous improvement session that finds its own worklist and ships it — three parallel read-only Opus scouts study the repo from its end users' perspective (new non-breaking features, quick fixes, UI/UX polish), a selector distills their candidates into a 3-5 job docket sized to one session, fresh implementers build each job with per-job Opus review at the conductor's discretion, and the whole branch is sealed by a two-reviewer final gate (pinned Opus beside the session's best model) plus an evidence-based QC. Announces the docket rather than gating on it, runs on a fresh jam/ branch, commits as it goes, pushes only on request, never merges.
2 other projects use a version of this.
Adopted by
Most recently taken up by
- jamdotdev/jam-plugintheir own version, first seen Nov 1, 2026
- jamdotdev/skillstheir own version, first seen Nov 1, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- jamdotdev/jam-plugin★ 11same name
- jamdotdev/skills★ 11same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
We split this skill into the rules it gives an agent
10 rules. About 0 are common, 4 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
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 9
No brief, no plan, no named target — the user hands you the keys for one session.
- Distinctive: line 35
Sit in the user's seat: Every scout hunts for what this project's actual users — CLI users, library consumers, site visitors, plugin …
- Distinctive: line 56
One writer at a time; everyone who writes commits: Never two implementers, never a fixer beside an implementer.
- Very specific: line 84
Use Jam when the user wants the project improved but names no particular change: the mandate is a session of your judgment, not a task.
- Very specific: line 127
If resuming: read TodoWrite and git log --oneline first.
- Very specific: line 131
If BASE is genuinely lost, recompute it — jam's branch is always cut fresh, so git merge-base HEAD <the branch it was cut from> is the …
- Very specific: line 147
Create a TodoWrite list: Scouts, Docket, Finale: review pair (BASE: <sha>), Finale: QC (strikes 0/2), Backlog, Report.
- Very specific: line 168
Brief in the backlog: If docs/repertoire/jam-backlog.md exists in the target project, read it (bookkeeping) and paste each lens's entries …
- Distinctive: line 203
Sanity-check scope only: If a docket job violates the non-breaking rule or plainly cannot fit the session, strike it — striking is your …
- Very specific: line 293
Supersede in place, cap at twelve: Remove entries that shipped this session, that a scout's Stale backlog line retired, or that the …
≈ “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
Jam
No brief, no plan, no named target — the user hands you the keys for one session. You find what is worth doing, decide what fits, build it, and prove it shipped clean. Three scouts listen to the codebase from the user's seat, a selector writes the set list, and you conduct it to a sealed branch without stopping to ask.
Why work this way. A session with no user at the wheel has to replace the user's judgment with structure. Discovery is three diverse lenses instead of one perspective's blind spots; a selector — not the scouts' enthusiasm, and not yours — decides what fits the clock; review is discretionary per job but the final gate runs at full strength; and the verdict is evidence — a build and a test run — never a nod. The docket is announced, not gated: the user reads what you chose while you build it, and vetoes by interrupting, not by being asked.
Core principles
- You conduct; you never play. Jam is not Presto: you do not read source
files or diffs, write code, or apply fixes — every change happens inside a
subagent, and what returns to you is a compact report. The bookkeeping
carve-out is the same as Maestro's: reading subagent reports and running
read-only git metadata commands (
merge-base,rev-parse,log --oneline,status) is conducting; reading code is playing. The backlog record (docs/repertoire/jam-backlog.md) is bookkeeping on both ends — reading it to brief the scouts, writing it in Phase 5 — because it is composed from reports, never from code. - Sit in the user's seat. Every scout hunts for what this project's actual users — CLI users, library consumers, site visitors, plugin installers — would notice and thank you for. The maintainer's backlog is not the assignment.
- The docket is a bet, sized to the session. Three to five jobs, each non-breaking and small enough that the whole set finishes here. The selector composes it; you may strike a job that violates scope, but you do not add one.
- Announce, don't ask. The run is fully automated by design. The only stops are the cost gate (auto-invoke only), Phase 0 blockers only the user can resolve (a dirty tree, an undiscoverable test command), and the QC two-strike escalation. Everything else — the docket, review decisions, dropped jobs — is announced in passing and proceeds.
- Review is discretionary per job, never at the end. You choose whether each job gets its own reviewer, guided by the selector's flag. The finale — two whole-branch reviewers plus QC — is never skipped, never thinned, and never waved through because the per-job reviews came back clean.
- Prefer shrinking the docket to stalling the run. A job that blocks twice is dropped and reported, not fought. An unattended run that stalls on one stubborn job delivers nothing; a four-job branch that ships is a success with a footnote.
- One writer at a time; everyone who writes commits. Never two implementers, never a fixer beside an implementer. Commits are the unit of progress and the same-session resume trail.
- The road not taken is kept, not lost. A run that shipped ends by
writing
docs/repertoire/jam-backlog.mdin the target project: the selector's scored rejects plus any dropped or amputated jobs, sorted by lens, one line each with a priority score — capped at twelve and superseded in place, never a changelog. The next session's scouts read their lens's entries and re-verify each against current code before it may compete as a candidate again. - No cross-model seat, by design. Jam seats no Codex agent — a variance it shares only with Presto, for its own reason: an unattended session cannot babysit a cross-model call that hangs, and a hung seat here stalls the whole run with nobody watching. The diversity Codex buys elsewhere is bought cross-tier instead: the finale pairs a reviewer pinned to Opus with a second reviewer on the session model.
<!-- canonical: shared/invariants.md — keep this bullet in sync -->- Play it on your best. The build seats — implementers, fixers, the QC
gate, and the finale's second reviewer — run unpinned and inherit your
session model; the three scouts, the selector, the per-job reviewers, and
the finale's first reviewer stay pinned to Opus — the judgment seats,
because in an unattended run they stand in for the user's judgment. Every
seat runs at xhigh effort. Run this skill on the most capable model you
have —
/model bestresolves to Fable 5 where you have access, otherwise Opus — never on Sonnet.
When to use
Use Jam when the user wants the project improved but names no particular
change: the mandate is a session of your judgment, not a task. If the user
names the one change, that is /repertoire:presto; a written plan is
/repertoire:maestro; one named target with user-picked lenses is
/repertoire:encore; ideas without code is /repertoire:eureka; a bug is
/repertoire:tuner.
Jam auto-invokes on matching requests. Cost gate: if the user did not
name Jam or run /jam, confirm before the scouts dispatch — one
AskUserQuestion stating that this is an unattended session on a fresh jam/
branch, that it will pick and build its own 3-5 jobs, and the rough seat
count (ten to nineteen subagents). A user who named Jam has already
consented. The Phase 0 blockers — a dirty tree, an undiscoverable test
command — are resolved before this gate, so once it clears (or was never
needed) the run proceeds to its report with no further question except the
QC escalation.
The pipeline
At a glance — the phase prose below is authoritative; the review-decision rule, the drop rule, the amputation rule, and the strike budget live there, not here.
- Warm-up — dirty-tree check, BUILD/TEST, cost gate if Jam wasn't named,
then cut
jam/<date>branch, capture BASE, TodoWrite. - Scouting — 3 read-only Opus scouts in parallel, one lens each: features · fixes · polish. Candidates from the user's perspective; each scout re-verifies its lens's backlog carry-overs.
- The docket — one Opus selector merges, scores, and sizes: 3-5 jobs with review flags and build order, plus backlog scores on the rejects. Announce it and go.
- Build loop — per job: fresh implementer → per-job Opus review at your discretion → fixer when findings. Blocked twice → drop and move on.
- Finale — two whole-branch reviewers in parallel (pinned Opus + session model) → sequential fixers → QC (build + tests): SHIPPABLE → Phase 5; NOT_SHIPPABLE → route blockers, retry; second strike → stop + AskUserQuestion.
- The backlog — create or update
docs/repertoire/jam-backlog.mdfrom the selector's scored rejects and any dropped jobs, capped and superseded in place; commit it, then report (push only on request, never merge).
Phase 0 — Warm-up
- If resuming: read TodoWrite and
git log --onelinefirst. There is no state file — the todos carry what commits cannot: each job's full docket block with its review flag,BASEand the carried findings in the finale todo, and the QC strike count. Resume at the first todo not marked done. IfBASEis genuinely lost, recompute it — jam's branch is always cut fresh, sogit merge-base HEAD <the branch it was cut from>is the branch point; ask the user only if even that is ambiguous. - Check the tree. Uncommitted changes are the user's work — if
git statusis dirty, stop and ask before anything else. This is a Phase 0 blocker, not a mid-run question. - Determine
BUILDandTESTfrom the README or package manifest. If you cannot find them, ask now — never mid-run, and never let QC run on a guess. If the project genuinely has none, recordnone (user-confirmed)and pass that token whereverBUILDorTESTis handed to an agent. - Cost gate — if the user did not name Jam, the one AskUserQuestion described above. Nothing has been spent and no branch exists yet; that is the point of asking here.
- Cut the branch:
jam/<YYYY-MM-DD>from the current HEAD (suffix-2on collision). Never build on main or master. CaptureBASE=git rev-parse HEAD; every whole-branch review isBASE..HEAD. - Create a TodoWrite list:
Scouts,Docket,Finale: review pair (BASE: <sha>),Finale: QC (strikes 0/2),Backlog,Report. Job items are inserted after Phase 2, when they exist.BASElives in the finale todo's text as the cheap copy; because the branch is always cut fresh, a resume that lost the todo can still recover it from the merge-base with the branch it was cut from.
Phase 1 — Scouting
- Dispatch three scouts in parallel (
scout-prompt.md, Opus, read-only), one lens each:- features — new capabilities this project's users would ask for next: non-breaking, no schema or dependency or public-interface upheaval, each buildable in a fraction of one session.
- fixes — quick fixes users are silently paying for: real defects, papercuts, misleading error messages, stale docs and broken examples — each verified against the code, not assumed.
- polish — the surfaces users actually touch: UI and UX, CLI output, onboarding and docs readability, naming, formatting, accessibility. Where an installed skill covers a surface (design, animation, performance), the scout names it as leverage in the candidate.
- Brief in the backlog. If
docs/repertoire/jam-backlog.mdexists in the target project, read it (bookkeeping) and paste each lens's entries verbatim into that scout's brief. Scouts re-verify every carried entry against current code before it may return as a candidate; entries found stale, shipped, or no longer anchored come back on aStale backlogline so Phase 5 prunes them. Carried entries count toward the six-candidate cap and compete on merit, never on seniority. - Scouts read only — no edits, no builds, no tests. Parallel dispatch is safe precisely because nobody writes.
- Each returns at most six candidates — title, user-visible benefit,
file:lineevidence, size (S/M), risk, and a breaking? flag that must beno— plus the local patterns and constraints an implementer of its candidates must respect, naming an installed skill as leverage where one applies. Breaking ideas are listed out-of-scope for the report, never as candidates. - One thin lens does not stall the run. A scout returning
NONEorBLOCKEDis noted for the report and the other lenses proceed. If all three return nothing real, report that honestly and end — an empty docket on a polished repo is a finding, not a failure.
Phase 2 — The docket
- Dispatch one selector (
selector-prompt.md, Opus) with all three scout reports pasted verbatim. It merges duplicates, scores user value against effort and risk, rejects anything breaking or oversized or speculative, and returns the docket: 3-5 jobs in build order, each with a brief, acceptance, anchors, the patterns and skill leverage carried from the scouts, size, and a review flag —review: requiredfor anything touching behavior, logic, public surface, security, or data handling;review: optionalonly for pure docs, copy, or cosmetic changes. Plus the notable rejects, each with its one-line reason and a backlog score — 1-5 for how much a future session should want it, ornofor entries that must not be carried (dead anchors, merged duplicates, breaking or L-sized work that can never enter a jam docket). - Sanity-check scope only. If a docket job violates the non-breaking rule or plainly cannot fit the session, strike it — striking is your call, adding is not. Fewer than three survivors is acceptable when the candidates were thin; say so rather than padding with rejects.
- Announce the docket — the jobs in order, one line each with size and review flag, and the top rejects with reasons. Do not wait for a reply. Insert one TodoWrite item per job carrying its full docket block verbatim — brief, acceptance, anchors, patterns, size, review flag. The todos are the docket's only durable copy: implementer briefs, finale briefs, and QC all quote from it, and a resumed run has nowhere else to read it.
Phase 3 — Build loop
For each docket job, in order, one at a time:
- Implementer — dispatch a fresh subagent (
implementer-prompt.md, unpinned) with the job's brief, acceptance, anchors, and patterns pasted in, plus the branch andTEST. Note the currentHEADfirst; after it returns, the job's range is<noted-HEAD>..HEAD. - The review decision — dispatch one Opus reviewer
(
reviewer-prompt.md, job mode, the job's range) when any of these holds: the flag saysrequired; the implementer returned DONE_WITH_CONCERNS; or its report strayed past the brief. Skip the reviewer only when the flag saysoptionaland the report is a clean DONE — the finale still reads that code. You may also batch: two adjacent jobs sharing a surface may take one reviewer over their combined range after both land. Batching is a scheduling choice; skipping arequiredreview is not available — and if the second job of an intended batch is dropped, review the first alone right away: a deferredrequiredreview never dissolves with its batchmate. - Fixer — only when the review found something (
fixer-prompt.md, the findings, one pass). A clean PASS skips straight on. Unfixed or disputed findings are appended to the finale todo's text the moment they exist — the todos are the only state that survives an interrupt — and carried into the finale briefs, never dropped. - The drop rule. NEEDS_CONTEXT or BLOCKED → re-dispatch once with the
missing context supplied; a second failure drops the job: mark its todo
dropped: <reason>, announce it in one line, and move on. If partial commits landed before the block, dispatch a fixer to revert them — the same clean-revert duty as a Phase 4 amputation — so a dropped job leaves no trace on the branch. Never re-dispatch unchanged, and never let one job eat the session. - Mark the job's todo done and move to the next.
Phase 4 — Finale
- The review pair, in parallel, over
BASE..HEAD(reviewer-prompt.md, finale mode) — both briefed with the docket, the carried-forward findings, and any dropped-job reverts to double-check:- one reviewer pinned to Opus, lens integrated correctness & cohesion — do the jobs compose into one sound branch;
- one reviewer unpinned on the session model, lens user impact & regression risk — did this session actually make things better for this project's users, and does anything regress. Neither seat is skippable, and clean per-job reviews do not thin this gate.
- Consolidate from finding text only — match by
file:lineand description, drop duplicates. Route to fixer(s), sequentially, each committing. If two findings cannot be merged from their text, keep both. - QC gate (
qc-prompt.md, unpinned) withBASE..HEAD,BUILD,TEST, and the docket annotated per job — shipped, dropped, or amputated — with each job's acceptance. It builds, tests, and verifies each shipped job's acceptance is satisfied by the code, returningSHIPPABLEorNOT_SHIPPABLEwith typed blockers. - NOT_SHIPPABLE → route each blocker:
[defect]to a fixer;[implementation]back to that job's implementer — or, when a job cannot be made shippable, amputate: a fixer reverts that job's commits cleanly, the todo flips todropped: not shippable, and the docket shrinks. The branch ships what is sound. Then re-run QC in retry mode with the prior blockers and the fix SHAs since. - Two strikes, then the user. A round is one QC dispatch returning
NOT_SHIPPABLE; updateFinale: QC (strikes N/2)as each accrues. On the second, stop and escalate with AskUserQuestion — offer at least: keep iterating, amputate to what is sound and ship that, or hand the failing work to/repertoire:maestro(or/repertoire:tunerif what is failing is a bug). Escalate whether the run is interactive or autonomous; this is one of the two questions the automation never skips.
Phase 5 — The backlog
- Create or update
docs/repertoire/jam-backlog.mdin the target project — the conductor's own pen, bookkeeping, composed entirely from the selector's report and the settled docket, never from code. Three sections by lens (features · fixes · polish); one line per entry:[P<score>] Title — benefit · evidence · rejected <date> | dropped <date> (<reason>). The selector's backlog scores carry over verbatim; dropped and amputated jobs enter at P4 with their drop reason — they earned a docket slot once, and the friction that killed them is on the line for the next session to weigh. - Supersede in place, cap at twelve. Remove entries that shipped this
session, that a scout's
Stale backlogline retired, or that the selector scoredno; a re-carried entry updates its row rather than adding one. Over the cap, the lowest scores go. Stamp the doc with the date andgit rev-parse --short HEAD. It states what is still worth doing — never the history of how it got there. - Commit the doc on the branch, then report. An EMPTY-docket run still writes the selector's scored rejects before its report, and an escalated run that ships after amputation writes on its way out; only a run the user abandons at the escalation, or one where all three scouts returned nothing, writes nothing.
The report
- The docket, settled — per job: shipped (with commit SHAs), dropped (with reason), or amputated. One table, no prose padding.
- What the scouts saw — candidates per lens, the top rejects with the selector's reasons, and the breaking-but-interesting ideas the scouts ruled out of scope; the user should see the road not taken.
- Seats spent — scouts, selector, implementers, which jobs got per-job review and which skipped it (and why), fixers, the finale pair, QC rounds.
- QC evidence — the build result and test summary, real output lines.
- The backlog — what
docs/repertoire/jam-backlog.mdnow holds: entries written, superseded, and pruned this session. - The user's call — the merge is never yours; push only if asked, and say what is on the branch either way.
The ensemble budget
Ten seats on the leanest real path — three scouts, the selector, three implementers, the finale pair, and QC. A full five-job docket with per-job reviews and a couple of fixers runs to about nineteen. QC retry rounds spend past that by design; the two-strike budget is what bounds them.
What the budget forbids is growing the ensemble by design: a second
scouting round, a fourth lens, a finale panel of three, a cross-model seat.
A session that wants those wanted /repertoire:encore or
/repertoire:maestro, and the honest move is to say so in the report.
Handling subagent status
Scout: FOUND with candidates → into the selector's brief verbatim.
NONE / BLOCKED → note for the report; the other lenses proceed.
Selector: DOCKET → announce and build. EMPTY → report honestly and
end the run; never invent jobs the scouts did not ground.
Implementer: DONE → the review decision. DONE_WITH_CONCERNS → a
reviewer, always, with the concerns pasted verbatim into its brief.
NEEDS_CONTEXT / BLOCKED → the drop rule (one enriched re-dispatch, then
drop).
Fixer: FIXED → proceed. PARTIALLY_FIXED / COULD_NOT_FIX → carry
the remainder into the finale briefs (from Phase 3) or the next QC round
(from Phase 4); never re-loop a fix pass.
Reviewer reports PASS / FAIL with severities; QC reports
SHIPPABLE / NOT_SHIPPABLE with typed blockers. Handle both as the phase
steps describe.
Red flags
- Reading source files or editing code yourself — Jam's conductor never plays; that carve-out is Presto's, not yours.
- Pausing the run to ask a question the pipeline answers — the docket is announced, not approved.
- Adding a job the selector did not pick, or padding a thin docket.
- A breaking change, schema migration, or dependency upheaval in the docket.
- Two writers on the branch at once, in any combination.
- Skipping a
requiredper-job review, or skipping either finale reviewer because the per-job reviews were clean. - Fighting a blocked job past the drop rule instead of shrinking the docket.
- Guessing
BUILDorTEST, or letting QC run on an invented command. - Building on main or master; pushing without being asked; merging ever.
- Looping QC past two strikes instead of escalating.
- Letting the backlog grow past its cap or become a changelog — it is superseded in place and states only what is still worth doing — or scheduling a carried entry no scout re-verified this session.
Bundled files
scout-prompt.md— read-only Opus discovery, parameterized by lens (features · fixes · polish), from the end user's perspective.selector-prompt.md— merge the scout reports into the 3-5 job docket with build order, review flags, and the rejects on the record.implementer-prompt.md— build one docket job in one pass and commit.reviewer-prompt.md— skeptical reviewer, two modes: job mode over one job's range, finale mode overBASE..HEADwith a named lens.fixer-prompt.md— repair findings (or revert an amputated job) and commit.qc-prompt.md— evidence-based shippability verdict over the whole branch, with retry mode.
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.

