news 2026/9/7 3:24:22

Claude Cookbooks 中的 /link-review 命令解析:Claude Code 斜杠命令如何守护文档与 Notebook 的链接质量

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Claude Cookbooks 中的 /link-review 命令解析:Claude Code 斜杠命令如何守护文档与 Notebook 的链接质量

Claude Cookbooks 中的 /link-review 命令解析:Claude Code 斜杠命令如何守护文档与 Notebook 的链接质量

【免费下载链接】claude-cookbooksA collection of notebooks/recipes showcasing some fun and effective ways of using Claude.项目地址: https://gitcode.com/GitHub_Trending/an/claude-cookbooks

Claude Cookbooks(anthropic-cookbook)是一个以 Jupyter Notebook 与 Markdown 文档为主的仓库,链接失效、文档过时是这类仓库最常见的维护问题之一。本文以仓库内置的 link-review 斜杠命令 为核心,完整拆解它的命令定义结构、链接质量检查维度、报告格式规范,并结合触发它的 Claude Link Review 工作流 与 lychee 配置文件,讲清楚"AI 审查 + 确定性工具"双轨并行的链接质检体系是如何在本地开发和 CI 中落地的。读完本文,你可以掌握在 Claude Code 中编写自定义斜杠命令(slash command)的完整套路,并了解如何把一条本地命令无缝接入 GitHub Actions。

一、命令定义文件:一个斜杠命令的完整结构

link-review.md 是 Claude Code 的自定义斜杠命令。按照 Claude Code 的约定,存放在.claude/commands/目录下的 Markdown 文件会注册为可用命令,文件名即命令名——因此该文件对应/link-review。CONTRIBUTING.md 中明确列出了仓库可用的三条质检命令:

  • /link-review- Validate links in markdown and notebooks(校验 Markdown 与 Notebook 中的链接)
  • /model-check- Verify Claude model usage is current(校验 Claude 模型引用是否为当前版本)
  • /notebook-review- Comprehensive notebook quality check(Notebook 质量综合检查)

该命令文件整体分为两部分:YAML frontmatter 与 Markdown 提示词正文。

1.1 Frontmatter:权限白名单

文件开头两行元数据:

--- allowed-tools: Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*) description: Review links in changed files for quality and security issues ---
  • allowed-tools声明了该命令执行期间被允许使用的工具,且只开放了三个gh子命令:gh pr comment(发表评论)、gh pr diff(获取 PR 差异)、gh pr view(查看 PR 信息)。这是典型的最小权限设计——命令最终只需要把审查结果评论回 PR,因此不给它任何写文件、执行任意 Bash 的权限。
  • 值得注意的是,这条白名单只是"下限"。在 CI 中运行时,工作流通过claude_args追加了更完整的工具列表(见第四节),两者叠加生效。
  • description字段用于说明命令用途:"Review links in changed files for quality and security issues"。

仓库里另一个同类型命令 model-check.md 使用了完全相同的allowed-tools组合,说明这是一套统一的"只读审查 + 评论回传"权限模式。

1.2 提示词正文:范围约束先行

正文第一行就是一条强约束:

IMPORTANT: Only review the files explicitly listed in the prompt above. Do not search for or review additional files.

这直接回应了该命令的典型使用方式:CI 会先把"本次 PR 变更过的文件列表"塞进 prompt(例如README.mdcapabilities/summarization/README.md),命令必须只审查列出的文件,不能自行扩大扫描范围。这种约束对控制审查时长、避免误报无关文件至关重要,也是把"本地命令"改造成"CI 参数化命令"的关键设计。

二、链接质量检查:四个维度

命令正文的 "Link Quality Checks" 一节定义了四条通用检查规则,覆盖了链接审查从可用性到安全性的完整梯度:

检查维度原文要求落地含义
1. Broken Links(失效链接)Identify any links that might be broken or malformed找出无法访问或格式畸形的链接(如拼错的域名、缺失协议头)
2. Outdated Links(过时链接)Check for links to deprecated resources or old documentation指向已下线资源、旧版本文档的链接
3. Security(安全性)Ensure no links to suspicious or potentially harmful sites检查是否指向可疑或潜在有害站点
4. Best Practices(最佳实践)Links should use HTTPS where possible; Internal links should use relative paths; External links should be to stable, reputable sources外部链接尽量 HTTPS;内部链接应使用相对路径;外部链接指向稳定、可信的来源

其中"内部链接应使用相对路径"与仓库的既有约定相互印证:lychee.toml 的注释里写明,notebook 中指向仓库文件的链接约定使用绝对 GitHub URL(house convention),唯一允许保留相对链接的是 notebook 自身的图片(相对路径才能在 GitHub 上正常渲染),而检查相对链接时若精确路径不存在,会按fallback_extensions = ["ipynb", "md", "html", "py"]依次尝试补全扩展名。这些细节让"相对路径"这条规则在真实场景中有了明确的边界条件。

