关于 walkthrough
通过本地运行的 Command Center,为 Git 差异生成并打开代码讲解。适合审查分支、提交或工作区改动的开发者,并支持指定版本范围和文件过滤。
主要功能
- 01根据 Git 差异生成代码讲解
- 02支持版本范围和工作区改动
- 03使用 glob 模式筛选变更文件
- 04在浏览器中打开生成的讲解
适用场景
- 01审查分支改动
- 02讲解一段提交范围
- 03将讲解限制在指定文件
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ command-center-ai/ skills --skill walkthrough安装后在 Claude Code 中输入/walkthrough确认已加载。
附带文件cc-skill-lib.mjsrun.mjs
详细介绍
演练
通过本地运行的 Command Center 生成代码演练,然后打开它。
适用场景
用户请求对当前分支、拉取请求、提交范围进行演练,或要求“解释差异”。例如:
- “带我了解这个分支。”
- “带我看看从 main 以来的变更。”
- “为 HEAD~5..HEAD 生成演练。”
如果此 Agent 是在 Command Center 内运行,那么其中有单独的演练工具或技能。请勿将此技能与那个混淆。此技能用于生成整个差异的演练。另一个工具用于针对任意代码片段生成演练,例如差异、Bug 的数据流、登录流程、代码库中某个方法的所有用法等。
调用方法
运行 run.mjs — 它与此 SKILL.md 位于同一目录。运行器会处理所有工作:检测安装、启动后端、检查身份验证/模型/工作区、生成演练并打开浏览器。
node <SKILL_DIR>/run.mjs [from..to] [--files=PATTERN[,PATTERN...]]
<SKILL_DIR> 是 skills CLI 安装此技能的位置。常见位置:
| 界面 | 路径 |
|---|---|
| Claude Code,项目本地 | ./.claude/skills/walkthrough |
Claude Code,全局(-g) | ~/.claude/skills/walkthrough |
| 其他任何 Agent | ./.agents/skills/walkthrough |
如果你从磁盘加载此 SKILL.md,运行器就在同级目录 — 将其替换为该目录。
两个参数都是可选的。默认情况下,演练会涵盖解析后范围的整个差异。
引用范围 — [from..to]:
- 省略 → 默认为
merge-base(HEAD, <base>)..HEAD,其中<base>是origin/HEAD的符号引用;如果不可用,则依次回退到origin/main/origin/master/main/master。 - 传入任何
git能识别的内容:SHA、分支、HEAD~3..HEAD等。 - 特殊标记:
WORKING_TREE(未提交的变更)和STAGED(暂存区)。示例:HEAD..WORKING_TREE。
便捷标志(等同于上面的引用范围标记):
--working-tree→ 比较当前工作树与基准的合并基点(包括未提交的编辑)。--staged→HEAD..STAGED(仅包含已执行git add的内容)。--port=<port>→ 与指定端口上的 Command Center 后端通信。适用于同时运行多个 CC 实例(开发环境),或运行器无法自动发现正确实例的情况。
文件筛选器 — --files=PATTERN[,PATTERN...]:
- 以逗号分隔、相对于仓库的 glob 模式。
*匹配非斜杠字符;**可跨目录匹配。 - 在模式前加
!可排除匹配项。如果只传入排除项,隐式包含模式为**(“除这些之外的所有内容”)。 - 运行器会在本地根据
git diff --name-only from..to展开模式,并将具体文件列表发送到后端。
示例 — 选择最符合用户意图的命令:
| 用户意图 | 命令 |
|---|---|
| 整个分支与基准比较(默认) | (无参数) |
| 昨天的提交 | $(git log --since="2 days ago" --until="1 day ago" --format=%H | tail -1)..HEAD |
| 最近 3 次提交 | HEAD~3..HEAD |
| 整个分支,但跳过测试 | --files=!**/*.test.*,!**/*.spec.*,!**/__tests__/** |
仅包含 src/ 中的 TS 文件 | --files=src/**/*.ts |
| 昨天的提交,不包含测试 | <sha>..HEAD --files=!**/*.test.* |
| 未提交的编辑 | --working-tree |
未提交的编辑,仅包含 src/ | --working-tree --files=src/**/*.ts |
| 仅包含已暂存的内容 | --staged |
解读输出
运行器会在 stdout 上每行打印一个 JSON 对象。每行都有一个 kind 字段:
kind: "status"— 进度更新;向用户显示一条简短说明。kind: "result"— 最终成功;运行器已打开演练。告知用户已打开,并附上url中的 URL。kind: "error"— 最终失败;使用code和message字段告知用户出了什么问题。代码是稳定的枚举值(not-installed、not-running、not-logged-in、no-model、quota、no-workspace、backend-too-old、generation-failed等);message已是用户所用的语言。kind: "action-required"— 用户必须先执行某项操作,然后才能重新运行(例如安装应用、登录、配置模型)。显示message,并在存在url时一并显示。
始终原样显示运行器的 message,不要改写。运行器生成的面向用户的字符串为英文;后端生成的字符串已本地化。
非零退出代码
运行器成功时退出码为 0,失败时返回一个较小的固定整数(每种失败类型对应一个代码,详见项目 README)。不要解析退出码;应根据上述结构化的 kind / code 字段进行分支处理。