--- name: graduate-insights description: Review and graduate notes to permanent status using Zettelkasten principles. Consolidates AI extractions and document insights into curated permanent notes. allowed-tools: [Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion, Task] user-invocable: true --- # Graduate Insights Review candidate notes from holding areas and promote valuable ones to permanent note status following Zettelkasten principles. ## Purpose The knowledge base accumulates insights in multiple holding areas: - **AI Extracted Notes/** - Personal insights from conversations (177 notes) - **Document Insights/** - Research findings from external sources (1,608 notes across 89 sessions) - **Books/** - Per-book scopes (the gems mined from each ingested book; the `_book.md` hub is a navigation note, not a candidate) - **00-Inbox/** - Raw captures and staging notes (27 notes) Without periodic graduation, these insights remain unintegrated. This skill provides a structured review process to: 1. Surface high-value candidates based on retrieval frequency and age 2. Present each for human judgment (the essential step) 3. Graduate worthy notes to `02-Permanent/` with proper formatting 4. Maintain knowledge graph integrity ## State Dependencies | Source | Location | Read | Write | |--------|----------|------|-------| | Q-values | `resources/local-brain-search/data/q_values.json` | Yes | No | | AI Extracted | `Brain/AI Extracted Notes/` | Yes | Move | | Document Insights | `Brain/Document Insights/*/` | Yes | Move | | Book scopes | `Brain/Books/*/` | Yes | Move | | Inbox | `Brain/00-Inbox/` | Yes | Move | | Permanent Notes | `Brain/02-Permanent/` | No | Yes | | Changelog | `Brain/CHANGELOG.md` | Yes | Yes | ## Process ### Step 1: Load State and Find Candidates ```bash # Get Q-values for retrieval frequency signals cat resources/local-brain-search/data/q_values.json ``` Find candidate notes prioritized by: 1. **Q-value > 0** - Notes that have been retrieved and used 2. **Age > 14 days** - Notes that have had time to prove value 3. **Has connections** - Notes with wiki-links to permanent notes Collect up to **5 candidates** per session from: - `Brain/AI Extracted Notes/*.md` - `Brain/Document Insights/**/*.md` (exclude CHANGELOG files) - `Brain/Books/**/*.md` (exclude `_book.md` hubs and CHANGELOG files) - `Brain/00-Inbox/*.md` ### Step 2: For Each Candidate Present the following information: ``` ## Candidate [N/5]: [Note Title] **Source:** AI Extracted Notes | Document Insights ([Session Name]) | Inbox **Created:** [date from frontmatter or file mtime] **Age:** [X days] **Q-Value:** [value or "not tracked"] ### Content Preview [First 500 characters of note content] ### Existing Connections [List wiki-links found in the note, indicate which link to permanent notes] ### Semantic Neighbors (if available) [Run quick search to show 3 most similar permanent notes] ``` Ask user: **Decision for "[Note Title]":** 1. **Promote** - Graduate to permanent notes 2. **Skip** - Review again later (note stays in place) 3. **Delete** - Remove entirely (rare, for duplicates/errors) ### Step 3: Handle Promotion When user chooses **Promote**: 1. **Check for duplicates** in `02-Permanent/`: ```bash # Search for similar titles grep -r "similar keywords" Brain/02-Permanent/ ``` 2. **Prepare note for graduation**: - Ensure frontmatter includes: ```yaml --- created: [original date] updated: [today] created_by: [original model if present] updated_by: [current model] agent_version: 01.25 provenance: [see rule below] graduated_from: [original path] graduated_date: [today] --- ``` - **Provenance rule (mandatory):** default by source - `Document Insights/` and `Books/` -> `encountered`; `AI Extracted Notes/` or agent synthesis -> `ai-inferred`. Preserve an existing `provenance:` value if the candidate already carries one. Per CLAUDE.md's guarded boundary, only set `originated` or `endorsed` when the user explicitly says so at the Promote decision - graduation must never silently mint `originated`. - Verify atomic insight format (single clear idea) - Ensure wiki-links use `[[Note Title]]` format - Remove source-specific metadata (session info, extraction date) - Note: BDG will auto-classify the layer on next bootstrap (insight or framework based on heuristics) 3. **Optionally refine**: Ask user: "Refine title/content before promoting? (or press Enter to keep as-is)" 4. **Move to permanent**: - Generate clean filename: `Brain/02-Permanent/[Title].md` - Move file (not copy - maintains git history) - Verify move succeeded ### Step 4: Handle Skip Note remains in original location. No action needed. ### Step 5: Handle Delete Confirm before deleting: ``` Are you sure you want to DELETE "[Note Title]"? This cannot be undone. Type 'yes' to confirm. ``` If confirmed, remove file. ### Step 6: Session Summary After processing all candidates: ``` ## Graduation Session Complete **Reviewed:** 5 notes **Promoted:** X notes **Skipped:** Y notes **Deleted:** Z notes ### Promoted Notes: - [[New Permanent Note 1]] (from AI Extracted Notes) - [[New Permanent Note 2]] (from Document Insights/Session Name) ### Remaining Candidates - AI Extracted Notes: [count] notes - Document Insights: [count] notes - Inbox: [count] notes Run `/graduate-insights` again to continue review. ``` ### Step 7: Update Changelog Append to `Brain/CHANGELOG.md`: ```markdown ## [DATE] - Insight Graduation Session **Promoted to Permanent:** - [[Note 1]] - graduated from AI Extracted Notes - [[Note 2]] - graduated from Document Insights/[Session] **Session Stats:** Reviewed 5, Promoted X, Skipped Y ``` ## Zettelkasten Graduation Criteria When reviewing candidates, consider these principles: ### Promote If: - **Atomic** - Contains ONE clear idea (not a list or summary) - **Evergreen** - Will remain true/relevant over time - **Connected** - Links meaningfully to existing permanent notes - **Original** - Adds unique perspective not already captured - **Actionable** - Can inform thinking or decisions ### Skip If: - **Ephemeral** - Time-sensitive or will become outdated - **Compound** - Contains multiple ideas (may need splitting) - **Duplicate** - Similar insight exists in permanent notes - **Unripe** - Not yet clear how it connects or matters ### Delete If: - **Exact duplicate** - Same content exists elsewhere - **Error** - Extraction mistake or corrupted content - **Obsolete** - Information proven wrong or superseded ## Outputs 1. Promoted notes in `Brain/02-Permanent/` with graduation metadata 2. Updated `Brain/CHANGELOG.md` with session record 3. Session summary showing graduation statistics ## Notes - **Human judgment is essential** - This skill surfaces candidates, humans decide - **No automated promotion** - Every graduation requires explicit approval - **Batch size is 5** - Keeps sessions focused and completable - **Priority by Q-value** - Notes that have been retrieved rank higher - **Recommend weekly cadence** - Prevents backlog accumulation ## Self-Improvement After completing this skill's primary task, consider tactical improvements: - [ ] **Review execution**: Were there friction points, unclear steps, or inefficiencies? - [ ] **Identify improvements**: Could error handling, step ordering, or instructions be clearer? - [ ] **Scope check**: Only tactical/execution changes - NOT changes to core purpose or goals - [ ] **Apply improvement** (if identified): - [ ] Edit this SKILL.md with the specific improvement - [ ] Keep changes minimal and focused - [ ] **Version control** (if in a git repository): - [ ] Stage: `git add .claude/skills/graduate-insights/SKILL.md` - [ ] Commit: `git commit -m "refactor(graduate-insights): "`