Use this skill when the user wants to research sources for a grimoire, find URLs on a topic, score source quality, curate a reading list, or says "grimoire scout", "find sources", "research this topic", or "/grimoire:scout". Evaluates sources using 6-signal confidence scoring and produces a ranked, human-reviewable source list.
Research a topic, discover sources, score them with 6-signal confidence scoring, and produce a curated source list for human review.
scout-queue.md — seed URLs from init should be included in the candidate poolscout-report.md — if one exists, ask the user whether to resume or start freshFind the grimoire workspace:
SCHEMA.md in the current directory firsttopic, scope.in, scope.out, and audiencescout-queue.md exists, load all URLs with status pending — these are seeds from initscout-report.md already exists, show the existing report date and ask:
Do NOT proceed if SCHEMA.md is missing — scaffold the workspace first with init.
Derive 4-8 search angles from the topic and scope. Cover all six source categories:
Map each angle to a concrete search query. Use scope.out to exclude irrelevant directions.
Use AskUserQuestion to show the planned angles before searching:
I'll search these angles for "{topic}":
1. Official docs — "{query}"
2. Community tutorials — "{query}"
3. GitHub repos — "{query}"
4. X/Twitter threads — "{query}"
5. Video talks — "{query}"
6. Academic sources — "{query}"
Add angles, remove any, or adjust queries before I search?
Incorporate user edits before proceeding.
Run WebSearch for each approved angle. For each result, collect:
Also add any seed URLs from scout-queue.md to the candidate pool.
Deduplicate by URL before scoring:
example.com/page and example.com/page/ as identical)www prefix (treat www.example.com and example.com as identical)If the combined pool (search results + seed URLs) is empty after dedup, do NOT proceed to Step 4 with zero sources. Instead:
scope.out, rare jargon, network issueLoad the full rubric from:
${CLAUDE_PLUGIN_ROOT}/skills/scout/references/confidence-scoring.md
Score each source on all 6 signals (1-5 each):
| Signal | Weight |
|---|---|
| Authority | High |
| Credibility | High |
| Uniqueness | High |
| Depth | Medium |
| Recency | Medium |
| Engagement | Medium |
Sum the 6 scores for a composite (range: 6-30). Assign a priority tier:
| Tier | Score | Action |
|---|---|---|
| P0 | 18-30 | Must ingest — defines the knowledge base |
| P1 | 12-17 | Should ingest — adds perspective or depth |
| P2 | 6-11 | Nice to have — supplementary or redundant |
Write one-line rationale for every source explaining the tier assignment.
Tie-breaking when composite scores are equal: Uniqueness > Authority > Depth > Recency.
Do NOT fetch or read source content — scoring is based on metadata (URL, title, snippet, source domain, publication date, observable engagement). Content reading is ingest's job.
Display the full report organized by tier before writing any files:
Scout Report: {topic}
Sources found: {N} | After dedup: {M}
P0 — Must Ingest ({n} sources)
1. {title} [{score}/30]
{url}
Auth:{a} Cred:{c} Uniq:{u} Depth:{d} Rec:{r} Eng:{e}
{rationale}
...
P1 — Should Ingest ({n} sources)
...
P2 — Nice to Have ({n} sources)
...
Gaps Identified:
- {topic area} — {what coverage is thin or missing}
Then use AskUserQuestion:
Ready to approve? Options:
A) Approve all and write output files
B) Approve with exclusions (tell me which to remove)
C) Move sources between tiers
D) Add known URLs I didn't find
E) Search additional angles (I'll search and re-present)
F) Reject and start over with new angles
Hard checkpoint: do NOT write output files until the user selects A, B, C, or D and confirms the final list.
Handle each response before proceeding:
Only proceed to Step 6 when the user explicitly selects A, or selects B/C/D and then confirms the final list.
Write three files in the grimoire workspace (the directory containing SCHEMA.md). Do NOT write inside the plugin directory.
# Scout Report: {topic}
Date: {YYYY-MM-DD}
Sources found: {N} | After dedup: {M}
## P0 — Must Ingest
| # | URL | Title | Type | Auth | Cred | Uniq | Depth | Rec | Eng | Score | Rationale |
|---|-----|-------|------|------|------|------|-------|-----|-----|-------|-----------|
| 1 | {url} | {title} | {type} | {1-5} | {1-5} | {1-5} | {1-5} | {1-5} | {1-5} | {sum} | {one-line} |
## P1 — Should Ingest
(same table structure)
## P2 — Nice to Have
(same table structure)
## Gaps Identified
- {topic area} — {what's missing or thin}
# Approved Sources: {topic}
Approved: {YYYY-MM-DD}
Total: {N}
## Ingest Queue
| # | URL | Title | Type | Tier | Status |
|---|-----|-------|------|------|--------|
| 1 | {url} | {title} | {type} | P0 | pending |
Sources are listed P0 first, then P1, then P2. All start with status pending —
ingest updates these as it processes each source.
# Scout Notes: {topic}
Date: {YYYY-MM-DD}
## Search Angles
- {category}: {query used}
## Deduplication
- {N} duplicates removed: {list normalized URLs}
## Exclusions
- {url} — {reason given by user}
## Resumption Notes
- (only if resuming a prior run) Prior report date: {date}, new sources added: {N}
If scout-queue.md exists in the workspace, update the status of all seed URLs that
were included in approved-sources.md from pending to consumed. If all entries
are consumed, note this in scout-notes.md under Resumption Notes.
Also append to wiki/log.md in the grimoire workspace (create the file if it does not exist):
## {YYYY-MM-DD} — Scout complete
- {N} sources found, {M} approved ({p0} P0, {p1} P1, {p2} P2)
- Gaps: {comma-separated gap topics}
After writing, print a summary:
Scout complete for "{topic}"
Sources approved: {N} ({p0} P0 / {p1} P1 / {p2} P2)
Gaps identified: {N}
Output written to: {workspace-path}/
Next step:
Run ingest to fetch and compile wiki articles
${CLAUDE_PLUGIN_ROOT} for all internal path references (rubric, templates)scope.out from SCHEMA.md — do not surface sources that fall outside declared scope