Regenerate the environment URL reference file (env-urls.yml at the repo root) — a single-file lookup of every product URL and optionally credentials across all environments. Runs playbooks/generate_env_urls.yml. TRIGGER when: the user has repointed an environment, asks for all the URLs, or env-urls.yml is stale or missing. SKIP: if the user only needs one specific URL — read connection.yml instead.
Pro shows the line behind each finding and how to fix it
Scanned 10/6/2026
npx -y skills add ericcames/sales.demos --skill sales-demos-env-urls --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Sales Demos Env Urls?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/ericcames-sales-demos-env-urls)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
name: sales-demos-env-urls
description: "Regenerate the environment URL reference file (env-urls.yml at the repo root) — a single-file lookup of every product URL and optionally credentials across all environments. Runs playbooks/generate_env_urls.yml. TRIGGER when: the user has repointed an environment, asks for all the URLs, or env-urls.yml is stale or missing. SKIP: if the user only needs one specific URL — read connection.yml instead."
---
# 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
```
Without credentials (URLs only):
```bash
./utilities/run-ansible.sh playbooks/generate_env_urls.yml -i inventory --limit "$ENV" \
-e target_env="$ENV" \
-e generate_env_urls_with_creds=false \
--vault-id sales.demos@~/secrets/.vault_pass_sales_demos
```
## Verify
Check that the output file exists and is current:
```bash
python3 utilities/generate-env-urls.py --check
```
This exits non-zero if the file is missing or the URLs in it don't match
what the current `connection.yml` files would produce.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!