YOU MUST NEVER:
- Use Read, Write, or Edit tools on note files in
~/Documents/notes/ or ~/OneDrive/Documents/notes/
- Bypass the script to manipulate
.index.json or markdown files directly
Path Requirements:
- Use tilde
~/.claude/plugins/... (expands on all platforms)
- Use forward slashes
/ (works on Windows) - NEVER backslashes
- Use
python (not python3)
- Use double quotes with escaped inner quotes
Pattern:
echo "{\"command\":\"<cmd>\",\"param\":\"value\"}" | python ~/.claude/plugins/marketplaces/productivity-skills/plugins/productivity-suite/skills/note-taking/scripts/notes_manager.py
Script auto-detects notes directory (OneDrive on Windows, Documents otherwise, or $NOTES_DIR if set).
Search: Extract terms -> execute search -> parse by relevance -> present with dates -> summarize
Update: Extract search term -> execute append -> check status -> handle weak matches -> confirm with timestamp
Categories: Work, Learning, Meeting, Idea, Decision, Question, Reference, Note
1---2name: note-taking3description: ALWAYS use this skill when user says "Note that", "Remember that", "Add a note about", or explicitly asks about their notes with phrases like "What did I note about", "Show me my notes on", "Search my notes for", "Find in my notes", or "What have I noted about". This searches the user's persistent note-taking system (their second brain), NOT conversation history or general knowledge. Only trigger when the user explicitly mentions "note/notes/noted" or clearly refers to their personal knowledge system.4---56<objective>7Manage user's persistent note-taking system ("second brain") stored in markdown files. All operations go through notes_manager.py script.8</objective>910<critical_rules>11**YOU MUST ALWAYS:**12- Use `scripts/notes_manager.py` for ALL note operations13- Pass JSON commands via stdin to the script14- Parse JSON responses and present them conversationally1516**YOU MUST NEVER:**17- Use Read, Write, or Edit tools on note files in `~/Documents/notes/` or `~/OneDrive/Documents/notes/`18- Bypass the script to manipulate `.index.json` or markdown files directly19</critical_rules>2021<script_invocation>22**Path Requirements:**23- Use tilde `~/.claude/plugins/...` (expands on all platforms)24- Use forward slashes `/` (works on Windows) - NEVER backslashes25- Use `python` (not `python3`)26- Use double quotes with escaped inner quotes2728**Pattern:**29```bash30echo "{\"command\":\"<cmd>\",\"param\":\"value\"}" | python ~/.claude/plugins/marketplaces/productivity-skills/plugins/productivity-suite/skills/note-taking/scripts/notes_manager.py31```3233Script auto-detects notes directory (OneDrive on Windows, Documents otherwise, or `$NOTES_DIR` if set).34</script_invocation>3536<api>37 <command name="add" purpose="Create new note">38 <request>{"command":"add","heading":"Category - Brief description","content":"Note text"}</request>39 <response>{"status":"success","file":"2025/11-November.md","heading":"Work - Title","path":"/full/path.md"}</response>40 <heading_format>41 Always "Category - Description". Never "Untitled". Infer category from keywords:42 - Work: "fixed", "built", "implemented", "deployed"43 - Learning: "learned", "discovered", "realized"44 - Meeting: "meeting", "discussed", "decided in meeting"45 - Idea: "what if", "consider", "idea"46 - Decision: "decided", "will", "plan to"47 - Question: "how", "why", "question about"48 - Reference: "record", "bookmark", "found"49 - Note: "note that", "remember"50 </heading_format>51 </command>5253 <command name="search" purpose="Find notes">54 <request>{"command":"search","query":"search terms"}</request>55 <response>[{"heading":"Work - Title","content":"Preview...","file":"2025/11-November.md","date":"2025-11-17","relevance":520}]</response>56 <notes>Returns max 10 matches. Empty `[]` if none. Present high relevance (>=500) in full detail; multiple results by relevance with dates.</notes>57 </command>5859 <command name="append" purpose="Update existing note">60 <request>{"command":"append","search_term":"unique term","content":"Update text"}</request>61 <response_success>{"status":"success","heading":"Work - Title","file":"2025/11-November.md","alternatives":[]}</response_success>62 <response_not_found>{"status":"not_found","query":"term","suggestion":"No matching entry found. Create a new note?"}</response_not_found>63 <response_ambiguous>{"status":"ambiguous","query":"term","alternatives":[{"heading":"Work - Title","relevance":45}],"message":"No strong match found."}</response_ambiguous>64 <notes>Requires relevance >=50. If weak match, suggest alternatives or create new note.</notes>65 </command>6667 <command name="reindex" purpose="Rebuild search index">68 <request>{"command":"reindex"}</request>69 <response>{"status":"success","total_files":12,"total_entries":145}</response>70 </command>7172 <command name="stats" purpose="Get statistics">73 <request>{"command":"stats"}</request>74 <response>{"status":"success","total_entries":145,"categories":{...}}</response>75 </command>7677 <command name="info" purpose="Get directory info">78 <request>{"command":"info"}</request>79 <response>{"status":"success","notes_dir":"/path","onedrive_detected":true}</response>80 </command>8182 <command name="validate" purpose="Check files for issues">83 <request>{"command":"validate"}</request>84 <response>{"status":"success","files_checked":12,"issues":[...]}</response>85 </command>8687 <command name="clean-index" purpose="Remove and rebuild index">88 <request>{"command":"clean-index"}</request>89 <response>{"status":"success","message":"Removed and rebuilt"}</response>90 </command>9192 <command name="migrate" purpose="Import from source directory">93 <request>{"command":"migrate","source_dir":"/path/to/source"}</request>94 <response>{"status":"success","imported":23,"skipped":2}</response>95 </command>96</api>9798<workflows>99**Add:** Infer category from keywords -> extract topic -> format "Category - Description" -> execute add -> confirm100101**Search:** Extract terms -> execute search -> parse by relevance -> present with dates -> summarize102103**Update:** Extract search term -> execute append -> check status -> handle weak matches -> confirm with timestamp104</workflows>105106<error_handling>107All commands include `status` field. Check for:108```json109{"status":"error","message":"Description of error"}110```111When errors occur, inform user clearly and suggest corrective action.112</error_handling>113114<entry_format>115Script automatically adds `**Created:** YYYY-MM-DD` to new notes and `**Update (YYYY-MM-DD):**` to updates.116117Categories: Work, Learning, Meeting, Idea, Decision, Question, Reference, Note118</entry_format>119120<success_criteria>121- Note operations complete with "success" status122- User receives conversational confirmation123- Search returns relevant results sorted by relevance score124- Updates append to correct entry with timestamp125</success_criteria>