with one click
运维手册生成器
npx skills add https://github.com/Fantasia1999/claude-skills-zh --skill runbook-generatorCopy and paste this command into Claude Code to install the skill
运维手册生成器
npx skills add https://github.com/Fantasia1999/claude-skills-zh --skill runbook-generatorCopy and paste this command into Claude Code to install the skill
合同与提案撰写助手
监控客户健康状况、预测流失风险,并利用 SaaS 客户成功的加权评分模型识别增购机会。适用于分析客户账户、审查留存指标、对风险客户评分,或当用户提到流失、客户健康分、追加销售机会、增购收入、留存分析或客户分析时。运行三个 Python CLI 工具,为企业、中端市场和中小企业 (SMB) 细分市场生成确定性的健康评分、流失风险分级和优先增购建议。
分析销售管道健康状况、收入预测准确性以及 SaaS 收入优化的 GTM 效率指标。适用于分析销售管道覆盖率、预测收入、评估进入市场表现、审查销售指标、评估管道分析、使用 MAPE 跟踪预测准确性、计算 GTM 效率,或衡量 SaaS 团队的销售效率和单位经济效益。
分析 RFP/RFI 响应中的覆盖范围差距,构建竞争性功能对比矩阵,并为售前工程策划概念验证 (POC) 互动。适用于响应 RFP、投标或提案请求;与竞争对手进行产品功能对比;策划或为客户 POC 或销售演示评分;准备技术提案;或执行胜负因素竞争分析。处理描述为 'RFP response'、'bid response'、'proposal response'、'competitor comparison'、'feature matrix'、'POC planning'、'sales demo prep' 或 'pre-sales engineering' 的任务。
4 个生产级业务与增长技能:包含健康评分和流失预测的客户成功经理,包含 RFP 分析的销售工程师,包含管线和 GTM 指标的收入运营,以及合同与提案撰写。内置 Python 工具(全部仅限标准库)。适用于 Claude Code、Codex CLI 和 OpenClaw。
C-suite 智能体团队的智能体间通信协议。定义了调用语法、循环预防、隔离规则和响应格式。当 C-suite 智能体需要相互查询、协调跨职能分析或运行包含多个智能体角色的董事会会议时使用。
| name | runbook-generator |
| description | 运维手册生成器 |
等级: 强大 (POWERFUL)
类别: 工程
领域: DevOps / 站点可靠性工程 (SRE)
分析代码库并生成生产级的运维手册 (Runbooks)。自动检测你的技术栈(CI/CD、数据库、托管、容器),然后生成包含复制粘贴命令、验证检查、回滚流程、升级路径和时间预估的分步手册。通过与配置文件修改日期关联的过期检测,保持手册内容的时效性。
适用于:
跳过场景:
给定仓库后,在编写任何手册内容前先扫描以下信号:
# CI/CD
ls .github/workflows/ → GitHub Actions
ls .gitlab-ci.yml → GitLab CI
ls Jenkinsfile → Jenkins
ls .circleci/ → CircleCI
ls bitbucket-pipelines.yml → Bitbucket Pipelines
# 数据库
grep -r "postgresql\|postgres\|pg" package.json pyproject.toml → PostgreSQL
grep -r "mysql\|mariadb" package.json → MySQL
grep -r "mongodb\|mongoose" package.json → MongoDB
grep -r "redis" package.json → Redis
ls prisma/schema.prisma → Prisma ORM (检查 provider 字段)
ls drizzle.config.* → Drizzle ORM
# 托管
ls vercel.json → Vercel
ls railway.toml → Railway
ls fly.toml → Fly.io
ls .ebextensions/ → AWS Elastic Beanstalk
ls terraform/ ls *.tf → 自建 AWS/GCP/Azure (检查 provider)
ls kubernetes/ ls k8s/ → Kubernetes
ls docker-compose.yml → Docker Compose
# 框架
ls next.config.* → Next.js
ls nuxt.config.* → Nuxt
ls svelte.config.* → SvelteKit
cat package.json | jq '.scripts' → 检查 build/start 命令
将检测到的技术栈映射到手册模板。一个 Next.js + PostgreSQL + Vercel + GitHub Actions 的仓库需要:
# 部署手册 — [应用名称]
**技术栈:** Next.js 14 + PostgreSQL 15 + Vercel
**最后验证日期:** 2025-03-01
**源配置:** vercel.json (修改时间: git log -1 --format=%ci -- vercel.json)
**负责人:** 平台团队
**预计总耗时:** 15–25 分钟
---
## 部署前检查清单
- [ ] 所有 PR 已合并到 main
- [ ] main 分支 CI 通过 (GitHub Actions 绿色)
- [ ] 数据库迁移已在分段环境测试
- [ ] 回滚计划已确认
## 步骤
### 步骤 1 — 在本地运行 CI 检查 (3 分钟)
```bash
pnpm test
pnpm lint
pnpm build
✅ 预期:全部通过,0 错误。.next/ 目录下有构建产物。
# 先在分段环境执行
DATABASE_URL=$STAGING_DATABASE_URL npx prisma migrate deploy
✅ 预期:All migrations have been successfully applied.
# 验证迁移已应用
psql $STAGING_DATABASE_URL -c "\d" | grep -i migration
✅ 预期:迁移表显示今天日期的条目。
git push origin main
# 或者手动触发:
vercel --prod
✅ 预期:Vercel 控制台显示部署中。URL 格式为:
https://app-name-<hash>-team.vercel.app
# 健康检查
curl -sf https://your-app.vercel.app/api/health | jq .
# 核心路径
curl -sf https://your-app.vercel.app/api/users/me \
-H "Authorization: Bearer $TEST_TOKEN" | jq '.id'
✅ 预期:health 返回 {"status":"ok","db":"connected"}。Users API 返回有效的 ID。
vercel logs --since=10mSELECT count(*) FROM pg_stat_activity; (< 80% of max_connections)如果冒烟测试失败或错误率激增:
# 通过 Vercel 即时回滚(首选 — < 30 秒)
vercel rollback [previous-deployment-url]
# 数据库回滚(仅当迁移已应用时)
DATABASE_URL=$PROD_DATABASE_URL npx prisma migrate reset --skip-seed
# 警告:这会重置到上一次迁移。请先确认对数据的影响。
✅ 回滚后预期:上一个部署 URL 变为活跃状态。通过冒烟测试验证。
---
### 2. 事故响应手册 (Incident Response Runbook)
```markdown
# 事故响应手册
**严重程度:** P1 (宕机), P2 (性能下降), P3 (轻微问题)
**预计总耗时:** P1: 30–60 分钟, P2: 1–4 小时
## 第一阶段 — 分诊/分类 (5 分钟)
### 确认事故
```bash
# 应用有响应吗?
curl -sw "%{http_code}" https://your-app.vercel.app/api/health -o /dev/null
# 检查 Vercel 函数错误(过去 15 分钟)
vercel logs --since=15m | grep -i "error\|exception\|5[0-9][0-9]"
✅ 200 = 应用正常。5xx 或超时 = 事故确认。
宣布严重程度:
# 最近的部署 — 刚刚发布了什么吗?
vercel ls --limit=5
# 数据库健康状况
psql $DATABASE_URL -c "SELECT pid, state, wait_event, query FROM pg_stat_activity WHERE state != 'idle' LIMIT 20;"
# 慢查询 (> 30 秒)
psql $DATABASE_URL -c "SELECT pid, now() - pg_stat_activity.query_start AS duration, query FROM pg_stat_activity WHERE state = 'active' AND now() - pg_stat_activity.query_start > interval '30 seconds';"
# 连接池饱和度
psql $DATABASE_URL -c "SELECT count(*), max_conn FROM pg_stat_activity, (SELECT setting::int AS max_conn FROM pg_settings WHERE name='max_connections') t GROUP BY max_conn;"
诊断决策树:
# 杀掉失控的数据库查询
psql $DATABASE_URL -c "SELECT pg_terminate_backend(<pid>);"
# 扩容数据库连接 (Supabase/Neon — 调整连接池大小)
# Vercel → Settings → Environment Variables → 更新 DATABASE_POOL_MAX
# 启用维护模式(如果你有功能开关/Feature Flag)
vercel env add MAINTENANCE_MODE true production
vercel --prod # 带着开关重新部署
事故解决后,在 24 小时内:
事后分析模板: docs/postmortems/YYYY-MM-DD-incident-title.md
| 级别 | 人员 | 何时 | 联系方式 |
|---|---|---|---|
| L1 | 值班工程师 | 永远是第一位 | PagerDuty 轮换 |
| L2 | 平台负责人 | 数据库问题、需要回滚 | Slack @platform-lead |
| L3 | CTO/工程副总裁 | P1 > 30 分钟, 数据丢失 | 电话 + PagerDuty |
---
### 3. 数据库维护手册 (Database Maintenance Runbook)
```markdown
# 数据库维护手册 — PostgreSQL
**周期:** 每周清理/Vacuum (自动),每月人工审阅
## 备份
```bash
# 全量备份
pg_dump $DATABASE_URL \
--format=custom \
--compress=9 \
--file="backup-$(date +%Y%m%d-%H%M%S).dump"
✅ 预期:文件已创建,大小 > 0。pg_restore --list backup.dump | head -20 显示表信息。
验证备份可还原(每月测试):
pg_restore --dbname=$STAGING_DATABASE_URL backup.dump
psql $STAGING_DATABASE_URL -c "SELECT count(*) FROM users;"
✅ 预期:行数与生产环境匹配。
# 务必先在分段环境测试
DATABASE_URL=$STAGING_DATABASE_URL npx prisma migrate deploy
# 验证无误后:
DATABASE_URL=$PROD_DATABASE_URL npx prisma migrate deploy
✅ 预期:All migrations have been successfully applied.
⚠️ 对于大表迁移(> 1M 行),使用 pg_repack 或单独添加带 DEFAULT 的列以避免表锁。
# 在决定前检查膨胀情况
psql $DATABASE_URL -c "
SELECT schemaname, tablename,
pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) AS total_size,
n_dead_tup, n_live_tup,
ROUND(n_dead_tup::numeric / NULLIF(n_live_tup + n_dead_tup, 0) * 100, 1) AS dead_ratio
FROM pg_stat_user_tables
ORDER BY n_dead_tup DESC LIMIT 10;"
# 对高膨胀表进行清理(非阻塞)
psql $DATABASE_URL -c "VACUUM ANALYZE users;"
psql $DATABASE_URL -c "VACUUM ANALYZE events;"
# 重建索引(使用 CONCURRENTLY 避免锁表)
psql $DATABASE_URL -c "REINDEX INDEX CONCURRENTLY users_email_idx;"
✅ 预期:清理后 dead_ratio 降至 5% 以下。
---
## 过期检测 (Staleness Detection)
在每份手册顶部添加过期检查页眉:
```markdown
## 过期检查
本手册引用了以下配置文件。如果自“最后验证日期”以来它们发生了更改,请审阅受影响的步骤。
| 配置文件 | 最后修改时间 | 影响步骤 |
|-------------|--------------|---------------|
| vercel.json | `git log -1 --format=%ci -- vercel.json` | 步骤 3, 回滚 |
| prisma/schema.prisma | `git log -1 --format=%ci -- prisma/schema.prisma` | 步骤 2, 数据库维护 |
| .github/workflows/deploy.yml | `git log -1 --format=%ci -- .github/workflows/deploy.yml` | 步骤 1, 步骤 3 |
| docker-compose.yml | `git log -1 --format=%ci -- docker-compose.yml` | 所有扩容步骤 |
自动化: 添加一个每周运行一次的 CI 任务,如果任何引用文件的修改时间晚于手册的“最后验证日期”,则在该手册文档上发表评论提醒。
在生产环境信任手册之前,先在分段环境验证每个步骤:
# 1. 创建分段环境镜像
vercel env pull .env.staging
source .env.staging
# 2. 使用分段环境凭据运行每个步骤
# 将所有 $DATABASE_URL 替换为 $STAGING_DATABASE_URL
# 将所有生产环境 URL 替换为分段环境 URL
# 3. 验证预期输出是否匹配
# 记录任何差异并更新手册
# 4. 记录每个步骤的时间 — 更新手册中的预计耗时
time npx prisma migrate deploy
每季度安排 1 小时的审阅时间:
| 坑点 | 解决方法 |
|---|---|
| 命令需要手动复制动态值 | 使用环境变量 — 使用 $DATABASE_URL 而非 postgres://user:pass@host/db |
| 未指定预期输出 | 在每个验证步骤后添加带有确切预期字符串的 ✅ |
| 缺失回滚步骤 | 每个破坏性步骤都需要有对应的撤销操作 |
| 手册从不测试 | 在团队日历中安排每季度的分段环境演练 |
| L3 升级联系人是前任 CTO | 每季度审阅一次联系信息 |
| 迁移手册未提及表锁 | 明确指出大表操作的锁风险 |
docs/runbooks/,随代码进行版本管理。