repo-tidylisted
Install: claude install-skill hanzhangzzz/agent-skills-zh
# repo-tidy
把本地仓库恢复到「默认分支与远端一致、无可安全回收的遗留分支/worktree」的基线状态。默认分支优先读取 origin/HEAD,缺少该引用时才兼容 master/main。归位发生在**下一个任务开始时**(push 完 MR 未合,任务结束时无收尾时机)。
组件(脚本就地运行于 skill 目录,不复制副本):
- `scripts/repo_tidy.py` —— 核心:tidy / `--all` / `--new`
- `scripts/git-repo-status.sh` —— SessionStart hook:注入 `[repo-status]`(分支/ahead-behind/脏净)+ `[tasks]` 菜单(各 worktree 的分支与状态:已合并可回收 / 已推送 MR 待合 / 未推送 / 工作区脏),供判断续任务还是开新任务
- `scripts/session-cwd.sh` —— 把本 session 的 cwd 写到 `~/.claude/session-cwd/<iTerm 会话 id>`。用户的编辑器快捷键按前台标签页 id 读它,于是打开的永远是 AI 当前所在目录——**子进程改不了父 shell 的 cwd,所以不能靠 shell 的当前目录**。静默输出(挂在 SessionStart/UserPromptSubmit 上,stdout 会被注入上下文)
- `scripts/worktree-fetch.sh` —— PreToolUse(EnterWorktree) 先 `fetch --prune`,保证新任务分支从最新的 origin/<默认分支> 切出
- `scripts/install.sh` —— 一键注册上面几个 hook 到 `~/.claude/settings.json`;幂等、改前备份、只增不删
- `scripts/editor-here.sh` —— 绑到编辑器快捷键:按前台标签页 id 读位置文件,打开 AI 当前所在目录;读不到再回退到终端路径
- `scripts/task-here.sh` —— 声明「本 session 当前在做哪个任务目录」,给运行中不能切 cwd 的 agent(Codex)用;Claude Code 不需要
- `tests/` —— `test_repo_tidy.sh`、`test_session_cwd.sh`、`test_install.sh`(另有 `scripts/test_git_repo_status.sh`),改脚本后必须跑
## 安装
前置:`python3`、`git`、可写的 `~/.claude/`。缺任一项先停下说明,不带病安装。
私人配置(`settings.json` / `CLAUDE.md`)不进版本库,所以用脚本改——幂等、改前备份、只增不删,不碰用户已有的其它 hook:
```bash
bash "$SKILL_DIR/scripts/install.sh" # 安装(可反复跑)
bash "$SKILL_DIR/scripts/install.sh" status # 体检:依赖 / 核心层 / 增强层 / hook 注册
bash "$SKILL_DIR/scripts/install.sh" --uninstall # 只移除本 skill 注册的 hook
```
**Claude Code 与 Codex 都装