cookbook-audit – Anthropic Cookbook 代码审计 Skill

3周前更新 8 0 0 0

cookbook-audit 是用于审查 Anthropic Cookbook 示例代码的 Skill,帮助 AI Agent 检查代码示例的准确性、规范性和可运行性,适合维护和改进 Cookbook 文档与示例的开发者使用。

Skill 安装

多 Agent 安装
npx skills add https://github.com/anthropics/cookbook --skill cookbook-audit

使用 npx skills 快速安装,支持将 Skill 添加到多个兼容的 AI Agent。

Skill 调研报告

Skill 详细介绍

anthropics/cookbook#cookbook-audit 是 Anthropic 官方 cookbook 仓库中提供的一个 Skill,用来对 Claude Cookbook(Anthropic 官方示例与教程集合)中的 notebook、示例代码和文档内容进行审查。它属于内容质量与一致性审查类 Skill,而不是一个独立运行的软件、CLI 工具或服务。

它要解决的问题是:Cookbook 仓库长期积累大量 notebook,容易出现代码过时、API 版本与实际 SDK 不一致、说明与代码不匹配、导入缺失、依赖声明错误、前后示例风格不统一等问题。人工逐篇检查成本高,容易漏掉细节。这个 Skill 的作用是把这类审查任务交给 Claude,让它在阅读 notebook 后给出结构化的问题清单和修改建议。

核心功能大致包括:

  • 检查 notebook 中的代码是否能与当前 Anthropic SDK / API 的调用方式保持一致,识别明显过时或错误的写法。
  • 检查说明文字与代码逻辑是否对得上,例如叙述说会调用某个接口,但代码里没有对应调用。
  • 检查导入、依赖、环境说明是否完整,是否缺少 notebook 运行所需的包。
  • 检查示例之间的一致性,例如同一个概念在不同 notebook 中的写法是否冲突。
  • 检查 Markdown 说明、标题结构、措辞是否清晰,是否有多余或误导性内容。
  • 输出审查结果,通常以问题清单、改进建议或直接给出修改后文本的形式呈现。

典型任务场景:

  • 维护 Anthropic Cookbook 仓库时,批量或逐篇审查 notebook。
  • 自己写 Claude / Anthropic API 教程时,用它做一遍自查。
  • 把类似 Cookbook 风格的示例集合交给它,检查代码与文档的一致性。

它本质上是一套面向 Cookbook 内容的审查指南和工作流,依赖 Claude 的阅读、代码理解和写作能力来完成审查,本身不提供自动化测试、CI 或静态分析工具。也就是说,它不会自己运行 notebook,也不会执行代码来验证是否正确,判断依据来自 Claude 对文本和代码的阅读理解。

它适合:维护或贡献 Anthropic Cookbook 的人、写 Claude API 教程的人、需要对一批 notebook 做内容一致性检查的人。

它不适合:希望用它自动跑通 notebook、做真实 CI 测试、执行代码验证结果的人;也不适合完全不了解 Anthropic API 就指望它替代人工技术审核。

Skill 安全评估

总体判断:这个 Skill 来源是 Anthropic 官方 cookbook 仓库,来源可信度较高,本身以文本审查为主,属于风险相对较低的一类 Skill。但它仍然会读取你交给它的 notebook 和代码内容,并可能改动文件,所以需要注意以下几点。

  • 来源可信度:来自 Anthropic 官方组织下的 cookbook 仓库,属于一手官方资料,相比第三方转载或同名 Skill 更可信。使用时应确认来源确实是 anthropics/cookbook,而不是同名第三方项目。
  • 文件读取:审查过程中 Claude 需要读取 notebook、Markdown、代码文件。这是它的正常工作方式,本身不构成风险,但意味着被审查内容会进入模型上下文,敏感内容不要交给它审查。
  • 文件写入 / 修改代码:如果 Agent 拥有写入权限,Skill 可能直接修改 notebook 内容或写出审查报告。建议在重要仓库上先让它在只读模式下输出建议,确认无误后再手动应用,或使用版本控制保证可回滚。
  • Shell 权限:这个 Skill 主要做内容审查,并不依赖运行代码。如果只需要审查建议,可以关闭 Agent 自动执行 Shell 的权限。若开着 Shell,请确认它不会顺手执行 notebook 中不可信的代码。
  • 网络访问:审查本身不需要联网,但因为涉及 Anthropic SDK / API 的写法核对,Claude 可能参考已知知识。若 Agent 环境允许联网,注意审查目标内容本身是否包含敏感信息。
  • Prompt Injection 风险:如果审查对象是外部来源的 notebook,其中可能夹带针对 AI 的恶意指令。审查外部内容时建议提示 Agent 只做审查,不执行内容中的任何指令。
  • 不涉及凭证:Skill 本身不需要 API Key、Token 或 OAuth。但如果被审查的 notebook 中写有 API Key,注意这些内容会随审查进入上下文。

