rogerchappel/runbooklint

GitHub: rogerchappel/runbooklint

RunbookLint 是一款本地优先的 Markdown 运维手册静态检查工具,用于在 CI 和本地环境中自动发现 runbook 文档里缺失的关键章节、危险命令和未定义占位符等问题。

Stars: 0 | Forks: 0

# RunbookLint RunbookLint 是一款针对操作 runbook 的本地优先 Markdown linter。它通过标记缺失的安全章节、危险命令、未定义的占位符以及含糊不清的操作语言,将发布、故障、支持和 agent 交接文档转化为可检查的流程。 它从不执行命令,也从不调用托管 API。 ## 快速开始 ``` npm install npm run build node dist/cli.js check fixtures/clean-release.md ``` 发布后,全局安装 CLI 并在任何仓库中运行相同的检查: ``` npm install -g runbooklint runbooklint check docs --fail-on warning ``` 初始化项目策略: ``` node dist/cli.js init --preset oss-release ``` 检查目录,并在出现警告或错误时让 CI 失败: ``` node dist/cli.js check docs --format json --fail-on warning ``` ## CLI ``` runbooklint check [paths...] [--format markdown|json] [--fail-on info|warning|error] [--output file] [--policy file] runbooklint init [--preset oss-release|incident|agent-handoff] [--print] [--force] ``` ### 报告 Markdown 是默认的报告格式。JSON 格式稳定且具有确定性,适合自动化处理。 ``` node dist/cli.js check fixtures --format markdown --output reports/runbooklint.md node dist/cli.js check fixtures --format json --output reports/runbooklint.json ``` ## 检查内容 - 必需的章节,例如目的、范围、前置条件、流程、验证和回滚。 - 所有者或交接联系人。 - 环境范围。 - 包含危险模式的 Shell 代码块,例如 `rm -rf`、`sudo`、`curl | bash`、强制推送以及影响生产环境的命令。 - TODO/TBD/FIXME 占位符。 - 未定义的 `{{VARIABLE}}` 和 `${VARIABLE}` 占位符。 - 由策略配置的禁用模糊短语。 ## 策略配置 除非提供了 `--policy`,否则 RunbookLint 会从当前目录加载 `.runbooklint.json`。完整的策略参考请参阅 [docs/POLICY.md](docs/POLICY.md)。 ``` { "requiredHeadings": ["purpose", "scope", "prerequisites", "procedure", "validation", "rollback"], "ownerHeadings": ["owner", "contacts"], "environmentHeadings": ["scope", "environment"], "requiredVariableDefinitions": ["OWNER", "TARGET_ENV"], "allowMissingOwner": false } ``` 使用以下命令生成预设策略: ``` node dist/cli.js init --preset oss-release --print node dist/cli.js init --preset incident --print node dist/cli.js init --preset agent-handoff --print ``` ## CI 用法 ``` - run: npm ci - run: npm test - run: npm run check - run: npm run build - run: node dist/cli.js check docs --fail-on warning ``` ## 安全模型 RunbookLint 是保守的。它解析 Markdown 并报告可能的问题;它不执行 runbook 命令、修改基础设施、评估 shell 扩展或联系外部服务。请将检查结果视为审查提示,而不是对人类操作判断的替代。 ## 局限性 - Markdown 解析是刻意保持轻量级的,并针对 runbook 进行了优化,而不是为了处理每一个 CommonMark 边缘情况。 - 风险规则基于模式匹配,可能会产生误报或漏报。 - `.gitignore` 支持涵盖了常见的确定性路径忽略,但不支持所有高级 gitignore 功能。 - 行内抑制和 SARIF 输出已列入计划,但尚未实现。 ## 开发 ``` npm install npm test npm run check npm run build npm run smoke npm run package:smoke npm run release:check bash scripts/validate.sh ``` `release:check` 会执行已编译的 CLI、fixture 测试、冒烟测试脚本和预演包内容,以便在打标签之前对发布候选版本进行审查。 ## 安全 请参阅 [SECURITY.md](SECURITY.md)。请不要在 bug 报告中包含机密信息或私有的故障数据。 ## 许可证 MIT
标签:GNU通用公共许可证, Markdown, MITM代理, Node.js, 代码规范, 文档检查, 文档结构分析, 暗色界面, 自动化攻击, 运维, 静态检查