Slipbot Slipbot
Used to capture and organize notes, ideas, quotes, and journal entries with automatic tagging, linking, and knowledge graph maintenance.
git clone https://github.com/jrswab/slipbot
T=$(mktemp -d) && git clone --depth=1 https://github.com/jrswab/slipbot "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/slipbot" ~/.claude/skills/jrswab-slipbot-slipbot && rm -rf "$T"
skills/slipbot/SKILL.mdConfiguration
Run
pwd and get the {curDir}
- Notes directory:
{curDir}/slipbox/ - Graph index:
{curDir}/slipbox/.graph/graph.json - Timezone: User's local timezone (check USER.md or system)
Note Patterns & Types
Prefixes
→ quote, contains attributed text.> {content}
→ idea, for speculative or creative thinking! {content}
→ journal, for personal reflection and logs* {content}
→ note, for information about subject- {content}
Delimiters
→ source (appended after prefix+content combination)~ {content}- Example note with source:
- Content here ~ Source Type, Source Title by Source Author - Example quote with source:
> Content here ~ Source Type, Source Author
- Example note with source:
Workflow
1. Capture
When a note is recognized:
-
Extract content and metadata
- Note content
- Type (quote/idea/journal/note)
- Source information (if provided)
-
Generate filename
- Format:
YYYYMMDD-HHMMSS-slug.md - Slug: lowercase, hyphenated, from content passed in (max 4-5 words)
- Example:
20260131-143022-compound-interest.md
- Format:
-
Check for existing source
- If source is not provided set
.source: null - If source provided, search existing notes for matching source title (case insensitive)
- Use existing source if found
- Otherwise, use provided source as-is
- No external API calls - trust user input
- If source is not provided set
-
Generate tags
- Extract specific objects concepts (nouns)
- Focus on: people, tools, techniques, systems, specific topics
- Avoid broad categories like "productivity" or "ideas"
- Consistency: Check existing tags before creating new ones
- 2 or 3 tags per note
- Examples:
[pomodoro-technique, Cal-Newport, deep-work]
-
Create markdown file
--- title: "Generated Note Title from Content" date: 2026-01-31T14:30:22-05:00 type: note tags: [specific, object, based, tags] source: title: "Source Title" type: "book" author: "Author Name" links: [] --- Note content here in markdown.
Note Titles
- Descriptive but concise: 3-8 words
- Avoid generic: Not "Thoughts" or "Notes", be specific
- Question format works: "Why does X happen?" or "How to Y?"
2. Link
After creating a note, find connections:
-
Search existing notes
- Look for related concepts, people, topics
- Check for overlapping tags
-
Determine connection type
- related - Similar topic or theme
- extends - Builds on or expands another note
- contradicts - Opposing viewpoint
- references - Mentions same person/book/concept
- supports - Provides evidence for another note
-
Add bidirectional links
- Update both notes' frontmatter
- Include reason for connection
Quality over quantity: Only link when genuinely related
links: - id: "20260120-093045-compound-interest" type: related reason: "Both discuss exponential growth concepts"
3. Note Validations
3.1: Validate frontmatter - Ensure the note has the required fields - title - date - type - tags
3.2: Remove broken links - Check if notes that the new note links to still exist - If any files are missing save them to
{curDir}/slipbox/missing.md
4. Update Graph
After capture and linking:
4.1: Load graph index - Read
{curDir}/slipbox/.graph/graph.json
4.2: Add/update note entry
{ "notes": { "20260131-143022-note-title.md": { "title": "Your Note Title", "source": { "title": "Source Title", "type": "book", "author": "Author Name" }, "type": "note", "tags": ["tag1", "tag2"], "links": [ "20260120-093045-other-note.md", ] } }, "last_updated": "2026-01-31T14:35:00-05:00" }
4.3: Remove any entries from graph - Read
{curDir}/slipbox/missing.md
- If any notes are found missing remove the entry from the graph.
- Then remove them from {curDir}/slipbox/missing.md
4.4: Rebuild graph - If corrupted beyond simple note removals, rebuild from the current note files.
4.5: Write updated graph - Save back to
{curDir}/slipbox/.graph/graph.json
Querying
Respond to natural queries like: "Show me notes about X"
Approach:
- Search graph index first (fast); only fall back to file search if needed.
- Present results with titles, dates, snippets
- Offer to show full content if relevant
User Feedback
Keep responses minimal:
- ❌ Don't narrate every step unless debugging
Example Interaction
User: "- The Feynman Technique is about teaching concepts to identify gaps in understanding"
You:
- Create
20260131-163500-feynman-technique.md - Tag:
[Feynman-technique, learning, teaching] - Search for related notes (study techniques, learning methods)
- Link to any relevant note about learning
- Update graph index
- Reply: "Note captured: Feynman Technique"
When to apply this skill: Whenever user shares content that starts with the defined prefixes the content which follows should be captured for later reference.