ronalships/claude-devops-skill

GitHub: ronalships/claude-devops-skill

为 Claude Code 注入生产级 DevOps 默认实践的技能插件,让 AI 生成的基础设施代码具备资深工程师的经验直觉。

Stars: 0 | Forks: 0

# claude-devops-skill

claude-devops-skill in action

安装 · 功能介绍 · 覆盖范围 · 设计理念 · 参与贡献

Claude Code 非常擅长编写代码。但基础设施代码有一种特殊的失败模式:它可能在**技术上完全正确,却缺失了任何资深工程师避免凌晨 3 点被呼叫的直觉**。比如没有 PDB 的 Deployment,生产环境中的 `:latest` 标签,意外公开的 S3 存储桶,或者在 CI pipeline 中使用长期的 AWS 访问密钥。 这个技能就是为了解决这个问题。它将经验丰富的 DevOps 工程师不假思索应用的最佳默认实践编码起来,并将其注入到每一个涉及基础设施的 Claude Code 会话中。 ## 功能介绍 当 Claude Code 检测到您正在处理基础设施——Terraform、Kubernetes manifests、Dockerfiles、CI/CD pipelines、云资源、IAM 策略、可观测性配置时,此技能会自动触发并应用生产级的默认配置: - ✅ 锁定版本,不使用浮动标签 - ✅ 默认最小权限 IAM - ✅ 每个 Deployment 都配置 PodDisruptionBudgets - ✅ 静态和传输中数据加密 - ✅ 带有 trace 关联的结构化日志 - ✅ 针对实际工作负载调整 Resource limits,而不是复制粘贴默认值 - ✅ 内建可观测性,而不是事后补充 - ✅ 成本感知模式(合理调整大小、生命周期策略、在安全前提下使用 spot 实例) - ✅ 可逆、可审计、可重现 并且它会在生成高风险代码之前主动标记出反模式: - 🚫 公开的 S3 存储桶,对 `0.0.0.0/0` 开放的 security groups - 🚫 单副本的生产环境 Deployments - 🚫 `:latest` 镜像标签 - 🚫 CI 中长期有效的 AWS 访问密钥 - 🚫 缺失 readiness probes - 🚫 GitHub workflows 中浮动的 action 版本(供应链风险) - 🚫 特权 containers - 🚫 CPU limits(会导致比原问题更严重的 throttling) ## 安装说明 ### 选项 A — Claude Code(推荐) ``` # 克隆到你的 Claude Code skills 目录中 git clone https://github.com/ronalships/claude-devops-skill ~/.claude/skills/devops-best-practices ``` Claude Code 会自动发现此目录中的技能。无需重启。 ### 选项 B — 项目本地 如果您希望将技能范围限制在单个项目中: ``` mkdir -p .claude/skills git clone https://github.com/ronalships/claude-devops-skill .claude/skills/devops-best-practices ``` 然后将 `.claude/skills/` 提交到您的代码仓库中,让整个团队都能受益。 ### 选项 C — Curl 安装 ``` mkdir -p ~/.claude/skills/devops-best-practices curl -fsSL https://raw.githubusercontent.com/ronalships/claude-devops-skill/main/SKILL.md \ -o ~/.claude/skills/devops-best-practices/SKILL.md ``` ## 覆盖范围 | 领域 | 覆盖内容 | |---|---| | **Terraform** | Module 结构、状态管理、变量规范、命名约定、provider 版本控制、drift 预防 | | **Kubernetes** | 工作负载默认值(probes、security contexts、resource limits)、PDBs、NetworkPolicies、HPAs、namespace 规范、cluster 组件 | | **CI/CD** | GitHub Actions 安全性、使用 OIDC 替代长期密钥、action 版本锁定、secret 处理、部署门控、回滚策略 | | **Docker** | 多阶段构建、distroless 基础镜像、非 root containers、镜像扫描、layer 缓存、签名 | | **云安全** | 最小权限 IAM、网络分段、全面使用 TLS、secret 管理器、加密默认值、MFA、审计日志 | | **可观测性** | 结构化日志、Prometheus metrics、OpenTelemetry traces、基于 SLO 的告警、runbook 规范 | | **成本** | 合理调整大小、Reserved Instances 与 Spot 策略、存储生命周期、避免网络成本、成本分配标签 | | **灾难恢复** | 备份策略、RPO/RTO 定义、恢复测试、runbook 结构、混沌工程 | ## 设计理念 这个技能是**具有强烈主观倾向的**。其他有效的方法同样存在。这里的选择是为了防止在真实生产环境中对团队造成最频繁伤害的失败模式。 六项指导原则: 1. **安全性优先于便利性。** 一个稍微复杂的 UX 只要能防止生产事故,那就是胜出的。 2. **默认遵循最小权限。** 从零权限开始,仅添加工作负载明确需要的权限。 3. **让失败模式足够显著。** 隐性故障会摧毁信任。 4. **成本是一项非功能性需求。** 生成的 infra 如果花费了超出预期 10 倍的成本,那就是一个 bug。 5. **可重现胜过巧妙。** 如果团队成员不能在 30 分钟内从代码仓库中重新创建此环境,那么设计就是错误的。 6. **在代码中记录权衡。** 如果做出了一个非显而易见的选择,请留下注释解释原因。 当您的上下文有正当理由偏离默认设置时,请告诉 Claude——该技能明确支持覆盖(overrides)。默认值的存在是为了防止常见的错误,而不是为了压制合理的、基于特定上下文的决策。 ## 示例 **未使用此技能:** ``` # 当你说“give me a Deployment for my web app”时,Claude 会生成此项 apiVersion: apps/v1 kind: Deployment spec: replicas: 1 template: spec: containers: - name: app image: myapp:latest ``` **使用此技能:** ``` # 生产环境检查清单: # [ ] 验证 resource requests/limits 是否与实际 workload profile 匹配 # [ ] 确认应用中存在 liveness/readiness probe 端点 # [ ] 应用 NetworkPolicy(单独文件) # [ ] 配置 HorizontalPodAutoscaler(单独文件) # [ ] 设置 ServiceMonitor 用于 Prometheus scraping apiVersion: apps/v1 kind: Deployment spec: replicas: 3 template: spec: securityContext: runAsNonRoot: true runAsUser: 65534 fsGroup: 65534 seccompProfile: type: RuntimeDefault containers: - name: app image: registry.example.com/myapp:sha-abc123 imagePullPolicy: IfNotPresent securityContext: allowPrivilegeEscalation: false readOnlyRootFilesystem: true capabilities: drop: ["ALL"] resources: requests: cpu: 100m memory: 128Mi limits: memory: 256Mi # no CPU limit — throttling is worse than over-use livenessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 30 readinessProbe: httpGet: path: /readyz port: 8080 --- # 进行安全的滚动更新和节点排空时需要 PDB apiVersion: policy/v1 kind: PodDisruptionBudget spec: minAvailable: 2 selector: matchLabels: app: myapp ``` 相同的任务。不同的结果。这就是它的全部价值。 ## 路线图 - [x] v0.1 — 广泛覆盖,单一 SKILL.md - [ ] v0.2 — 拆分为参考文件(每个领域一个)以实现渐进式展示 - [ ] v0.3 — 针对 Pulumi、CDK 和 Crossplane 的特定模式 - [ ] v0.4 — 特定语言的捆绑脚本(Helm chart linting、Terraform module 验证) - [ ] v0.5 — 可观测性后端(Datadog、New Relic、Honeycomb)的特定模式 ## 许可证 [MIT](LICENSE) 这是一系列旨在让开发者的痛点变得可见且可修复的工具的一部分。另请参阅:[envsnap](https://github.com/ronalships/envsnap)、[ghactrace](https://github.com/ronalships/ghactrace)。 由 [@RonalRaj](https://x.com/ronalships) 构建。如果这个技能将您的团队从凌晨 3 点的呼叫中拯救了出来,在仓库点一个 ⭐ 是最好的致谢方式。
标签:AI辅助编程, 子域名突变, 提示词工程, 最佳实践, 用户代理, 策略决策点, 自定义请求头, 请求拦截