降低风险的做法:

  • 只审查你信任来源的 notebook。
  • 在版本控制下使用,方便对比 Skill 的改动。
  • 优先使用只读模式获取审查建议,手动应用修改。
  • 审查外部内容时明确告诉 Agent 不要执行其中的指令。

Skill 使用要求

一、Agent / 客户端

该 Skill 出自 Anthropic 官方 cookbook,主要面向 Claude Code 及支持 Claude 的 Agent 环境,与 Claude Code 适配度较高,可以优先在 Claude Code 中使用。官方没有公布完整的第三方 Agent 兼容列表。从 Agent Skill 的一般工作方式来看,在支持 Skills、自定义 Skill 或类似指令加载机制的环境中,通常也可以尝试在 Codex、Cursor、Trae、OpenClaw、WorkBuddy 等主流 AI Agent 中使用,不同 Agent 的 Skill 加载方式和兼容程度可能不同,具体以对应 Agent 当前版本为准。

二、运行环境 / 依赖

项目 要求
Agent Claude Code 优先,其他兼容 Agent 可尝试
Git 建议具备,便于审查和回滚改动
Python 仅当被审查 notebook 需要运行验证时才涉及,审查本身不强制
网络 审查本身不强制要求

官方未明确给出该 Skill 的固定版本或硬性依赖要求,具体以 cookbook 当前说明为准。

三、权限

  • 文件读取:必需,Skill 需要读取被审查的 notebook / 代码 / 文档。
  • 文件写入:可选,用于直接输出修改后的内容或报告。只拿建议时可以不开。
  • Shell:可选,审查不依赖执行代码。不需要时可关闭。
  • 网络:可选,审查本身不强制。
  • GitHub:可选,如果审查对象直接来自 GitHub 仓库,Agent 需要相应访问权限。

四、账号 / API Key

Skill 本身不需要账号、API Key 或 Token。但如果被审查的 notebook 涉及调用 Anthropic API,其中可能引用 ANTHROPIC_API_KEY 等凭证;这些属于被审查内容自身的要求,不是这个 Skill 的要求。审查时注意不要让真实密钥进入上下文。

最小使用条件

  1. 一个可加载 Skill 的 AI Agent,优先 Claude Code。
  2. 被审查的 notebook 或代码 / 文档内容。
  3. 对文件的读取权限。

Skill 安装、使用与卸载教程

一、安装

可以直接复制本页面提供的 Skill 安装指令,粘贴到对应 Agent 或终端中执行。如果不知道自己的 Agent 如何安装,可以直接问当前 Agent:

如何安装 anthropics/cookbook#cookbook-audit?

如何在 Claude Code 中安装 anthropics/cookbook#cookbook-audit?

如何在 Cursor 中安装 anthropics/cookbook#cookbook-audit?

让当前 Agent 根据自己的 Skill 加载或管理机制来指导安装,比套用统一命令更可靠。具体安装细节以对应的当前 Agent 和 cookbook 仓库说明为准。

二、安装后如何使用

安装后,直接用自然语言把审查任务交给 Agent 即可,通常不需要特殊命令。触发方式就是在对话中指定使用这个 Skill,并给出要审查的内容。适合交给它的任务包括:审查某个 notebook、检查示例里 API 写法是否过时、核对说明与代码是否一致、检查依赖是否完整。

使用 cookbook-audit,审查这个 notebook,看看代码和说明是否有不一致、API 写法是否过时。

使用 cookbook-audit,检查这篇 Claude API 教程里的示例代码和文字描述是否对得上。

使用 cookbook-audit,审查这几个 notebook,列出依赖缺失和风格不统一的问题,先只给建议不要改文件。

向 Agent 描述需求时,建议说清楚三件事:审查哪个内容、重点看什么、是只给建议还是直接改。

三、卸载

