
如何让纯Markdown知识库拥有工程级质量ctf-skills的4套自动化测试与GitHub Pages目录生成实战【免费下载链接】ctf-skillsAgent skills for solving CTF challenges - web exploitation, binary pwn, crypto, reverse engineering, forensics, OSINT, and more项目地址: https://gitcode.com/gh_mirrors/ct/ctf-skills你是否好奇一个几乎只有 Markdown 文件的知识库如何做到工程级质量开源项目ctf-skills给出了完整答案——它用4 套自动化测试守护文档一致性、路由可用性与安全性再用一个GitHub Pages 静态目录生成器让知识库开箱可逛。本文带你完整拆解这套纯 Markdown 也能工程化的质量体系。为什么纯 Markdown 知识库也需要工程级质量大多数文档仓库的质量保障约等于写得通顺而 ctf-skills 收录了 10 个技能分类、200 个技术文档文件见 README.md 中的技能总表任何一处技能目录里新增了一个.md却没被SKILL.md引用 → AI 代理就看不见这个技术技能描述写得模糊 → 代理路由到错误分类解题直接跑偏文档里误贴真实密钥或危险命令 → 整个仓库被污染。这类问题的共同点是内容是人写的但约束必须靠机器守。ctf-skills 的做法是把规则写成可重复执行的测试每次提交都跑一遍。一次提交触发的 4 道质量关卡所有测试统一放在tests/目录配置见 pyproject.tomltestpaths [tests]Python 3.12。#测试套件守护目标1test_skill_frontmatter.py每个SKILL.md的 YAML 元数据合规2test_cross_references.py文件间链接、锚点、技能间引用不断链3test_skill_discoverability.py真实提问能正确路由到对应技能4test_skill_security_auditor.py文档不含密钥、危险命令等安全隐患第 1 关Frontmatter 元数据校验SKILL.md头部是代理发现技能的名片。test_skill_frontmatter.py 会扫描所有*/SKILL.md并检查必填字段齐全name、description、license、compatibility、allowed-toolsname 必须与目录名一致防止目录叫 ctf-web、名片叫 web这类错位allowed-tools白名单校验只允许Bash、Read、Grep等 10 个合法工具名描述必须有意义超过 20 字符且user-invocable: true的技能必须提供argument-hint。规则本身与 CONTRIBUTING.md 中的Frontmatter rules表格一一对应——文档里写的规范测试里逐条落地这正是知识库不腐化的关键。第 2 关交叉引用与锚点校验200 多个 Markdown 文件之间互相引用断链是知识库的头号杀手。test_cross_references.py 覆盖 4 类检查技术文件必须被引用技能目录下的每个.md都必须在SKILL.md中出现否则视为孤儿文档/ctf-*跨技能引用有效提到的技能目录必须真实存在本地链接可达所有text指向的文件必须存在锚点真实存在file.md#heading中的锚点会按 GitHub 规则转换成 slug并核对目标文件中真有该标题。测试内部还处理了工程细节解析前会剥离代码块和行内代码避免把代码样例里的k误判成 Markdown 链接——校验器本身也要懂文档里会有看起来像链接的代码。第 3 关技能可发现性回归测试这是最有意思的一关test_skill_discoverability.py 模拟用户拿真实提问来路由的场景。它只读取核心技能ctf-web、ctf-pwn、ctf-reverse、ctf-misc、solve-challenge的description用停用词过滤 同义词扩展如sqli↔union/blind做评分路由然后断言Flask 网站 JWT SSTI → 必须命中ctf-web堆 UAF tcache 投毒 → 必须命中ctf-pwn模糊的 zip 包提问 → 必须落到分发器solve-challengectf-misc只能当兜底而不能当默认项。描述一旦改得含糊、彼此撞车这条测试会在合入前失败——把AI 能不能看懂你的描述变成了可量化的回归指标。第 4 关安全审计器及其测试安全审计器 scripts/skill_security_auditor.py 扫描每个技能目录测试 test_skill_security_auditor.py 则验证审计器本身判得准不准核心是双向验证该抓的要抓到真实 GitHub token、rm -rf /、curl | sh、fork 炸弹、系统路径chmod 777→ 判 FAIL/CRITICAL不该误报的要放行文档中作为教学示例的占位 XSS payload、exec(id)这类 CTF 验证命令、代码块注释行 → 不误标为高危。审计器内置 CTF 场景白名单$eval模板逃逸、/tmp/权限等和行内豁免标记!-- audit-ok --且豁免对 CRITICAL 级无效——安全红线不允许注释掉。测试用临时目录构造各种迷你技能来跑这些用例确保审计器规则改动后不会退化。GitHub Pages 目录生成器让知识库开箱可逛质量有了还得好逛。scripts/generate_catalog.py 是一个静态目录生成器专为 GitHub Pages 设计流程非常直观发现glob(*/SKILL.md)找出全部技能目录解析读取每个SKILL.md的 frontmatterdescription直接来自元数据所以第 1 关的校验保证了这里拿到的都是合格内容统计清点每个分类下的技术文件数汇总成 Categories / Technique Files 双指标渲染生成单文件_site/index.html——深色主题卡片式布局每个分类一张卡带专属配色如ctf-web蓝、ctf-pwn橙、图标与文件数徽章卡片内每个技术文件都是可点击链接。仓库地址还能自动从git remote推断含 SSH→HTTPS 归一化CI 无 remote 时优雅回退到默认值——典型的小脚本也写好降级路径的工程习惯。这套机制的妙处在于目录页面永远与仓库内容同步。新增一个技术文件下一次的目录构建自动出现无需人工维护索引。一键运行本地验证全套测试python -m pytest tests/ -v # 全部 4 套测试 python -m pytest tests/test_skill_frontmatter.py -v # 单跑元数据校验 python3 scripts/skill_security_auditor.py ctf-web --strict --json # 对单个技能做安全审计 python3 scripts/generate_catalog.py # 本地生成 _site/index.html 预览目录页配合 CONTRIBUTING.md 中的 pre-commit 钩子trailing-whitespace、check-yaml、markdownlint-cli2 等形成提交前本地拦一层 合入前测试再拦一层的双保险。总结Markdown 知识库的工程化公式ctf-skills 的实践可以浓缩成一条公式可机读的元数据 链接/路由的回归测试 安全审计 自动生成目录 纯 Markdown 的工程级质量它对任何文档型、知识库型仓库都通用把写得对变成测试断言把写得好不好变成路由准确率指标把目录会不会过期交给生成器——知识库就能在持续贡献中保持不腐化。【免费下载链接】ctf-skillsAgent skills for solving CTF challenges - web exploitation, binary pwn, crypto, reverse engineering, forensics, OSINT, and more项目地址: https://gitcode.com/gh_mirrors/ct/ctf-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考