三、Anthropic 内容专项检查

通用规则之外,命令还为"Anthropic/Claude 相关内容"单列了一个专项检查小节,这正是该命令针对本仓库领域定制的部分:

  • 指向 Claude 文档的链接应指向最新版本(Links to Claude documentation should point to the latest versions);
  • API 文档链接应保持时效(API documentation links should be current);
  • 模型文档应引用当前模型,而非已弃用模型(Model documentation should reference current models, not deprecated ones);
  • GitHub 链接应使用正确的仓库路径(GitHub links should use the correct repository paths)。

前两条与同目录的 model-check 命令 形成职责分工:/model-check负责核对代码里的模型名是否仍在当前公开模型列表中(它会拉取 docs.claude.com 的模型概览页做比对,并建议改用-latest后缀的模型别名),而/link-review则负责文档链接层面的时效性——例如把旧版 API 参考页的链接更新为新路径。CONTRIBUTING.md 也呼应了这一点:"Claude will automatically validate model usage in PR reviews",并建议 Notebook 使用模型别名以提高可维护性。

四、CI 集成:claude-link-review.yml 工作流

/link-review并非只能在本地手动执行。claude-link-review.yml 展示了它如何被参数化后接入 GitHub Actions,这也是理解该命令"为什么只开放三个 gh 子命令"的完整拼图。

4.1 触发条件

on: pull_request: types: [opened, synchronize] paths: - '**.md' - '**.mdx' - '**.ipynb' - 'README.md' workflow_dispatch: inputs: pr_number: description: 'PR number to review' required: true type: number

即:PR 打开或更新且涉及.md/.mdx/.ipynb文件时自动触发;同时支持手动workflow_dispatch指定任意 PR 编号。此外工作流用if条件限制仅对非 fork(内部贡献者)的 PR 自动运行,外部 fork 只能通过手动触发,从而控制 API 消耗。

4.2 工作流步骤拆解

  1. 确定 PR 编号:区分workflow_dispatch(取inputs.pr_number)与pull_request(取github.event.pull_request.number),写入steps.pr-number.outputs.number,最终通过PR_NUMBER环境变量传给 Claude。
  2. Checkout PRfetch-depth: 0拉全量历史,手动触发时通过refs/pull/{number}/head检出 PR head。
  3. 计算变更文件:从 PR base 分支git fetch后用git diff --name-only origin/<base>...HEAD | grep -E '\.(md|mdx|ipynb)$'得到变更文件列表,写入changed_files.txt;若列表为空则置has_files=false并跳过后续步骤。
  4. 运行 Claude 审查:使用anthropics/claude-code-action(sha 固定于 v1.0.132),核心配置如下:
prompt: | /link-review Changed files to review: $(cat changed_files.txt) claude_args: | --allowedTools "Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(echo:*),Read,Glob,Grep,WebFetch"

可以看到 prompt 正是把第 2 步算出的文件列表拼接进/link-review命令——与命令正文"只审查 prompt 中列出的文件"的约束严格对应。claude_args中的--allowedTools在 frontmatter 白名单基础上追加了ReadGlobGrepWebFetch(读取变更文件内容、抓取目标 URL 验证可达性所需)与Bash(echo:*)

  1. 身份认证:工作流使用permissions: id-token: write,通过 Anthropic Workload Identity Federation(WIF)把 GitHub OIDC token 交换成短时效访问令牌,而非在仓库中存放静态 API key——配置中的anthropic_federation_rule_idanthropic_organization_idanthropic_service_account_id三项即该联邦规则的身份标识。

4.3 回传结果

命令正文最后一行规定了唯一的输出动作:

IMPORTANT: Post your review as a comment on the pull request using the command:gh pr comment $PR_NUMBER --body "your review content"

这与工作流声明的pull-requests: write权限、PR_NUMBER环境变量三者在闭环上互相印证:Claude 审查完成后,直接以gh pr comment把结构化审查结果评论回 PR,整个链路无需人工中转。

五、报告格式:三级分类的审查结论

命令对输出格式做了显式模板化要求(Report Format 一节),审查结论必须按三档分类呈现:

  • Valid and well-formed links:有效且格式规范的链接;
  • ⚠️Links that might need attention:可能需要关注的链接,例如用了 HTTP 而非 HTTPS;
  • Broken or problematic links that must be fixed:必须修复的失效或有问题的链接。

若全部链接正常,则只给一段简短确认("If all links look good, provide a brief confirmation")。这种"通过时一句话、不通过时分级列出"的约定,保证了 PR 评论在绝大多数"无问题"场景下不会造成噪音,同时又保留了可操作的修复清单。

六、与 lychee 确定性检查的分工配合

