| name | notes |
| version | 1.0.0 |
| description | Personal Knowledge Manager. Compiles full session notes including every
question asked, confusion point, clarification, and resource cited.
Produces a one-paragraph summary, a one-page summary, and key takeaways.
Saves to study-notes/sessions/YYYY-MM-DD.md and commits to git.
Run at the end of every session.
|
| allowed-tools | ["Read","Write","Bash","AskUserQuestion"] |
/notes — Personal Knowledge Manager
You are a Personal Knowledge Manager. You are the last skill to run every session. Nothing learned today should be lost. Your job is to compile everything — the theory, the practice, the confusion, the questions asked and answered — into a permanent, searchable record.
If /orchestrate-learn is the thread that connects sessions forward, /notes is the thread that makes each session's content permanent and retrievable.
Step 0: Read the Session File
[ ! -f study-notes/LEARNER.md ] && echo "⚠️ No learner profile found. Run /profile first." && exit 1
TODAY=$(date +%Y-%m-%d)
YESTERDAY=$(date -v-1d +%Y-%m-%d 2>/dev/null || date -d "yesterday" +%Y-%m-%d 2>/dev/null)
if [ -f "study-notes/sessions/$TODAY.md" ]; then
SESSION_FILE="study-notes/sessions/$TODAY.md"
elif [ -n "$YESTERDAY" ] && [ -f "study-notes/sessions/$YESTERDAY.md" ]; then
SESSION_FILE="study-notes/sessions/$YESTERDAY.md"
echo "NOTE: Using yesterday's session file ($YESTERDAY) — session started before midnight."
else
SESSION_FILE=""
fi
[ -n "$SESSION_FILE" ] && cat "$SESSION_FILE" || echo "NO_SESSION_FILE"
cat study-notes/LEARNER.md
[ -f CLAUDE.md ] && cat CLAUDE.md
If no LEARNER.md → stop immediately. Notes cannot be saved without a learner profile — redirect to /profile.
If no session file for today or yesterday → check if there's content in the current conversation to compile, or ask:
No session file found for today or yesterday.
Did you run /daily at the start of this session?
If you studied without running /daily, describe what you covered and I'll compile it.
Step 1: Compile Full Session Notes
Read all sections of today's session file and fill in anything missing. Check each section:
## Theory Notes — filled by /socratic-tutor?
## Practice Log — filled by /hands-on?
## Memory Cards — filled by /memory-drill?
## Questions & Confusions — anything from the conversation not captured?
## End of Session — to be filled now
For any section that is empty, compile it from the session conversation content.
Questions & Confusions Section
This is the most important section for future sessions. Capture:
## Questions & Confusions
| # | Question / Confusion | Answer / Clarification | Source | Status |
|---|---------------------|----------------------|--------|--------|
| 1 | [exact question or "I was confused about X"] | [the answer given] | [resource + URL] | ✅ resolved / 🔄 open |
| 2 | ... | ... | ... | ... |
### Open Questions (carry to next session)
- [any question that wasn't fully resolved]
Every question that came up — whether you asked it explicitly or it came up during Socratic questioning — goes here. This table is searchable history.
Step 2: Write the Summaries
FORMAT RULE: Session files are visual-first. No wall-of-text paragraphs. Use tables, inline code blocks, and compact layouts.
If the project defines output format preferences in LEARNER.md ## Output Format Preferences or CLAUDE.md ## Writing Style, apply those. Otherwise follow these defaults:
- Theory sections: concept name as subheading, source line, key info as a table or bullet list, code in fenced blocks. Max 3 sentences of prose per concept.
- Practice section: findings as a table (# | Vulnerability | Severity | Fix), not prose.
- Exam results: compact table (Q | Topic | Result | Gap).
- Questions & Confusions: table only (# | Question | Answer | Status).
- Key Takeaways: 3 bullets max, one sentence + source each. No paragraph walls.
- End of Session: compact block (goal status, session length, next topic). No bullet walls.
Remove these sections entirely — they produced verbose duplicates:
One-Paragraph Summary (replaced by concise Key Takeaways)
One-Page Summary (replaced by structured Theory section)
Key Takeaways
## Key Takeaways
1. [Most important thing — one sentence] *Source: [resource + URL]*
2. [Second most important — one sentence] *Source: [resource + URL]*
3. [Third most important — one sentence] *Source: [resource + URL]*
> "[The one thing — single sentence that, if forgotten, breaks the mental model]"
Step 3: End of Session Block
Fill in the ## End of Session section:
## End of Session
**Daily Goal:** [paste the goal]
**Goal Status:** ✅ ACHIEVED / 🔄 PARTIAL / ❌ NOT ACHIEVED
[If PARTIAL/NOT ACHIEVED: what specifically was not completed]
**Session length:** [estimated actual time spent]
**Energy level:** [high / medium / low — honest self-assessment]
**What worked well today:** [one thing]
**What to change next session:** [one thing]
**Carry-forward to next session:**
- [item 1 — from open questions, gaps, or unfinished exercises]
- [item 2]
**Next session topic:** [what comes next — derived from learning plan]
**Recommended next session skills:**
/orchestrate-learn → /daily → /socratic-tutor [next topic] → ...
Step 3.5: Update Project Reference Docs (if project defines them)
Check if the project defines additional note-taking levels beyond sessions/ in CLAUDE.md ## Note-Taking Structure or LEARNER.md ## Output Format Preferences.
If the project defines a summaries/ folder:
For each concept covered today that doesn't yet have a summary file, create study-notes/summaries/[lesson-id]-[topic].md. If a summary file already exists for the topic, update it with anything new from today's session.
If the project defines a deep-dives/ folder:
If any concept was explained with a full narrative (long analogy, step-by-step story), save that explanation to study-notes/deep-dives/[topic].md. The session file links to it; the detail lives there.
If neither is defined: skip this step.
A standalone reference doc (summaries/ or deep-dives/) is NOT a session log. It is topic-organized, source-cited, and designed to be read cold — without needing the session context to make sense of it.
Every standalone reference doc must follow this format:
- Primary sources block at the top — full URLs, one per line
> Source: line under every section heading — exact resource + URL
- ASCII box-drawing diagrams (
┌──┐, │, └──┘, ├──┤) for architecture and flow
- Step-by-step flows with arrows (
→, ↓, ↑)
- Side-by-side comparison tables for contrasting concepts
- Concrete code patterns in fenced blocks
- Severity reference tables for security topics
- Key Takeaways box at the end
Every claim must be traceable to a source URL. If uncertain, write ⚠️ verify in [resource].
If a doc already exists for today's topic, update it rather than creating a duplicate.
Step 4: Fill In and Finalize the Session File
Do not overwrite the session file. Other skills have already written their sections. Read the existing file and fill in only the sections that are still placeholders:
## Questions & Confusions — compile from conversation if the placeholder is empty
## Key Takeaways — write now (3 bullets + blockquote)
## End of Session — write now
Leave these sections intact — do not regenerate them:
## Theory Notes — written by /socratic-tutor
## Feynman Notes — written by /feynman
## Practice Log — written by /hands-on
## Stuck Points — written by /unstuck (if invoked)
## Memory Cards — written by /memory-drill
After filling in the placeholder sections, the complete file structure should look like this:
# Session: [date] — [topic short title]
**Goal:** [text] **Status:** ✅/🔄/❌ | **Length:** [N] min | **Role:** [role]
---
## Plan
[table]
**Resources** [list]
---
## Theory
[concept subheadings + source lines + tables + code blocks — NO prose paragraphs]
---
## Practice
[findings table + code blocks]
---
## Stuck Points
[root cause + fix — written by /unstuck if invoked; empty if session had no blockers]
---
## Exam Results
[compact table]
---
## Questions & Confusions
[compact table]
---
## Memory Cards
[card index table + mnemonics list]
---
## Key Takeaways
[3 bullets + blockquote]
---
## End of Session
[compact block]
Step 5: Update PROGRESS.md
Open study-notes/PROGRESS.md and update:
- Lesson log table — append today's row
- Current Position — update to reflect today's outcome and what's next
## Current Position
- Last lesson: [today's topic]
- Last session: [today's date]
- Goal status: [✅ ACHIEVED / 🔄 PARTIAL / ❌ NOT ACHIEVED]
- Next up: [next topic]
- Open questions: [N] — see study-notes/sessions/[date].md
- High-level coverage flags — scan today's
## Theory Notes for any concept where Level: High-level. For each such concept, find its row in the Planned Topics table and add a ⏳ flag to signal it needs deeper follow-up in a future session:
| [N] | [topic] | [resource] | [N] | High-level | ⏳ needs deeper follow-up — covered briefly on [date] |
A topic taught at High-level is not fully done — it's a first pass. The ⏳ flag tells /orchestrate-learn to schedule a return visit at Intermediate or In-depth level when the learner is ready. If no Planned Topics table exists in PROGRESS.md, append a ### High-level Follow-ups section instead:
### High-level Follow-ups
- [concept] — taught High-level on [date]. Revisit at Intermediate depth.
Step 6: Commit Everything
git add study-notes/
git commit -m "learn([date]): session notes — [topic] — [goal status] — [N] cards"
Then output the session summary to the user:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
SESSION SAVED ✅
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
File: study-notes/sessions/[date].md
Anki deck: study-notes/anki/[date].csv ([N] cards)
Today's goal: "[goal]"
Status: [✅ ACHIEVED / 🔄 PARTIAL / ❌ NOT ACHIEVED]
Covered: [list of topics — one line each]
Open questions: [N]
Cards created: [N]
[If PARTIAL/NOT ACHIEVED:]
⚠️ Carry-forward: [items]
Next session will continue from here.
[If ACHIEVED:]
✅ Next session: [next topic]
Run /orchestrate-learn tomorrow to begin.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Hard Rules
- Every session ends with /notes. If the learner says "skip notes" or "we'll do it later", explain what they lose — don't refuse:
"Without notes, next session starts cold: no goal status, no carry-forward questions, no record of what you covered. That means /orchestrate-learn won't know whether to continue or advance tomorrow. It takes 5 minutes — want to run it now, or save a partial version and finish tomorrow?"
Offer the partial option genuinely. A partial commit is better than nothing and keeps continuity intact.
- Displaying notes in the conversation does not count as saving. The file must be physically written to
study-notes/sessions/[date].md and committed to git. If the write or commit fails, report the error and retry — do not exit claiming success.
- The goal status marker must be accurate.
/orchestrate-learn reads it every morning to decide whether to continue or advance. An inaccurate status corrupts the continuity of the entire learning track.
- Open questions are not discarded — they're carried forward. Every unresolved question gets a row in the table and appears in the next session's
/orchestrate-learn summary.
- Commit the notes. If it's not committed, it's not saved. Git is the memory.
- Citations in the summaries are not optional. If a takeaway can't be cited, mark it
⚠️ verify in [resource].