cookbook-audit – Claude Cookbook 代码审计 Skill

3周前更新 8 0 0 0

cookbook-audit 是用于审查 Anthropic Claude Cookbook 仓库中 Jupyter Notebook 内容和质量的分析型 Skill,帮助检查代码示例、文档结构与最佳实践是否符合规范。

Skill 安装

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

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

Skill 调研报告

Skill 详细介绍

cookbook-audit 是 Anthropic 官方 anthropics/claude-cookbooks 仓库中的一个 Skill,用于对 Claude Cookbook 项目中的 notebook(Jupyter 笔记本)进行自动化审查。它的核心任务是检查 cookbook 内的示例代码、说明文档和结构化内容是否符合项目既定规范,包括但不限于:代码可运行性检查、API 调用方式一致性、Markdown 说明完整性、以及 notebook 整体质量评估。

需要明确:cookbook-audit 本身不是一个独立运行的软件,也不是一个 CLI 工具或 npm/pip 包。它本质上是一套提供给 AI Agent 使用的审查指令与工作流定义,安装后由 Agent 在接收到相关任务时加载并执行。

核心功能

  • 审查 claude-cookbooks 仓库中的 notebook 结构与内容质量
  • 检查示例代码是否符合 Anthropic API 最佳实践
  • 识别 notebook 中过时、不一致或缺失的说明内容
  • 辅助维护者在提交前发现潜在问题

典型任务

  • 对新增 cookbook notebook 进行提交前审查
  • 批量检查已有 notebook 的一致性
  • 识别需要更新或废弃的示例

不适合的需求

  • 不适合作为通用代码审查工具使用(它不是针对普通项目的 lint 工具)
  • 不适合替代 CI/CD 中的自动化测试流程
  • 不适合处理非 claude-cookbooks 项目的审查需求

适合的用户

  • claude-cookbooks 仓库的贡献者和维护者
  • 需要维护 Anthropic 官方示例质量的开发者
  • 希望了解 Anthropic 官方 cookbook 规范的开发者

Skill 安全评估

cookbook-audit 来源于 Anthropic 官方 GitHub 仓库 anthropics/claude-cookbooks,来源可信度较高。由于它是审查类 Skill,主要行为是读取和检查文件内容,不涉及主动修改外部系统。

需要关注的安全点

  • 文件读取权限:该 Skill 需要读取 notebook 文件内容才能完成审查,属于其正常功能所必需的权限。
  • 代码执行:如果 Agent 在审查过程中尝试运行 notebook 内的代码单元,可能存在执行未验证代码的风险。建议根据实际需要在 Agent 中限制自动执行 Shell 或 Python 的权限。
  • 网络访问:如果 Skill 需要访问 GitHub 或 Anthropic API 文档来验证内容,会涉及网络请求。建议确认其访问的目标域名是否可信。
  • 文件写入:审查类 Skill 通常不修改被审查的文件,但如果 Agent 被配置为自动应用修复,可能会写入变更。建议在审查模式下关闭自动写入。

降低风险的建议

  • 在只读模式下运行审查,不允许 Agent 自动修改被审查文件
  • 关闭 Agent 的自动 Shell 执行权限,由用户手动决定是否运行测试代码
  • 在隔离的工作目录中操作,避免影响其他项目文件

当前没有公开资料表明该 Skill 存在已知安全漏洞,但以上风险点属于审查类 Skill 的通用注意事项,建议根据实际使用场景评估。

Skill 使用要求

一、Agent / 客户端

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

二、运行环境 / 依赖

项目 要求
Agent Claude Code 优先,其他支持 Skills 的 Agent 可尝试
Git 建议具备,用于获取和更新 claude-cookbooks 仓库
Python 审查 notebook 时可能需要,具体以 Skill 官方说明为准
网络 获取仓库或验证在线文档时需要

当前官方资料未明确列出该 Skill 的强制版本要求。

