CtrlK
BlogDocsLog inGet started
Tessl Logo

1k-worktree-clean

Use when the user wants to audit local git worktrees against origin/x, choose by number or A, and decide whether stale worktree directories, already-merged worktrees, or no-delta worktrees can be cleaned up. Triggers on "worktree clean", "worktree 合并到 x", "检测哪些 worktree 已进 x".

79

Quality

100%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Worktree Clean Check

Use this skill to list local worktrees, surface clean or dirty state, and judge whether selected committed branch code has already landed in origin/x by actual code content, not by merge commits alone.

Rules

  • Always start by listing every local worktree with numeric choices.
  • Ask the user to reply with 1, 2,4, or A.
  • Always fetch the latest origin/x before running the check.
  • Use commit graph data only to locate branch-side candidate files. Final judgment must come from content equality between the selected worktree snapshot and origin/x.
  • Surface metadata that helps cleanup decisions: last commit time, upstream branch, PR status, and whether the worktree is nested under another linked worktree.
  • PR status is best-effort only. Use gh when available; if auth or network is unavailable, report that explicitly and continue the local git-based check.
  • If a worktree is dirty, report that separately and make it clear the committed-branch result does not cover uncommitted local edits.
  • After the check result, always surface cleanup candidates:
    • stale directories that exist under .worktree/ but are no longer registered by git worktree list
    • selected worktrees that are MERGED_TO_ORIGIN_X_BY_CODE or NO_BRANCH_CODE_DELTA_FROM_COMMON_BASE, clean, and are neither the main worktree nor the current worktree
  • After surfacing cleanup candidates, always ask whether the user wants to remove stale directories, removable worktrees, both, or neither.
  • Never auto-delete anything before the user explicitly confirms the cleanup action.

Step 1: List Local Worktrees

Run:

rtk proxy bash .skillshare/skills/1k-worktree-clean/scripts/1k-worktree-clean.sh list

Then present the choices to the user and append:

请回复编号,例如 `1`、`2,4` 或 `A`。

List output should include, for each worktree:

  • path
  • branch
  • clean/dirty state
  • upstream branch
  • last commit time
  • PR status
  • nested worktree status

Step 2: Sync Remote X

Run:

rtk git fetch origin x

If sandboxing blocks the fetch, request approval and rerun it.

Step 3: Check Selected Worktrees

Run one of:

rtk proxy bash .skillshare/skills/1k-worktree-clean/scripts/1k-worktree-clean.sh check 1
rtk proxy bash .skillshare/skills/1k-worktree-clean/scripts/1k-worktree-clean.sh check 1,3
rtk proxy bash .skillshare/skills/1k-worktree-clean/scripts/1k-worktree-clean.sh check A

Step 4: Surface Cleanup Candidates And Ask

Run the matching cleanup-candidate command with the same selection:

rtk proxy bash .skillshare/skills/1k-worktree-clean/scripts/1k-worktree-clean.sh cleanup-candidates 1
rtk proxy bash .skillshare/skills/1k-worktree-clean/scripts/1k-worktree-clean.sh cleanup-candidates 1,3
rtk proxy bash .skillshare/skills/1k-worktree-clean/scripts/1k-worktree-clean.sh cleanup-candidates A

Then summarize:

  • stale directory count and paths
  • removable worktrees with the reason (MERGED_TO_ORIGIN_X_BY_CODE or NO_BRANCH_CODE_DELTA_FROM_COMMON_BASE)
  • skipped removable worktrees with the reason when applicable
  • For removable/skipped worktrees, keep the metadata visible: upstream, last commit time, PR status, and nested worktree status

If there is at least one cleanup candidate, append:

如需继续清理,请回复:
`stale`:只删残留目录
`merged 2,4`:只删这些可移除且 clean 的 worktree
`all`:两类都清理
`no`:不清理

If there are no cleanup candidates, say so explicitly.

Step 5: Delete Only After Confirmation

If the user confirms cleanup:

  • Remove removable worktrees with:
rtk git worktree remove <path>
  • Remove stale directories with:
rtk proxy rm -rf <path>
  • If sandboxing blocks either command, request approval and rerun it.
  • When deleting removable worktrees, keep reporting path, branch, and removable reason so the user can verify scope before the command runs.

How To Interpret The Result

  • MERGED_TO_ORIGIN_X_BY_CODE: every branch-side candidate file now matches origin/x.
  • NOT_FULLY_MERGED_TO_ORIGIN_X_BY_CODE: at least one branch-side candidate file still differs from origin/x.
  • NO_BRANCH_CODE_DELTA_FROM_COMMON_BASE: the worktree has no committed branch-only code delta relative to the common base with origin/x. If it is also clean and is neither the main worktree nor the current worktree, treat it as a removable cleanup candidate.
  • Working tree: dirty: show the dirty files and state that current local edits still need separate review.

Output Contract

  • Give a short summary first for all selected worktrees: merged, not merged, or no delta.
  • For each worktree, include path, branch, clean/dirty state, upstream branch, last commit time, PR status, nested/non-nested status, candidate file count, and the unmatched file list when present.
  • When the result is merged, explicitly say 已合并到远端 x(按代码内容判断).
  • When the result is NO_BRANCH_CODE_DELTA_FROM_COMMON_BASE, explicitly say it has no committed branch delta relative to origin/x, and that it is removable when it is also clean and not the main/current worktree.
  • After the check summary, give a cleanup follow-up: stale directories, removable worktrees, and whether the user wants to delete them.
  • If PR status cannot be determined, say that clearly instead of guessing.
  • Never conclude purely from “this commit was merged” or “this branch is ahead/behind”.
Repository
OneKeyHQ/app-monorepo
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.