Use when reviewing UI for accessibility — WCAG 2.2 AA, keyboard nav, focus, ARIA, contrast, screen-reader semantics — even on 'is this a11y-OK?' or 'mach das barrierefrei'.
日本語の概要は準備中です。原文の説明を表示しています。
Use when governing a worktree across its whole life — scope-lock declaration, merge-readiness status, scoped verification, and safe cleanup that refuses while unique unmerged commits exist.
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
Governance layer for worktrees that already exist (or are about to).
Creation mechanics — directory convention, ignore-safety, clean
baseline — live in using-git-worktrees
and are referenced, never restated here. This skill owns everything
after the spawn: what the worktree is allowed to touch, when it is
merge-ready, and when it may be removed.
Do NOT use when:
using-git-worktrees
(Iron Law: no worktree without verified ignore + clean baseline)git-workflowsubagent-orchestration
selects the mode; this skill governs the worktrees a chosen mode usesEVERY GOVERNED WORKTREE DECLARES ITS SCOPE. NO REMOVAL WHILE
UNIQUE UNMERGED COMMITS EXIST. INHERITED COMMITS ARE NEVER DROPPED.
Isolate when any holds; otherwise stay on the current branch
(per the Do-NOT list in using-git-worktrees):
Then create via using-git-worktrees
(or the host primitive — § Host-native mapping below), declare the
scope lock (§ 2), keep status honest (§ 3), and gate removal (§ 4).
At worktree start, write a .worktree-scope.md note at the worktree
root and keep it untracked via .git/info/exclude (shared exclude —
one line .worktree-scope.md, no commit needed):
## Scope lock
- branch: <branch-name>
- owns: <path or glob list — the ONLY paths this worktree edits>
- task: <one-line task statement>
- created: <ISO date>
The lock is the disjointness contract between parallel worktrees. A
diff that leaves the owned paths is scope creep — stop and surface,
per scope-control. Check mechanically:
git diff --name-only "$(git merge-base HEAD <base>)"..HEAD
# every path must match an `owns:` entry
A worktree is merge-ready only when ALL hold:
git status --porcelain is empty.owns: paths (command above).verify-before-complete);
record command + result tail in the status report. No fresh
evidence → not merge-ready, regardless of how the diff looks.git fetch origin --quiet then
git rev-list --left-right --count HEAD...origin/<base>. Behind →
flag; divergent (both sides non-zero on a pushed branch) → route to
git-workflow § Divergent-State Recovery.git-history-discipline,
shared-branch Iron Law).Removal is gated by the deterministic helper (edge-case-tested: detached HEAD, branch without remote, tag-only reachability, deleted remote branch, untracked files, paths with spaces):
npx tsx node_modules/@event4u/agent-config/src/scripts/worktree_cleanup_check.ts check <worktree-path>
Exit 0 → removal allowed; exit 1 → refuse, gates in order:
git status --porcelain non-empty, untracked
files included (never answer with --force).git-history-discipline).Then: remove, never delete — git worktree remove <path>, then
git worktree prune. Branch deletion is a separate, permission-gated
step (scope-control); never force-delete (-D) as part of cleanup.
Cross-worktree scope-lock overlaps are scanned via
worktree_cleanup_check scope-overlap (surfaced by /worktree status).
Whole-checkout sweeps. Worktrees accumulate one per branch and are never
removed on merge; git worktree prune only clears registrations whose
directory is already gone, so it does nothing for the live ones. Classify the
whole set in one pass rather than gate-checking by hand:
npx tsx node_modules/@event4u/agent-config/src/scripts/worktree_cleanup_check.ts inventory [repo] [--json|--plan]
safe requires all of: on a branch, merged into the trunk, clean, inside a
conventional worktree root (.claude/worktrees/ or .worktrees/), and no git
activity for 48 h. review keeps its disqualifying reason so the next sweep
starts from a shorter list; live means another session may hold it. A
worktree outside the conventional roots is never safe — sitting beside the
repo it can be mistaken for a sibling package, so its removal stays a
judgement call. It is also the placement that loses the persistent shell
cwd on a host with a working-directory boundary — see
using-git-worktrees § 2.
The mode reports only. --plan prints git worktree remove plus
git branch -d (never -D) for the safe set; running it is a bulk deletion
needing the user's explicit this-turn approval
(non-destructive-by-default), which a single earlier approval never covers.
| Host capability | Use |
|---|---|
Claude Code EnterWorktree / ExitWorktree | Enter/leave a governed worktree in-session; scope lock is written right after enter |
Claude Code subagent isolation: "worktree" | Dispatch a slice into its own auto-managed worktree; unchanged worktrees are auto-cleaned by the host — the unique-commit gate still applies to any it leaves behind |
| No worktree primitive (other hosts) | Degrade to plain git worktree add per using-git-worktrees § Procedure — same scope lock, same gates |
The mapping changes only who creates the directory. Scope lock, merge-ready checklist, and cleanup gates are host-independent.
git log <branch> --not --all is always empty — --all includes
the branch itself, so the naive check never fires. The
--exclude="refs/heads/<branch>" --all variant is also unreliable
when combined with --not (observed on git 2.39). Use the
for-each-ref expansion above — it enumerates every ref except the
branch explicitly..worktree-scope.md must be
in .git/info/exclude; .gitignore would be a tracked change
outside the scope lock.git fetch before the
rev-list --left-right count; a cached view reports merge-ready on
a diverged branch.owns: listgit worktree remove --force past a dirty treegit-history-discipline)owns: paths without surfacing it| Task | Skill / command |
|---|---|
| Creating the worktree (ignore-safety, baseline) | using-git-worktrees |
| Divergence recovery, safe squash, PR flow | git-workflow |
| Finishing the branch | finishing-a-development-branch |
| Day-to-day operations | /worktree create · status · verify · cleanup |
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Use when reviewing UI for accessibility — WCAG 2.2 AA, keyboard nav, focus, ARIA, contrast, screen-reader semantics — even on 'is this a11y-OK?' or 'mach das barrierefrei'.
日本語の概要は準備中です。原文の説明を表示しています。
Use when defining or auditing the activation event — aha-moment selection, retention correlation, falsifiable definition. Triggers on 'what is our aha moment', 'redefine activation'.
日本語の概要は準備中です。原文の説明を表示しています。
Use when capturing an architectural decision — file naming, next ADR number, Status / Context / Decision / Consequences, index regen; fires even without saying 'ADR'.
日本語の概要は準備中です。原文の説明を表示しています。
Adversarial critique — devil's advocate, stress-test, honest teardown ('poke holes', 'be brutal', 'was hältst du davon'); explicit request only. Routine code or design review → code-review.
日本語の概要は準備中です。原文の説明を表示しています。
Use when reading, creating, or updating agent documentation, module docs, roadmaps, or AGENTS.md. Understands the full .augment/, agents/, and copilot-instructions structure.
日本語の概要は準備中です。原文の説明を表示しています。
Use for an adversarial red-team / blue-team / auditor review of an AI agent's CONFIG + behaviour (rules, skills, MCP, hooks, permissions) — attack-chain → defensive-gap list, not a code audit.
日本語の概要は準備中です。原文の説明を表示しています。