scribe knowledge base — agent skill
A scribe-managed KB is a local-first markdown vault. Articles live in topic directories under a KB root, every article carries YAML frontmatter, links between articles are [[Wikilinks]], and search runs through qmd (BM25 + vector hybrid). A daemon scribe runs on cron to extract from project repos, mine coding-agent sessions, capture iMessage URLs, absorb queued URLs, lint frontmatter, and reindex qmd.
This skill teaches a Claude Code / Codex / OpenCode session how to interact with such a KB without breaking the conventions the daemon expects.
When to use this skill
Trigger on any of:
- You're working in the KB root — there's a
scribe.yaml in the project root, or directories named wiki/, decisions/, solutions/, patterns/, research/, ideas/, tools/, people/, projects/, raw/articles/.
- You're working in a non-KB project that drops files into the KB — there's a
.claude/<some_kb_name>/ directory with markdown drop files, or the user's CLAUDE.md mentions a personal KB and a drop-file convention.
- The user asks about: their KB, scriptorium, qmd, drop files, "what do I know about X", "have I done this before", "save this for later", or any of the article types above.
Operations cheat sheet
| What |
Command (qmd / shell) |
| Find articles by topic |
qmd query "<natural-language question>" (or use the qmd MCP tool when present) |
| Exact-keyword search |
qmd search "<keywords>" |
| Read a specific article |
Read tool with the absolute path |
| Read a section |
scribe sections get <article> <id> (Phase 5A) |
| Write a new wiki article |
Edit/Write tool — see references/FRONTMATTER.md |
| File a drop from another project |
scribe drop --title ... --type ... --domain ... — see references/DROP_FILES.md |
| Validate frontmatter before commit |
scribe validate <file> or scribe lint --changed |
| List sections in an article |
scribe sections list <article> |
Workflow: file a drop file from another project
When you produce reusable knowledge in a non-KB project that should travel to the user's KB, write a drop file:
- Pick a path:
.claude/<kb_name>/YYYY-MM-DD-{slug}.md in the current project root. <kb_name> is the value the user has used in their CLAUDE.md (often scriptorium).
- Run
scribe drop with the required flags (--title, --type, --domain, --body) — or hand-write the frontmatter per references/DROP_FILES.md (scriptorium: true, action, title, type, domain, tags) if scribe isn't installed.
- Write the body — what's reusable, what would teach a future session this insight in 30 seconds.
- Tell the user what you filed and why. Don't fabricate drop files for trivial facts.
scribe sync running on the user's cron will absorb the drop file automatically — you don't need to do anything else.
Workflow: write a new wiki article
When the user asks you to write inside the KB itself (not a drop file):
- Pick the directory by article type (see references/STRUCTURE.md). A reusable solution →
solutions/. A long-lived decision → decisions/. A research deep-dive → research/. A pattern that applies across projects → patterns/.
- Write valid frontmatter — required keys:
title, type, created, updated, domain, confidence, tags, related, sources. See references/FRONTMATTER.md.
- Cross-link with
[[Article Title]] to existing articles. Search first with qmd; don't invent neighbors.
- Commit with a clear message. The user's pre-commit hook runs
scribe lint.
Workflow: search before recommending
Before recommending a tool, library, decision, or pattern, search the KB:
qmd query "<the thing> verdict"
qmd query "<the thing> alternatives"
qmd query "<the problem> decision reasoning"
Past tool evaluations live in tools/ with verdict: use | evaluate | skip. Past decisions live in decisions/ with full context. Don't suggest something already rejected.
What NOT to do
- Don't write directly to the KB from a non-KB project. Use a drop file. The user's daemon owns absorbs.
- Don't invent frontmatter fields outside the closed set. Lint will reject typos.
- Don't bypass
scribe lint when the user asks you to commit. The pre-commit hook is the canonical validator.
- Don't
cd into the KB root before searching with qmd — qmd uses absolute paths and works from any directory. CD-ing breaks the user's flow.
- Don't write rolling-file contents into article shapes.
learnings.md, decisions-log.md are append-only logs; ordinary articles are paragraph-shaped.
References
- FRONTMATTER.md — required and optional frontmatter keys per article type
- WIKILINKS.md — link syntax (basic, aliased, section, block-anchor)
- STRUCTURE.md — directory taxonomy and what belongs where
- DROP_FILES.md — the cross-project drop-file pattern in detail
- QUERY.md — qmd query patterns: lex, vec, hyde, when to use which
- COMPAT.md — Obsidian / Logseq vault compatibility notes
1---2name: scribe-kb3description: Read, write, and search a scribe-managed knowledge base (markdown vault with frontmatter conventions, wikilinks, and qmd hybrid search). Use when the user's project has a scribe.yaml (KB root) or a .claude/<kb_name>/ drop-file directory (consumer side), or when they mention scribe, scriptorium, qmd, drop files, or "my KB". Covers frontmatter schema, wikilink syntax, drop-file pattern, search via qmd, and directory taxonomy.4---56# scribe knowledge base — agent skill78A scribe-managed KB is a local-first markdown vault. Articles live in topic directories under a KB root, every article carries YAML frontmatter, links between articles are `[[Wikilinks]]`, and search runs through qmd (BM25 + vector hybrid). A daemon `scribe` runs on cron to extract from project repos, mine coding-agent sessions, capture iMessage URLs, absorb queued URLs, lint frontmatter, and reindex qmd.910This skill teaches a Claude Code / Codex / OpenCode session how to interact with such a KB without breaking the conventions the daemon expects.1112## When to use this skill1314Trigger on any of:1516- **You're working in the KB root** — there's a `scribe.yaml` in the project root, or directories named `wiki/`, `decisions/`, `solutions/`, `patterns/`, `research/`, `ideas/`, `tools/`, `people/`, `projects/`, `raw/articles/`.17- **You're working in a non-KB project that drops files into the KB** — there's a `.claude/<some_kb_name>/` directory with markdown drop files, or the user's CLAUDE.md mentions a personal KB and a drop-file convention.18- The user asks about: their KB, scriptorium, qmd, drop files, "what do I know about X", "have I done this before", "save this for later", or any of the article types above.1920## Operations cheat sheet2122| What | Command (qmd / shell) |23|---|---|24| Find articles by topic | `qmd query "<natural-language question>"` (or use the qmd MCP tool when present) |25| Exact-keyword search | `qmd search "<keywords>"` |26| Read a specific article | Read tool with the absolute path |27| Read a section | `scribe sections get <article> <id>` (Phase 5A) |28| Write a new wiki article | Edit/Write tool — see references/FRONTMATTER.md |29| File a drop from another project | `scribe drop --title ... --type ... --domain ...` — see references/DROP_FILES.md |30| Validate frontmatter before commit | `scribe validate <file>` or `scribe lint --changed` |31| List sections in an article | `scribe sections list <article>` |3233## Workflow: file a drop file from another project3435When you produce reusable knowledge in a non-KB project that should travel to the user's KB, write a drop file:36371. **Pick a path:** `.claude/<kb_name>/YYYY-MM-DD-{slug}.md` in the current project root. `<kb_name>` is the value the user has used in their CLAUDE.md (often `scriptorium`).382. **Run `scribe drop`** with the required flags (`--title`, `--type`, `--domain`, `--body`) — or hand-write the frontmatter per references/DROP_FILES.md (`scriptorium: true`, `action`, `title`, `type`, `domain`, `tags`) if `scribe` isn't installed.393. **Write the body** — what's reusable, what would teach a future session this insight in 30 seconds.404. **Tell the user** what you filed and why. Don't fabricate drop files for trivial facts.4142`scribe sync` running on the user's cron will absorb the drop file automatically — you don't need to do anything else.4344## Workflow: write a new wiki article4546When the user asks you to write inside the KB itself (not a drop file):47481. **Pick the directory** by article type (see references/STRUCTURE.md). A reusable solution → `solutions/`. A long-lived decision → `decisions/`. A research deep-dive → `research/`. A pattern that applies across projects → `patterns/`.492. **Write valid frontmatter** — required keys: `title, type, created, updated, domain, confidence, tags, related, sources`. See references/FRONTMATTER.md.503. **Cross-link** with `[[Article Title]]` to existing articles. Search first with qmd; don't invent neighbors.514. **Commit** with a clear message. The user's pre-commit hook runs `scribe lint`.5253## Workflow: search before recommending5455Before recommending a tool, library, decision, or pattern, search the KB:5657```58qmd query "<the thing> verdict"59qmd query "<the thing> alternatives"60qmd query "<the problem> decision reasoning"61```6263Past tool evaluations live in `tools/` with `verdict: use | evaluate | skip`. Past decisions live in `decisions/` with full context. Don't suggest something already rejected.6465## What NOT to do6667- **Don't write directly to the KB from a non-KB project.** Use a drop file. The user's daemon owns absorbs.68- **Don't invent frontmatter fields** outside the closed set. Lint will reject typos.69- **Don't bypass `scribe lint`** when the user asks you to commit. The pre-commit hook is the canonical validator.70- **Don't `cd` into the KB root before searching with qmd** — qmd uses absolute paths and works from any directory. CD-ing breaks the user's flow.71- **Don't write rolling-file contents into article shapes.** `learnings.md`, `decisions-log.md` are append-only logs; ordinary articles are paragraph-shaped.7273## References7475- [FRONTMATTER.md](references/FRONTMATTER.md) — required and optional frontmatter keys per article type76- [WIKILINKS.md](references/WIKILINKS.md) — link syntax (basic, aliased, section, block-anchor)77- [STRUCTURE.md](references/STRUCTURE.md) — directory taxonomy and what belongs where78- [DROP_FILES.md](references/DROP_FILES.md) — the cross-project drop-file pattern in detail79- [QUERY.md](references/QUERY.md) — qmd query patterns: lex, vec, hyde, when to use which80- [COMPAT.md](references/COMPAT.md) — Obsidian / Logseq vault compatibility notes