note-management
Captures, reviews, and promotes Note entities — the lightweight knowledge capture primitive in processkit. Notes are quick-capture units (thoughts, insights, questions, references) that are reviewed periodically and promoted to WorkItems, DecisionRecords, or other primitives when they ripen. Use when the user says "remember this", "note that", "I had an idea", or when running a periodic note review session.
- License 许可
- MIT
- 最近更新
- 2026-11-09
- Stars
- ★ 0
- Forks
- 0
01 前言 Front Matter
- name
- note-management
- metadata
- { "processkit": { "id": "SKILL-note-management", "layer": 2, "created": 1775606400000, "version": "1.0.0", "category": "processkit", "commands": [ { "args": "title", "name": "note-management-capture", "description": "Capture a new fleeting note with the given title" }, { "args": "", "name": "note-management-review", "description": "Review all fleeting notes and decide what to promote or discard" }, { "args": "note-id", "name": "note-management-promote", "description": "Promote a fleeting note to a more permanent artifact" } ], "apiVersion": "processkit.projectious.work/v1" } }
- description
- Captures, reviews, and promotes Note entities — the lightweight knowledge capture primitive in processkit. Notes are quick-capture units (thoughts, insights, questions, references) that are reviewed periodically and promoted to WorkItems, DecisionRecords, or other primitives when they ripen. Use when the user says "remember this", "note that", "I had an idea", or when running a periodic note review session.
02 资源文件 3
- 参考文档commands/note-management-capture.md128 B
- 参考文档commands/note-management-promote.md132 B
- 参考文档commands/note-management-review.md143 B
03 SKILL.md 正文
Note Management
Intro
Notes are processkit's capture layer — the place where ideas land before they are ready to become backlog items, decisions, or artifacts. Inspired by the Zettelkasten model: capture fast (fleeting), refine deliberately (permanent), link explicitly, and promote when something becomes actionable. The review cycle is what gives notes their value — unreviewed notes are just noise.
Overview
Note types
Note types map to the Luhmann/Ahrens Zettelkasten taxonomy:
| Type | Luhmann equivalent | When to use | Review horizon |
|---|---|---|---|
| fleeting | Fleeting note | Quick thought, idea, or observation — not yet refined | Within 1 week |
| insight | Permanent note | A self-contained conclusion or realization; part of the knowledge base — never discarded | Evergreen (not discarded, only promoted or refined) |
| reference | Literature note | Pointer to an external source, with your own summary | Evergreen |
| question | — | An open question you want to revisit | Until answered |
Start with fleeting when in doubt. If a note survives a review
session unchanged and seems worth keeping, refine and set to insight
or reference. Insight notes are permanent — they are never
discarded, only promoted or further refined.
Note file location and format
Notes live in context/notes/ as individual Markdown files with YAML
frontmatter:
context/notes/
NOTE-20260408_1432-amber-fox-better-error-messages.md
NOTE-20260408_1455-silver-wolf-rag-chunking-question.md
...
File naming: {id}.md where {id} is the full ID returned by
generate_id("Note", slug_text=title). No separate INDEX.md —
the SQLite index (via index-management) replaces it.
---
apiVersion: processkit.projectious.work/v1
kind: Note
metadata:
id: NOTE-20260408_1501-amber-fox-error-field-names
created: 2026-04-08
spec:
title: "Error messages should cite the field that caused the \
error, not just the error code"
type: insight
state: captured
tags: [ux, error-handling, api-design]
review_due: 2026-04-15
---
When a validation error returns `code: 400`, the user has no way to
know which field failed. Every error response should include `field`,
`message`, and a `docs_url` for context. I've seen this pattern
in Stripe's and GitHub's APIs — it's the right model.
Capturing a note
When the user says something note-worthy ("remember this", "I had an idea", "note that"):
- Generate the Note ID via
generate_id("Note", slug_text=title)→ e.g.NOTE-20260408_1432-amber-fox-better-error-messages - Pick the type: fleeting (quick thought) or one of the specific types if already clear
- Write the title as a self-contained claim or question — not a topic label. "Error messages should include the field name" is a note title; "Error messages" is a topic, not a note.
- Set
review_due: today + 7 days for fleeting, today + 30 days for insight/question, none for reference - Write
context/notes/{id}.md— no INDEX.md update needed
Notes are discovered and queried via the SQLite index
(index-management). To list active notes, use:
query_entities(kind="Note")
search_entities(text="<keyword>")
There is no hand-maintained INDEX.md — the index is authoritative.
Running a review session
A periodic review session works through all notes whose
review_due has passed or is within 2 days:
For each overdue note, make one of four decisions:
Promote — the idea is ready to become a real primitive:
- Create the downstream entity (WorkItem, DecisionRecord, etc.)
- Add
promotes_to: { kind: WorkItem, id: BACK-042 }to the note frontmatter - Transition the note to
promoted
Keep as permanent — the note is worth keeping but not yet actionable:
- Refine the body if the capture was rough
- Set type to
insight(permanent note — never discarded) orreference(literature note — evergreen) - Transition state to
permanent - Set
review_dueto null (permanent notes don't expire) or to a far-future date if you want a reminder to link it further - Add
linksto related notes with relation and context sentence
Archive — the note is no longer useful:
- Transition state to
archived
Defer — not ready to decide yet:
- Keep state at
captured - Extend
review_dueby 7 days - Add a one-line note on why it was deferred
Linking notes
The links field is how Zettelkasten insight is built. Every link must
name the relation and provide a context sentence explaining why the
connection matters — not just that it exists. Tags group notes by
topic; links with context build arguments.
links:
- target: NOTE-20260408_1455-SilverWolf-rag-chunking-question
relation: elaborates
context: "Both notes address retrieval quality; this note proposes
a concrete chunking strategy for the problem identified there."
| Relation | When to use |
|---|---|
| elaborates | This note expands on or adds depth to the target |
| contradicts | This note challenges or refutes the target |
| supports | This note provides evidence for the target |
| is-example-of | This note is a concrete case of an abstract claim |
| see-also | Loosely related; reader may find the target useful |
| refines | This note improves on or supersedes the target |
| sourced-from | This note's ideas draw from the target (for literature notes) |
Links are directional (from this note → to target). Bidirectional
linking is intentional — add the reciprocal link in the target note
when the relationship is symmetric (e.g. two supports notes).
Promotion patterns
| Note type | Common promotion target | Trigger |
|---|---|---|
| question | WorkItem (spike), Discussion | The question needs research or a team answer |
| insight | DecisionRecord | The insight captures a choice that was made |
| fleeting | WorkItem (task/chore) | The quick idea turns out to be actionable |
| reference | Artifact | The source becomes a formal reference material |
This skill also provides the /note-management-capture slash command for direct invocation — see commands/note-management-capture.md. This skill also provides the /note-management-review slash command for direct invocation — see commands/note-management-review.md. This skill also provides the /note-management-promote slash command for direct invocation — see commands/note-management-promote.md.
Gotchas
Agent-specific failure modes — provider-neutral pause-and-self-check items:
- Capturing topic labels instead of claims or questions. "Error messages" is not a note — it's a tag. A note's title must be a self-contained claim ("Error messages should include the field name, not just the error code") or a specific question ("Does the auth middleware re-validate tokens on every request?"). Vague labels create a pile of notes with no re-discoverable content.
- Reviewing notes without making a decision. Reading through notes and doing nothing is not a review — it resets the review clock without advancing the note. Every note in a review session must exit with one of four decisions: promote, keep as permanent, archive, or defer with a reason and new date.
- Never archiving notes. A notes index that only grows and never shrinks stops being useful. Not every idea deserves to become permanent — many are superseded, wrong in retrospect, or simply no longer interesting. Archive aggressively; promoted and permanent notes are the signal.
- Promoting a fleeting note without refining it first. A rough, first-draft thought promoted directly to a DecisionRecord or WorkItem brings the roughness with it. Before promoting, read the note and refine: does the title accurately capture the claim? Is the body complete enough for a newcomer to understand without the original context?
- Writing notes that require the original context to make sense. "The thing we discussed about the API" is meaningless six weeks later. A note must be self-contained: include enough context that the note makes sense to the author (or an agent) who has no memory of the conversation or session where the idea was captured.
- Not writing the review decision back to the file. After a
review session, every note that was touched must have its
state,review_due, and (if promoted)promotes_tofields updated in the file. The SQLite index is kept current by re-indexing, but the file is the source of truth. - Using notes as a dumping ground for everything instead of a capture layer for non-backlog ideas. Notes are for ideas not yet ready to be backlog items. Things that are clearly tasks should go directly into a WorkItem. Things that are clearly decisions should go into a DecisionRecord. Notes are the intermediate capture for things that haven't crystallized yet — not a general-purpose inbox for all project work.
Full reference
Note ID assignment
IDs are generated by generate_id("Note", slug_text=title) and
follow the standard processkit timestamp-word-pair format:
NOTE-YYYYMMDD_HHMM-word-pair[-slug]
Example: NOTE-20260408_1432-amber-fox-better-error-messages
IDs encode the capture time and are globally unique. No counter or INDEX.md is needed — the SQLite index replaces both.
State transitions
captured → reviewing → permanent
→ promoted (terminal)
→ archived (terminal)
captured → archived
permanent → reviewing
permanent → promoted
permanent → archived
Review cadence
Suggested cadence for a solo developer:
| Frequency | Action |
|---|---|
| Daily | Capture freely — do not review |
| Weekly | Review all fleeting notes past their review_due |
| Monthly | Review all permanent notes; check if any should be promoted |
| Quarterly | Archive anything in permanent that hasn't been revisited in >90 days |
For teams, assign a note review owner per sprint or rotate the responsibility on a weekly basis.
Note template
---
apiVersion: processkit.projectious.work/v1
kind: Note
metadata:
id: NOTE-{{YYYYMMDD_HHMM}}-{{word-pair}}[-{{slug}}]
created: {{date}}
spec:
title: "{{self-contained claim or question}}"
type: {{fleeting|insight|reference|question}}
state: captured
tags: []
review_due: {{date + 7 days for fleeting, + 30 for question, null for insight/reference}}
# links: optional — add when you know related notes
# links:
# - target: NOTE-xxx-yyy
# relation: elaborates # see relation table above
# context: "One sentence explaining why this connection matters."
---
{{Note body — enough context to understand without memory of the
session}}
File name: context/notes/{id}.md (the full ID, no extra suffix).
Relationship to other primitives
| Primitive | How notes relate |
|---|---|
| WorkItem | Notes often promote to WorkItems when an idea becomes a task |
| DecisionRecord | Insight notes about choices promote to DecisionRecords |
| BACKLOG.md | High-priority, well-understood items go here directly — not in notes |
| STANDUPS.md | Standups reference the work done; notes capture the ideas generated |
04 同仓库更多 Skills
skill-management
Manage Skill package manifests as v1 ontology entities.
schema-management
Manage generated processkit schema contracts through deterministic MCP rebuild and inspection workflows.
proposition-management
Record claims, risks, beliefs, world facts, WSJF estimates, and assumptions through the Proposition interface.
ontology-management
Manage generated v1 ontology entities that do not require a dedicated domain server.
okf-compatibility
Import, export, and validate conformant Open Knowledge Format bundles.
capability-management
Manage versioned Capability entities and their governed lifecycle.