Use when writing, updating, or gardening wiki synthesis pages — concept, entity, topic, or contradiction pages integrating atomic facts into one cited narrative. Triggers on "wiki page", "synthesis page", "seed a wiki page", "garden the wiki", "concept page", "entity page", "contradiction page", "write X up as a wiki page", "dedupe the wiki", "WIKI.md front door", "weekly distillation", "STRATEGY.md decisions log". NOT for saving one fact/rule/decision (context-engineering), session-end capture (reflect), or the weekly cross-session synthesis run (dream).
Resources
2Install
npx skillscat add craigvandotcom/agent-compounds/wiki Install via the SkillsCat registry.
Shared skill (agent-compounds). Symlinked into projects via
deploy.sh— this is
the single source of truth; edit here, not in a consumer copy. Method-only and
portable (no project facts).
wiki — the synthesis layer
Purpose: write, update, and garden the org's synthesis pages — the "wiki" in the
Karpathy-pattern sense: prose that integrates many atomic facts/decisions into one
coherent, navigable narrative. Not a new source of truth; a derived, regenerable
cache over the substrate that already exists.
Constitution: ../context-engineering/SKILL.md (load it first — WRITE taxonomy,
homes, PLACEMENT/ALTITUDE all come from there; this skill is the synthesis type's
method).
Evidence base: references/research-basis.md — distills the field research + our
internal audit; read before seeding pages or designing a garden pass.
Status: live — schema + 7 canonical pages in <org>/wiki/ (ratified 2026-07-19
after adversarial citation review); provenance: <global>/plans/memory-wiki-upgrade.md Phase 3
When to Use This Skill
Intent Triggers:
- Drafting a new synthesis/concept/entity/topic/contradiction page
- Updating an existing wiki page with new source material
- Running a dedupe/merge/prune/staleness pass over
wiki/ - The weekly distillation cadence (STRATEGY.md decisions log, NOW.md refresh)
- Deciding whether new material becomes a new page or an update to an existing one
When NOT to Use:
- Saving a single fact, rule, decision, or recipe →
context-engineeringroutes it - End-of-session capture →
reflect - Reading/browsing pages (no skill needed — index-first: open
<domain>/wiki/index.mdand follow links;qmd querywhen no page covers it; the hook auto-injects matching pages)
Page types
| Type | It is… | Example |
|---|---|---|
| concept | an idea/pattern that recurs across facts/decisions | "the flywheel", "low time preference" |
| entity | a named thing with a lifecycle (product, agent, system) | "the example-app product thesis", "the agent org" |
| topic | a bounded subject area integrating several concepts/entities | "the content engine", "health protocol stack" |
| contradiction | two or more sourced claims that disagree, recorded not hidden | "one app's branch doctrine vs another's" |
One canonical page per concept — kebab-case filename, <domain>/wiki/<slug>.md
(<org>/wiki/ is the first and only live domain; other domains get one only when
they earn it, per context-engineering's "no slot → flag a taxonomy bug, never invent a
folder" rule).
Frontmatter contract
---
title: <human-readable title>
type: concept | entity | topic | contradiction
sources: [<fact/decision/doc slugs this page distills>]
related: [<other wiki page slugs>]
created: <YYYY-MM-DD>
updated: <YYYY-MM-DD>
confidence: high | medium | low
trigger: <when should an agent load this page — the retrieval-trigger description>
status: draft | canonical
---trigger: is not decorative — it's Devin's structural idea (seereferences/research-basis.md): author when this should surface explicitly, don't
make the agent infer relevance post hoc. Write it the way you'd write a skill'sdescription: trigger clause. How it's consumed: the wiki collection is one of
the memory-retrieval hook's lobes, so the trigger text is part of the page's hybrid
search/embedding surface — a well-written trigger literally improves when the page
auto-injects. memory-lint enforces its presence.
Page structure: Compiled Truth + Timeline
Every page body has two layers below the frontmatter, split by a--- <!-- timeline --> divider line:
- Compiled Truth (above the divider) — the current synthesis, freely rewritable,
same regenerability mindset as the rest of this doctrine. This is what an injected
page shows. - Timeline (below the divider) — append-only, dated, one-paragraph entries, newest
first. Never edited or deleted — a correction is a new dated entry, not a rewrite
of an old one.
Garden/distill passes update Compiled Truth prose FROM the timeline (what actually
happened), never the reverse. Any material edit to a ratified page's Compiled Truth
requires appending a timeline entry recording what changed and why, same session.
A memory-lint script does not enforce this structure (schema/index/wikilink checks
only, if you have one — <your-deployment>/scripts/health/memory-lint.py) — this
checklist is the enforcement layer; see Common Mistakes below.
THE CITATION RULE
Every claim in a wiki page carries a [[wikilink]] to the fact, decision, or source
it comes from. Pages are DERIVED views, never a source of truth — the atomic facts in
the domain memory root (<memory-root>), the decisions in alignment/decisions/, and the raw sources inreferences//knowledge/ remain canonical. A sentence with no citation trail is not
synthesis, it's a claim with nowhere to verify it — cut it or find its source first.
[[wikilinks]] resolve cross-home by design: a link may target another wiki page OR
a memory-fact slug in any substrate home (memory-lint's check_wikilinks enforces both).
Linking a fact by slug is the normal citation form — do not create stub wiki pages just
to satisfy a link.
This is the single most validated mechanism in the field evidence (GitHub Copilot's
production A/B test: citation-verified memory beat uncited memory on every measured
metric, p<0.00001 — see references/research-basis.md). It is also the guard against
hallucination laundering: an agent re-reading its own uncited synthesis with full
confidence is how a wiki quietly becomes fiction.
Create-vs-update judgment
Dedupe-over-append at the page level, same as facts. Before drafting a new page:qmd search/grep the wiki/ dir for an existing page on the same concept. Found one
→ update it (new sources, revised claims, updated: bump) — never create a
near-duplicate "v2" page. Genuinely new concept, no existing page covers it → create.
One canonical page per concept is the invariant a garden pass exists to restore
when this judgment call was missed.
The authority chain
raw sources (references/, knowledge/, research reports)
│ never edited by agents — read, cited, immutable
▼
canonical facts + decisions (the memory homes, alignment/decisions/)
│ append-only claims — the ground truth
▼
synthesis pages (wiki/)
│ derived narrative — regenerable, never preciousAgents may only write/edit the bottom layer. A wiki page claiming something not
traceable up this chain is a schema violation, not a stylistic nitpick.
Regenerability mindset
A wiki page is a rebuildable cache, not an asset to protect. If a page drifts,
duplicates, or goes stale, the fix is to regenerate it from its cited sources — never to
patch around a page's accumulated cruft to preserve its prose. The structure (the
taxonomy, the citation discipline) is the asset; any individual page is disposable.
Treat a "this page took effort to write, don't rewrite it" instinct as the anti-pattern
it is (references/research-basis.md: ouroboros compression, ingest-everything
automation).
The operator reviews before canonical
New pages and material edits land status: draft. A page only becomes status: canonical after the operator reviews it — flip the frontmatter field, nothing else changes.
Draft pages are still linkable and citable (a page in progress is still useful), but a
draft's claims carry lower trust than a canonical one until reviewed. Never self-flipcanonical — that's the self-certification anti-pattern
([[no-self-certifying-remedy]]).
Anti-patterns to refuse
| Anti-pattern | Why it's refused |
|---|---|
| Mirroring operational state (status, logs, beads, health reports) | Pages point at live state, never copy it — copies go stale immediately (memory-wiki-upgrade decision log #4) |
| An uncited claim | Breaks THE CITATION RULE — find the source or cut the sentence |
| A near-duplicate page for the same concept | Update the existing page instead (create-vs-update judgment) |
| Scope creep ("all of my knowledge" pages) | Most-cited death in the field research — bounded ontology, one domain at a time |
| Precious/protected pages resistant to regeneration | Violates the regenerability mindset — pages are cache |
Self-flipping status: canonical |
The operator reviews every page before it's canonical |
| Building a browsing UI before the substrate is trustworthy | Obsidian is the browsing surface; no rendered site (not-build list) |
Workflows
| Workflow | Use when |
|---|---|
workflows/seed-page.md |
Drafting a brand-new synthesis page from cited sources |
workflows/garden.md |
Periodic dedupe/merge/prune + contradiction-page creation + staleness sweep |
workflows/distill-weekly.md |
Weekly review's distillation cadence — STRATEGY.md decisions log + NOW.md refresh |
workflows/hallucination-audit.md |
Monthly cadence — sample 5 random wiki claims, trace to cited sources, untraceable → proposal beads |
Reference Documentation
| File | Contents |
|---|---|
references/research-basis.md |
Distilled field research + internal audit evidence — read before seeding pages or designing a garden pass |
Common Mistakes
| Mistake | Fix |
|---|---|
| Writing a wiki page as if it were a new source of truth | It's a derived view — every claim traces up the authority chain |
Skipping qmd search before drafting |
Dedupe-over-append — update the existing page |
Omitting trigger: |
Write the retrieval-trigger clause, same discipline as a skill description |
Flipping status: canonical yourself |
The operator reviews first |
| Mirroring a beads/status dashboard into a page | Point at it, never copy it |
| Treating a stale page as precious | Regenerate from cited sources; pages are cache |
| Editing or deleting a Timeline entry | Timeline is append-only — correct by appending a new dated entry |
| Rewriting Compiled Truth without a Timeline entry | Every material edit needs a same-session timeline entry recording what/why |