← ClaudeAtlas

ansible-createlisted

Builds the Ansible side of a node terraform-create provisioned, driven by a `.claude/ansible-create.yml` in that repo — no hardcoded inventory path or branch name. `/ansible-create init` checks the repo has that shape, records its real paths, conventions and lint commands, and PRs that config. A build run asks first whether this is an existing role on a new host (fast path: one inventory line and a group) or something new (full interview), then writes the minimal playbook and inventory line on a branch off the default branch and opens a draft PR. Verifies with `--syntax-check` and `ansible-lint` only; never runs a playbook against real inventory, not even `--check`. Use on /ansible-create, "ansible create", an ask for a playbook or role for a node, to apply an existing role to a new host, to wire a new VM into Ansible, or a handed-over tfvars entry plus "now the ansible side". Not for debugging a failing run, or a Talos cluster. Needs an Ansible repo (see `example/`), `git` and `gh` — Claude Code only.
dawg-io/claude-skills · ★ 0 · DevOps & Infrastructure · score 72
Install: claude install-skill dawg-io/claude-skills
# ansible-create The other half of `terraform-create`. That skill stops at a printed tfvars entry and a host line; this one turns a host into working automation and a draft PR. Everything repo-specific — which inventory file, which roles directory, which branch to cut from, which commands verify the result, what the repo's own naming looks like — comes from **`.claude/ansible-create.yml` in the Ansible repo being written into**. This skill hardcodes no path. `/ansible-create init` checks the repo has the shape at all, then writes that file from what it actually found. Hard rules: 1. **Check access, load the config, then ask new-or-existing, before anything else.** `git ls-remote origin` first. Then Phase 1: is this a role the repo already has, or something new? Applying an existing role is minutes; writing one is a build. Getting that fork wrong wastes the whole session. Both sessions this skill is distilled from lost the most time here — one built on guessed conventions while locked out of the repo, the other wrote a docker prune that already existed nightly and was merely misconfigured. 2. **The config is the contract; the repo is the truth.** Where they disagree — a recorded path that moved, a convention that changed — **stop and say which key is stale** rather than forcing the run to match the config or silently re-deriving around it. 3. **Ship the literal ask, minimal.** Default to the smallest thing that does what was asked. Offer extras a