Repository navigation
The skills
A directory under ~/.claude/skills/ holding a SKILL.md: frontmatter with a name and a description, then the content. Some skills carry extra material in references/, scripts/ or examples/ subdirectories.
The description is the part that matters most operationally. Claude Code reads it to decide whether the skill is relevant, so a vague description means a skill that never loads. The ones here all name their trigger keywords explicitly.
Reference material for infrastructure work. Each one follows the same shape: an operating workflow in numbered steps, a recommended project structure, versions to pin, a table of pitfalls with symptom and remedy, and reference commands.
| Skill | Domain |
|---|---|
terraform-guide |
Infrastructure as Code, modules, state, backends |
helm-chart-builder |
Helm charts, templates, values, releases |
ansible-playbook-builder |
Playbooks, roles, inventories, vault |
docker-swarm-guide |
Services, stacks, overlay networks, secrets |
argocd-guide |
GitOps, sync, App of Apps, ApplicationSets |
prometheus-grafana-setup |
Metrics, alerting, PromQL, dashboards |
azure-cloud-advisor |
Choosing Azure services, architecture, costs |
github-actions-expert |
Workflows, matrix builds, OIDC, reusable workflows |
gitlab-ci-guide |
Pipelines, stages, runners, artifacts |
bash-script-builder |
Stream contract, guard rails, idempotence, exit codes |
makefile-builder |
Orchestration entry point, exported config, output contract |
logging-setup |
Console output format, run journal, redaction, rotation |
metrics-setup |
Naming, metric types, cardinality, RED and USE |
tracing-setup |
Propagation, span naming, sampling, correlation |
These carry dated knowledge on purpose. A model answers from its training when it has no fresher source, and training data ages: it will pin a Terraform version that was current two years ago. The skills exist to override that, which is why they name exact version constraints and call out recent deprecations, such as native S3 locking replacing dynamodb_table, or the removal of the public Bitnami chart catalogue.
That also means they need maintenance. A skill full of stale versions is worse than no skill, because it is trusted.
These do not describe a technology, they describe how to work. Most are adapted from obra/superpowers.
| Skill | What it enforces |
|---|---|
brainstorming |
Explore intent and requirements before building anything |
writing-plans |
Turn a spec into a written plan before touching code |
executing-plans |
Run a written plan with review checkpoints |
subagent-driven-development |
Execute independent tasks of a plan in one session |
dispatching-parallel-agents |
Split genuinely independent work |
test-driven-development |
Red, green, refactor, before implementation code |
systematic-debugging |
Diagnose before proposing a fix |
requesting-code-review |
Check work against requirements before merging |
receiving-code-review |
Verify feedback rather than agreeing performatively |
verification-before-completion |
Run the commands before claiming success |
finishing-a-development-branch |
Decide how work gets integrated |
using-git-worktrees |
Isolate feature work from the current workspace |
using-superpowers |
Find and invoke the right skill in the first place |
writing-skills |
Create and verify new skills |
clean-user-facing-text |
Audit and polish text meant for readers |
The one that matters most is verification-before-completion. The failure it targets is an agent announcing that something works without having run anything, which is the single most expensive kind of wrong answer: it looks finished.
Claude Code matches the request against the skill descriptions and loads what fits. In practice, three things make that reliable:
- Descriptions that name the keywords. Every skill here lists its triggers, which is why the DevOps ones say things like "also triggers on terraform, tfstate, HCL".
-
A routing reminder in
CLAUDE.md. The# SKILLSsection states that DevOps work means consulting the relevant skill before proposing commands or configuration, and that development work means following the brainstorm, plan, TDD and review sequence. - Explicit invocation. A skill can always be called by name when the automatic match does not happen.
This is worth contrasting with Mistral Vibe, where skills do not trigger on keywords at all and the whole routing has to be forced through a custom system prompt. See the Your-Mistral-DevOps wiki for how that plays out.
Use the writing-skills skill, which covers creating one and verifying it actually loads. The minimum bar: a description that names the situations and keywords that should trigger it, and content with a concrete method rather than generalities. A skill that says "use best practices" helps nobody and costs tokens.
Your Claude DevOps