What's new
Renamed: `answer-from-library` → `answer-from-corpus`
Vocabulary consistency. The substrate's canonical scoping noun is corpus — corpus.commons, corpus.local, the --corpus flag, the operational unit a build profile points at. The skill name now matches.
Small one-time hit for forkers who scripted the old skill name. Payoff: a substrate vocabulary that reads coherently from the README through the build profiles to the skill registry. Small hit now, better legibility later.
The skill body still uses library where it refers to the content tier (layer 1 = reference, layer 2 = distillation per docs/reference/vocabulary.md). Library is what the corpus contains; corpus is the named scope the skill operates against. Both terms are doing work; the rename is the skill identifier, not the body vocabulary.
Removed: REFERENCE-INDEX.md operator-view layer
The reference catalogue ships as JSON only now.
The original REFERENCE-INDEX.md was 223kB of operator-authored prose, inspected ~once per quarter while the runtime read reference-index.json on every query — cost paid by the runtime, value held by the operator. With /answer-from-corpus as the human interface and reference-index.json as the runtime interface, the markdown view didn't pay its keep.
Task and lens catalogues retain their operator-view markdown because their authoring loop genuinely sits in markdown (build_task_index and build_lens_index read the .md as input). The architecture doc explains the split at docs/architecture/two-layer-indexes.md.
Migration for forkers
- If you've scripted
/answer-from-libraryinvocations: rename to/answer-from-corpus. - If you've authored a
REFERENCE-INDEX.mdfor a private corpus: it can be deleted (the runtime doesn't read it). If you want a browseable markdown view, generate it mechanically fromreference-index.json— the JSON carries title, author, year, primary_topic, concept_tags, scope, line counts per source. - No data-shape changes. All JSON indexes, slug-tables, deep references, distillations, and lenses are unchanged.