{"id":51130068,"url":"https://github.com/anmolnagpal/devops-skills","last_synced_at":"2026-06-25T11:30:34.655Z","repository":{"id":357839826,"uuid":"1238770129","full_name":"anmolnagpal/devops-skills","owner":"anmolnagpal","description":"Multi-tool DevOps skills for Claude Code, Cursor, and Codex — Terraform, Kubernetes, Docker, GitHub Actions, GitLab CI, AWS FinOps, OWASP security.","archived":false,"fork":false,"pushed_at":"2026-06-10T05:00:04.000Z","size":287,"stargazers_count":5,"open_issues_count":1,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-10T06:27:17.655Z","etag":null,"topics":["agents-md","ai-agents","aws","claude-code","claude-skills","codex","cursor","cursor-rules","devops","docker","finops","github-actions","gitlab-ci","helm","kubernetes","owasp","terraform"],"latest_commit_sha":null,"homepage":"https://github.com/anmolnagpal/devops-skills","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anmolnagpal.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-14T12:42:50.000Z","updated_at":"2026-06-10T05:00:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/anmolnagpal/devops-skills","commit_stats":null,"previous_names":["anmolnagpal/devops-skills"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/anmolnagpal/devops-skills","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anmolnagpal%2Fdevops-skills","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anmolnagpal%2Fdevops-skills/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anmolnagpal%2Fdevops-skills/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anmolnagpal%2Fdevops-skills/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anmolnagpal","download_url":"https://codeload.github.com/anmolnagpal/devops-skills/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anmolnagpal%2Fdevops-skills/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34773841,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-25T02:00:05.521Z","response_time":101,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agents-md","ai-agents","aws","claude-code","claude-skills","codex","cursor","cursor-rules","devops","docker","finops","github-actions","gitlab-ci","helm","kubernetes","owasp","terraform"],"created_at":"2026-06-25T11:30:33.613Z","updated_at":"2026-06-25T11:30:34.645Z","avatar_url":"https://github.com/anmolnagpal.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# devops-skills\n\n\u003e **One source of DevOps expertise, three AI coding tools.** Reusable skills for **Claude Code**, **Cursor**, and **Codex** that review and scaffold Terraform, Kubernetes/Helm, Docker, CI/CD (GitHub Actions + GitLab), AWS FinOps, GitHub repo hygiene, and OWASP security — without you copy-pasting the same prompt into every project.\n\n[![test](https://github.com/anmolnagpal/devops-skills/actions/workflows/test.yml/badge.svg)](https://github.com/anmolnagpal/devops-skills/actions/workflows/test.yml)\n[![release](https://img.shields.io/github/v/release/anmolnagpal/devops-skills?label=release)](https://github.com/anmolnagpal/devops-skills/releases)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n![Claude Code](https://img.shields.io/badge/Claude_Code-plugin-orange)\n![Cursor](https://img.shields.io/badge/Cursor-rules-blue)\n![Codex](https://img.shields.io/badge/Codex-AGENTS.md-green)\n\n### Install in Claude Code (10 seconds, no clone)\n\n```text\n/plugin marketplace add anmolnagpal/devops-skills\n/plugin install clouddrove@devops-skills\n```\n\nSkills land as `/clouddrove:tf`, `/clouddrove:finops`, … with a native `(clouddrove)` label. For Cursor/Codex/MCP, use the [installer](#quick-start).\n\n## What you get\n\n- **12 skills** that auto-trigger on file globs and answer with structured, rule-ID-tagged review output\n  (`/clouddrove:tf`, `/clouddrove:k8s`, `/clouddrove:ci`, `/clouddrove:github-actions`, `/clouddrove:github`, `/clouddrove:docker`, `/clouddrove:finops`, `/clouddrove:owasp`, `/clouddrove:wrapper-tf`, `/clouddrove:deploy`, `/clouddrove:adr`, `/clouddrove:skill-creator`)\n- **Packaged as the `clouddrove` plugin** — installed from this repo's own marketplace, so skills are namespaced `(clouddrove)` in Claude Code natively\n- **Single source** in `skills/\u003cname\u003e/SKILL.md` — a generator emits Cursor `.mdc` rules and Codex `AGENTS.md` so every tool stays in sync\n- **One installer** with flags — `--claude` / `--cursor` / `--codex` / `--all`, global or per-project scope\n- **Curated Claude plugin set** — Terraform code/module generation (HashiCorp), claude-mem, superpowers, caveman, engineering-workflow-skills\n- **MCP servers** wired in: Kubernetes live access, EKS ops, AWS Cost Explorer, Atlassian (Jira + Confluence), Outline docs/wiki\n\n\u003e **New here?** Skip to **[CHEATSHEET.md](_docs/CHEATSHEET.md)** for one-line prompts per skill.\n\n## See it in action\n\nEvery review answers in the same shape — **BLOCKING** (must fix) and **ADVISORY** (should fix), each finding tagged with a stable rule ID and a `file:line`, then a one-line summary.\n\n**`/clouddrove:tf review`** — pre-MR Terraform check:\n\n```text\nBLOCKING — Must fix before MR\n[main.tf:14] TF-STATE-001 No remote backend — state would live on a laptop\n  → add a `backend \"s3\"` block with DynamoDB state locking\n[rds.tf:31] TF-VAR-001 Hardcoded DB password in `default` → move to a variable,\n  mark `sensitive = true`, source from AWS Secrets Manager\n[versions.tf:1] TF-PROV-001 Provider not version-pinned → pin `aws ~\u003e 5.0`\n\nADVISORY — Should fix\n[s3.tf:8] TF-RES-001 Bucket missing required tags (Environment, Team, ManagedBy)\n[variables.tf:5] TF-VAR-003 `instance_type` has no description/type\n\nSummary: 3 blocking issue(s), 2 advisory issue(s).\n```\n\n**`/clouddrove:finops`** — AWS cost review:\n\n```text\nBLOCKING — none\n\nADVISORY — Should fix\n[ebs] COST-STOR-003 12 gp2 volumes not migrated to gp3 → ~20% cheaper + faster,\n  online conversion, no downtime. Run scripts/ebs-gp2-to-gp3-audit.sh — est. $340/mo\n[vpc] COST-NET-001 Per-AZ NAT gateways in 3 AZs for a non-prod account\n  → consolidate to 1 or use VPC endpoints — est. $190/mo\n\nSummary: 0 blocking, 2 advisory. Estimated saving: ~$530/month.\n```\n\n**`/clouddrove:deploy`** — production-readiness gate before first prod release:\n\n```text\nPRODUCTION READINESS — payments-api → prod\n\nBLOCKING — Must fix before deploy\n[helm/values-prod.yaml:22] ARCH-SPOF-002 replicaCount: 1 — single pod, no HA\n[helm/values-prod.yaml] ARCH-HA-003 No readiness/liveness probes\n[.github/workflows/deploy.yml:40] CICD-FLOW-002 No manual prod approval gate\n\nADVISORY — Should fix\n[helm/values-prod.yaml] OBS-MON-002 No alerting configured\n\nGate: FAILED — 3 blocking. Recommended strategy: blue-green (stateful, first prod release).\n```\n\n\u003e Outputs above are representative. Findings, rule IDs, and `file:line` are real to your repo when you run the skill.\n\n## Why this, not the alternatives\n\n| Instead of… | You get here |\n|---|---|\n| **Copy-pasting the same prompt** into every repo | One versioned source, auto-triggers on file globs, namespaced `/clouddrove:\u003cskill\u003e` — edit once, everyone pulls the update |\n| **A generic skill pack** | Opinionated DevOps depth — real Terraform/EKS/Helm/FinOps/OWASP review and scaffolding, not vibes |\n| **A static linter** (tfsec, checkov, hadolint) | In-context reasoning *and* scaffolding *and* explanation, in your editor. Linters still win on deterministic pattern checks — run both |\n| **Claude-only skills** | One source emits Cursor `.mdc` and Codex `AGENTS.md` too — same review across all three tools |\n| **Prose findings** | Every finding carries a **stable rule ID** shared with the [auditkit](https://github.com/clouddrove-ci/auditkit) audit engine — an inline review finding and a deep-audit finding are the *same* ID, so baselines and dedup carry across both |\n\n**The honest line:** static linters are faster for pure pattern matching, and a deep audit engine (auditkit) is the executor for whole-repo + live-cloud scans. This plugin is the **IDE-time advisory layer** that speaks the same rule-ID language as that engine — review *before* you commit, with findings that line up when the auditor runs later. It's CI-tested (six gates), not just a prompt dump.\n\n## Quick Start\n\nMulti-tool: works with **Claude Code**, **Cursor**, and **Codex** (same skills, different injection per tool).\n\n**Claude Code — install as a plugin** (no clone needed):\n\n```text\n/plugin marketplace add anmolnagpal/devops-skills\n/plugin install clouddrove@devops-skills\n```\n\nSkills then appear as `/clouddrove:tf`, `/clouddrove:deploy`, … with a native `(clouddrove)` label. The install script below does the same automatically (plus Cursor/Codex and MCP).\n\n```bash\n# Claude Code only\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/anmolnagpal/devops-skills/main/scripts/bootstrap.sh)\" -- --claude\n\n# All three tools\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/anmolnagpal/devops-skills/main/scripts/bootstrap.sh)\" -- --all\n\n# Interactive (no flags) — prompts for which tools\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/anmolnagpal/devops-skills/main/scripts/bootstrap.sh)\"\n```\n\nWhat each flag does:\n\n| Flag | What it installs |\n|------|------------------|\n| `--claude` | `clouddrove` skills plugin (from this repo's marketplace), team plugins from `config/plugins.txt`, MCP servers |\n| `--cursor` | `.cursor/rules/*.mdc` into `~/.cursor/rules/` (or `--project \u003cpath\u003e`) |\n| `--codex`  | `AGENTS.md` into `~/.codex/AGENTS.md` (or `--project \u003cpath\u003e`) |\n| `--all`    | All three |\n\nPer-tool flags:\n\n```bash\n./scripts/install.sh --claude --no-mcp --no-plugins   # skills only\n./scripts/install.sh --cursor --project ~/work/repo   # per-project install\n./scripts/install.sh --codex  --project ~/work/repo\n```\n\n\u003e **GitLab authentication:** If you get a 403, make sure you have access to the repo. You may need to use SSH clone instead — see [Manual install](#manual-install) below.\n\n## Updating\n\n```bash\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/anmolnagpal/devops-skills/main/scripts/bootstrap.sh)\"\n```\n\nSame command. If the repo is already installed it pulls the latest and re-runs the installer.\n\n## Manual install\n\nIf you prefer SSH or need to use a different install directory:\n\n```bash\ngit clone git@github.com:anmolnagpal/devops-skills.git ~/devops-skills\n~/devops-skills/scripts/install.sh\n```\n\n---\n\n## Skills\n\nSingle source: `skills/\u003cname\u003e/SKILL.md`. The `clouddrove` plugin bundles them all; the generator emits per-tool adapters via `scripts/generate.sh`:\n\n| Source | Claude slash | Cursor rule | Auto-trigger |\n|--------|--------------|-------------|--------------|\n| `skills/tf/SKILL.md` | `/clouddrove:tf` | `tf.mdc` | `**/*.tf`, `**/*.tfvars` |\n| `skills/k8s/SKILL.md` | `/clouddrove:k8s` | `k8s.mdc` | `**/values*.yaml`, `**/Chart.yaml`, `**/templates/*.yaml` |\n| `skills/ci/SKILL.md` | `/clouddrove:ci` | `ci.mdc` | `**/.gitlab-ci.yml` |\n| `skills/github-actions/SKILL.md` | `/clouddrove:github-actions` | `github-actions.mdc` | `**/.github/workflows/*.yml` |\n| `skills/github/SKILL.md` | `/clouddrove:github` | `github.mdc` | `**/CODEOWNERS`, `**/.github/dependabot.yml`, PR/issue templates |\n| `skills/docker/SKILL.md` | `/clouddrove:docker` | `docker.mdc` | `**/Dockerfile`, `**/docker-compose*.yml` |\n| `skills/finops/SKILL.md` | `/clouddrove:finops` | `finops.mdc` | manual |\n| `skills/owasp/SKILL.md` | `/clouddrove:owasp` | `owasp.mdc` | manual |\n| `skills/wrapper-tf/SKILL.md` | `/clouddrove:wrapper-tf` | `wrapper-tf.mdc` | `_modules/**/*.tf`, `environments/**/*.tf`, `.github/workflows/terraform.yml` |\n| `skills/deploy/SKILL.md` | `/clouddrove:deploy` | `deploy.mdc` | manual |\n| `skills/adr/SKILL.md` | `/clouddrove:adr` | `adr.mdc` | `**/docs/adr/*.md` |\n| `skills/skill-creator/SKILL.md` | `/clouddrove:skill-creator` | `skill-creator.mdc` | manual |\n\nAll 12 are also injected into `AGENTS.md` for Codex.\n\n### Shared rule-ID vocabulary\n\nFindings are tagged with stable rule IDs (`TF-STATE-001`, `SEC-NET-001`, `CICD-DOCK-002`, …). The canonical set lives in **[`rules/rule-ids.yaml`](rules/rule-ids.yaml)** (141 IDs) — the single source of truth. CI (`scripts/check-rule-ids.sh`) fails if a skill emits an ID not in the registry. The [auditkit](https://github.com/clouddrove-ci/auditkit) audit engine consumes the same registry and checks against it, so an inline plugin finding and a deep-audit finding share the same ID — and the two can't drift.\n\nBacklog specs (drafts, not active): `skills/specs/` — aws-cost, aws-security, azure-cost, azure-security, gcp-cost, gcp-security, kubernetes-cost, kubernetes-security. Promote to active by adding frontmatter under `skills/\u003cname\u003e/SKILL.md`.\n\nEdit `skills/\u003cname\u003e/SKILL.md`, run `bash scripts/generate.sh`, commit. Re-run `./scripts/install.sh --all` to push to local installs.\n\nIn Claude Code: invoke with `/clouddrove:\u003cskill\u003e` (namespaced by the plugin). In Cursor: rules auto-attach via `globs:`. In Codex: `AGENTS.md` loaded by default.\n\n### What each skill does\n\n| Skill | Purpose |\n|-------|---------|\n| `/clouddrove:tf` | Terraform (generic / `terraform-aws-modules` ecosystem): pre-MR review, AWS resource scaffolding, provider upgrade guidance |\n| `/clouddrove:k8s` | Kubernetes/Helm: pre-deploy review, production-ready values scaffolding |\n| `/clouddrove:ci` | GitLab CI/CD: pipeline review, Terraform/Helm pipeline scaffolds |\n| `/clouddrove:github-actions` | GitHub Actions: workflow review, security hardening (OIDC, pinning), scaffolds |\n| `/clouddrove:github` | GitHub repo hygiene: settings audit, CODEOWNERS, branch protection, releases |\n| `/clouddrove:docker` | Dockerfile review, image optimization, Compose, registry workflows |\n| `/clouddrove:finops` | AWS cost: waste detection, right-sizing, Savings Plans/RIs, EKS cost |\n| `/clouddrove:owasp` | Security review against OWASP Top 10:2025, ASVS 5.0, Agentic AI risks |\n| `/clouddrove:wrapper-tf` | Team standard for AWS Terraform repos on the CloudDrove wrapper pattern: scaffold `_modules/\u003cname\u003e/`, generate Terraform GitHub Actions CI, review against the wrapper pattern, map to SOC2/GDPR controls. Supersedes `/clouddrove:tf` on these repos. |\n| `/clouddrove:deploy` | Deployment strategy (rolling/blue-green/canary), production-readiness gate (reuses existing rule IDs), and rollback playbook for AWS/EKS |\n| `/clouddrove:adr` | Capture architectural decisions as structured ADRs under `docs/adr/` |\n| `/clouddrove:skill-creator` | Author, eval, and refine new skills in this repo |\n| `/skill-creator` | Build, test, and iterate new skills |\n\n---\n\n## Plugins\n\nDeclared in `plugins.txt` and installed automatically by `install.sh`. Skips any already installed.\n\nAll plugins live in `config/plugins.txt` and are installed automatically by `install.sh`.\n\n| Plugin | Source | What it adds |\n|--------|--------|--------------|\n| `terraform-code-generation` | hashicorp | Terraform style guide, registry search, import, tests |\n| `terraform-module-generation` | hashicorp | Module refactoring and Terraform Stacks |\n| `claude-mem` | thedotmack | Persistent cross-session memory — Claude remembers past decisions and context |\n| `engineering-workflow-skills` | mhattingpete | Git operations, code review, feature planning workflows |\n| `superpowers` | obra/superpowers | TDD, systematic debugging, brainstorming/planning, and subagent dev workflows |\n| `caveman` | JuliusBrussee/caveman | Ultra-compressed communication mode — cuts ~75% tokens while preserving technical accuracy |\n\n### Adding a plugin\n\nAdd a line to `config/plugins.txt`:\n- `name@marketplace` — for official Claude plugin marketplace installs\n- `hub:github-org/repo` — for plugins installed via `npx claudepluginhub`\n\nIf it's from a new marketplace, also add it to `config/marketplaces.txt`. Then commit and push — teammates pick it up on next `./scripts/install.sh`.\n\n---\n\n## MCP Servers\n\nConfigured interactively during `install.sh`. Each server prompts you to install or skip. Already-installed servers are skipped automatically.\n\n| Server | What it gives Claude |\n|--------|---------------------|\n| `kubernetes-mcp-server` | Live read access to EKS clusters — pods, logs, events, Helm releases |\n| `eks-mcp-server` | AWS-native EKS ops — cluster diagnostics, CloudWatch, IAM/OIDC, resource management |\n| `billing-mcp-server` | Cost Explorer, budget tracking, savings plan analysis, Compute Optimizer |\n| `mcp-atlassian` | Jira + Confluence — JQL search, create/update issues, add comments, transition tickets |\n| `outline` | Outline docs/wiki — search, read, create/update documents (remote HTTP, browser OAuth) |\n\n### Switching AWS profile\n\nIf you need to switch the AWS profile used by the AWS MCP servers:\n\n```bash\n# Interactive\n~/devops-skills/scripts/set-aws-profile.sh\n\n# Or directly\n~/devops-skills/scripts/set-aws-profile.sh prod\n```\n\nRestart Claude Code after switching.\n\n---\n\n## Repository Structure\n\n```\ndevops-skills/\n  .claude-plugin/            ← plugin.json (clouddrove) + marketplace.json (repo = its own marketplace)\n  skills/                    ← Canonical skill sources, one dir per skill (edit here)\n    \u003cname\u003e/SKILL.md          ← the skill body (tf, k8s, ci, owasp, docker, finops, deploy, adr, wrapper-tf, …)\n    \u003cname\u003e/evals/            ← static eval fixtures + validate.sh (file-input skills)\n    owasp/*.md               ← reference docs loaded on-demand; docker/ finops/ add scripts too\n    specs/                   ← Backlog spec docs (not active skills)\n  rules/rule-ids.yaml        ← Canonical shared rule-ID registry (single source of truth)\n  .cursor/rules/             ← Generated Cursor rules (.mdc) — from scripts/generate.sh\n  AGENTS.md                  ← Generated Codex skill doc — from scripts/generate.sh\n  agents/                    ← Reserved for Claude Code agents\n  hooks/                     ← Shipped with the plugin (registered via hooks.json)\n    hooks.json               ← Plugin hook config (uses ${CLAUDE_PLUGIN_ROOT})\n    session-banner.sh        ← SessionStart: prints repo/branch/AWS/kube context\n    bash-guard.sh            ← PreToolUse(Bash): blocks destructive patterns\n  templates/\n    CLAUDE.md                ← Copy into project repos for always-on team context\n    settings.json            ← Global ~/.claude/settings.json defaults (perm allow/deny)\n  scripts/\n    bootstrap.sh             ← One-liner installer\n    install.sh               ← Flag dispatcher (--claude / --cursor / --codex / --all)\n    install-claude.sh        ← Claude adapter: skills, plugins, MCP\n    install-cursor.sh        ← Cursor adapter: links .cursor/rules\n    install-codex.sh         ← Codex adapter: links AGENTS.md\n    generate.sh              ← Build Cursor + Codex adapters from skills/\u003cname\u003e/SKILL.md\n    mcp.sh                   ← Interactive MCP server install (Claude only)\n    set-aws-profile.sh       ← Switch AWS profile for AWS MCP servers\n  config/\n    plugins.txt              ← Claude plugins to install\n    marketplaces.txt         ← Claude plugin marketplaces\n  _docs/\n    CHEATSHEET.md            ← Example prompts per skill and MCP server\n  README.md\n```\n\n---\n\n## Global settings.json\n\n`install.sh --claude` seeds `~/.claude/settings.json` from `templates/settings.json` on first run. On subsequent runs it **merges missing permission entries only** — never clobbers existing keys (`enabledPlugins`, `mcpServers`, `hooks`, etc.).\n\nTemplate ships with a safe DevOps allow-list (read-only kubectl/terraform/aws/git) and deny-list (`kubectl delete`, `terraform apply`, `terraform destroy`, `rm -rf`, `aws s3 rm`, `aws ec2 terminate-instances`). Edit `templates/settings.json` to change team defaults, commit, teammates re-run `./scripts/install.sh --claude`.\n\n---\n\n## Project CLAUDE.md Template\n\nCopy `templates/CLAUDE.md` into the root of any project repo and fill in the placeholders. Claude Code auto-loads it every session, giving Claude permanent context about your AWS setup, Terraform backend, EKS clusters, and team conventions — without needing to invoke a skill.\n\n```bash\ncp ~/devops-skills/templates/CLAUDE.md /path/to/your/repo/CLAUDE.md\ncp -r ~/devops-skills/templates/.claude /path/to/your/repo/.claude\n# Fill in the CLAUDE.md placeholders, then commit both\n```\n\n---\n\n## Adding a New Team Skill\n\nSkills follow a standard format. Use the `/skill-creator` skill to build and test new ones.\n\n### Skill file format\n\n```markdown\n---\nname: skill-name\ndescription: \"Concise description — include when to use and key trigger keywords\"\nmetadata:\n  version: 1.0.0\n  author: Anmol Nagpal\n  category: devops\n  updated: YYYY-MM-DD\n---\n\n# Skill Title\n\nOne-line summary.\n\n## Keywords\nkeyword1, keyword2, keyword3\n\n## Output Artifacts\n\n| Request | Output |\n|---------|--------|\n| \"do X\" | Produces Y |\n\n---\n\n## SECTION — ...\n```\n\n### Steps to add\n\n1. Create `skills/\u003cname\u003e/SKILL.md` following the format above (co-locate `evals/`, references, scripts in the same dir)\n2. Run `bash scripts/generate.sh` to refresh Cursor (`.cursor/rules/\u003cname\u003e.mdc`) + Codex (`AGENTS.md`) adapters\n3. Commit `skills/\u003cname\u003e/SKILL.md`, the new `.cursor/rules/\u003cname\u003e.mdc`, and updated `AGENTS.md`\n4. Teammates run `git pull \u0026\u0026 ./scripts/install.sh --all` to pick it up (the plugin auto-discovers any `skills/\u003cname\u003e/SKILL.md`)\n\n---\n\n## Testing\n\nCI runs on every push to `main` and every pull request via GitHub Actions (`.github/workflows/test.yml`), with six gates: Docker install harness, adapter-sync (`.cursor/rules/`, `AGENTS.md` regenerated from `skills/\u003cname\u003e/SKILL.md`), skill-frontmatter lint, rule-ID registry check, eval fixtures, and ShellCheck.\n\nTo run the test locally (requires Docker):\n\n```bash\nbash _test/test.sh\n```\n\nThe test builds `_test/Dockerfile`, which runs `install.sh` in a clean container with a stubbed `claude` CLI and `CI=true` to skip interactive MCP prompts. It verifies all skills are symlinked and all plugins install without error.\n\n---\n\n## Adding a New MCP Server\n\n1. Add a new block to `scripts/mcp.sh` following the existing pattern (check if installed → prompt → register the server):\n   - **Local/stdio** servers — `claude mcp add-json \u003cname\u003e '{\"command\":...,\"args\":...}' -s user`\n   - **Remote/HTTP** servers (e.g. `outline`) — `claude mcp add \u003cname\u003e \u003curl\u003e --transport http -s user` (auth via browser OAuth on first use)\n2. If the server uses AWS credentials, add it to the `AWS_MCP_SERVERS` list in `scripts/set-aws-profile.sh`\n3. Commit and push — teammates pick it up on next `./scripts/install.sh`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanmolnagpal%2Fdevops-skills","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanmolnagpal%2Fdevops-skills","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanmolnagpal%2Fdevops-skills/lists"}