三、权限

  • 文件读取:必需,用于读取 notebook 内容
  • 文件写入:可选,仅在需要自动应用修复时使用
  • Shell 执行:可选,仅在需要运行 notebook 代码验证时使用
  • 网络访问:可选,取决于是否需要拉取仓库或访问在线文档

四、账号 / API Key

cookbook-audit 本身作为审查类 Skill,不需要额外的 Anthropic API Key 或 Token 即可执行审查逻辑。但如果被审查的 notebook 中包含对 Claude API 的调用示例,运行这些示例代码可能需要 Anthropic API Key。这两者需要区分开:审查行为本身不需要凭证,运行被审查代码可能需要凭证。

最小使用条件

  • 一个支持 Skills 加载的 AI Agent(Claude Code 优先)
  • 待审查的 notebook 文件或 claude-cookbooks 仓库的本地副本
  • 文件读取权限

Skill 安装、使用与卸载教程

一、安装

可以直接复制本页面提供的 Skill 安装指令,粘贴到对应 Agent 或终端执行。如果当前 Agent 支持 Skill 自动安装,通常会自动完成配置。

如果不确定自己的 Agent 如何安装该 Skill,可以直接询问当前 AI Agent:

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

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

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

让 Agent 根据自己的 Skill 加载与管理机制给出对应的安装步骤,通常比手动操作更稳妥。

二、安装后如何使用

安装完成后,该 Skill 会在用户提出与 cookbook 审查相关的任务时被 Agent 加载。适合交给它的任务包括:审查新提交的 notebook、检查已有 notebook 的一致性、识别需要更新的示例内容。

向 Agent 描述需求时,可以自然地引用 Skill 名称并说明具体审查目标:

使用 cookbook-audit,审查我本地 claude-cookbooks 仓库中新增的 notebook 是否符合规范。

使用 cookbook-audit,帮我检查这个 notebook 的代码示例是否使用了最新的 Claude API 调用方式。

使用 cookbook-audit,列出这个 cookbook 文件中说明缺失或过时的地方。

三、卸载

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

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

也可以使用对应 Agent 或 Skill 管理器提供的删除方式,手动移除对应的 Skill 文件或配置条目。

常见问题

cookbook-audit 只能用于审查 claude-cookbooks 仓库吗?

该 Skill 的设计目标是审查 Claude Cookbook 项目中的 notebook,其审查规则和最佳实践判断基于该项目的规范。虽然技术上可以尝试用于其他 notebook 项目,但审查结果的准确性可能会下降,因为规则并不针对通用项目设计。

审查过程中会修改我的文件吗?

取决于 Agent 的配置。如果只授予文件读取权限,审查过程不会修改任何文件。如果允许 Agent 自动应用修复,则可能写入变更。建议先以只读模式运行,确认审查结果后再决定是否应用修改。

是否需要 Anthropic API Key 才能使用?

审查行为本身不需要 API Key。但如果 notebook 中包含需要实际调用 Claude API 的示例代码,且希望在审查中运行这些代码进行验证,则需要配置对应的 API Key。

为什么安装后 Agent 没有识别到这个 Skill?

常见原因包括:Skill 文件未放置在 Agent 预期的目录中、Agent 版本不支持 Skills 加载机制、或安装指令未正确执行。可以先询问当前 Agent 是否正确加载了该 Skill,再根据提示排查。

可以在多个 Agent 中同时安装吗?

通常可以。不同 Agent 的 Skill 目录是独立的,分别安装到各 Agent 的 Skill 目录即可。需要注意各 Agent 的加载机制可能不同,安装方式也可能存在差异。

Skill 更新后需要重新安装吗?

取决于安装方式。如果是从仓库直接引用,更新仓库内容后通常会自动生效;如果是复制到本地目录,则需要重新同步。具体以当前 Agent 和安装方式为准。

Skill 更新日志

版本列表
无版本号
添加协调者模式成本 cookbook:大模型规划,小模型执行 新增 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
暂无评论...