Skip to main content

setup

Facilitates the setup of the claude-ops plugin by configuring channels and installing necessary CLIs through an interactive wizard.

Install this skill

or
0/100

Security score

The setup skill was audited on May 29, 2026 and we found 267 security issues across 5 threat categories, including 1 critical. Review the findings below before installing.

Categories Tested

Security Issues

critical line 2304

Direct command execution function call

SourceSKILL.md
2304On `[Deep hunt — spawn agent]`, spawn (background, Rule 4):
high line 53

Template literal with variable interpolation in command context

SourceSKILL.md
53- **`$PREFS_PATH`** — per-user preferences + secrets. Resolves to `${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.json`. Lives in Claude Code's plugin data dir s
high line 54

Template literal with variable interpolation in command context

SourceSKILL.md
54- **`${CLAUDE_PLUGIN_ROOT}/scripts/registry.json`** — per-user project registry (gitignored in the source repo). `mkdir -p` its parent if missing.
high line 55

Template literal with variable interpolation in command context

SourceSKILL.md
55- **`${CLAUDE_PLUGIN_ROOT}/.mcp.json`** — only to add `${user_config.*}` placeholders, never hardcoded tokens.
medium line 86

Template literal with variable interpolation in command context

SourceSKILL.md
86```bash
medium line 96

Template literal with variable interpolation in command context

SourceSKILL.md
96```!
medium line 123

Template literal with variable interpolation in command context

SourceSKILL.md
123```!
medium line 131

Template literal with variable interpolation in command context

SourceSKILL.md
131```bash
medium line 227

Template literal with variable interpolation in command context

SourceSKILL.md
227```bash
high line 306

Template literal with variable interpolation in command context

SourceSKILL.md
306- **Linux / WSL** (`OS=linux|wsl`): `launchctl` is not available. The daemon script (`${CLAUDE_PLUGIN_ROOT}/scripts/ops-daemon.sh`) runs fine under `bash`, but installing it as a user service requires
medium line 308

Template literal with variable interpolation in command context

SourceSKILL.md
308```
medium line 336

Template literal with variable interpolation in command context

SourceSKILL.md
336```bash
medium line 367

Template literal with variable interpolation in command context

SourceSKILL.md
367# /ops:go is instant. `memory-extractor` runs but stays idle until channels exist.
high line 409

Template literal with variable interpolation in command context

SourceSKILL.md
409> **Deep-dive:** see `${CLAUDE_PLUGIN_ROOT}/docs/daemon-guide.md` for full operational instructions, CLI reference, and troubleshooting for the background daemon. The setup agent can load that file di
high line 587

Template literal with variable interpolation in command context

SourceSKILL.md
587- Placeholder values like `${user_config.*}`, `<your-token>`, `CHANGE_ME`, or empty strings count as NOT FOUND.
medium line 684

Template literal with variable interpolation in command context

SourceSKILL.md
684```bash
high line 699

Template literal with variable interpolation in command context

SourceSKILL.md
6996. **Wait for the script to exit.** Poll until the process is no longer running (`ps -p "$(cat /tmp/ops-telegram-autolink.pid)"`). Read `/tmp/ops-telegram-autolink.out` — it should contain a single JS
medium line 721

Template literal with variable interpolation in command context

SourceSKILL.md
721```bash
medium line 747

Template literal with variable interpolation in command context

SourceSKILL.md
747```bash
high line 766

Template literal with variable interpolation in command context

SourceSKILL.md
7669. **Smoke test (optional).** Spawn `node ${CLAUDE_PLUGIN_ROOT}/telegram-server/index.js` with the env vars set inline for 3 seconds. If it doesn't print an auth error, the session works.
high line 774

Template literal with variable interpolation in command context

SourceSKILL.md
774> **Deep-dive:** see `${CLAUDE_PLUGIN_ROOT}/skills/ops-comms/SKILL.md` for full operational instructions, CLI reference, and troubleshooting for this integration. The setup agent can load that file di
medium line 908

Template literal with variable interpolation in command context

SourceSKILL.md
908```bash
medium line 915

Template literal with variable interpolation in command context

SourceSKILL.md
915```bash
high line 989

Template literal with variable interpolation in command context

SourceSKILL.md
989> **Deep-dive:** see `${CLAUDE_PLUGIN_ROOT}/skills/ops-comms/SKILL.md` and `${CLAUDE_PLUGIN_ROOT}/skills/ops-inbox/SKILL.md` for full operational instructions, CLI reference, and troubleshooting for t
high line 1053

Template literal with variable interpolation in command context

SourceSKILL.md
1053> **Deep-dive:** see `${CLAUDE_PLUGIN_ROOT}/skills/ops-inbox/SKILL.md` and `${CLAUDE_PLUGIN_ROOT}/skills/ops-comms/SKILL.md` for full operational instructions, CLI reference, and troubleshooting for t
medium line 1073

Template literal with variable interpolation in command context

SourceSKILL.md
1073```bash
medium line 1086

Template literal with variable interpolation in command context

SourceSKILL.md
1086```bash
high line 1097

Template literal with variable interpolation in command context

SourceSKILL.md
1097- `[Install Playwright now]` → run `cd ${CLAUDE_PLUGIN_ROOT}/telegram-server && npm install playwright && npx playwright install chromium` (background, ~150MB download, report progress).
high line 1131

Template literal with variable interpolation in command context

SourceSKILL.md
1131> **Deep-dive:** see `${CLAUDE_PLUGIN_ROOT}/skills/ops-comms/SKILL.md` and `${CLAUDE_PLUGIN_ROOT}/skills/ops-inbox/SKILL.md` for full operational instructions, CLI reference, and troubleshooting for t
high line 1207

Template literal with variable interpolation in command context

SourceSKILL.md
1207> **Deep-dive:** see `${CLAUDE_PLUGIN_ROOT}/skills/ops-inbox/CHANNELS.md` for full Notion MCP tool reference and troubleshooting.
high line 1250

Template literal with variable interpolation in command context

SourceSKILL.md
12507. On "Install gog instead", **run the install via Bash** (Rule 2) using the same npm → bun → source-clone chain as Step 3c — either inline the snippet or call `${CLAUDE_PLUGIN_ROOT}/bin/ops-setup-ins
high line 1268

Template literal with variable interpolation in command context

SourceSKILL.md
1268> **Deep-dive:** see `${CLAUDE_PLUGIN_ROOT}/skills/ops-go/SKILL.md` for full operational instructions, CLI reference, and troubleshooting for this integration (calendar context feeds `/ops:go` briefin
high line 1391

Template literal with variable interpolation in command context

SourceSKILL.md
1391> **Deep-dive:** no dedicated skill ships with Doppler — see `${CLAUDE_PLUGIN_ROOT}/docs/memories-system.md` (Runtime Context section) for how downstream skills consume the `secrets_manager` / `dopple
high line 1411

Template literal with variable interpolation in command context

SourceSKILL.md
14113. **Save token to userConfig**: Write the token to `doppler_token` in the plugin's `userConfig` (this feeds `.mcp.json` at runtime via `${user_config.doppler_token}`). Also save `doppler_project` and
high line 1615

