topic-scout
Skill0 starsChanged 2 months agoMITView on GitHub
Find new topics worth covering and log them to a tracker, deduplicated and scored. Rotates through the beats in references/beats.md, walks the primary sources listed there, drops anything already covered or already expired, and records only the top few. Use for "find me something to post about today", "what should I cover this week", "any new topics", "fill the idea backlog", "update the topic tracker", and for a scheduled daily run. Researching and verifying an already-chosen topic is topic-brief instead — this skill is the step before that, deciding what to work on at all.
2 other projects use a version of this.
Adopted by
Most recently taken up by
- enstw/thesisbug2their own version, first seen Nov 8, 2026
- ttalkkaklab/social-flowtheir own version, first seen Aug 18, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- ttalkkaklab/social-flow★ 1same name
- enstw/thesisbug2★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository3 other files it gives its agents.
- blog-postSkill
- carousel-postSkill
- topic-briefSkill
The file
We split this skill into the rules it gives an agent
10 rules. About 0 are common, 4 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 52
Do not swap a beat because another one "looks more interesting today" — once the rotation breaks, you are back to one beat forever within a …
- Distinctive: line 74
If walking the sources isn't enough, search — but put the beat name plus the current month in the query.
- Distinctive: line 93
Always run F3 through the script:
- Very specific: line 104
Use only the rubric in references/scoring.md: beat base score plus adjustments.
- Very specific: line 110
Write only the top 3–5 to the idea tracker.
- Very specific: line 111
Follow the row format in references/tracker.md exactly.
- Distinctive: line 115
Leave only this in chat. Don't paste candidate write-ups — the tracker is the record.
- Distinctive: line 126
Create or edit rows in the production queue (read-only from here)
- Very specific: line 129
Write hooks, scripts, or outlines here (that's blog-post / carousel-post)
- Very specific: line 130
Write a full brief (that's topic-brief — scouting stops at a one-line summary)
≈ “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.
Files
Topic Scout
Finds what to cover and writes it to your idea tracker. Built to run once a day.
Where it sits in the pipeline:
[this skill] scout → idea tracker
↓ a human picks one and promotes it
production queue
↓ topic-brief (verify → one-page brief)
↓ blog-post / carousel-postThis skill never writes to the production queue. It reads the queue only to check for duplicates. A human promoting an idea is the gate; if the model skips that gate, unverified topics end up in the production queue.
The five ways this fails (all five are defended below)
- Suggests something already covered → don't skip the three-layer duplicate check.
- Suggests something already over → a candidate whose deadline you couldn't confirm does not get recorded.
- Mines the same beat every day → follow the rotation from
axis.py. Don't pick by feel. - Invents something plausible with no source → no primary-source URL, no record.
- Ranks by intuition → score only with the rubric in
references/scoring.md.
Reference routing
| When | Document |
| Which sources to open for each beat | references/beats.md |
| How to score, and what disqualifies a candidate | references/scoring.md |
| Tracker fields and how to write a row | references/tracker.md |
| Today's beats and their sources | python scripts/axis.py --today |
| Duplicate check | python scripts/dedup.py |
Procedure — once per run
1. Pick the beats
python scripts/axis.py --todayPrints the beats to mine today and the source rows for each. Mine only those beats.
Do not swap a beat because another one "looks more interesting today" — once the rotation
breaks, you are back to one beat forever within a few days. If the user names a beat,
override with --beat "<name>" and leave the rotation state alone.
2. Load existing state (for the duplicate check)
Pull the names of every row from both lists — your production queue and your idea
tracker. references/tracker.md has the field names.
- Production queue — every row, whatever its status. A row sitting at "candidate" is still a topic you already have.
- Idea tracker — every row. Re-suggesting yesterday's suggestion is the most common way this skill wastes a run.
3. Collect — walk the primary sources
Open the sources for each of today's beats from the top down. In each one you are looking for exactly one thing: something live right now that gives your audience real money, time, or access.
- Fetch the page. If the body doesn't come back because the page renders client-side, reopen it with a browser tool rather than giving up.
- If walking the sources isn't enough, search — but put the beat name plus the current month in the query. Do not run queries that leave the beat.
- Do not scrape sites behind a login. It breaks their terms and the data is unreliable.
Gather 3–5 candidates per beat, 10–15 total. Don't filter yet.
4. Filter — most candidates die here
Apply in order. Log the reason for each rejection; don't record rejected candidates.
| # | Rejected when | Why |
| F1 | No primary-source URL | Nothing can be verified |
| F2 | Already closed, expired, or fully subscribed | The worst possible accident |
| F3 | Already in the queue or tracker (dedup.py) | Duplicate |
| F4 | Audience doesn't match yours | Not your readers |
| F5 | Benefit can't be expressed as an amount or a time saved | No number for the hook |
| F6 | Geographically narrower than your audience | Reach doesn't justify it |
Always run F3 through the script:
python scripts/dedup.py --existing existing.json "candidate one" "candidate two"Drop anything marked duplicate. Keep anything marked similar, noting what it is
similar to — the next round of a recurring thing is a new topic, not a duplicate.
5. Score
Use only the rubric in references/scoring.md: beat base score plus adjustments.
Never raise a score because a deadline is close. Urgency belongs in the deadline
field, where it breaks ties; it is not a ranking input. scoring.md explains why.
6. Record
Write only the top 3–5 to the idea tracker. Write all ten and nobody reads any of them.
Follow the row format in references/tracker.md exactly.
Reporting
Leave only this in chat. Don't paste candidate write-ups — the tracker is the record.
[scout YYYY-MM-DD] beats: <three>
recorded N: <name>(score) / <name>(score) / <name>(score)
rejected M: F1 a · F2 b · F3 c ...
blocked sources: <what you couldn't open and why. omit if none>Never
- Create or edit rows in the production queue (read-only from here)
- Fill in an amount, date, or eligibility rule that isn't in the primary source
- Scrape pages behind a login wall
- Write hooks, scripts, or outlines here (that's
blog-post/carousel-post) - Write a full brief (that's
topic-brief— scouting stops at a one-line summary)
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
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.

