source-map · git:20260727.e7caac4 · 2026-07-27 · sha256 db96ff6a872af6a9

source-map git:20260727.e7caac4A

Immutable. This exact content is served forever at /api/v1/blob/db96ff6a872af6a9.

---
name: source-map
description: Curate the authoritative sources for a topic before research begins. Surveys adjacent material to discover voices rather than asking the LLM directly who's authoritative — STORM's finding is that direct question-asking does not work well for source discovery. Produces `<topic-slug>-sources.md` grouping candidates by primacy (`primary` / `secondary` / `tertiary`). When invoked downstream of `/identify-perspectives`, groups sources by camp; in standalone invocations, skips the camp-grouping step. Depth cues — `quickly`, `top three`, `briefly`, `summary only` for narrow surveys; `comprehensively`, `exhaustively`, `in depth`, `extensive` for thorough ones.
metadata:
  boundaries: [network_fetch]
---

# /source-map

Discovers and curates the sources a research artifact will eventually
cite. Runs upstream of `/desk-research` standard / deep mode and upstream of
the decision pipeline; can also run standalone before any synthesis.

## Output rendering

Table — When presenting several items that share the same fields, render a Markdown table. Cap at ~5 columns; beyond that, switch to a per-item detail list. Right-align numeric columns.

## When to invoke

- Before standard or deep research on an unfamiliar topic.
- After `/identify-perspectives` in the decision pipeline — sources are
  grouped per camp.
- Standalone, to scope which authorities a topic actually has.

## Methodology

The core discovery move is **survey-by-adjacency**, not direct
question-asking. STORM's finding: asking the LLM "who's authoritative
on X" produces a generic, training-data-shaped list. Instead, survey
adjacent material — papers that cite each other, blog posts that cross-
reference, communities that share vocabulary — and let the authorities
fall out of the pattern.

Treat any "who is authoritative on X" intuition the LLM produces as
suspect. Discovery is empirical, not asserted.

## Source taxonomy

Every candidate gets three tags:

1. **Authority type** — `practitioner` / `researcher` / `vendor` /
   `journalist` / `community` / `regulator`.
2. **Recency** — `current` (≤2 years) / `recent` (2–5 years) /
   `historical` (>5 years, still cited).
3. **Primacy** — `primary` (original source — the paper, the spec, the
   regulator's text), `secondary` (analyses and syntheses of primary
   material), `tertiary` (summaries-of-summaries, textbooks,
   encyclopedias).

The primacy tag is the most load-bearing — `/desk-research` triangulation
requires ≥3 independent sources, and independence depends on primacy:
three tertiary sources citing the same primary source count as one.

## Procedure

1. **Survey adjacency** — issue WebSearch on the topic's key terms;
   skim the top-cited items; note who cites whom.
2. **Dispatch extraction** — on Claude Code, dispatch `source-extractor`
   subagent against the candidate list. Otherwise read each candidate
   inline.
3. **Classify** — tag each surviving source by authority + recency +
   primacy.
4. **Write `<topic-slug>-sources.md`** — group by primacy (primary first). In a
   decision-pipeline invocation, sub-group within primacy by camp (the
   upstream `<topic-slug>-perspectives.md` provides the camps). `<topic-slug>`
   is the kebab-case topic slug; the naming rule lives in the `/desk-research` skill
   body (§ Typed, topic-named artifacts).
5. **Cite the rule** — `/desk-research` will use `<topic-slug>-sources.md` to choose
   which sources to triangulate against.

## Upstream / standalone behavior

`/source-map` runs in two shapes:

- **Decision-pipeline invocation** — expects an upstream
  `<topic-slug>-perspectives.md`. Sources are grouped by primacy *and* by camp,
  so `/compare-hypotheses` downstream can pull camp-aligned sources per
  hypothesis.
- **Standalone invocation** — no upstream `<topic-slug>-perspectives.md` required.
  Sources grouped by primacy only; the camp-grouping step is skipped.

The skill is **not** invoked by `/decision-archaeology`, which is self-
contained. See that skill's body for why.

## `<topic-slug>-sources.md` output schema

```markdown
# Sources — <topic>

## Primary

- **<title>** ([url]) — <one-sentence summary>. Authority: <type>.
  Recency: <bucket>. [synthesis or citation note]

## Secondary

(same shape)

## Tertiary

(same shape)
```

In decision-pipeline mode, each primacy section is sub-grouped by camp
under `### Camp: <name>`.

## Citation discipline

Every entry in `<topic-slug>-sources.md` carries a citation (the URL or local path).
Notes about a source — its angle, its bias, its credibility — are
marked `[synthesis]` when they integrate across sources or `[inference]`
when they deduce from one.

## Depth cues

Adopters can include cue tokens in the prompt to adjust behavior:

- `quickly`, `top three`, `briefly`, `summary only` — narrow the survey;
  return the most-cited handful per primacy bucket only.
- `comprehensively`, `exhaustively`, `in depth`, `extensive` — widen
  the survey; chase secondary citations into their primary sources;
  include weaker authorities for completeness.