/profile
Per-section deep dive for refining an existing subscope targeting profile. Not a full re-interview, just the section that's drifted. Pick one section (competitors, pain language, subreddit tiers, keywords, buyer titles, customers, content map, positioning), answer 1-3 focused
$ npx -y skills add dancolta/subscope --skill profile --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.
- You can call itInvoke it directly when you want it.
- Slash command
/profile
Context preview
The summary Claude sees to decide when to auto-load this skill.
Per-section deep dive for refining an existing subscope targeting profile. Not a full re-interview, just the section that's drifted. Pick one section (competitors, pain language, subreddit tiers, keywords, buyer titles, customers, content map, positioning), answer 1-3 focused
SKILL.md
profile.SKILL.mdname: subscope-profile
description: Per-section deep dive for refining an existing subscope targeting profile. Not a full re-interview, just the section that's drifted. Pick one section (competitors, pain language, subreddit tiers, keywords, buyer titles, customers, content map, positioning), answer 1-3 focused questions, and the relevant YAML file is rewritten in place. Other sections are untouched. Use this after a few scans when one dimension feels off (too much noise from one sub, competitor anchor missing a name, pain phrasing not landing). Triggers on "profile", "/subscope-profile", "refine my profile", "redo competitor anchor", "redo subreddits", "rebuild pain language", "swap a subreddit", "update my targeting", "fix my profile", "tighten my profile".
allowed-tools: Bash, Read, Write, Edit, WebFetch
/subscope-profile
Per-section deep dive. Not a full re-interview, just the section that's drifted.
You ran `/subscope-onboard` once and the four config files at `~/.config/subscope/` are in place. After a few scans you notice: one subreddit floods the results with noise, the competitor anchor is missing a name, the pain language doesn't match how your buyers actually talk. That's the job for this skill. Pick the section, answer 1-3 focused questions, and only that section is rewritten.
If you've never run onboarding before, run `/subscope-onboard` first. This skill assumes an existing config.
Procedure
Step 1: Verify an onboarded config exists
cd "$CLAUDE_PLUGIN_ROOT" && PYTHONPATH=engine python3 -c "
from pathlib import Path
from subscope.lib import store
cfg = store.xdg_config_dir()
required = ['subreddits.yml', 'keywords.yml', 'brand-anchor.yml', 'example-pains.yml']
missing = [f for f in required if not (cfg / f).exists()]
if missing:
print('MISSING:', missing)
print('Run /subscope-onboard first.')
else:
print('OK')
"If any required file is missing, stop and direct the user to `/subscope-onboard`.
Step 2: Pick a section
Print verbatim:
Which section needs a refresh?
[1] Competitor anchor brand-anchor.yml
[2] Pain language example-pains.yml
[3] Subreddit tiers subreddits.yml
[4] Keywords keywords.yml
[5] Buyer titles subreddits.yml (operator/builder mapping)
[6] Customers regenerate inferred customer list
[7] Content map blog-map.yml (your own URLs)
[8] Positioning regenerate the one-line positioning, may cascade
Type a number.
If user types a number not in 1-8, re-prompt once. Multiple sections in one run are allowed, ask for a comma-separated list. Each section then runs in sequence, sharing the same review-and-write pattern.
Step 3: Run the chosen section flow
Each section follows the same shape: show the current value, ask 1-3 focused questions, propose the new value, write on `confirm`.
Section 1: Competitor anchor (brand-anchor.yml)
Show current:
cat ~/.config/subscope/brand-anchor.yml
Ask:
Current anchor has <N> competitors. What needs to change?
[a] Add a competitor I'm missing
[b] Drop a competitor that doesn't fit anymore
[c] Reorder (move the top 3 churn-from brands to the top)
[d] Full rebuild (paste 5-10 tools your buyer evaluates you against)
Pick one or paste edits directly (e.g. "add Apollo and Clay, drop Outreach").
Apply edits in-memory to the full payload (loaded from `~/.config/subscope/`), then validate the whole payload via the existing helper. See [Step 4](#step-4--load-mutate-validate-write-the-full-payload) below for the shared shell pattern. Show the diff (old vs new) and ask: `confirm / show full file / edit again`. Write on `confirm`.
Section 2: Pain language (example-pains.yml)
Show current top 5 pain phrases.
Ask:
Pain language is load-bearing. The classifier looks for these phrases in
post titles and bodies.
[a] Add a phrase your buyer actually says (verbatim, from Slack/calls/reviews)
[b] Drop a phrase that produced noise
[c] Paste 3-5 verbatim quotes and I'll extract phrases
Generic SEO-style keywords don't work here. "buyer intent platform" is yours;
"this is killing me, we're paying for 4 tools that do the same thing" is theirs.
Process. Validate. Diff. Confirm. Write.
Section 3: Subreddit priority (subreddits.yml)
Show the current subs grouped as Primary (scanned every run) and Secondary (opportunistic), each with its weight (relevance: higher = more prioritised). Remind the user that every run sorts results into Buyer signals and Authority plays, so a single sub can produce both.
Ask:
Which subs feel off?
[a] Re-prioritise a sub (Primary <-> Secondary)
[b] Drop a sub that floods with noise
[c] Add a sub I should be watching
[d] Quarantine a sub (keep in config but skip on every scan)
Paste edits like "move r/SaaS to tier 1, drop r/marketing, add r/RevOps".
For each `add` candidate, optionally validate via warm-scan. The engine scans the whole config (there is no single-sub flag), so add the candidate to Tier 2 of `subreddits.yml` provisionally, then run a small capped scan to see whether it surfaces anything worth keeping:
cd "$CLAUDE_PLUGIN_ROOT" && PYTHONPATH=engine python3 -m subscope.cli fetch-score \
--limit-per-sub 10 --daily-cap 5 --no-slack --max-surfaces 5 \
2>/dev/null || echo "warm-scan-skipped"
If the candidate produced nothing relevant, drop it. Diff. Confirm. Write.
Section 4: Keywords (keywords.yml)
Show current Shared / Operator / Builder buckets.
Ask:
Which bucket needs a refresh?
[a] Shared (cross-cutting phrases your buyer uses regardless of role)
[b] Operator (work-pain phrases, "this is broken", "we need to ditch X")
[c] Builder (technical/replacement phrases, "alternative to", "open source")
Paste add/drop edits for that bucket.
Process. Validate (each bucket has min/max caps in config/weights.yml). Diff. Confirm. Write.
Read more
name: subscope-profile description: Per-section deep dive for refining an existing subscope targeting profile. Not a full re-interview, just the section that's drifted. Pick one section (competitors, pain language, subreddit tiers, keywords, buyer titles, customers, content map, positioning), answer 1-3 focused questions, and the relevant YAML file is rewritten in place. Other sections are untouched. Use this after a few scans when one dimension feels off (too much noise from one sub, competitor anchor missing a name, pain phrasing not landing). Triggers on "profile", "/subscope-profile", "refine my profile", "redo competitor anchor", "redo subreddits", "rebuild pain language", "swap a subreddit", "update my targeting", "fix my profile", "tighten my profile". allowed-tools: Bash, Read, Write, Edit, WebFetch
/subscope-profile
Per-section deep dive. Not a full re-interview, just the section that's drifted.
You ran `/subscope-onboard` once and the four config files at `~/.config/subscope/` are in place. After a few scans you notice: one subreddit floods the results with noise, the competitor anchor is missing a name, the pain language doesn't match how your buyers actually talk. That's the job for this skill. Pick the section, answer 1-3 focused questions, and only that section is rewritten.
If you've never run onboarding before, run `/subscope-onboard` first. This skill assumes an existing config.
Procedure
Step 1: Verify an onboarded config exists
cd "$CLAUDE_PLUGIN_ROOT" && PYTHONPATH=engine python3 -c "
from pathlib import Path
from subscope.lib import store
cfg = store.xdg_config_dir()
required = ['subreddits.yml', 'keywords.yml', 'brand-anchor.yml', 'example-pains.yml']
missing = [f for f in required if not (cfg / f).exists()]
if missing:
print('MISSING:', missing)
print('Run /subscope-onboard first.')
else:
print('OK')
"If any required file is missing, stop and direct the user to `/subscope-onboard`.
Step 2: Pick a section
Print verbatim:
Which section needs a refresh? [1] Competitor anchor brand-anchor.yml [2] Pain language example-pains.yml [3] Subreddit tiers subreddits.yml [4] Keywords keywords.yml [5] Buyer titles subreddits.yml (operator/builder mapping) [6] Customers regenerate inferred customer list [7] Content map blog-map.yml (your own URLs) [8] Positioning regenerate the one-line positioning, may cascade Type a number.
If user types a number not in 1-8, re-prompt once. Multiple sections in one run are allowed, ask for a comma-separated list. Each section then runs in sequence, sharing the same review-and-write pattern.
Step 3: Run the chosen section flow
Each section follows the same shape: show the current value, ask 1-3 focused questions, propose the new value, write on `confirm`.
Section 1: Competitor anchor (brand-anchor.yml)
Show current:
cat ~/.config/subscope/brand-anchor.yml
Ask:
Current anchor has <N> competitors. What needs to change? [a] Add a competitor I'm missing [b] Drop a competitor that doesn't fit anymore [c] Reorder (move the top 3 churn-from brands to the top) [d] Full rebuild (paste 5-10 tools your buyer evaluates you against) Pick one or paste edits directly (e.g. "add Apollo and Clay, drop Outreach").
Apply edits in-memory to the full payload (loaded from `~/.config/subscope/`), then validate the whole payload via the existing helper. See [Step 4](#step-4--load-mutate-validate-write-the-full-payload) below for the shared shell pattern. Show the diff (old vs new) and ask: `confirm / show full file / edit again`. Write on `confirm`.
Section 2: Pain language (example-pains.yml)
Show current top 5 pain phrases.
Ask:
Pain language is load-bearing. The classifier looks for these phrases in post titles and bodies. [a] Add a phrase your buyer actually says (verbatim, from Slack/calls/reviews) [b] Drop a phrase that produced noise [c] Paste 3-5 verbatim quotes and I'll extract phrases Generic SEO-style keywords don't work here. "buyer intent platform" is yours; "this is killing me, we're paying for 4 tools that do the same thing" is theirs.
Process. Validate. Diff. Confirm. Write.
Section 3: Subreddit priority (subreddits.yml)
Show the current subs grouped as Primary (scanned every run) and Secondary (opportunistic), each with its weight (relevance: higher = more prioritised). Remind the user that every run sorts results into Buyer signals and Authority plays, so a single sub can produce both.
Ask:
Which subs feel off? [a] Re-prioritise a sub (Primary <-> Secondary) [b] Drop a sub that floods with noise [c] Add a sub I should be watching [d] Quarantine a sub (keep in config but skip on every scan) Paste edits like "move r/SaaS to tier 1, drop r/marketing, add r/RevOps".
For each `add` candidate, optionally validate via warm-scan. The engine scans the whole config (there is no single-sub flag), so add the candidate to Tier 2 of `subreddits.yml` provisionally, then run a small capped scan to see whether it surfaces anything worth keeping:
cd "$CLAUDE_PLUGIN_ROOT" && PYTHONPATH=engine python3 -m subscope.cli fetch-score \ --limit-per-sub 10 --daily-cap 5 --no-slack --max-surfaces 5 \ 2>/dev/null || echo "warm-scan-skipped"
If the candidate produced nothing relevant, drop it. Diff. Confirm. Write.
Section 4: Keywords (keywords.yml)
Show current Shared / Operator / Builder buckets.
Ask:
Which bucket needs a refresh? [a] Shared (cross-cutting phrases your buyer uses regardless of role) [b] Operator (work-pain phrases, "this is broken", "we need to ditch X") [c] Builder (technical/replacement phrases, "alternative to", "open source") Paste add/drop edits for that bucket.
Process. Validate (each bucket has min/max caps in config/weights.yml). Diff. Confirm. Write.
Showing the first part of this file.
subscope reads Reddit for you and hands you the threads worth replying to: the people shopping for what you sell, and the questions you can answer to build authority. Run it whenever you want.
Other skills on subscope.
- /build-vs-buy
Surface explicit build-vs-buy debate threads with numeric arguments (engineering hours, TCO, payback). OP is rationalizing the decision publicly — your worldview is the answer. Triggers on "build vs buy", "/subscope-build-vs-buy", "find build-vs-buy debates", "in-house vs SaaS",
Open skill - /churn
Surface high-intent Reddit posts where someone explicitly says they are canceling, switching from, or fed up with a named SaaS vendor. Pure buying intent. Triggers on "churn signals", "/subscope-churn", "find churn posts", "who's canceling", "switching from posts",
Open skill - /judge
Interactive classifier for a single Reddit surface. Reads one post by surface ID (or pasted URL/title/body), runs the bulk-classifier prompt against it, and returns a verdict + reply angle. Uses your Claude Code subscription, NOT a separate API key — costs nothing extra beyond
Open skill - /onboard
Mandatory first-run setup for subscope. One conversation, three plain questions, one confirmation, optional integrations, first scan. Paste URLs, answer what-you-sell / who-buys-it / what's-the-pain, confirm the targeting card, pick integrations to connect (DataForSEO,
Open skill - /op-vet
Score a Reddit user's profile before replying. Returns karma, account age, sub-activity breakdown, and a GO / HOLD / SKIP verdict. Useful when you spot a thread that looks promising but want to confirm OP is a real operator (not a throwaway, karma farmer, or hustle-bro).
Open skill - /pricing-rage
Surface Reddit price-hike rage threads (Salesforce/HubSpot/Gong cyclical Q1/Q3 spikes). Time-sensitive — cooling queue auto-disabled. Triggers on "pricing rage", "/subscope-pricing-rage", "find price hike threads", "renewal complaints", "predatory pricing posts", "tier change
Open skill

