漏洞赏金技能怎么写SKILL.md结构、Lint规则与发布指南完整教程【免费下载链接】Claude-BugHunterA Claude Code skill bundle for bug hunting and external red-team work - 82 skills, 15 slash commands, 681 disclosed-report patterns curated across 24 core vulnerability classes, plus enterprise identity infrastructure attack matrices.项目地址: https://gitcode.com/gh_mirrors/cl/Claude-BugHunterClaude-BugHunter 是一个面向漏洞赏金与外部红队的 Claude Code 技能包83 个技能、15 个斜杠命令、681 份公开漏洞报告提炼出的攻击模式覆盖 24 类核心漏洞。想为它贡献自己的第一个漏洞赏金技能本文将带你走完完整流程看懂 SKILL.md 的 frontmatter 结构、吃透 scripts/lint_skills.py 的 Lint 规则并按 CONTRIBUTING.md 的发布指南顺利提交你的技能。先搞懂技能是什么一个目录 一份 SKILL.md在 Claude-BugHunter 中一个技能 一个目录 目录下的 SKILL.md 文件放在 skills/ 下组成说明目录名技能标识如hunt-csrf只允许小写字母、数字和连字符SKILL.md技能的唯一入口含 frontmatter 元数据 正文内容references/可选超大内容拆分的子目录如 offensive-osint/references/ 就有 15 个按需加载的参考文件技能靠description 中的触发关键词自动加载——用户用自然语言描述测试目标匹配的技能就会被 Claude 加载无需手动指名。所以 description 写得怎么样直接决定技能活不活得起来。SKILL.md 结构解析frontmatter 五要素以 hunt-csrf 为例一个标准技能文件的头部长这样--- name: hunt-csrf description: Hunting skill for csrf vulnerabilities. Built from 15 public bug bounty reports... sources: github, hackerone_public, bugcrowd_public report_count: 18 ---五个关键字段逐一拆解1. name目录同名 小写连字符必须匹配^[a-z0-9-]$小写字母、数字、连字符必须与目录名完全一致skills/hunt-csrf/里的 name 就不能叫hunt-CSRF2. description触发面≤1024 字符这是最关键的字段。写法规则是把触发关键词织进自然语句✅ 好Hunt CORS Misconfiguration — origin-reflection with credentials, null-origin trust, subdomain-regex bypass... ❌ 差CORS 漏洞检测太短触发面弱会被 Lint 警告经验值description 低于 40 字符会收到weak trigger surface警告超过 1024 字符则是硬错误Codex 等严格解析器会直接拒绝。3. sources溯源声明必填声明技能内容的来源如hackerone_public、community、public_research。这是grounding机制的一部分——每个技能都必须交代出处。4. report_count仅 hunt-* 技能必填以hunt-开头的技能从公开披露报告提炼而来必须声明一个非负整数表示该技能基于多少份报告构建。如果技能是模式库而非报告语料填0即可见 docs/skills.md 中各技能的 Reports 列。5. 正文约 500 行以内目标 1500–2000 词上限约 500 行一个技能只做一件事单一职责偏好具体可运行的示例而非抽象描述超出篇幅拆到references/子目录按需加载交叉引用互补技能说明谁和谁组合使用Lint 规则全解你的技能会被机器检查什么提交前scripts/lint_skills.py 会对每个 SKILL.md 做机器化检查纯标准库实现零依赖python3 scripts/lint_skills.py # 检查全部技能 python3 scripts/lint_skills.py skills/hunt-xss # 只检查指定目录类别规则不通过的后果结构frontmatter 存在且被---正确闭合❌ 错误结构name合规且与目录同名❌ 错误结构description≤ 1024 字符❌ 错误3 个历史聚合技能除外结构正文 ≤ 500 行⚠️ 警告安全命中客户标识符 denylist按 1–2 词片段哈希比对❌ 错误安全真实密钥扫描AWS Key、私钥块、JWT、Slack/Google/GitHub Token❌ 错误兼容frontmatter 值含:却未加引号严格 YAML 解析器会拒绝❌ 错误⚠️特别提醒description 里如果写 Use when: xxx 这种含冒号的值记得用双引号包裹否则在 Codex 等严格解析器下会解析失败。退出码0代表干净1代表至少一个错误警告不阻断构建。发布指南从提议到合入的四步流程按 CONTRIBUTING.md 的流程新技能必须先提 issue 再动手第 1 步 · 提 issue 描述技能写清楚技能名、目的、填补什么空白。等维护者确认方向后再写完整 SKILL.md。第 2 步 · 编写技能对照上文的质量标准单一职责、真实示例、references/拆分、交叉引用互补技能。第 3 步 · 更新索引与文档在 README.md 和 USAGE.md 的决策树中提及新技能跑一下 scripts/gen_skill_index.py 重新生成 cbh/data/skill_index.json附一个技能被正确触发的实操示例第 4 步 · 本地烟雾测试仓库没有自动化测试套件按手册流程验证把技能复制到~/.claude/skills/本地安装开一个新的 Claude 会话用 description 里的关键词提问验证技能被正确触发对hunt-*技能额外验证不指名技能时能否自动触发红线与常见拒稿原因CONTRIBUTING.md 明确列出了不收的内容提前避坑 针对特定目标的真实利用 payload——技能必须抽象化、按漏洞类别组织 真实客户/项目标识符——仓库铁律由 scripts/scan_identifiers.py 扫描全部跟踪文本文件强制执行denylist 缺失时直接 fail closed 可识别个人的渗透数据——目标名、账号 UID、赏金金额一律匿名化 非 MIT 许可的依赖 对 vendored 上游技能的大改应提交回上游仓库多平台兼容性写一次处处加载好消息是技能格式跨平台统一。同一份 SKILL.md 可被 Claude Code、OpenCode、Codex CLI、Hermes Agent、Google AntiGravity 加载frontmatter 要求完全一致name小写连字符 ≤64、description≤1024Lint 规则已在各 harness 间做了统一强制无需按平台做技能转换——细节见 docs/multi-harness.md。总结一张清单带走 目录名 name 小写连字符description 40–1024 字符关键词织入自然语句含:的值加双引号声明sources:hunt-*技能声明整数report_count:正文 ≤500 行超出拆references/本地跑python3 scripts/lint_skills.py零错误例子全部匿名化无真实客户标识符、无真实密钥本地安装 新会话触发测试通过issue 先行PR 附 README/USAGE 提及与触发示例准备好后你的第一个漏洞赏金技能就可以出发了【免费下载链接】Claude-BugHunterA Claude Code skill bundle for bug hunting and external red-team work - 82 skills, 15 slash commands, 681 disclosed-report patterns curated across 24 core vulnerability classes, plus enterprise identity infrastructure attack matrices.项目地址: https://gitcode.com/gh_mirrors/cl/Claude-BugHunter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