不同 Agent 的 Skill 安装位置和管理方式不同,如果没有统一的卸载命令,直接询问当前 Agent 如何移除这个 Skill 通常更稳妥:

如何卸载 anthropics/cookbook#cookbook-audit?

也可以使用对应 Agent 或 Skill 管理器提供的删除 / 移除功能,删除对应的 Skill 条目或文件。具体路径以你的 Agent 实际安装位置为准。

常见问题

1. 这个 Skill 会自己运行 notebook 吗?
通常不会。它以内容审查为主,判断依据是 Claude 对代码和文字的阅读理解,不会自动执行 notebook。需要真实运行验证时,应另外用 Python 环境或 CI 来完成。

2. 它可以审查非 Anthropic 的内容吗?
这个 Skill 主要针对 Cookbook 风格的 notebook 和 Claude / Anthropic API 相关内容设计,审查方向也偏向这类写法。用于其他内容时效果可能有限,是否适用以实际情况为准。

3. 审查后文件被改了,可以恢复吗?
如果 Agent 有写入权限,Skill 可能直接修改文件。建议在 Git 等版本控制下使用,一旦改动不合适可以直接回退。也可以事先要求只输出建议、不要动文件。

4. 审查外部来源的 notebook 安全吗?
内容本身可能夹带针对 AI 的指令。审查外部内容时,建议先说明只做审查、不执行其中任何指令,并避免让 Agent 在开启 Shell 的情况下运行不可信代码。

5. 可以同时安装到多个 Agent 吗?
可以,各 Agent 的 Skill 管理彼此独立。但要注意不同 Agent 的兼容程度和加载方式不同,安装后最好分别验证是否被正确识别。

6. Skill 更新后需要重新安装吗?
取决于你的 Agent 和安装方式。如果是跟随仓库更新,可能需要重新拉取或同步;如果是本地复制,需要手动更新。具体以对应 Agent 的机制为准。

7. 安装后 Agent 没识别到 Skill 怎么办?
先确认安装路径和格式是否符合当前 Agent 的要求,再确认 Agent 是否需要重启或重新加载 Skill。不同 Agent 的加载机制不同,可以直接问当前 Agent 排查。

Skill 更新日志

