sales-demos-collections-synclisted
Install: claude install-skill ericcames/sales.demos
# sales-demos-collections-sync
Keeps `collections/requirements.yml` honest: every collection pinned to an
exact version, installed to the recommended path, and verified to match.
Unlike the `ocpvirt-*` skills this one has **no playbook**, and that is
deliberate — it touches your laptop's collection path, never a demo
environment. The "skill wraps a playbook" contract in `CLAUDE.md` exists so
that anything touching an environment is runnable from AAP too. Nothing here
should ever run from AAP.
## The rules this enforces
1. **Every collection is pinned to an exact version. Nothing floats.** A
floating version means two laptops resolve different code and a demo that
worked yesterday breaks on the next install.
2. **Pins are set to versions that were actually run**, not the newest
published. Bump deliberately, re-run the affected phase against `sandbox`,
then commit the new pin.
3. **Collections install to the recommended path only** — Ansible's default
`~/.ansible/collections`. Never into the repo.
4. **Never create a project-local `ansible.cfg`.** Ansible picks one cfg file
and does not merge. A local one shadows `~/.ansible.cfg`, which holds the
working Automation Hub token, and breaks certified content installs. Use CLI
flags or environment variables instead.
## Preflight Check
```bash
# 1. No project-local ansible.cfg — this is the one that silently breaks things
test -f ansible.cfg \
&& echo "❌ project-local ansible.cfg present — it shadows ~