Template literal with variable interpolation in command context

SourceSKILL.md
1615> **Deep-dive:** no dedicated skill ships with the password manager integration — see `${CLAUDE_PLUGIN_ROOT}/docs/memories-system.md` (Runtime Context section) for how downstream skills resolve `passw
medium line 1724

Template literal with variable interpolation in command context

SourceSKILL.md
1724```bash
high line 1808

Template literal with variable interpolation in command context

SourceSKILL.md
1808> **Deep-dive:** see `${CLAUDE_PLUGIN_ROOT}/skills/ops-ecom/SKILL.md` for full operational instructions, CLI reference, and troubleshooting for the ecommerce integration (multi-store Shopify, partner
medium line 1913

Template literal with variable interpolation in command context

SourceSKILL.md
1913```bash
medium line 1929

Template literal with variable interpolation in command context

SourceSKILL.md
1929```bash
medium line 1945

Template literal with variable interpolation in command context

SourceSKILL.md
1945```bash
medium line 1960

Template literal with variable interpolation in command context

SourceSKILL.md
1960```bash
medium line 2033

Template literal with variable interpolation in command context

SourceSKILL.md
2033```bash
high line 2103

Template literal with variable interpolation in command context

SourceSKILL.md
2103> **Deep-dive:** see `${CLAUDE_PLUGIN_ROOT}/skills/ops-marketing/SKILL.md` for full operational instructions, CLI reference, and troubleshooting for marketing integrations (Klaviyo flows, Meta Ads, GA
high line 2202

Template literal with variable interpolation in command context

SourceSKILL.md
2202> **Deep-dive:** see `${CLAUDE_PLUGIN_ROOT}/skills/ops-voice/SKILL.md` for full operational instructions, CLI reference, and troubleshooting for voice integrations (Bland AI call flows, ElevenLabs TTS
high line 2353

Template literal with variable interpolation in command context

SourceSKILL.md
2353> **Deep-dive:** see `${CLAUDE_PLUGIN_ROOT}/skills/ops-revenue/SKILL.md` for full operational instructions, CLI reference, and troubleshooting for revenue integrations (Stripe MRR/ARR queries, Revenue
high line 2461

Template literal with variable interpolation in command context

SourceSKILL.md
2461> **Deep-dive:** see `${CLAUDE_PLUGIN_ROOT}/docs/notifications.md`, `${CLAUDE_PLUGIN_ROOT}/scripts/ops-fires-watcher.sh`, and `${CLAUDE_PLUGIN_ROOT}/scripts/ops-notify.sh` for sink priority rationale,
medium line 2469

Template literal with variable interpolation in command context

SourceSKILL.md
2469```bash
high line 2583

Template literal with variable interpolation in command context

SourceSKILL.md
2583> **Deep-dive:** see `${CLAUDE_PLUGIN_ROOT}/skills/ops-comms/SKILL.md` (Discord send/read sections) and `${CLAUDE_PLUGIN_ROOT}/bin/ops-discord` for full operational instructions and subcommand referen
high line 2612

Template literal with variable interpolation in command context

SourceSKILL.md
2612> **Deep-dive:** see `${CLAUDE_PLUGIN_ROOT}/skills/ops-linear/SKILL.md`, `${CLAUDE_PLUGIN_ROOT}/skills/ops-triage/SKILL.md`, and `${CLAUDE_PLUGIN_ROOT}/skills/ops-fires/SKILL.md` for full operational
high line 2618

Template literal with variable interpolation in command context

SourceSKILL.md
2618> **Templates:** a pre-baked starter for common stacks lives in `${CLAUDE_PLUGIN_ROOT}/scripts/registry.templates/`. If you want to start from one, `cp "${CLAUDE_PLUGIN_ROOT}/scripts/registry.template
medium line 2651

Template literal with variable interpolation in command context

SourceSKILL.md
2651```!
medium line 2671

Template literal with variable interpolation in command context

SourceSKILL.md
2671```bash
high line 2711

Template literal with variable interpolation in command context

SourceSKILL.md
2711- Ensure the registry directory exists: `mkdir -p "${CLAUDE_PLUGIN_ROOT}/scripts"`. If the write fails due to permissions (plugin cache dirs can be read-only), fall back to writing at `$DATA_DIR/regis
high line 2716

Template literal with variable interpolation in command context

SourceSKILL.md
2716> **Deep-dive:** see `${CLAUDE_PLUGIN_ROOT}/skills/ops-projects/SKILL.md` for full operational instructions, CLI reference, and troubleshooting for the project registry (auto-discovery, registry schem
medium line 2732

Template literal with variable interpolation in command context

SourceSKILL.md
2732```bash
high line 2791

Template literal with variable interpolation in command context

SourceSKILL.md
2791Write daemon services config to `$DATA_DIR/daemon-services.json` — merge with the existing config from Step 2c, preserving `briefing-pre-warm` and `memory-extractor`, and enabling the new channel-depe
high line 2792

Template literal with variable interpolation in command context

SourceSKILL.md
2792- `briefing-pre-warm`: `{ "enabled": true, "command": "${CLAUDE_PLUGIN_ROOT}/bin/ops-gather", "cron": "*/2 * * * *" }` — pre-warms /ops:go cache (installed in 2c)
high line 2793

Template literal with variable interpolation in command context

SourceSKILL.md
2793- `wacli-sync`: `{ "enabled": true, "command": "${CLAUDE_PLUGIN_ROOT}/scripts/wacli-keepalive.sh", "health_file": "~/.wacli/.health", "restart_delay": 60, "max_restarts": 10 }` — only if WhatsApp conf
high line 2794

Template literal with variable interpolation in command context

SourceSKILL.md
2794- `memory-extractor`: `{ "enabled": true, "command": "${CLAUDE_PLUGIN_ROOT}/scripts/ops-memory-extractor.sh", "health_file": "~/.claude/plugins/data/ops-ops-marketplace/memories/.health", "cron": "*/3
high line 2795

Template literal with variable interpolation in command context

SourceSKILL.md
2795- `inbox-digest`: `{ "enabled": true, "command": "${CLAUDE_PLUGIN_ROOT}/scripts/ops-cron-inbox-digest.sh", "cron": "0 */4 * * *" }` — every 4h
high line 2796

Template literal with variable interpolation in command context

SourceSKILL.md
2796- `store-health`: `{ "enabled": true, "command": "${CLAUDE_PLUGIN_ROOT}/scripts/ops-cron-store-health.sh", "cron": "0 9 * * *" }` — daily 9am, only if ecom configured
high line 2797

Template literal with variable interpolation in command context

SourceSKILL.md
2797- `competitor-intel`: `{ "enabled": true, "command": "${CLAUDE_PLUGIN_ROOT}/scripts/ops-cron-competitor-intel.sh", "cron": "0 10 * * 1" }` — weekly Monday 10am
high line 2798

Template literal with variable interpolation in command context

SourceSKILL.md
2798- `message-listener`: `{ "enabled": true, "command": "${CLAUDE_PLUGIN_ROOT}/scripts/ops-message-listener.sh" }` — only if WhatsApp or Telegram configured
high line 2823

Template literal with variable interpolation in command context

SourceSKILL.md
2823> **Deep-dive:** see `${CLAUDE_PLUGIN_ROOT}/docs/daemon-guide.md` for full operational instructions, CLI reference, and troubleshooting for the background daemon (service lifecycle, launchctl/systemd
medium line 2937

Template literal with variable interpolation in command context

SourceSKILL.md
2937```bash
medium line 1102

Curl to non-GitHub URL

SourceSKILL.md
1102curl -s -H "Authorization: Bearer XOXC_TOKEN" -b "d=XOXD_TOKEN" "https://slack.com/api/auth.test"
medium line 1194

Curl to non-GitHub URL

SourceSKILL.md
1194curl -s -o /dev/null -w "%{http_code}" -H "Authorization: Bearer $NOTION_API_KEY" -H "Notion-Version: 2022-06-28" https://api.notion.com/v1/users/me | grep -q "200" && echo "OK" || echo "FAIL"
high line 1293

Curl to non-GitHub URL

SourceSKILL.md
1293| Debian / Ubuntu | `curl -Ls https://cli.doppler.com/install.sh \| sudo sh` |
medium line 1890

Curl to non-GitHub URL

SourceSKILL.md
1890curl -s "https://graph.facebook.com/v20.0/$AD_ACCOUNT_ID/campaigns?access_token=$TOKEN&limit=1" | jq '.data | length'
medium line 1930

Curl to non-GitHub URL

SourceSKILL.md
1930TOKEN_RESP=$(curl -s -X POST https://oauth2.googleapis.com/token \
medium line 1946

Curl to non-GitHub URL

SourceSKILL.md
1946ACCESS_TOKEN=$(curl -s -X POST https://oauth2.googleapis.com/token \
medium line 1961

Curl to non-GitHub URL

SourceSKILL.md
1961curl -s -X GET "https://googleads.googleapis.com/v23/customers:listAccessibleCustomers" \
medium line 2034

Curl to non-GitHub URL

SourceSKILL.md
2034curl -s "https://graph.facebook.com/v20.0/${WABA_PHONE_ID}" \
medium line 2153

Curl to non-GitHub URL

SourceSKILL.md
2153curl -s -H "Authorization: $KEY" "https://api.bland.ai/v1/me" | jq '.user.id'
medium line 2167

Curl to non-GitHub URL

SourceSKILL.md
2167curl -s -H "xi-api-key: $KEY" "https://api.elevenlabs.io/v1/user" | jq '.subscription.tier'
medium line 2288

Curl to non-GitHub URL

SourceSKILL.md
2288curl -s -u "$STRIPE_SECRET_KEY:" "https://api.stripe.com/v1/balance" | jq '.available | length'
medium line 2417

Curl to non-GitHub URL

SourceSKILL.md
2417curl -s -X POST https://api.pushover.net/1/messages.json \
medium line 2542

Curl to non-GitHub URL

SourceSKILL.md
2542curl -sS "https://discord.com/api/v10/users/@me" \
medium line 3112

Curl to non-GitHub URL

SourceSKILL.md
3112curl -s -H "Authorization: Bearer XOXC_TOKEN" -b "d=XOXD_TOKEN" "https://slack.com/api/auth.test"
medium line 1751

Webhook reference - potential data exfiltration

SourceSKILL.md
1751- What credentials are needed (API key, OAuth token, webhook secret, base URL, account ID, etc.)
low line 2366

Webhook reference - potential data exfiltration

SourceSKILL.md
2366DISCORD_WEBHOOK_URL NTFY_TOPIC PUSHOVER_USER PUSHOVER_TOKEN 2>/dev/null
low line 2369

Webhook reference - potential data exfiltration

SourceSKILL.md
2369| map(select(.key | test("telegram_bot_token|telegram_notify_chat_id|discord_webhook_url|ntfy_topic|pushover_user_key|pushover_app_token")))
medium line 2394

Webhook reference - potential data exfiltration

SourceSKILL.md
2394| Also add Discord webhook | discord | Fan out to a #incidents channel in addition to X. |
medium line 2426

Webhook reference - potential data exfiltration

SourceSKILL.md
2426**Discord** — if the user already set `discord_default_webhook_url` via a prior run (or issue #20's work), reuse it; otherwise Rule-3-prompt for a webhook URL (`https://discord.com/api/webhooks/...`).
medium line 2463

Webhook reference - potential data exfiltration

SourceSKILL.md
2463### 3m — Discord (webhook + optional bot)
medium line 2465

Webhook reference - potential data exfiltration

SourceSKILL.md
2465Discord is a v1 integration — webhook-based send + REST channel reads. DM + gateway support are deferred to a v2 issue. The send-side webhook also supplies the Discord notification sink consumed by `s
low line 2471

Webhook reference - potential data exfiltration

SourceSKILL.md
2471printenv DISCORD_BOT_TOKEN DISCORD_WEBHOOK_URL DISCORD_GUILD_ID 2>/dev/null
low line 2474

Webhook reference - potential data exfiltration

SourceSKILL.md
2474grep -hE 'DISCORD_(BOT_TOKEN|WEBHOOK|GUILD_ID)' ~/.zshrc ~/.bashrc ~/.zprofile ~/.envrc 2>/dev/null | grep -v '^#'
medium line 2498

Webhook reference - potential data exfiltration

SourceSKILL.md
2498Cache these results. Also check `$PREFS_PATH` under `discord.*` and `discord_webhook_url` (the flat key shared with ops-notify.sh) — if any of `discord.bot_token`, `discord.default_webhook_url`, or `d
medium line 2502

Webhook reference - potential data exfiltration

SourceSKILL.md
2502Present via the Universal Credential Auto-Scan prompt format with `[Use this value]` / `[Paste a different one]` / `[Skip]`. If a webhook URL was found but no bot token, note that reads + channel list
low line 2509

Webhook reference - potential data exfiltration

SourceSKILL.md
2509[Paste webhook URL only]
low line 2521

Webhook reference - potential data exfiltration

SourceSKILL.md
2521prompt: "Grep the filesystem under $HOME (excluding node_modules, .git, Library/Caches) for Discord credentials. Patterns: bot tokens look like base64 segments separated by dots (e.g. MTAxXXXX.YYYYYY.
medium line 2549

Webhook reference - potential data exfiltration

SourceSKILL.md
2549On `[Paste webhook URL only]`:
low line 2552

Webhook reference - potential data exfiltration

SourceSKILL.md
2552Enter a default Discord Webhook URL:
low line 2553

Webhook reference - potential data exfiltration

SourceSKILL.md
2553Find it: Discord → Server Settings → Integrations → Webhooks → New Webhook → Copy URL
low line 2554

Webhook reference - potential data exfiltration

SourceSKILL.md
2554Format: https://discord.com/api/webhooks/<ID>/<TOKEN>
medium line 2557

Webhook reference - potential data exfiltration

SourceSKILL.md
2557Smoke test — do NOT send content to the webhook during setup. Instead, issue a GET to confirm the URL resolves to webhook metadata:
low line 2560

Webhook reference - potential data exfiltration

SourceSKILL.md
2560curl -sS -o /dev/null -w '%{http_code}\n' -X GET "$DISCORD_WEBHOOK_URL"
medium line 2563

Webhook reference - potential data exfiltration

SourceSKILL.md
2563Expect `200` (webhook metadata returned) or `401` (valid URL, token invalid — user needs to re-copy).
low line 2574

Webhook reference - potential data exfiltration

SourceSKILL.md
2574"default_webhook_url": "doppler:DISCORD_WEBHOOK_URL",
low line 2577

Webhook reference - potential data exfiltration

SourceSKILL.md
2577"discord_webhook_url": "doppler:DISCORD_WEBHOOK_URL"
medium line 2581

Webhook reference - potential data exfiltration

SourceSKILL.md
2581Mirror the webhook to the flat `discord_webhook_url` key so `scripts/ops-notify.sh` (the existing fires sink) continues to find it. Prefer a Doppler reference over raw tokens when Doppler is configure
medium line 56

Access to hidden dotfiles in home directory

SourceSKILL.md
56- The user's shell profile (`~/.zshrc` etc.) — append-only, never rewrite.
medium line 57

Access to hidden dotfiles in home directory

SourceSKILL.md
57- At the top of every wizard step, make sure `$PREFS_PATH`'s parent directory exists: `mkdir -p "$(dirname "$PREFS_PATH")"`. Claude Code creates `~/.claude/plugins/data/ops-ops-marketplace/` on plugin
medium line 127

Access to hidden dotfiles in home directory

SourceSKILL.md
127If `CLAUDE_PLUGIN_ROOT` is unset, fall back to the latest installed cache dir at `~/.claude/plugins/cache/ops-marketplace/ops/<latest-version>/`. Store the resolved path as `PLUGIN_ROOT` for the rest
low line 142

Access to hidden dotfiles in home directory

SourceSKILL.md
142Shell: zsh → ~/.zshrc
low line 246

Access to hidden dotfiles in home directory

SourceSKILL.md
246find ~/.claude -name "gsd-progress" -path "*/skills/*" 2>/dev/null | head -1 | grep -q . && echo "installed" || echo "not_installed"
low line 382

Access to hidden dotfiles in home directory

SourceSKILL.md
382"health_file": "~/.claude/plugins/data/ops-ops-marketplace/memories/.health",
medium line 524

Access to hidden dotfiles in home directory

SourceSKILL.md
5242. **Shell profile files** — grep `~/.zshrc`, `~/.bashrc`, `~/.zprofile`, `~/.config/fish/config.fish`, `~/.envrc` (direnv) for `<VAR>=` or `export <VAR>=`. Show the file path next to the value so the
medium line 544

Access to hidden dotfiles in home directory

SourceSKILL.md
5446. **OpenClaw config** — if `~/.openclaw/openclaw.json` exists:
low line 546

Access to hidden dotfiles in home directory

SourceSKILL.md
546jq -r --arg var "$VAR" '.agents.defaults.env[$var] // empty' ~/.openclaw/openclaw.json 2>/dev/null
low line 577

Access to hidden dotfiles in home directory

SourceSKILL.md
577[A] shell env + ~/.zshrc + Dashlane — shpat_508b...682e (matched across 3 sources)
medium line 585

Access to hidden dotfiles in home directory

SourceSKILL.md
585- **Always collapse matching sources** into one option with `(matched in env + ~/.zshrc + Dashlane)` appended. This is critical to stay within the 4-option limit.
low line 609

Access to hidden dotfiles in home directory

SourceSKILL.md
6096. All shell profile files (~/.zshrc, ~/.bashrc, ~/.zprofile, ~/.envrc, ~/.config/fish/*)
medium line 620

Access to hidden dotfiles in home directory

SourceSKILL.md
620**On selection**, use the chosen value as the source of truth and — with the user's consent — optionally propagate it back to the other sources (e.g. "Also update ~/.zshrc and Doppler to match?"). Def
medium line 654

Access to hidden dotfiles in home directory

SourceSKILL.md
6541. Scans scout sources (keychain → ~/.claude.json → shell profiles → Doppler) for previously-extracted `TELEGRAM_API_ID` / `TELEGRAM_API_HASH` / `TELEGRAM_SESSION`.
medium line 669

Access to hidden dotfiles in home directory

SourceSKILL.md
669Also check `~/.claude.json mcpServers.telegram.env.TELEGRAM_API_ID`. If all 4 are found and the stored `TELEGRAM_SESSION` decodes as a StringSession, tell the user `"✓ Telegram already configured (api
medium line 745

Access to hidden dotfiles in home directory

SourceSKILL.md
745Also update `~/.claude.json` MCP server config if the telegram server entry exists — inject the credentials as env vars:
low line 957

Access to hidden dotfiles in home directory

SourceSKILL.md
957Health: ~/.wacli/.health | Logs: ~/.claude/plugins/data/ops-ops-marketplace/logs/
medium line 976

Access to hidden dotfiles in home directory

SourceSKILL.md
976All ops skills that use WhatsApp (`ops-inbox`, `ops-comms`, `ops-go`) MUST check `~/.wacli/.health` before attempting wacli commands. If `status=needs_auth` or `status=needs_reauth`:
medium line 997

Access to hidden dotfiles in home directory

SourceSKILL.md
997`gog` is the email + calendar CLI that `ops-inbox` and `ops-comms` call by default. It's a self-contained binary with its own OAuth token at `~/.gog/token.json` — full read + send permissions, no Clau
medium line 1060

Access to hidden dotfiles in home directory

SourceSKILL.md
1060- `~/.claude.json mcpServers.slack.env` (where Claude Code stores them)
medium line 1063

Access to hidden dotfiles in home directory

SourceSKILL.md
1063- Shell profile files (`~/.zshrc`, `~/.bashrc`, `~/.zprofile`, `~/.envrc`)
low line 1114

Access to hidden dotfiles in home directory

SourceSKILL.md
1114in ~/.claude.json. Since this skill can't write to ~/.claude.json directly,
medium line 1121

Access to hidden dotfiles in home directory

SourceSKILL.md
1121(The reason we don't auto-write: per user-level feedback, ~/.claude.json is a Claude Code internal file and the plugin must not touch it. MCP registration is Claude Code's responsibility.)
medium line 1149

Access to hidden dotfiles in home directory

SourceSKILL.md
11492. **Check for self-hosted Notion MCP server.** Look in `~/.claude/settings.json` for `mcpServers.notion` or any entry with `notion` in its args/command.
medium line 1185

Access to hidden dotfiles in home directory

SourceSKILL.md
11854. Add MCP server config to `~/.claude/settings.json` under `mcpServers.notion`
medium line 1202

Access to hidden dotfiles in home directory

SourceSKILL.md
12021. Set `NOTION_MCP_ENABLED=true` in `~/.claude/settings.json` env section
low line 1632

Access to hidden dotfiles in home directory

SourceSKILL.md
1632grep -h 'SHOPIFY\|myshopify' ~/.zshrc ~/.bashrc ~/.zprofile ~/.envrc 2>/dev/null | grep -v '^#'
low line 1648

Access to hidden dotfiles in home directory

SourceSKILL.md
1648jq -r '.agents.defaults.env | to_entries[] | select(.key | test("SHOPIFY")) | "\(.key)=\(.value)"' ~/.openclaw/openclaw.json 2>/dev/null
low line 1822

Access to hidden dotfiles in home directory

SourceSKILL.md
1822grep -h 'KLAVIYO\|META_\|FACEBOOK\|GA4\|GA_MEASUREMENT\|GOOGLE_ADS' ~/.zshrc ~/.bashrc ~/.zprofile ~/.envrc 2>/dev/null | grep -v '^#'
low line 1836

Access to hidden dotfiles in home directory

SourceSKILL.md
1836jq -r '.agents.defaults.env | to_entries[] | select(.key | test("KLAVIYO|META_|FACEBOOK|GA4")) | "\(.key)=\(.value)"' ~/.openclaw/openclaw.json 2>/dev/null
low line 2116

Access to hidden dotfiles in home directory

SourceSKILL.md
2116grep -h 'BLAND\|ELEVENLABS\|GROQ' ~/.zshrc ~/.bashrc ~/.zprofile ~/.envrc 2>/dev/null | grep -v '^#'
low line 2130

Access to hidden dotfiles in home directory

SourceSKILL.md
2130jq -r '.agents.defaults.env | to_entries[] | select(.key | test("BLAND|ELEVENLABS|GROQ")) | "\(.key)=\(.value)"' ~/.openclaw/openclaw.json 2>/dev/null
low line 2215

Access to hidden dotfiles in home directory

SourceSKILL.md
2215grep -h 'STRIPE\|REVENUECAT\|RC_API' ~/.zshrc ~/.bashrc ~/.zprofile ~/.envrc 2>/dev/null | grep -v '^#'
low line 2241

Access to hidden dotfiles in home directory

SourceSKILL.md
2241jq -r '.agents.defaults.env | to_entries[] | select(.key | test("STRIPE|REVENUECAT")) | "\(.key)=\(.value)"' ~/.openclaw/openclaw.json 2>/dev/null
low line 2272

Access to hidden dotfiles in home directory

SourceSKILL.md
2272prompt: "Grep the filesystem under $HOME (excluding node_modules, .git, Library/Caches) for Stripe secret key patterns: sk_live_[A-Za-z0-9]+ and sk_test_[A-Za-z0-9]+. Also scan ~/.config, ~/.aws, ~/.d
low line 2447

Access to hidden dotfiles in home directory

SourceSKILL.md
2447~/.claude/plugins/data/ops-ops-marketplace/daemon-services.json \
low line 2449

Access to hidden dotfiles in home directory

SourceSKILL.md
2449mv /tmp/daemon-services.json.new ~/.claude/plugins/data/ops-ops-marketplace/daemon-services.json && \
low line 2456

Access to hidden dotfiles in home directory

SourceSKILL.md
2456cat ~/.claude/plugins/data/ops-ops-marketplace/fires-watcher.health 2>/dev/null
low line 2474

Access to hidden dotfiles in home directory

SourceSKILL.md
2474grep -hE 'DISCORD_(BOT_TOKEN|WEBHOOK|GUILD_ID)' ~/.zshrc ~/.bashrc ~/.zprofile ~/.envrc 2>/dev/null | grep -v '^#'
low line 2521

Access to hidden dotfiles in home directory

SourceSKILL.md
2521prompt: "Grep the filesystem under $HOME (excluding node_modules, .git, Library/Caches) for Discord credentials. Patterns: bot tokens look like base64 segments separated by dots (e.g. MTAxXXXX.YYYYYY.
low line 2758

Access to hidden dotfiles in home directory

SourceSKILL.md
2758tail -20 ~/.claude/plugins/data/ops-ops-marketplace/logs/ops-daemon.log
medium line 2793

Access to hidden dotfiles in home directory

SourceSKILL.md
2793- `wacli-sync`: `{ "enabled": true, "command": "${CLAUDE_PLUGIN_ROOT}/scripts/wacli-keepalive.sh", "health_file": "~/.wacli/.health", "restart_delay": 60, "max_restarts": 10 }` — only if WhatsApp conf
medium line 2794

Access to hidden dotfiles in home directory

SourceSKILL.md
2794- `memory-extractor`: `{ "enabled": true, "command": "${CLAUDE_PLUGIN_ROOT}/scripts/ops-memory-extractor.sh", "health_file": "~/.claude/plugins/data/ops-ops-marketplace/memories/.health", "cron": "*/3
medium line 2901

Access to hidden dotfiles in home directory

SourceSKILL.md
29012. If missing, **append it automatically** — this is a required step, not optional. Use `>>` (append, never overwrite). Print: `"✓ Added export CLAUDE_PLUGIN_ROOT=... to ~/.zshrc"`. Do NOT ask the use
medium line 2902

Access to hidden dotfiles in home directory

SourceSKILL.md
29023. Tell the user: `"Run 'source ~/.zshrc' or open a new terminal for it to take effect."` — this will show as an approval prompt in Claude's next tool call, which the user accepts normally.
low line 2922

Access to hidden dotfiles in home directory

SourceSKILL.md
2922✓ Prefs: saved to ~/.claude/plugins/data/ops-ops-marketplace/preferences.json
low line 2950

Access to hidden dotfiles in home directory

SourceSKILL.md
2950cat ~/.claude/plugins/data/ops-ops-marketplace/daemon-health.json
medium line 2993

Access to hidden dotfiles in home directory

SourceSKILL.md
2993- **Never** touch `~/.claude.json` or `~/.claude/settings.json` — MCP registration is Claude Code's job, not yours.
medium line 519

Access to .env file

SourceSKILL.md
519**CRITICAL — exhaust ALL sources before reporting.** Run every scan source (1-10 below) in a single batch, THEN analyze the combined results. Do NOT report "no credentials found" after checking only e
low line 546

Access to .env file

SourceSKILL.md
546jq -r --arg var "$VAR" '.agents.defaults.env[$var] // empty' ~/.openclaw/openclaw.json 2>/dev/null
medium line 548

Access to .env file

SourceSKILL.md
5487. **Installed MCP configs** — read each `.mcp.json` the detector found. For each server entry, look at `.env` and `.args` for the variable name or for literal values that look like the target. Show t
medium line 556

Access to .env file

SourceSKILL.md
55610. **Project .env files** — scan `~/Projects/*/.env*` for the variable name or service domain patterns. These often contain credentials from other projects that can be reused.
low line 605

Access to .env file

SourceSKILL.md
6052. All .env* files across ~/Projects/ recursively
medium line 669

Access to .env file

SourceSKILL.md
669Also check `~/.claude.json mcpServers.telegram.env.TELEGRAM_API_ID`. If all 4 are found and the stored `TELEGRAM_SESSION` decodes as a StringSession, tell the user `"✓ Telegram already configured (api
low line 748

Access to .env file

SourceSKILL.md
748# Update .claude.json mcpServers.telegram.env with actual values
low line 752

Access to .env file

SourceSKILL.md
752'.mcpServers.telegram.env.TELEGRAM_API_ID = $id | .mcpServers.telegram.env.TELEGRAM_API_HASH = $hash | .mcpServers.telegram.env.TELEGRAM_PHONE = $phone | .mcpServers.telegram.env.TELEGRAM_SESSION = $s
medium line 1060

Access to .env file

SourceSKILL.md
1060- `~/.claude.json mcpServers.slack.env` (where Claude Code stores them)
low line 1648

Access to .env file

SourceSKILL.md
1648jq -r '.agents.defaults.env | to_entries[] | select(.key | test("SHOPIFY")) | "\(.key)=\(.value)"' ~/.openclaw/openclaw.json 2>/dev/null
low line 1662

Access to .env file

SourceSKILL.md
1662# Scan project .env files for store URLs
low line 1663

Access to .env file

SourceSKILL.md
1663grep -rhE 'myshopify\.com|SHOPIFY_STORE' ~/Projects/*/.env* 2>/dev/null | grep -v '^#' | head -5
low line 1836

Access to .env file

SourceSKILL.md
1836jq -r '.agents.defaults.env | to_entries[] | select(.key | test("KLAVIYO|META_|FACEBOOK|GA4")) | "\(.key)=\(.value)"' ~/.openclaw/openclaw.json 2>/dev/null
low line 2130

Access to .env file

SourceSKILL.md
2130jq -r '.agents.defaults.env | to_entries[] | select(.key | test("BLAND|ELEVENLABS|GROQ")) | "\(.key)=\(.value)"' ~/.openclaw/openclaw.json 2>/dev/null
low line 2241

Access to .env file

SourceSKILL.md
2241jq -r '.agents.defaults.env | to_entries[] | select(.key | test("STRIPE|REVENUECAT")) | "\(.key)=\(.value)"' ~/.openclaw/openclaw.json 2>/dev/null
low line 2272

Access to .env file

SourceSKILL.md
2272prompt: "Grep the filesystem under $HOME (excluding node_modules, .git, Library/Caches) for Stripe secret key patterns: sk_live_[A-Za-z0-9]+ and sk_test_[A-Za-z0-9]+. Also scan ~/.config, ~/.aws, ~/.d
low line 2521

Access to .env file

SourceSKILL.md
2521prompt: "Grep the filesystem under $HOME (excluding node_modules, .git, Library/Caches) for Discord credentials. Patterns: bot tokens look like base64 segments separated by dots (e.g. MTAxXXXX.YYYYYY.
high line 29

Access to system keychain/keyring

SourceSKILL.md
29- Keychain writes, Doppler queries, Chrome history queries
high line 38

Access to system keychain/keyring

SourceSKILL.md
38Every Bash tool call MUST include a short `description` parameter (5-10 words, e.g. "Install missing CLIs", "Scout keychain for Telegram creds", "Reload daemon"). This is what the user sees instead of
high line 51

Access to system keychain/keyring

SourceSKILL.md
51- Run ALL diagnostic/probe commands in parallel when possible. Use multiple Bash tool calls in a single message. Never run sequential probes when they're independent (e.g., `gog auth status` AND `wacl
high line 64

Access to system keychain/keyring

SourceSKILL.md
64- Credential scouts run in parallel across Doppler, keychains, browser profiles, and password managers
high line 65

Access to system keychain/keyring

SourceSKILL.md
65- Agents share findings (e.g., Doppler agent finds a partial config → keychain agent knows to skip that service)
high line 444

Access to system keychain/keyring

SourceSKILL.md
444| Vault | vault | Password manager — 1Password, Dashlane, Bitwarden, or macOS Keychain |
high line 484

Access to system keychain/keyring

SourceSKILL.md
484For the authoritative cross-OS detection logic, reuse `bin/ops-setup-detect` (which emits `os`, `pkg_mgr`, `arch`, `keyring_backend`, `shell`, `browser_profiles_found` in its JSON output).
high line 519

Access to system keychain/keyring

SourceSKILL.md
519**CRITICAL — exhaust ALL sources before reporting.** Run every scan source (1-10 below) in a single batch, THEN analyze the combined results. Do NOT report "no credentials found" after checking only e
high line 539

Access to system keychain/keyring

SourceSKILL.md
5395. **macOS Keychain** — for specific services:
high line 560

Access to system keychain/keyring

SourceSKILL.md
560| Variable names | Service keyword (Dashlane/Keychain) |
medium line 606

Access to system keychain/keyring

SourceSKILL.md
6063. macOS Keychain (security find-generic-password with various service name patterns)
high line 654

Access to system keychain/keyring

SourceSKILL.md
6541. Scans scout sources (keychain → ~/.claude.json → shell profiles → Doppler) for previously-extracted `TELEGRAM_API_ID` / `TELEGRAM_API_HASH` / `TELEGRAM_SESSION`.
high line 661

Access to system keychain/keyring

SourceSKILL.md
6611. **Scout first.** Check keychain for previously-extracted Telegram credentials:
high line 708

Access to system keychain/keyring

SourceSKILL.md
7087. **Persist to keychain + preferences.** macOS only:
high line 717

Access to system keychain/keyring

SourceSKILL.md
717Then update `$PREFS_PATH` with `channels.telegram = {backend: "gram.js", api_id: "...", phone: "...", status: "configured"}`. **Never write the api_hash or session to preferences.json** — those stay i
medium line 762

Access to system keychain/keyring

SourceSKILL.md
762Session: stored in keychain + MCP config
high line 1043

Access to system keychain/keyring

SourceSKILL.md
1043Refresh tokens are stored in the OS keyring (Keychain on macOS, Secret Service / libsecret on Linux, Credential Manager on Windows). Then stop this sub-flow and wait for the user to re-run `/ops:setup
high line 1062

Access to system keychain/keyring

SourceSKILL.md
1062- macOS keychain (`slack-xoxc`, `slack-xoxd`)
high line 1107

Access to system keychain/keyring

SourceSKILL.md
1107- Keychain: `security add-generic-password -U -s slack-xoxc -a "$USER" -w "$XOXC"; security add-generic-password -U -s slack-xoxd -a "$USER" -w "$XOXD"`.
high line 1108

Access to system keychain/keyring

SourceSKILL.md
1108- `$PREFS_PATH` → `channels.slack = {backend: "mcp:slack", team_id: "...", source: "...", status: "configured"}`. **Do not** store the raw tokens in preferences.json — keychain only.
medium line 1113

Access to system keychain/keyring

SourceSKILL.md
1113Slack tokens saved to keychain. To activate the MCP, Claude Code needs them
high line 1170

Access to system keychain/keyring

SourceSKILL.md
11701. Scout keychain for existing Notion API key:
high line 1272

Access to system keychain/keyring

SourceSKILL.md
1272Doppler is a secrets manager that injects environment variables at runtime. When configured, all ops skills can query secrets via `doppler secrets get` instead of reading from dotfiles or keychain. Th
medium line 1443

Access to system keychain/keyring

SourceSKILL.md
1443security find-generic-password -s "test" 2>&1 | head -1 # macOS Keychain (always available)
high line 1446

Access to system keychain/keyring

SourceSKILL.md
1446Parse each result to classify as `authenticated`, `needs_unlock`, `not_installed`, or `available` (Keychain is always `available`).
high line 1450

Access to system keychain/keyring

SourceSKILL.md
1450Show only what was detected via `AskUserQuestion`. **Max 4 options per call.** Since macOS Keychain and Skip are always shown, you have room for at most 2 detected managers per call. If all 3 CLIs (1P
medium line 1457

Access to system keychain/keyring

SourceSKILL.md
1457[macOS Keychain — always available]
medium line 1471

Access to system keychain/keyring

SourceSKILL.md
1471[macOS Keychain — always available]
high line 1475

Access to system keychain/keyring

SourceSKILL.md
1475Never show managers that aren't installed. Always show macOS Keychain and Skip. If none of the CLIs are installed, skip straight to showing just `[macOS Keychain — always available]` and `[Skip]`.
high line 1535

Access to system keychain/keyring

SourceSKILL.md
1535**macOS Keychain:**
medium line 1540

Access to system keychain/keyring

SourceSKILL.md
1540macOS Keychain is always available but is limited to items stored locally.
medium line 1555

Access to system keychain/keyring

SourceSKILL.md
1555"password_manager": "<1password|dashlane|bitwarden|keychain>",
medium line 1588

Access to system keychain/keyring

SourceSKILL.md
1588security find-generic-password -s "my-project-db" -w (Keychain example)
high line 1615

Access to system keychain/keyring

SourceSKILL.md
1615> **Deep-dive:** no dedicated skill ships with the password manager integration — see `${CLAUDE_PLUGIN_ROOT}/docs/memories-system.md` (Runtime Context section) for how downstream skills resolve `passw
medium line 1643

Access to system keychain/keyring

SourceSKILL.md
1643# Scan macOS Keychain
medium line 2236

Access to system keychain/keyring

SourceSKILL.md
2236# macOS Keychain
medium line 2491

Access to system keychain/keyring

SourceSKILL.md
2491# macOS Keychain (Darwin only — the setup wizard already guards this at the OS level)
high line 2581

Access to system keychain/keyring

SourceSKILL.md
2581Mirror the webhook to the flat `discord_webhook_url` key so `scripts/ops-notify.sh` (the existing fires sink) continues to find it. Prefer a Doppler reference over raw tokens when Doppler is configure
high line 2655

Access to system keychain/keyring

SourceSKILL.md
2655The script reads Shopify creds from `$PREFS_PATH .ecom.shopify.*` + `SHOPIFY_*` env, Linear from `LINEAR_API_KEY`, Slack from keychain `slack-xoxc`/`slack-xoxd`, and Notion from `NOTION_API_KEY` / key
high line 3115

Access to system keychain/keyring

SourceSKILL.md
3115### macOS Keychain
low line 231

External URL reference

SourceSKILL.md
231Report success/failure. If Homebrew is missing on macOS, stop and tell the user to install it from https://brew.sh first — do not attempt to install brew automatically.
low line 1036

External URL reference

SourceSKILL.md
1036Docs: <https://gogcli.sh/> · Repo: <https://github.com/steipete/gogcli>
low line 1065

External URL reference

SourceSKILL.md
10652. **Phase 2 — Playwright extraction** — only if nothing is found, launches a persistent-profile Chromium, opens `https://app.slack.com/client/`, asks the user to log in (or uses an existing session f
low line 1088

External URL reference

SourceSKILL.md
1088--workspace "https://app.slack.com/client/" \
low line 1102

External URL reference

SourceSKILL.md
1102curl -s -H "Authorization: Bearer XOXC_TOKEN" -b "d=XOXD_TOKEN" "https://slack.com/api/auth.test"
low line 1104

External URL reference

SourceSKILL.md
1104Expect `{"ok":true, "team_id":"T...", "user_id":"U...", "url":"https://<workspace>.slack.com/"}`. If `ok:false`, show the error and re-ask.
low line 1123

External URL reference

SourceSKILL.md
11238. **Smoke test**: call `https://slack.com/api/conversations.list?limit=1` with the tokens. Expect `ok:true` with at least one channel in the response.
low line 1178

External URL reference

SourceSKILL.md
1178Create one at https://www.notion.so/my-integrations
low line 1194

External URL reference

SourceSKILL.md
1194curl -s -o /dev/null -w "%{http_code}" -H "Authorization: Bearer $NOTION_API_KEY" -H "Notion-Version: 2022-06-28" https://api.notion.com/v1/users/me | grep -q "200" && echo "OK" || echo "FAIL"
low line 1293

External URL reference

SourceSKILL.md
1293| Debian / Ubuntu | `curl -Ls https://cli.doppler.com/install.sh \| sudo sh` |
low line 1294

External URL reference

SourceSKILL.md
1294| Fedora / RHEL | `sudo rpm --import https://packages.doppler.com/public.key && sudo dnf install -y doppler` |
low line 1684

External URL reference

SourceSKILL.md
1684Validate the input: strip `https://`, strip trailing slash, check that the result ends with `.myshopify.com`. If invalid, ask again with a correction note.
low line 1705

External URL reference

SourceSKILL.md
17053. **Browser automation** — if Kapture/Playwright MCP is available, navigate to `https://admin.shopify.com/store/<slug>/settings/apps/development` and automate the "Create an app" → "Configure scopes"
low line 1710

External URL reference

SourceSKILL.md
17101. Go to https://admin.shopify.com/store/<slug>/settings/apps/development
low line 1732

External URL reference

SourceSKILL.md
1732"https://$STORE/admin/api/2024-10/shop.json" | jq '.shop.name'
low line 1775

External URL reference

SourceSKILL.md
1775"api_base_url": "https://api.shipbob.com/v1",
low line 1798

External URL reference

SourceSKILL.md
1798| ShipBob | `Authorization: Bearer <token>` | `https://api.shipbob.com/v1` | `/user` |
low line 1799

External URL reference

SourceSKILL.md
1799| Recharge | `X-Recharge-Access-Token: <token>` | `https://api.rechargeapps.com/v1` | `/shop` |
low line 1800

External URL reference

SourceSKILL.md
1800| Yotpo | `X-Api-Key: <app_key>` | `https://api.yotpo.com` | `/core/v3/stores/<id>` |
low line 1801

External URL reference

SourceSKILL.md
1801| Shippo | `Authorization: ShippoToken <token>` | `https://api.goshippo.com` | `/carrier_accounts` |
low line 1802

External URL reference

SourceSKILL.md
1802| Gorgias | `Authorization: Basic <base64>` | `https://<domain>.gorgias.com/api` | `/account` |
low line 1803

External URL reference

SourceSKILL.md
1803| Loop | `X-Authorization: <secret>` | `https://api.loopreturns.com/api/v1` | `/warehouse` |
low line 1804

External URL reference

SourceSKILL.md
1804| Attentive | `Authorization: Bearer <token>` | `https://api.attentivemobile.com/v1` | `/me` |
low line 1876

External URL reference

SourceSKILL.md
1876"https://a.klaviyo.com/api/lists" | jq '.data | length'
low line 1890

External URL reference

SourceSKILL.md
1890curl -s "https://graph.facebook.com/v20.0/$AD_ACCOUNT_ID/campaigns?access_token=$TOKEN&limit=1" | jq '.data | length'
low line 1901

External URL reference

SourceSKILL.md
1901> Note: New developer tokens start in "test" mode — they work against test accounts only. For production data, apply for Basic Access at https://ads.google.com/home/tools/manager-accounts/
low line 1914

External URL reference

SourceSKILL.md
1914AUTH_URL="https://accounts.google.com/o/oauth2/auth?client_id=${GADS_CLIENT_ID}&redirect_uri=http://localhost:8080&response_type=code&scope=https://www.googleapis.com/auth/adwords&access_type=offline&
low line 1921

External URL reference

SourceSKILL.md
1921node -e "require('http').createServer((req,res)=>{const code=new URL(req.url,'http://localhost').searchParams.get('code');if(code){res.end('Authorization code received. You can close this tab.');proce
low line 1930

External URL reference

SourceSKILL.md
1930TOKEN_RESP=$(curl -s -X POST https://oauth2.googleapis.com/token \
low line 1934

External URL reference

SourceSKILL.md
1934--data "redirect_uri=http://localhost:8080" \
low line 1946

External URL reference

SourceSKILL.md
1946ACCESS_TOKEN=$(curl -s -X POST https://oauth2.googleapis.com/token \
low line 1950

External URL reference

SourceSKILL.md
1950"https://googleads.googleapis.com/v23/customers:listAccessibleCustomers" \
low line 1961

External URL reference

SourceSKILL.md
1961curl -s -X GET "https://googleads.googleapis.com/v23/customers:listAccessibleCustomers" \
low line 1999

External URL reference

SourceSKILL.md
1999Ask for the site URL (format: `https://example.com/` or `sc-domain:example.com`). No API key needed if gcloud is authed.
low line 2005

External URL reference

SourceSKILL.md
2005"https://searchconsole.googleapis.com/webmasters/v3/sites" | jq '.siteEntry | length'
low line 2034

External URL reference

SourceSKILL.md
2034curl -s "https://graph.facebook.com/v20.0/${WABA_PHONE_ID}" \
low line 2049

External URL reference

SourceSKILL.md
2049"gsc": { "site_url": "https://example.com/" },
low line 2078

External URL reference

SourceSKILL.md
2078"api_base_url": "https://api.triplewhale.com/api/v2",
low line 2094

External URL reference

SourceSKILL.md
2094| HubSpot | `Authorization: Bearer <token>` | `https://api.hubapi.com` | `/crm/v3/objects/contacts?limit=1` |
low line 2095

External URL reference

SourceSKILL.md
2095| Mailchimp | `Authorization: Bearer <api_key>` | `https://<dc>.api.mailchimp.com/3.0` | `/ping` |
low line 2096

External URL reference

SourceSKILL.md
2096| Segment | `Authorization: Basic <base64_key:>` | `https://api.segment.io/v1` | n/a — use write key |
low line 2097

External URL reference

SourceSKILL.md
2097| Mixpanel | `Authorization: Basic <base64_secret:>` | `https://data.mixpanel.com/api/2.0` | `/engage?limit=1` |
low line 2098

External URL reference

SourceSKILL.md
2098| Postscript | `Authorization: ApiKey <key>` | `https://api.postscript.io/api/v2` | `/shops` |
low line 2099

External URL reference

SourceSKILL.md
2099| Triple Whale | `Authorization: Bearer <token>` | `https://api.triplewhale.com/api/v2` | `/attribution/get-attribution-data` |
low line 2148

External URL reference

SourceSKILL.md
2148To find it: https://app.bland.ai → Settings → API Key
low line 2153

External URL reference

SourceSKILL.md
2153curl -s -H "Authorization: $KEY" "https://api.bland.ai/v1/me" | jq '.user.id'
low line 2162

External URL reference

SourceSKILL.md
2162To find it: https://elevenlabs.io → Profile (top-right) → API Key
low line 2167

External URL reference

SourceSKILL.md
2167curl -s -H "xi-api-key: $KEY" "https://api.elevenlabs.io/v1/user" | jq '.subscription.tier'
low line 2176

External URL reference

SourceSKILL.md
2176To generate one: https://console.groq.com → API Keys → Create API Key
low line 2183

External URL reference

SourceSKILL.md
2183"https://api.groq.com/openai/v1/models" | jq '.data | length'
low line 2288

External URL reference

SourceSKILL.md
2288curl -s -u "$STRIPE_SECRET_KEY:" "https://api.stripe.com/v1/balance" | jq '.available | length'
low line 2328

External URL reference

SourceSKILL.md
2328"https://api.revenuecat.com/v2/projects/$REVENUECAT_PROJECT_ID/metrics/overview" | jq '.metrics // .object'
low line 2412

External URL reference

SourceSKILL.md
2412Show the topic and install instructions (`open https://ntfy.sh/<topic>` in a browser, or scan the QR in the ntfy mobile app). Save to `$PREFS_PATH` under `ntfy_topic`.
low line 2417

External URL reference

SourceSKILL.md
2417curl -s -X POST https://api.pushover.net/1/messages.json \
low line 2426

External URL reference

SourceSKILL.md
2426**Discord** — if the user already set `discord_default_webhook_url` via a prior run (or issue #20's work), reuse it; otherwise Rule-3-prompt for a webhook URL (`https://discord.com/api/webhooks/...`).
low line 2521

External URL reference

SourceSKILL.md
2521prompt: "Grep the filesystem under $HOME (excluding node_modules, .git, Library/Caches) for Discord credentials. Patterns: bot tokens look like base64 segments separated by dots (e.g. MTAxXXXX.YYYYYY.
low line 2531

External URL reference

SourceSKILL.md
2531Find it: https://discord.com/developers/applications → your app → Bot → Reset Token
low line 2542

External URL reference

SourceSKILL.md
2542curl -sS "https://discord.com/api/v10/users/@me" \
low line 2554

External URL reference

SourceSKILL.md
2554Format: https://discord.com/api/webhooks/<ID>/<TOKEN>
low line 3112

External URL reference

SourceSKILL.md
3112curl -s -H "Authorization: Bearer XOXC_TOKEN" -b "d=XOXD_TOKEN" "https://slack.com/api/auth.test"
Scanned on May 29, 2026
View Security Dashboard
Installation guide →