Notes (Local, Apple, Notion, Obsidian & more)
Let your agent write notes anywhere: local markdown, Apple Notes, Bear, Obsidian, Notion, Evernote, configurable per note type.
Like a lobster shell, security has layers — review code before you run it.
License
Runtime requirements
SKILL.md
Setup
On first use, read setup.md for platform selection and integration guidelines.
When to Use
User needs to capture any type of notes: meetings, brainstorms, decisions, daily journals, or project logs. Agent handles formatting, platform routing (local or external apps), action item extraction, and retrieval across all configured platforms.
Scope
This skill ONLY:
- Creates and manages markdown files in
~/notes/ - Runs user-installed CLI tools (memo, grizzly, obsidian-cli, clinote) if present and configured
- Calls Notion API only when user has configured Notion integration
- Reads config from
~/notes/config.mdto route notes to platforms
This skill NEVER:
- Installs software automatically
- Accesses credential files without explicit user permission
- Reads files outside
~/notes/(except platform CLIs) - Sends data to external services unless user configures that platform
- Modifies system settings or other applications
Platform Integrations (User-Installed, Optional)
This skill works 100% locally by default. External platforms require user to install tools separately:
| Platform | User Installs | User Configures | Data Flow |
|---|---|---|---|
| Local | nothing | nothing | All local |
| Apple Notes | memo CLI | nothing | Local (app communication) |
| Bear | grizzly CLI | Token in ~/.config/grizzly/token | Local (app communication) |
| Obsidian | obsidian-cli | Vault path | Local (file-based) |
| Notion | nothing | API key | Network (api.notion.com) |
| Evernote | clinote CLI | Login via CLI | Network (Evernote servers) |
Agent behavior:
- Asks user which platforms they want before checking for tools
- Only checks for CLI presence after user confirms interest
- Falls back to local if tool unavailable
- Never reads credential files without explicit permission per session
Architecture
Memory at ~/notes/. See memory-template.md for setup.
~/notes/
├── config.md # Platform routing configuration
├── index.md # Search index with tags
├── meetings/ # Local meeting notes
├── decisions/ # Local decision log
├── projects/ # Local project notes
├── journal/ # Local daily notes
└── actions.md # Central action tracker (all platforms)
Quick Reference
| Topic | File |
|---|---|
| Setup process | setup.md |
| Memory template | memory-template.md |
| All note formats | formats.md |
| Action item system | tracking.md |
| Local markdown | platforms/local.md |
| Apple Notes | platforms/apple-notes.md |
| Bear | platforms/bear.md |
| Obsidian | platforms/obsidian.md |
| Notion | platforms/notion.md |
| Evernote | platforms/evernote.md |
Core Rules
1. Route to Configured Platform
Check ~/notes/config.md for platform routing:
# Platform Routing
meetings: local # or: apple-notes, bear, obsidian, notion
decisions: local
projects: notion
journal: bear
quick: apple-notes
If note type not configured, use local.
If platform not available (missing CLI/credentials), fall back to local with warning.
2. Always Use Structured Format
Every note type has a specific format regardless of platform. See formats.md for templates.
| Note Type | Trigger | Key Elements |
|---|---|---|
| Meeting | "meeting notes", "call with" | Attendees, decisions, actions |
| Decision | "we decided", "decision:" | Context, options, rationale |
| Brainstorm | "ideas for", "brainstorm" | Raw ideas, clusters, next steps |
| Journal | "daily note", "today I" | Date, highlights, blockers |
| Project | "project update", "status" | Progress, blockers, next |
| Quick | "note:", "remember" | Minimal format, tags |
3. Extract Action Items Aggressively
If someone says "I'll do X" or "we need to Y", that is an action item.
Every action item MUST have:
- Owner: Who is responsible (@name)
- Task: Specific, actionable description
- Deadline: Explicit date (not "soon" or "ASAP")
Action items sync to ~/notes/actions.md regardless of which platform holds the note.
4. Platform-Specific Execution
After determining platform, read the corresponding file:
| Platform | File | CLI |
|---|---|---|
| local | platforms/local.md | none |
| apple-notes | platforms/apple-notes.md | memo |
| bear | platforms/bear.md | grizzly |
| obsidian | platforms/obsidian.md | obsidian-cli |
| notion | platforms/notion.md | curl (API) |
| evernote | platforms/evernote.md | clinote |
5. Unified Search Across Platforms
When searching notes:
- Search local
~/notes/first - Search each configured external platform
- Combine results with source indicators
Example output:
Search: "product roadmap"
Local:
[[2026-02-19_product-sync]] - meeting, ~/notes/meetings/
Notion:
"Q1 Roadmap" - page, Projects database
Bear:
"Roadmap Ideas" - #product #planning
6. Cross-Platform Action Tracking
~/notes/actions.md is the SINGLE source of truth for all action items, regardless of where the note lives.
Format includes source:
| Task | Owner | Due | Source |
|------|-------|-----|--------|
| Review proposal | @alice | 2026-02-20 | local:[[2026-02-19_sync]] |
| Update roadmap | @bob | 2026-02-22 | notion:Q1 Planning |
| Draft post | @me | 2026-02-21 | bear:#content-ideas |
7. Filename Convention (Local)
For local notes: YYYY-MM-DD_topic-slug.md (date first, then topic)
External platforms use their native naming/organization.
Common Traps
- Platform misconfiguration: Always verify platform is available before attempting. Fall back gracefully.
- Vague deadlines: "ASAP", "soon", "next week" are not deadlines. Force explicit dates.
- Missing owners: "We should do X" needs "@who will do X"
- Split action tracking: Never track actions only in the external platform. Always sync to central tracker.
- No retrieval tags: A note without tags is a note you will never find.
External Endpoints
| Endpoint | Data Sent | When | Purpose |
|---|---|---|---|
| https://api.notion.com/v1/pages | Note title, content | User configures Notion | Create pages |
| https://api.notion.com/v1/databases/*/query | Search queries | User searches Notion notes | Query database |
No other external endpoints. Apple Notes, Bear, Obsidian, and Evernote use local CLI tools that communicate with locally-installed apps.
Security & Privacy
Data flow by platform:
- Local: All data stays in
~/notes/. No network. - Apple Notes: Data stays local.
memoCLI communicates with Notes.app via macOS APIs. - Bear: Data stays local.
grizzlyCLI communicates with Bear.app. - Obsidian: Data stays local.
obsidian-clireads/writes vault files. - Notion: Note content sent to api.notion.com. Requires user-provided API key.
- Evernote: Note content sent to Evernote servers via
clinote. Requires user login.
Credential handling:
- Agent asks permission before checking for credentials
- Agent never reads
~/.config/notion/api_keyor~/.config/grizzly/tokenwithout explicit user consent - User sets up credentials themselves via platform documentation
What stays local always:
- Action items tracker:
~/notes/actions.md - Note index:
~/notes/index.md - Platform config:
~/notes/config.md
Related Skills
Install with clawhub install <slug> if user confirms:
meetings— meeting facilitation and agendasjournal— daily journaling practicedocumentation— technical docs
Feedback
- If useful:
clawhub star notes - Stay updated:
clawhub sync
Files
11 totalComments
Loading comments…
