sales-demos-env-urlslisted
Install: claude install-skill ericcames/sales.demos
# sales-demos-env-urls
Regenerates `env-urls.yml` at the repo root from the `connection.yml` files
(and any `local.yml` overrides). The file is gitignored — credentials are
included by default (#426, #429, #565).
**It is not in `inventory/` any more, and must not go back** (#582). Every
command passes `-i inventory`, and Ansible parses every file in that directory
as an inventory source — the old location printed
`Skipping key (portal) in group (sandbox)` warnings on every run. Regenerating
deletes a leftover `inventory/env-urls.yml`.
## There is an AAP path too (#525)
**AAP Ecosystem - Generate Environment URLs** runs this same playbook from AAP.
From AAP, credentials are omitted (the EE has no vault password file), but the
URLs appear in the job log — useful for verifying a repoint.
## Preflight Check
```bash
./utilities/preflight.sh "${ENV:-sandbox}"
```
Verify the Python script and its dependencies exist:
```bash
test -f utilities/generate-env-urls.py || { echo "MISSING: generate-env-urls.py"; exit 1; }
python3 -c "import yaml" 2>/dev/null || { echo "MISSING: pip install pyyaml"; exit 1; }
```
## Run
Default: generate with credentials (the full reference).
```bash
ENV="${ENV:-sandbox}"
mkdir -p ~/ansible-logs
export ANSIBLE_LOG_PATH=~/ansible-logs/generate-env-urls-$(date +%F-%H%M).log
./utilities/run-ansible.sh playbooks/generate_env_urls.yml -i inventory --limit "$ENV" \
-e target_env="$ENV" \
--vault-id sales.demos@~/secrets/.vault_pass_sales_demos
```