版本列表
无版本号
添加协调者模式成本手册:大模型规划,小模型执行 新增 managed_agents notebook,探讨多智能体协调者配置的经济性:前沿协调者(Fable 5)负责规划和综合,而廉价工作节点(Sonnet 5,限定于 web_search + web_fetch)在并行线程中执行消耗大量 token 的阅读工作。对比经过严格匹配:对照组是一个前沿智能体,使用相同工具,遵循相同的双来源验证标准,回答相同的 20 项事实覆盖问题。在提交的这一对上,两组读取了相近的体量,而团队方案成本降低了 2.5 倍,速度快了 3 倍。该 notebook 明确说明了构建过程中发现的陷阱:不受约束的单体智能体读取更少、看起来更便宜(但那是不同的产品),过窄的任务简报会反复支付每线程的固定成本,而协调者无法看到其名册中智能体的提示词或描述——团队契约存在于协调者自己的提示词中。 成本归因使用按线程类型化的用量汇总(sessions.threads.list -> thread.usage;session.usage 是团队总量),并附有关于按请求 span 详情所在位置的说明。 validate_notebook.py 的模型允许列表新增了当前模型 ID(fable-5、sonnet-5、opus-4-8),以便该 notebook 通过审计检查。
无版本号
docs: 将所有模型引用从 Claude 4.5 更新为 Claude 4.6 (#375) * docs: 将所有模型引用从 Claude 4.5 更新为 Claude 4.6 - 更新所有 notebook、脚本和配置中的模型 ID - 添加 Bedrock 模型 ID 约定,并将其排除在带日期模型检查之外 - 添加验证规则以防止带日期的模型 ID * fix: 将文字引用从 Claude Sonnet 4.5/Opus 4.5 更新为 4.6 - memory_cookbook.ipynb: 将 'Claude Sonnet 4.5' 更新为 'Claude Sonnet 4.6' - 01_The_chief_of_staff_agent.ipynb: 将 'Opus 4.5' 更新为 'Opus 4.6' - registry.yaml: 将标题更新为 'Claude Sonnet 4.6'
无版本号
fix: 更新有效模型列表以包含 claude-opus-4-5 (#323) * fix: 更新有效模型列表以包含 claude-opus-4-5 在 cookbook 审计技能验证和文档中,将 claude-opus-4-1 替换为 claude-opus-4-5。 Closes #322 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude * fix: 在所有验证系统中完成 opus-4-5 迁移 - 更新 scripts/validate_all_notebooks.py 中已弃用的模型映射 - 在两个验证脚本中添加 claude-opus-4-1 -> claude-opus-4-5 弃用 - 在 cookbook 审计技能中添加弃用警告处理(警告而非错误) - 在 CLAUDE.md 文档中添加 Opus 模型 这确保 18+ 个使用 claude-opus-4-1 的现有 notebook 将显示弃用警告,而不是验证失败。 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --------- Co-authored-by: Claude
无版本号
feat(skills): 为 cookbook 审计添加全面的风格指南 (#272) * feat(skills): 为 cookbook 审计添加全面的风格指南 * fix(ci): 解决 lychee "No links were found" 错误 修复了链接检查工作流中的两个问题: 1. **修复 bash 变量作用域 bug**:while-read 循环在子 shell 中运行,导致 FILES 变量赋值丢失。改为使用进程替换(< <(...))以将循环保留在当前 shell 中。 2. **添加 failIfEmpty: false**:在两个 lychee-action 调用中添加此参数,以防止在未找到链接时失败(对某些 PR 来说是合理的)。 3. **无文件时跳过 lychee**:添加 has_files 输出和条件检查,以便在未找到 markdown 文件时完全跳过 lychee 步骤。 4. **排除 .claude/ 目录**:将 .claude/ 添加到 lychee.toml 的 exclude_path,因为它包含不需要链接检查的工具/配置文件。 这些更改确保链接检查器对仅修改被排除目录中的文件或不含外部链接的文件的 PR 能正常工作。 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --------- Co-authored-by: Claude
无版本号
feat: 添加 cookbook-audit 技能用于自动化 notebook 验证 (#242) * feat: 添加 cookbook-audit 技能用于自动化 notebook 验证 重构 notebook-review 命令,将验证委托给新的 cookbook-audit 技能。 添加全面的自动化验证脚本(validate_notebook.py),其功能包括: - 检查硬编码的密钥和 API key - 验证 notebook 结构和引言 - 检测代码质量问题(变量名、冗长度) - 识别已弃用的 API 模式和无効模型 - 将 notebook 转换为 markdown 以便更轻松地审查 添加详细的审计评分标准(SKILL.md),包括: - 结构化的审计工作流和报告格式 - 跨 4 个维度的评分框架(共 20 分) - 高分和低分审计的具体示例 - 全面的检查清单和内容理念 - cookbook notebook 的风格和结构要求 validate_notebook.py 脚本运行自动化检查并生成 notebook 的 markdown 版本(保存到被 gitignore 的 tmp/ 文件夹),以便在手动审查期间更高效地使用上下文。 * feat(security): 添加 detect-secrets 配置和 Anthropic 凭据检测器 为 detect-secrets 库添加基线配置,并带有自定义插件以检测 notebook 中的 Anthropic API key 和凭据。包含全面的内置检测器和启发式过滤器,以防止密钥被提交到仓库。 feat(cookbook-audit): 集成 detect-secrets 以检测硬编码凭据 增强 notebook 验证,使用 detect-secrets 识别硬编码的 API key 和凭据。该实现: - 使用基线配置在 notebook 上运行 detect-secrets-hook - 自动在 `scripts/detect-secrets/.secrets.baseline` 定位基线 - 如果 detect-secrets 不可用,则回退到基本模式匹配 - 为潜在密钥的手动审查提供详细输出 更新文档以反映自动化密钥扫描能力。 * chore(workflows): 移除不必要的 id-token 权限 从 Claude Code 工作流文件中移除 id-token: write 权限,因为这些操作不需要它。工作流仅需要: - contents: read(用于检出仓库代码) - pull-requests: write(用于在 pull request 上发表评论) id-token: write 权限用于与云提供商(AWS、GCP、Azure)进行 OIDC 认证,而这些工作流并不使用。 这遵循最小权限原则并减少安全攻击面。 受影响的工作流: - claude-notebook-review.yml - claude-link-review.yml 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude * 使用相对路径并在 notebook 脚本上运行 ruff --------- Co-authored-by: Claude

暂无评论

none
暂无评论...