name: vp-note-quality description: "Reference checklist for Basic Memory note quality — rules preventing self-referential content in subject-domain notes (the fourth-wall anti-pattern). Preloaded into knowledge-maintainer and knowledge-gardener agents via the skills frontmatter field." user-invocable: false allowed-tools: []
Note Quality Checklist
When writing or editing Basic Memory notes, apply these rules to prevent the "fourth-wall anti-pattern" — self-referential content that references the knowledge graph, the enrichment process, or the state of personal knowledge sources instead of focusing on the note's subject.
Root cause: Task-boundary collapse. When an agent evaluates whether a topic fits the graph AND writes the note, the evaluation leaks into the content. The fix is a firewall: discard graph-fitting analysis before writing.
Diagnostic question: "If this note were exported and read by someone who knew nothing about the enrichment session and had never heard of Basic Memory, would every sentence make sense?" If no — it is harmful self-reference.
Rules
Subject test. Every sentence — including frontmatter prose fields like
description— must be about the note's declared subject. Content about the knowledge graph, the enrichment session, or personal knowledge sources must be deleted before writing.No inventory claims. Never write "X has zero presence in Raindrop/Readwise/Basic Memory." Coverage state is ephemeral and becomes false immediately. It belongs in session notes, not permanent knowledge notes.
No significance rankings. Never write "this is the most significant gap" or "this is the most important connection." These are editorial judgments about the session, not facts about the subject.
Firewall graph-fitting analysis. If you assessed whether a topic fills a graph gap before writing, discard that analysis entirely. The note is not a report on the assessment; it is knowledge about the subject.
[gap]means subject gap, not coverage gap. A[gap]observation records something unknown about the subject itself (e.g., "The mechanism by which X spread to Y is undocumented"). It never records that the subject was absent from Raindrop or Readwise.[raindrop]and[readwise]must cite artifacts. Only add these observations if you have a specific bookmark URL, title, or highlight text. "No Raindrop bookmarks exist" is not a valid observation. Prefer[quote],[source],[pattern], or[connection]for the insight itself — use[raindrop]/[readwise]only when the provenance IS the point.No self-referential sections. Headings must describe aspects of the subject. Sections named "Connection to the Knowledge Graph," "Graph Coverage," "Significance to the Graph," or "Why This Note Exists" are forbidden.
Export test. Read the overview paragraph as if to someone who has never heard of Basic Memory. If it would not make sense without knowing you are building a knowledge graph, rewrite it.
Lede paragraph is subject-first. The first sentence must state what the subject is, not what the graph lacks. Write "Scandinavian Participatory Design is a tradition originating in 1970s Scandinavia..." not "This topic is completely absent from all personal knowledge sources."
Session observations go in session notes. Insights about the enrichment session itself (which topics cluster, what the session revealed about the graph's shape) belong in a separate session summary note, not embedded in the subject notes created during the session.
Relation types describe subject relationships. Types like
depends_on,relates_to,extends,maintained_bydescribe how subjects relate. Types likefills_gap_in,adds_coverage_for, ordocuments_gap_indescribe graph topology and are fourth-wall violations. Replace with a subject-appropriate relation type.No session-boundary references. Never reference the note-creation session boundary — phrases like "prior to this session" or "prior to this note" describe when the note was written, not the subject. State the subject fact directly, with a date if the timing matters.
Rule Registry
The rules above are the human-readable form of the canonical registry in
lib/fourth-wall-rules.mjs; each carries a stable fw-* id. Rules marked
deterministic have a grep-able detect pattern in the registry (the basis
of the "Red Flags" scan below and the knowledge-gardener Step 10 audit); the
rest require judgment. npm run check:fourthwall asserts this checklist
documents every registry id and that each detect pattern catches a planted
violation on a fixture.
| Rule | ID | Detection |
|---|---|---|
| 1. Subject test | fw-subject-test |
judgment |
| 2. No inventory claims | fw-inventory-claim |
deterministic |
| 3. No significance rankings | fw-significance-ranking |
deterministic |
| 4. Firewall graph-fitting analysis | fw-graph-fitting |
judgment |
5. [gap] means subject gap |
fw-gap-is-subject |
judgment |
6. [raindrop]/[readwise] must cite artifacts |
fw-provenance-cite |
judgment |
| 7. No self-referential sections | fw-self-ref-section |
deterministic |
| 8. Export test | fw-export-test |
judgment |
| 9. Lede is subject-first | fw-lede-subject-first |
judgment |
| 10. Session observations go in session notes | fw-session-obs |
judgment |
| 11. Relation types describe subject relationships | fw-relation-type |
deterministic |
| 12. No session-boundary references | fw-session-boundary |
deterministic |
Exception: Meta-Notes
These rules apply to subject-domain notes — people, patterns, history,
packages, tools, projects. Notes whose subject IS the knowledge graph itself
(axioms, conventions, tool catalogs, engineering/agents/* methodology notes)
may reference Basic Memory, Raindrop, and Readwise freely — that is their
subject matter.
Red Flags (Scan Targets)
When auditing existing notes, search for these phrases:
- "zero presence in"
- "absent from the knowledge graph"
- "prior to this session" / "prior to this note"
- "most significant gap" / "most important connection"
- "Connection to the Knowledge Graph" (section header)
- "Significance to the Graph" (section header)
- "not yet in Basic Memory"
- "no presence in Raindrop"
fills_gap_in/adds_coverage_for/documents_gap_in(relation type)
Enforcement Guidance
For the knowledge-maintainer (write agent):
- Before every
edit_notecall on a subject-domain note, re-read the content you are about to write and apply the diagnostic question. - If you find a violation in a note you are editing, queue a rewrite as a confirmation item (content-level change — requires user approval).
- When delegating to
/package-intelor/tool-intel, the skill output should already conform — but verify the result before moving on.
For the knowledge-gardener (read-only auditor):
- In the fourth-wall audit step, use
search_noteswith red-flag phrases. - Classify violations by severity: (A) section-level, (B) paragraph-level, (C) observation-level, (D) relation-level.
- Report in Warning tier with the specific offending sentence quoted.
- Do not attempt to fix — that is the maintainer's job.