Skip to content

/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

shell
$ npx -y skills add dancolta/subscope --skill profile --agent claude-code

How 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
How auto-invocation works

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.md
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.

Read more
Read it on GitHub ↗

Showing the first part of this file.

Ships withsubscope

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.

Get the whole plugin, auto-invoked
Stats
21
Stars
0
Views
3
Forks
Active
Maintenance
Python
Language
MIT
License
12d ago
Last commit
2mo ago
Created

Repo: dancolta/subscope

Other skills on subscope.