/domain-mask
Mask a URL behind a custom domain for demos and recordings. Adds a trusted HTTPS reverse proxy so the browser shows a clean display domain with a green padlock while serving content from the real target URL. Handles /etc/hosts, mkcert certificates, and cleanup automatically.
$ npx -y skills add adobe/skills --skill domain-mask --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/domain-mask
Context preview
The summary Claude sees to decide when to auto-load this skill.
Mask a URL behind a custom domain for demos and recordings. Adds a trusted HTTPS reverse proxy so the browser shows a clean display domain with a green padlock while serving content from the real target URL. Handles /etc/hosts, mkcert certificates, and cleanup automatically.
SKILL.md
domain-mask.SKILL.mdname: domain-mask
license: Apache-2.0
compatibility: macOS only. Requires mkcert and sudo (for port 443 and /etc/hosts modification).
description: >-
Mask a URL behind a custom domain for demos and recordings. Adds a trusted
HTTPS reverse proxy so the browser shows a clean display domain with a green
padlock while serving content from the real target URL. Handles /etc/hosts,
mkcert certificates, and cleanup automatically. Triggers on: "domain mask",
"mask domain", "mock domain", "proxy URL", "demo URL", "fake domain",
"demo proxy", "mask URL for demo", "domain-mask".
domain-mask
Mask a URL behind a custom domain for demos and recordings. Opens an HTTPS reverse proxy so the browser address bar shows a clean domain (e.g., `wknd.adventures`) while content is served from the real URL (e.g., `https://main--mysite--org.aem.page`). Trusted certificate via mkcert — no browser warnings.
Prerequisites
- Node 22+
- mkcert (`brew install mkcert && mkcert -install`)
- sudo access (for port 443 and /etc/hosts)
Script Location
if [[ -n "${CLAUDE_SKILL_DIR:-}" ]]; then
DOMAIN_MASK="${CLAUDE_SKILL_DIR}/scripts/domain-mask.mjs"
else
DOMAIN_MASK="$(find ~/.claude -path "*/domain-mask/scripts/domain-mask.mjs" \
-type f 2>/dev/null | head -1)"
fi
if [[ -z "$DOMAIN_MASK" || ! -f "$DOMAIN_MASK" ]]; then
echo "Error: domain-mask.mjs not found." >&2
fiWorkflow
Step 1: Gather inputs
Ask the user for two values (or extract from their message):
- **Display domain** — the domain to show in the browser (e.g., `wknd.adventures`)
- **Target URL** — the real URL to proxy (e.g., `https://gabrielwalt.github.io`)
Step 2: Check prerequisites
which mkcert || echo "Install mkcert: brew install mkcert && mkcert -install"
If mkcert is missing, tell the user to install it and run `mkcert -install` once to set up the local CA.
Step 3: Start the proxy
sudo node "$DOMAIN_MASK" <display-domain> <target-url>
The script handles everything automatically:
1. Adds `127.0.0.1 <display-domain>` to `/etc/hosts` 2. Generates a trusted HTTPS certificate via mkcert 3. Starts an HTTPS reverse proxy on port 443 4. Prints the URL to open
Tell the user:
- Open `https://<display-domain>` in their browser
- The address bar will show the display domain with a green padlock
- Press **Ctrl+C** when done — the script removes the hosts entry and
cleans up temp certs automatically
Step 4: Confirm cleanup
After the user stops the proxy, verify cleanup succeeded by checking the script output. If it reports a warning about /etc/hosts cleanup, help the user remove the entry manually:
sudo sed -i '' '/<display-domain>/d' /etc/hosts
Limitations
- macOS only (`/etc/hosts` path, `brew install mkcert`)
- Requires sudo (privileged port 443 + hosts file)
- One display domain per invocation
- Does not rewrite URLs inside HTML/CSS/JS response bodies
Read more
name: domain-mask license: Apache-2.0 compatibility: macOS only. Requires mkcert and sudo (for port 443 and /etc/hosts modification). description: >- Mask a URL behind a custom domain for demos and recordings. Adds a trusted HTTPS reverse proxy so the browser shows a clean display domain with a green padlock while serving content from the real target URL. Handles /etc/hosts, mkcert certificates, and cleanup automatically. Triggers on: "domain mask", "mask domain", "mock domain", "proxy URL", "demo URL", "fake domain", "demo proxy", "mask URL for demo", "domain-mask".
domain-mask
Mask a URL behind a custom domain for demos and recordings. Opens an HTTPS reverse proxy so the browser address bar shows a clean domain (e.g., `wknd.adventures`) while content is served from the real URL (e.g., `https://main--mysite--org.aem.page`). Trusted certificate via mkcert — no browser warnings.
Prerequisites
- Node 22+
- mkcert (`brew install mkcert && mkcert -install`)
- sudo access (for port 443 and /etc/hosts)
Script Location
if [[ -n "${CLAUDE_SKILL_DIR:-}" ]]; then
DOMAIN_MASK="${CLAUDE_SKILL_DIR}/scripts/domain-mask.mjs"
else
DOMAIN_MASK="$(find ~/.claude -path "*/domain-mask/scripts/domain-mask.mjs" \
-type f 2>/dev/null | head -1)"
fi
if [[ -z "$DOMAIN_MASK" || ! -f "$DOMAIN_MASK" ]]; then
echo "Error: domain-mask.mjs not found." >&2
fiWorkflow
Step 1: Gather inputs
Ask the user for two values (or extract from their message):
- **Display domain** — the domain to show in the browser (e.g., `wknd.adventures`)
- **Target URL** — the real URL to proxy (e.g., `https://gabrielwalt.github.io`)
Step 2: Check prerequisites
which mkcert || echo "Install mkcert: brew install mkcert && mkcert -install"
If mkcert is missing, tell the user to install it and run `mkcert -install` once to set up the local CA.
Step 3: Start the proxy
sudo node "$DOMAIN_MASK" <display-domain> <target-url>
The script handles everything automatically:
1. Adds `127.0.0.1 <display-domain>` to `/etc/hosts` 2. Generates a trusted HTTPS certificate via mkcert 3. Starts an HTTPS reverse proxy on port 443 4. Prints the URL to open
Tell the user:
- Open `https://<display-domain>` in their browser
- The address bar will show the display domain with a green padlock
- Press **Ctrl+C** when done — the script removes the hosts entry and
cleans up temp certs automatically
Step 4: Confirm cleanup
After the user stops the proxy, verify cleanup succeeded by checking the script output. If it reports a warning about /etc/hosts cleanup, help the user remove the entry manually:
sudo sed -i '' '/<display-domain>/d' /etc/hosts
Limitations
- macOS only (`/etc/hosts` path, `brew install mkcert`)
- Requires sudo (privileged port 443 + hosts file)
- One display domain per invocation
- Does not rewrite URLs inside HTML/CSS/JS response bodies
Repo: adobe/skills
Other skills on adobe-skills.
- /aa-conversion-funnel-analysis
Analyzes a multi-step conversion funnel to find where visitors drop off and which steps have the worst leakage. Use this skill when someone describes a journey and asks about conversion rates, drop-off, fallout, or step completion. Trigger for "analyze our checkout funnel,"
Open skill - /aa-executive-briefing
Generates a concise, executive-ready performance summary covering key metrics, trends, and what's driving movement. Use this skill when someone needs to produce a briefing, executive summary, performance narrative, or stakeholder readout — for example, "write an exec summary of
Open skill - /aa-kpi-pulse
Produces a compact KPI digest showing how key metrics changed over a period and what's driving the movement. Use this skill when someone asks for a performance summary, a weekly recap, a morning briefing, a KPI update, or any variation of "how did we do this week/month." Also
Open skill - /aa-segment-performance-comparator
Compares the performance of two or more audience segments across key metrics side by side. Use this skill when someone wants to compare audiences or visitor groups — for example, "how do mobile visitors compare to desktop on conversion," "compare new vs. returning visitors,"
Open skill - /aa-top-movers-watchlist
Identifies which items (pages, campaigns, products, channels, regions) had the biggest increases or decreases for a key metric between two time periods. Use this skill when someone asks "what's up and what's down," "which campaigns moved the most," "top gainers and losers,"
Open skill - /cja-dimension-analysis
Comprehensive dimension analysis and reporting for CJA. Use this skill whenever the user wants to analyze one or more dimensions — including cardinality, distribution/skew, trends, anomalies, data quality errors, comparisons, and forecasting. Also trigger when someone asks "what
Open skill

