Skip to content

/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

shell
$ npx -y skills add dancolta/subscope --skill judge --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/judge
How auto-invocation works

Context preview

The summary Claude sees to decide when to auto-load this skill.

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

SKILL.md

judge.SKILL.md
name: subscope-judge
description: 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 what you already pay. Triggers on "judge surface 3", "classify post #N", "/subscope-judge", "is post X a real lead", "should I reply to this", "judge this reddit post", or any request to evaluate a single surfaced post's quality before drafting a reply.
allowed-tools: Bash, Read

/subscope-judge

Interactive single-surface classifier. Designed for the workflow where you scan today's `/subscope-run` output, hit one or two surfaces that feel borderline, and want a structured judgment before deciding whether to reply.

**Why this exists separately from bulk classification:** bulk LLM classification of every regex-passing post requires an Anthropic API key (~$0.50/day at 5K posts/day, cheap but not free). The judge skill uses your Claude Code subscription directly — no API key, no subprocess, no extra cost. It's the right tool for "I want a verdict on these 2 posts" not "grade every post in today's list."

When to invoke

The user has just seen `/subscope-run` output and asks something like:

  • `/subscope-judge 3` — surface number from today's list
  • "is surface #5 actually a real lead?"
  • "classify the HubSpot post"
  • "judge this: https://reddit.com/comments/abc123/"

Procedure

Step 1 — Identify the target surface

Three paths the user might take:

**A. Surface number from today's list.** The most recent `inline_markdown` from `/subscope-run` is in your conversation context. Find the surface in the numbered list by index. Extract: post URL, title, body, subreddit.

**B. Reddit URL pasted.** Read the post via the engine's keyless RSS fetcher. Pass the URL through an environment variable (never interpolate it into the Python source, so a quote or special char in the URL cannot break the command):

cd "$CLAUDE_PLUGIN_ROOT" && PYTHONPATH=engine REDDIT_URL="$REDDIT_URL" python3 -c "
import os, sys, json
from subscope.lib import reddit
post = reddit.fetch_post(os.environ['REDDIT_URL'])
if not post:
    print('Could not reach that post. Check the URL, or paste the title and body directly and I will judge from that.', file=sys.stderr)
    sys.exit(1)
print(json.dumps({'subreddit': post['subreddit'], 'title': post['title'], 'body': (post['body'] or '')[:800]}))
"

`fetch_post` handles id extraction, validation, and the dual-host RSS failover internally. If it returns nothing (post removed, deleted, or Reddit unreachable), fall back to Path C: ask the user to paste the title and body.

**C. Free-text paste.** User pastes a title + body directly. No fetch needed — just structure it.

Step 2 — Load the bulk-classifier prompt

You must use the SAME prompt the bulk classifier uses, so verdicts are consistent across modes. Read it:

cat "$CLAUDE_PLUGIN_ROOT/engine/subscope/prompts/classify.md"

This is the system prompt. Treat it as your operating instructions for this turn.

Step 3 — Classify

Reason through the post per the prompt rules. The prompt expects strict JSON output. Produce a verdict matching this schema:

{
  "intent": "pain_post" | "question" | "vendor_content" | "neutral",
  "buyer_stage": "unaware" | "considering" | "evaluating" | "ready" | "post_purchase",
  "sentiment": "positive" | "neutral" | "negative",
  "competitor_mentioned": "<brand>" | null,
  "fit_score": 0..10,
  "suggested_angle": "<short reply angle, max 120 chars, lowercase, anti-marketer>"
}

Apply the prompt's conservative rule: **if uncertain, lower fit_score.** Surface 5 is easier to skip than a wrong-6 to defend.

Step 4 — Present to the user

Format the verdict for human reading, NOT raw JSON. Pattern:

**Surface N — r/<sub>**

> <one-line post title>

| | |
|---|---|
| Intent | <intent> |
| Buyer stage | <buyer_stage> |
| Sentiment | <sentiment> |
| Competitor mentioned | <brand or "none"> |
| Fit score | **N/10** |

**Reply angle:** <suggested_angle>

<one or two sentences of reasoning — what specifically signals the fit_score>

If `fit_score >= 7`, end with: `Go.` If `fit_score 4-6`, end with: `Borderline — your call.` If `fit_score <= 3`, end with: `Skip.`

Anti-patterns

  • Don't classify multiple surfaces in one invocation. That's bulk LLM territory — tell the user to set `ANTHROPIC_API_KEY` and re-run `/subscope-run` if they want every post graded.
  • Don't draft a reply. The reply angle is a one-line hint; the human writes the actual comment.
  • Don't promote any product (yours or anyone else's) in the angle. Anti-marketer voice is non-negotiable — read the prompt.
  • Don't skip Step 2. The prompt is the source of truth. If it's missing or unreadable, fall back to a fast structural classification but tell the user the prompt couldn't be loaded.
Read more
Read it on GitHub ↗
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.