关于 auditing-pre-release-security
用于对比任意两个 Git 引用并进行发布前安全审查的技能,面向负责版本发布的开发者。它涵盖代码差异、依赖、安装包行为及 CI/CD 风险,并要求生成中文报告。
主要功能
- 01比较标签、分支或提交
- 02审查代码与依赖变更
- 03检查安装包新增行为
- 04评估 CI/CD 与构建风险
- 05生成带引用信息的中文报告
适用场景
- 01检查候选版本与基线间的安全回归
- 02核查依赖更新及锁文件确定性
- 03审查新增依赖的安装脚本与代码
- 04发布前检查工作流和构建配置
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ onekeyhq/ app-monorepo --skill auditing-pre-release-security安装后在 Claude Code 中输入/auditing-pre-release-security确认已加载。
详细介绍
发布前安全审计(任意两个 Git 引用之间)
此技能用于比较任意两个 Git 引用(标签/分支/提交 SHA),并审计:
- 源代码差异中的安全回归
- 依赖项变更(直接依赖+传递依赖)和锁文件确定性
node_modules中新引入的包行为.github/workflows中的 CI/CD 工作流风险及构建配置(Expo/EAS)
输出为一份中文 Markdown 报告,并使用包含引用的唯一标题和文件名,以避免覆盖。
0)必须:确认审计范围(BASE_REF、TARGET_REF)
引用规则
- 接受:标签/分支/提交 SHA
BASE_REF= 起点,TARGET_REF= 终点(候选发布版本)
如果用户未明确提供引用
开始任何工作前,只询问一次:
要比较哪两个 Git 引用?(例如
v5.19.0→release/v5.20.0,或main→feature/xxx)
如果只提供了一个引用
询问缺少的引用。除非用户明确说明以下内容,否则不要假设默认值:
- “latest tag → HEAD”
- 或提供等效指示。
1)输出要求(硬性约束)
- 报告语言:中文
- 报告文件名必须包含引用,以避免冲突:
security-audit__${BASE_REF_SAFE}__to__${TARGET_REF_SAFE}.md- 为确保文件系统安全,
BASE_REF_SAFE/TARGET_REF_SAFE必须将/替换为__(或-)。
- 报告标题必须包含引用:
# 安全预审报告(${BASE_REF} → ${TARGET_REF})
- 证据必须可追溯:文件路径+行号(如可行)+简短片段。
2)安全规则(必须遵守)
- 切勿打印或粘贴机密信息:助记词/种子短语、私钥、签名载荷、API 密钥、令牌、Cookie、会话 ID。
- 如果命令输出可能包含机密信息(环境变量转储、日志),写入报告前先进行脱敏。
- 优先使用简短摘录;不要粘贴大型文件内容。
3)执行检查清单
步骤 A — 验证引用并收集上下文
- 验证两个引用均存在:
git rev-parse --verify "${BASE_REF}^{commit}"git rev-parse --verify "${TARGET_REF}^{commit}"
- 记录:
- BASE_SHA、TARGET_SHA
- 工作树是否干净?
git status --porcelain
- 列出变更文件:
git diff --name-status "${BASE_REF}..${TARGET_REF}"
步骤 B — 收集关键差异
重点关注:
- 源代码:
**/*.{js,ts,tsx} - 依赖项:
**/package.json、yarn.lock - CI:
.github/workflows/** - Expo/EAS 配置:
eas.json、app.json、app.config.*、构建脚本
步骤 C — 依赖项差异(直接依赖)
- 对每个变更的
package.json,计算:- 新增/移除/更新的依赖项(包含工作区路径)
- 版本范围策略检查:
- 将
*/latest标记为高风险 - 将
^/~标记为中风险(解释这对发布确定性的影响)
- 将
- 如果依赖项有变更,但
yarn.lock未变更,则标记为高风险。
步骤 D — 锁文件确定性(尽力而为)
- 检测 Yarn 版本:
yarn -v - 尝试以下一项:
- Yarn Berry:
yarn install --immutable - Yarn Classic:
yarn install --frozen-lockfile
- Yarn Berry:
- 记录异常:
resolutions、patches、非注册表来源、意外下载。
步骤 E — 已知漏洞扫描(尽力而为)
-
yarn audit(如可用) - 使用
osv-scanner扫描yarn.lock(如可用) - 如果缺少工具,注明“未运行+原因”。
步骤 F — 新增依赖深度检查(node_modules)
对于每个新增的直接依赖:
- 检查
<pkg>/package.json:preinstall、install、postinstall脚本- 入口点(
main、module、exports) - 二进制文件/原生构件(
bin/、.node)
- 在其已安装代码中进行关键词扫描(不区分大小写):
- 敏感信息:
privateKey|mnemonic|seed|keystore|passphrase - 存储:
localStorage|indexedDB|AsyncStorage|keychain|keystore - 网络:
fetch|axios|XMLHttpRequest|http|https|WebSocket|ws - 动态执行:
eval|new Function|child_process|spawn|exec - 安装钩子:
preinstall|install|postinstall
- 敏感信息:
- 如果有匹配项:包含路径 + 行号 + 简短代码片段,并说明其行为符合预期还是可疑。
- 评定风险等级:低 / 中 / 高。
步骤 G — 源码差异安全审查(AI 推理步骤)
在 ${BASE_REF}..${TARGET_REF} 差异中,优先检查:
- 签名流程/密钥处理/助记词
- 网络层/RPC/遥测
- 存储层(本地/安全存储)
- 日志记录/分析/错误报告 输出:可疑变更列表(每项包含摘要、影响、证据摘录)。
步骤 H — CI/CD 与构建流水线风险
检查 .github/workflows/** 和构建配置:
- 标记
uses: ...@latest(高风险) - 标记未固定到 SHA 的浮动标签(中风险,注明风险)
- 检查
permissions:是否授予过宽的权限范围 - 标记远程脚本执行模式(curl|bash、远程下载)
- 说明安装安全性(
--ignore-scripts等) - Expo/EAS:标记会下载远程代码、运行任意脚本或将环境变量泄露到日志中的钩子
4) 报告模板(必须遵循;中文输出)
将报告写入:
security-audit__${BASE_REF_SAFE}__to__${TARGET_REF_SAFE}.md
评论
支持 Markdown