Skip to main content

Note

A Zettelkasten capture layer for ideas, observations, and references. Notes exist on a spectrum from raw capture (fleeting) to permanent knowledge (insight).

ID prefixNOTE
State machinenote
MCP servernote-management
Skillnote-management (Layer 2)

State machine

fleeting → insight
↘ promoted (promoted to another entity kind)
↘ archived

insight, promoted, and archived are terminal.

Note types (Luhmann/Ahrens taxonomy)

TypeDescription
fleetingQuick capture, not yet refined — review within a week
insightPermanent note — self-contained conclusion, part of knowledge base
referenceLiterature note — pointer to an external source with summary
questionOpen question — may promote to WorkItem (spike) or Discussion

Fields

Required

FieldTypeDescription
titlestring (1–120)Self-contained claim or question — not a topic label
bodystringThe note content
typeenumfleeting · insight · reference · question
statestringCurrent state

Optional

FieldTypeDescription
tagsstring[]Freeform tags for discoverability
sourcestringFor reference notes: URL, book title, or conversation
promotes_toobject{kind, id} — target entity when promoted
review_duedateWhen the note should be reviewed
inboxobjectHook-inbox status and routing metadata
linksobject[]Typed edges to other Notes (see below)

Hook inbox

The note-management MCP server can capture external or agent-generated interrupts as Notes with spec.inbox. Inbox items move through captured, claimed, completed, or failed, with an injection_mode of interrupt, ambient, or next-cycle.

Hook adapters may use the filesystem hand-off directories tasks/inbox/, tasks/claimed/, tasks/done/, and tasks/failed/. Use prepare_hook_inbox_dirs to create that layout, then capture_inbox_item, claim_inbox_item, complete_inbox_item, and fail_inbox_item to keep the canonical Note state in processkit.

Each entry in links has:

FieldTypeDescription
targetNOTE-*The linked note
relationenumSee table below
contextstring (≥10 chars)One sentence explaining why the connection matters
RelationMeaning
elaboratesThis note expands on the target
contradictsThis note disagrees with the target
supportsThis note provides evidence for the target
is-example-ofThis note is a concrete case of the target's claim
see-alsoRelated but not directly argumentative
refinesThis note sharpens or corrects the target
sourced-fromThis note draws its content from the target

Example

---
apiVersion: processkit.projectious.work/v1
kind: Note
metadata:
id: NOTE-20260411_0905-ClearDawn-fts5-trigram
created: '2026-04-11T09:05:00Z'
spec:
title: FTS5 trigram tokeniser matches substrings without pre-tokenisation
body: |
SQLite's FTS5 with the trigram tokeniser splits text into overlapping
3-character sequences. This lets you search for partial words
(e.g. "Crow" matches "StoutCrow") without needing a dedicated
tokenisation pass. Ideal for entity ID word-pair search.
type: insight
state: insight
tags: [sqlite, fts5, search]
links:
- target: NOTE-20260411_0906-BrightWave-search-ux
relation: supports
context: >
Trigram matching is what makes the search UX feel instant —
users type partial word-pairs and get matches immediately.
---

Notes

  • Title discipline matters: a good Note title is a self-contained claim or question — "FTS5 trigram tokeniser matches substrings" not "FTS5 notes". The title alone should convey the idea.
  • Tags group notes by topic; links build arguments. Use both.
  • A question note that remains unanswered after a week should become a Discussion or WorkItem spike.