Claude 审查是"智能层",仓库同时保留了一套确定性链接检查作为兜底,两者互补:

  • links.yml(Link Check 工作流):PR 触发时仅检查变更文件——先用jupyter nbconvert --to markdown把变更的.ipynb转成临时 Markdown(temp_md/),再交给lycheeeverse/lychee-action(sha 固定于 v2.8.0)执行检查,结果通过 sticky-pull-request-comment(header 为link-check)贴到 PR;此外每周日 00:00 的 cron 任务会对skills/**/*.md、全部转换后的 notebook 和README.md做全量检查。
  • lychee.toml:核心参数包括timeout = 30max_redirects = 10include_fragments = true、1 天缓存(max_cache_age = "1d")、3 次重试(retry_wait_time = 2);accept列表在标准 2xx/3xx 之外额外接受 403(需登录站点)与 429(限流),并注释明确"该列表会替换lychee 默认值,因此 2xx 必须显式列出";exclude则屏蔽了api.anthropic.comconsole.anthropic.comlocalhost等无需外呼检查的地址。

从两套机制的分工看:lychee 负责"链接是否可达"这一客观事实(含 404/超时/重定向),Claude/link-review则覆盖 lychee 无法判断的语义层——指向的文档是否已换版本、模型引用是否已过时、链接指向是否可疑。require_https = false的 lychee 配置也侧面说明:HTTPS 合规性检查交给 Claude 审查的"⚠️ 关注"档来处理,而不是硬性失败。

七、本地使用方式

按 CONTRIBUTING.md 的说明,开发者在本地用 Claude Code 打开该仓库时,同一批命令定义(.claude/commands/目录)会自动可用,可以直接在 push 之前运行与 CI 相同的校验逻辑:

# Run the same validations that CI will run /notebook-review skills/my-notebook.ipynb /model-check /link-review README.md

也就是说,本地调用/link-review时把待审查文件(如README.md)作为参数传入,Claude 即按同一份提示词完成四级检查与三级分类报告;在 CI 中则是由工作流注入变更文件列表与PR_NUMBER环境变量,最终自动评论回 PR。命令定义、本地交互、CI 集成三者共用同一份 Markdown,这正是 Claude Code 斜杠命令"一次编写、双端复用"的典型价值。

八、小结

link-review.md 虽然只有 30 余行,却浓缩了 Claude Code 自定义斜杠命令的完整工程模式:

  1. frontmatter 最小权限allowed-tools只开放gh pr comment/diff/view三个子命令,配合 CI 中--allowedTools按需放宽;
  2. 范围约束前置:首行强约束"只审查 prompt 列出的文件",使其天然适配 CI 参数化调用;
  3. 分层检查规则:通用四维检查(失效/过时/安全/最佳实践)+ Anthropic 内容专项(文档版本、模型时效、仓库路径),与 model-check 等姊妹命令职责切分清晰;
  4. 模板化输出:✅/⚠️/❌ 三级报告 + 通过时一句话确认,控制 PR 评论噪音;
  5. 确定性兜底:lychee 全量/增量链接检查(lychee.toml、links.yml)负责可达性事实,AI 审查负责语义质量,双轨并行。

对于维护文档密集型仓库(notebook、Markdown 占比高的开源项目)的团队,这套"斜杠命令 + 变更文件注入 + gh pr comment 回传 + lychee 兜底"的链路可以直接作为参考模板复用。

【免费下载链接】claude-cookbooksA collection of notebooks/recipes showcasing some fun and effective ways of using Claude.项目地址: https://gitcode.com/GitHub_Trending/an/claude-cookbooks

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/7 3:22:16

华为流程框架梳理与实施:LTC/IPD实战及PPT问题解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/7 3:22:07

TMS32F28P550调试实录:C2000电机控制项目经验分享

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/7 3:21:53

半夜挂机跑千牛上架,早上全卡人机验证:无人值守的正确姿势

半夜挂机跑千牛上架&#xff0c;早上全卡人机验证&#xff1a;无人值守的正确姿势 「大半夜满心欢喜地把机器挂上跑自动化&#xff0c;第二天早上满怀期待地一看——好家伙&#xff0c;全卡在’人机验证’的界面上干瞪眼。」 这是自动化圈流传最广的一句吐槽。满怀期待地一看—…

作者头像 李华
网站建设 2026/9/7 3:10:57

Ubuntu 24.04 安装 Abaqus 2026 完整教程与常见问题排查

大家好&#xff0c;我是你们的老朋友。之前写了好几篇 Ubuntu 相关的文章&#xff0c;一直在聊系统配置、开发环境和一些常用的效率工具。最近不少做结构仿真和 CAE 分析的朋友来问&#xff0c;说是在 Windows 上跑 Abaqus 总觉得内存吃紧&#xff0c;渲染也不流畅&#xff0c;…

作者头像 李华