pair
Skill37 starsChanged 47 days agoMITView on GitHub
Run one task (issue number or free text) in an isolated git worktree via a manager subagent that owns its implementer and retries; you push and open the PR at the end. Use for "implement issue N", "pair on this", or one task on any repo, forks included.
- Deletes or force-pushes
- Commits and pushes
10 other projects use a version of this.
Adopted by
Most recently taken up by
- Surething-io/cockpittheir own version, first seen Nov 8, 2026
- aadishv/skillstheir own version, first seen Nov 1, 2026
- vnord/skillstheir own version, first seen Nov 1, 2026
- nschurmann/hola-aitheir own version, first seen Oct 25, 2026
- KodingDev/skillstheir own version, first seen Oct 2, 2026
- mae616/ai-templatetheir own version, first seen Aug 22, 2026
Other versions10 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 10
- sterlingcrispin/claude_slash_commands★ 200same name
- nschurmann/hola-ai★ 101same name
- Surething-io/cockpit★ 44same name
- maxwellsdm1867/wheeler★ 12same name
- mae616/ai-template★ 9same name
- KodingDev/skills★ 2same name
- aadishv/skills★ 1same name
- Ian-Louw/potion★ 1same name
- vnord/skills★ 1same name
- jankocian/cc-voice-control★ 0same 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.
In this repository23 other files it gives its agents.
- dotfiles/CLAUDE.mdCLAUDE.md
- find-me-a-skillSkill
- gap-scanSkill
- grill-docsSkill
- grillingSkill
- grill-meSkill
- handoff-autoSkill
- handoffSkill
- lanesSkill
- meta-orchestratorSkill
- ponytailSkill
- progress-reportSkill
- pr-watchSkill
- remindSkill
- repo-scrubSkill
- repo-showcaseSkill
- score-loopSkill
- session-bridgeSkill
- sitrepSkill
- spend-gateSkill
- switchSkill
- teammate-briefSkill
- wayfinderSkill
The file
We split this skill into the rules it gives an agent
4 rules. 0 are common, 1 is distinctive, and 3 are very specific to this project.
0
Common
Most of the 7 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 57
Leave the worktree alone while it runs.
- Very specific: line 65
Before any push: git -C <worktree> diff --name-only <default>...HEAD lists no skilleddocs/HANDOFF.md, nothing in the handoff folder …
- Very specific: line 82
Hard check: STOP while a dep link (dangling included) is left or git -C "<wt>" status --porcelain --ignored --untracked-files=all -- <doc …
- Very specific: line 84
STOP → leave the worktree and report what is left.
“Common” is measured: kept by at least 6 in 10 of the 7 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
You run one task through a manager subagent. Neither you nor the agents implement in your context; you are the only one who touches the remote.
Flags: --no-worktree (new branch in the current checkout), --push (push + PR without asking), --model (implementer model; default: by size, the manager agent's step 3).
1. Resolve
- Target repo per the
nextskill'sBOARD.md, Target repo section (path in §2):-R <o/r>on everyghcall. Number →gh issue view <n> -R <o/r>(on a fork, the parent's issue is fine to read). Text → write a 3–6 item acceptance checklist. - Repo facts: default branch, branch prefix (user's
CLAUDE.md, elsefeat), test command,CONTRIBUTING.md/AGENTS.md. - Fork (
upstreamremote): reading is fine, sogit fetch upstream, fast-forward default toupstream/<default>, then confirm every file or symbol the issue names still exists. Put anything missing in the brief.
2. Isolate
origin a relative path (git remote get-url origin has no scheme://, host:, leading / or drive letter, e.g. ../origin.git): git resolves it from each worktree's own root, so fetch and push fail inside a worktree. Make it absolute first, from the main checkout: Git Bash or mac/linux git -C "<main>" remote set-url origin "$(cd "<main>" && cd "<url>" && pwd)"; PowerShell git -C "<main>" remote set-url origin (Resolve-Path (Join-Path "<main>" "<url>")).Path. Same target, and remotes are shared by every worktree, so this one change covers them all; tell the user the old and new URL.
slug = issue-<n>-<kebab-title> (or ≤6 kebab words of the task)
git worktree add ../_worktrees/<repo>-<slug> -b <prefix>/<slug> <default>This is the one branch rule; a planner brief's Branch follows it, and when a brief names one, use it verbatim (<slug> = its part after <prefix>/).
--no-worktree: git switch -c <prefix>/<slug> <default>. Existing worktree or branch → reuse it and say so.
Deps (node_modules, .venv): link each from the main checkout, paths quoted (shown for .venv). Windows: link only when both paths are absolute; an empty one puts the junction at the drive root (C:\.venv).
- Windows, Git Bash (
cygpathbuilds the paths; withoutMSYS_NO_PATHCONVMSYS rewrites/Jinto a path):w=$(cygpath -wa "<wt>"); m=$(cygpath -wa "<main>") if [[ $w == [A-Za-z]:'\'?* && $m == [A-Za-z]:'\'?* ]]; then MSYS_NO_PATHCONV=1 cmd /c mklink /J "$w\.venv" "$m\.venv"; else echo "STOP: path not absolute: '$w' '$m'"; fi - Windows, PowerShell:
if ("<wt>" -match '^[A-Za-z]:\\.' -and "<main>" -match '^[A-Za-z]:\\.') { cmd /c mklink /J "<wt>\.venv" "<main>\.venv" } else { "STOP: path not absolute" }. - mac/linux:
ln -s "<main>/.venv" "<wt>/.venv".
Issue number on a board, worktree/branch not reused → (fork: only after the target-repo answer) move it to In Progress and comment "Started on branch <branch>" (the next skill's BOARD.md: ~/.claude/skills/next/ or, as the plugin, kanban/next/). Board errors never block the task.
3. Delegate
One blocking call, subagent_type="manager" (or "krish:manager" when installed as the plugin; never fork: it ignores the model and can't nest):
working directory: <absolute worktree path>
task: <#n: title> + acceptance checklist
key files (verified): … missing/moved: …
rules: prefix=<p>, protected=<default>, test cmd=<cmd>, commit style=<…>, read <AGENTS.md>
implementer model: <--model or "by size">
decisions: <ask | assume>; first A-id: A-<k> (next after the highest A-<number> in main's register)
register header: <main's register header row, verbatim; none → the default in TEARDOWN.md, Register rows>; each A-n is one row in that format
max_rounds: 3
never push, merge, or open a PR.Leave the worktree alone while it runs.
4. On return
- INTERIM report, or one missing the Branch, Tests or Rounds section (a placeholder, a one-liner) → not a result. INTERIM: wait for the next handback. Otherwise ask the manager once (SendMessage) for its full report; still missing → rerun from §3 with a fresh manager.
- Show the report verbatim.
- Thin report or risky change → rerun the tests yourself. One-line fixes: commit them.
- Unfinished (
skilleddocs/HANDOFF.md, or the SHA that last held it) → say what's left; offer another round from it. - Before any push:
git -C <worktree> diff --name-only <default>...HEADlists noskilleddocs/HANDOFF.md, nothing in the handoff folder (AGENTS.md/CLAUDE.md's, elseskilleddocs/handoffs/) in commit mode, and nothing underskilleddocs/or that folder when untracked (TRACKING.md). A hit → remove it in a commit. --pushor the user says go:git -C <worktree> push -u origin <branch> gh pr create -R <o/r> --head <origin-owner>:<branch> --title "<title>" --body "<summary>\n\nCloses #<n>"<o/r>= the PR's base: on a fork, ask fork or parent first; the parent only on an explicit yes naming it. Never merge.- Review comments later → step 3 again, comments as the task, same worktree.
5. Print and teardown
Print: branch, worktree, PR URL or "not pushed", test result, rounds, HANDOFF.md path if any.
Teardown only after the PR merges, with the exact commands in TEARDOWN.md (Git Bash and PowerShell). git worktree remove deletes git-excluded files silently, and it and any recursive delete (rm -rf, Remove-Item -Recurse) follow a link and empty the main checkout's copy: never run them while a link exists.
- Records: every untracked or ignored file under the worktree's
skilleddocs/and the doc foldersAGENTS.md/CLAUDE.mdnames (dated handoffs,HANDOFF.md, the decisions register, anything else) goes to the same subpath in the main checkout: new files moved without overwriting;HANDOFF.mdrenamed to a dated handoff in main's handoff folder (never overwriting) so the next teardown doesn't clash on it; the register merged by appending the rows whose ids main lacks. The worktree's register is deleted only when every line was carried over or is already in main (trailing\rignored); a heading, prose, a wrong cell count or a clashing row keeps it and printsSTOPwith those lines. A same-named file stays put and is reported. - Unlink each dep (removes the link only).
- Hard check: STOP while a dep link (dangling included) is left or
git -C "<wt>" status --porcelain --ignored --untracked-files=all -- <doc folders>lists anything; only thengit worktree remove.
STOP → leave the worktree and report what is left. git worktree remove refuses → stop and report git -C "<wt>" status --short; never --force.
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.

