From scribe
Mine a corpus -- code, vault notes, lore, session logs, docs -- for all terminology around a single concept and write it into a CONTEXT.md glossary as a self-contained context file. Every proposed term is verified by the human one at a time. Use when the user says "define concept", "document the concept of X", "mine terms for X", or wants to capture the language of one concept.
How this skill is triggered — by the user, by Claude, or both
Slash command
/scribe:define-conceptThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Deep-dive a single concept: mine the corpus for its nouns, verbs, qualifiers, and relationships,
Deep-dive a single concept: mine the corpus for its nouns, verbs, qualifiers, and relationships,
verify every term with the human, and write the result into a CONTEXT.md as one self-contained
context. Nothing gets added without approval.
The corpus is whatever source material defines the concept -- a codebase, an Obsidian vault, a campaign's lore files, session logs, design docs, a transcript. The mechanics are identical; only the evidence source changes.
The glossary is a markdown file canonically named CONTEXT.md. One CONTEXT.md holds one context.
A repo or vault with several contexts keeps each in its own CONTEXT.md and (optionally) a
CONTEXT-MAP.md at the root that links them.
CONTEXT.md (legacy names: ubiquitous-language.md, ubiquitous.md,
GLOSSARY.md) near the material being mined.Scan for terminology around the target concept. Use parallel Explore subagents on large corpora -- one sweep per category works well. Adapt the evidence source to the corpus:
Focus on domain meaning, not infrastructure. Have each agent return term + draft definition +
source (file:line, note title, or log timestamp).
Deduplicate across sweeps and group into:
Sort by how fundamental the term is. Present a brief count-by-category summary, then start the loop.
Present candidates one at a time, as plain markdown text -- never an interactive picker (pickers hide the definition while the user decides):
Proposed term:
{Term}Definition: {proposed definition based on corpus usage} Found in: {sources}
Accept, edit, or reject?
After each decision, move straight to the next term. Keep the pace brisk. If the user gets impatient, offer a numbered bulk list ("accept 1-5, reject 6, edit 7: ...").
As you verify, note how much room each term needs in Step 6:
### {Term} entry.Let the natural groupings emerge from the terms themselves rather than pre-deciding a section list -- you'll name the sections in Step 6 to match what you actually collected.
During the loop, surface:
Ask the user to resolve each; unresolved ones go to the Flagged for Review section with 🚩.
One file, one context. Form follows the material -- shape the document around what the corpus actually contains, not around a fixed template. The example below is a common shape, not a required one; rename, add, drop, or reorder sections so the structure reads honestly.
# {Subject} — Context
**Last updated:** {YYYY-MM-DD}
{1-3 sentence framing: what this context covers and any scope note, e.g. "this module is
product-agnostic" or "covers the northern kingdoms only".}
## The core model
> **{One-line essential truth of the concept.}**
{Short prose elaboration of that statement.}
## Core Terms
### {Term}
{Prose definition: what it IS, not what it does. Fold in customer-facing labels, composition
("a Flow Exporter is a Source and a Collector"), and cross-links to other terms via anchors.}
## {Supporting section}
| Term | Definition |
| --- | --- |
## Flagged for Review
1. ...
Invariants -- hold these regardless of how the sections are arranged:
Last updated, and a framing line always open the file. Refresh Last updated on
every write.### {Term} each, with room for composition and
cross-references. This is usually a ## Core Terms section but name it to fit.| Term | Definition | table per coherent group.
Name the group for what it holds (## Qualifiers, ## Relationships, ## Actions, ## Where things live, whatever is true). Don't force a term into an ill-fitting bucket; if a section name
would lie, rename the section.[Reserved IP](#reserved-ip) ... <a id="reserved-ip"></a>).Concept
{Subject}defined: {N} terms accepted ({N} user-edited, {N} flagged 🚩), {N} rejectedFile:
{path}Use
/define-termto add single terms later,/define-languageto keep the file in sync with future conversations.
npx claudepluginhub xxkeefer/skills --plugin scribeCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.