From last30days
Most users edit `topics.yml` once and never look at it again. Within 6 weeks, half the seeds are dead weight — burning batch budget on queries that produce zero usable signal. This skill answers two questions:
How this skill is triggered — by the user, by Claude, or both
Slash command
/last30days:seed-auditThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Most users edit `topics.yml` once and never look at it again. Within 6 weeks, half the seeds are dead weight — burning batch budget on queries that produce zero usable signal. This skill answers two questions:
Most users edit topics.yml once and never look at it again. Within 6 weeks, half the seeds are dead weight — burning batch budget on queries that produce zero usable signal. This skill answers two questions:
It does not edit topics.yml. It produces a swap-list the user can accept, edit, or reject.
The batch pool lives on the data branch. Two options:
# Option A: clone the data branch into a scratch dir
git worktree add /tmp/data-branch data 2>/dev/null || git fetch origin data:data && git worktree add /tmp/data-branch data
DATA_DIR=/tmp/data-branch/data
# Option B: caller already checked it out (CI case)
DATA_DIR=batch-data/data
If neither path resolves, ask the user where the data is. If no data exists yet (first month of running), exit with "Rolling pool is empty — wait for ≥7 days of batches before auditing."
uv run --frozen python3 skills/seed-audit/scripts/audit_seeds.py \
--data-dir "$DATA_DIR" \
--topics topics.yml \
--window-days 30 \
--emit markdown
Script behavior (read scripts/audit_seeds.py for the full contract):
<DATA_DIR>/*/*.json, loads each batch report.report.topic → {batches: N, candidates: K, clusters: C, top_score: S}.topics.yml.topics.yml (user already removed it)For each DEAD or WEAK seed, propose a replacement. The replacement should follow the 70/20/10 mix already locked in topics.yml (doc.md §7):
WebSearch for " active members")Do not invent seeds that don't follow the existing format. Quote-wrap pain phrases. Keep audience qualifiers concrete.
Exact format:
# Seed audit — <YYYY-MM-DD>
Window: last <N> days Batches: <B> Unique seeds seen: <U>
Active in topics.yml: <A> Orphan in data: <O>
## DEAD (no clusters, recommend remove)
- `<seed>` — 0 clusters across <n> batches
Suggested replacement: `<new seed>`
Why: <one short reason>
## WEAK (low yield, recommend swap)
- `<seed>` — <c> clusters, top score <s> (median: <m>)
Suggested replacement: `<new seed>`
Why: <one short reason>
## DOMINANT (over-represented, recommend split or thin)
- `<seed>` — <c>/<total> clusters (<%>)
Suggested split: `<seed-a>` + `<seed-b>`
Why: avoids over-indexing on one phrase / sub
## HEALTHY (leave alone)
- `<seed>` — <c> clusters, top score <s>
- `<seed>` — <c> clusters, top score <s>
## ORPHAN (already removed from topics.yml; will age out of pool naturally)
- `<seed>` — last batch <date>
After the audit, output a single topics.yml diff block the user can review and apply manually.
topics.yml automatically. The user owns that file. Produce a diff block they apply.WebSearch budget per WEAK / DEAD seed. Don't burn 30 web searches on an audit.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub abhishekdubey331/app-ideas-30-days-extension --plugin last30days