proj-distill
When to invoke
- A project compound entry captures a pattern that generalizes beyond the project.
Pre-orientation reads
Standard four + project context.
Steps (E4 — 2-step pattern)
Source selection
Check projects/{slug}/compound/ first. If no project context exists, default to playground. If empty, fall back to retro
entries in vault log.md (lines matching ## [YYYY-MM-DD] retro).
When reading retros as source material:
- Collect all retros for the project, focusing on entries with
Generalize?: yes. - Group by recurring theme (≥2 occurrences across cycles).
- Each group becomes a candidate concept outline.
- Step 1 — Analyze. Read the source compound entry + linked work items (or retro groups from log.md). Output a candidate concept outline. STOP if no clear universal pattern is found — surface the reasoning instead of forcing a page.
- Step 2 — Generate. Compose the vault concept page with
provenance: projectandprovenance_projects: ["[[slug]]"]. Validate withskillwiki validate.- Portable source references: follow
using-skillwiki→ Portable Source References (commit-pinned GitHub URLs or repo-relative paths; not canonicalSource file:/Source inspected:host paths). - Tag hygiene:
tags:must only contain entries from{vault}/SCHEMA.mdtaxonomy. Never derive tags from prose text (lesson/evidence sections) — use only established taxonomy tags (e.g.,dev-loop,lint,vault). If no relevant taxonomy tag exists, use[dev-loop]as the safe default rather than inventing new tags. New tags must be added to SCHEMA.md first.
- Portable source references: follow
- Backlink. Set
promoted_to: "[[concept-slug]]"on the source compound entry. For retro-sourced distillation, skip backlink (log.md entries are append-only) and instead addsources:citing the vault log with date range. - Apply writes in order. Vault concept page → backlink update →
project
log.md→ vaultindex.md→ vaultlog.md.
Stop conditions
- No clear universal pattern.
validatenon-zero on either page.
Forbidden
- Skipping Step 1 (no direct generation).
- Updating index/logs before
validatepasses.