agentleFS
sanskarprajapatisanskarprajapati/validator-skill/skills/validate-pain/SKILL.md

validate-pain

Skill7 starsChanged 18 days agoMITView on GitHub

The Pain Index. Scores every pain theme on frequency, intensity, recency, money signals ("I'd pay", a price, "switched from") and workaround signals (a script, a spreadsheet, an assistant hired for it), with fixed published rules so the same data always gets the same score. Ends with the pains worth money and the ones that are only noise. Use when the user asks "which problem is worth solving", "how bad is the pain", "score the pain", or "is this a real problem".

The file

We split this skill into the rules it gives an agent

1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Read validator/pain.md, then give:

    line 63

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

validate-pain

The Pain Index turns labelled complaints into a ranking you can defend. Every number comes from fixed rules in a script, so nobody can talk a pet theme up the list, you included.

What the user typed after /validate-pain: $ARGUMENTS

The tool

python3 "${CLAUDE_SKILL_DIR}/painindex.py" [--dir validator] [--today YYYY-MM-DD]

The signal rules (the exact words that count as money, workaround or intensity) are in ${CLAUDE_SKILL_DIR}/signals.py. If the path is not expanded, use the base directory Claude Code printed for this skill.

Step 1: run it

Needs validator/labels.jsonl and validator/themes.json. If either is missing, run /validate-cluster first. If validator/idea.lock exists, run python3 "${CLAUDE_SKILL_DIR}/../validate-idea/idea.py" check validator/idea.json first. If the bar moved without a recorded reason, stop and tell the user.

The index only counts complaints inside the bar's max_age_months window. It writes validator/pain.md (the report), validator/pain.json (every number) and validator/signals.jsonl (which signal fired on which complaint, and the words that fired it).

How the score works, say it once

Six parts, each from 0 to 1, weighted to a score out of 100:

partweightwhat it measures
money30share of complaints that mention paying, a price, a refund or switching tools
frequency20how many complaints, against the biggest theme
intensity15the labellers' 1-3 rating, plus strong words and shouting
workaround15share that describe a spreadsheet, a script, a hire, manual copying
breadth10how many different people and communities say it
recency10share from the last six months

Money weighs most, because complaining is free and paying is not. A theme needs at least 10 complaints to be called, and at least 60 points with 3 money signals to be called worth money. Below 40 is noise. In between is real, unproven.

Step 2: tell the user

Read validator/pain.md, then give:

  1. The bar: complaints and money signals, need against have, pass or fail.
  2. The ranking: each theme's score and tier in one line.
  3. For each theme worth money (up to three): what the pain is, who has it, and one quote exactly as pain.md gives it, with its ID and link.
  4. The noise: which themes scored low and why (one loud person, no money talk, all old).
  5. What is thin: themes marked too few to call, and complaints still in other.

Quote only from pain.md or labels.jsonl. Those quotes passed a word-for-word check against the original posts. Never paraphrase a quote inside quotation marks.

Step 3: if you disagree

You may think a score is off, for example a theme full of sarcasm the word rules read as money talk. Say so in words, with the complaint IDs that show it. Never change a score, a tier, a weight or a rule to make a theme rank differently. A rule change is a change to the pack, made in signals.py with tests, never in the middle of a run.

When the bar fails

Say it plainly: the evidence does not clear the bar the user set before seeing any data. Then offer the two honest ways forward. One is to mine more: different pain phrases, more communities, the competitors' reviews. The other is to narrow the idea to the theme or group that scored best, and test that. Do not move the bar to make it pass. If the user decides to move it, that is their call, and idea.py lock --reason records it.

Output

validator/pain.md, validator/pain.json, validator/signals.jsonl.

Next: /validate-segment picks who to build for first.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.