Slipbot
Configuration
- Notes directory:
sync/slipbox/
- Graph index:
sync/slipbox/.graph/graph.json
- Timezone: User's local timezone (check USER.md or system; default UTC)
Prefix → Type
> {content} → quote
! {content} → idea
* {content} → journal
- {content} → note (default; also reached with no prefix)
Explicit triggers: note: {content}, remember this: {content}, quote: {content}.
Source Types
Common source types: book, article, podcast, video, movie, paper, talk, conversation.
Workflow
1. Capture
When a note is recognized:
Extract content and metadata
- Note content
- Type (from prefix above; default
note)
- Source, if provided, via the
~ shorthand: ~ {type}, {title} or ~ {type}, {title} by {author} (optional url appended as ({url})). Used by the slipbot-*-import siblings to pass parsed source metadata inline.
Generate filename
- Format:
YYYYMMDD-HHMMSS-slug.md
- Slug: lowercase, hyphenated, from title (max 4-5 words)
- On collision, append a suffix increment (
-2, -3, …) until the filename is unique on disk
Check for existing source
- If source provided, search existing notes for matching source title (case insensitive)
- Use existing source if found; otherwise use provided source as-is
- Trust user-supplied source metadata as-is; do not call external APIs to enrich it
Generate tags — tag with objects
- Tag with objects: specific people, tools, techniques, systems, concrete topics (nouns)
- 2-5 tags per note
- Check existing tags before creating new ones
- Examples:
[pomodoro-technique, Cal-Newport, deep-work], [vim, neovim-config, lua]
- Done when 2-5 object tags are selected, each verified against existing tags (reused before created).
Create markdown file using the frontmatter template in SCHEMAS.md. Note titles: descriptive but concise (3-8 words), specific (not "Thoughts" or "Notes"), question format works ("Why does X happen?", "How to Y?").
Done when the markdown file exists at sync/slipbox/{timestamp}-{slug}.md with all required frontmatter fields populated (title, date, type, tags, source, links).
2. Link
After creating a note, find connections:
Search existing notes for related concepts, people, topics, and 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 with confidence ≥ 0.75
- Update both notes' frontmatter
- Include a reason for each connection (see
links shape in SCHEMAS.md)
Done when every existing note scoring ≥0.75 confidence has been evaluated, and each accepted link is written bidirectionally into both notes' frontmatter with a reason.
3. Update Graph
After capture and linking:
- Load
sync/slipbox/.graph/graph.json
- Add/update the note entry using the graph schema in
SCHEMAS.md
- Write the updated graph back to
sync/slipbox/.graph/graph.json
Done when graph.json contains an entry for the new note whose links count matches the links written in §2, and last_updated is set.
Querying
When the user asks to retrieve notes ("show me notes about X", "find quotes from Y", "what links to Z", "what have I written about A"), see QUERYING.md.
Maintenance
When the user asks to maintain the slipbox (validate frontmatter, remove broken links, suggest merges, rebuild graph), see MAINTENANCE.md.
Error Handling
- Missing timezone: Default to UTC, ask user to set in USER.md
- Corrupted graph: Rebuild from note files (see
MAINTENANCE.md)
- Invalid frontmatter: Fix the offending fields in place and notify the user what was fixed
User Feedback
Reply with one line: Note captured: [title] (plus Added N links to related notes when N>0). Narrate steps only when debugging.
1---2name: slipbot3description: Capture notes, quotes, ideas, and journal entries into the slipbox with auto-tagging, linking, and graph maintenance. Use when the user shares a thought to save, says "note:"/"remember this:"/"quote:", prefixes a line with > ! * -, or asks to "remember" or "save" something.4---56# Slipbot78## Configuration910- **Notes directory:** `sync/slipbox/`11- **Graph index:** `sync/slipbox/.graph/graph.json`12- **Timezone:** User's local timezone (check USER.md or system; default UTC)1314## Prefix → Type1516- `> {content}` → quote17- `! {content}` → idea18- `* {content}` → journal19- `- {content}` → note (default; also reached with no prefix)2021Explicit triggers: `note: {content}`, `remember this: {content}`, `quote: {content}`.2223## Source Types2425Common source types: `book`, `article`, `podcast`, `video`, `movie`, `paper`, `talk`, `conversation`.2627## Workflow2829### 1. Capture3031When a note is recognized:32331. **Extract content and metadata**34 - Note content35 - Type (from prefix above; default `note`)36 - Source, if provided, via the `~` shorthand: `~ {type}, {title}` or `~ {type}, {title} by {author}` (optional `url` appended as ` ({url})`). Used by the `slipbot-*-import` siblings to pass parsed source metadata inline.37382. **Generate filename**39 - Format: `YYYYMMDD-HHMMSS-slug.md`40 - Slug: lowercase, hyphenated, from title (max 4-5 words)41 - On collision, append a suffix increment (`-2`, `-3`, …) until the filename is unique on disk42433. **Check for existing source**44 - If source provided, search existing notes for matching source title (case insensitive)45 - Use existing source if found; otherwise use provided source as-is46 - Trust user-supplied source metadata as-is; do not call external APIs to enrich it47484. **Generate tags — tag with objects**49 - Tag with **objects**: specific people, tools, techniques, systems, concrete topics (nouns)50 - 2-5 tags per note51 - Check existing tags before creating new ones52 - Examples: `[pomodoro-technique, Cal-Newport, deep-work]`, `[vim, neovim-config, lua]`53 - **Done when** 2-5 object tags are selected, each verified against existing tags (reused before created).54555. **Create markdown file** using the frontmatter template in [`SCHEMAS.md`](SCHEMAS.md). Note titles: descriptive but concise (3-8 words), specific (not "Thoughts" or "Notes"), question format works ("Why does X happen?", "How to Y?").5657**Done when** the markdown file exists at `sync/slipbox/{timestamp}-{slug}.md` with all required frontmatter fields populated (title, date, type, tags, source, links).5859### 2. Link6061After creating a note, find connections:62631. **Search existing notes** for related concepts, people, topics, and overlapping tags64652. **Determine connection type**66 - **related** — similar topic or theme67 - **extends** — builds on or expands another note68 - **contradicts** — opposing viewpoint69 - **references** — mentions same person/book/concept70 - **supports** — provides evidence for another note71723. **Add bidirectional links** with confidence ≥ 0.7573 - Update both notes' frontmatter74 - Include a reason for each connection (see `links` shape in [`SCHEMAS.md`](SCHEMAS.md))7576**Done when** every existing note scoring ≥0.75 confidence has been evaluated, and each accepted link is written bidirectionally into both notes' frontmatter with a reason.7778### 3. Update Graph7980After capture and linking:81821. **Load** `sync/slipbox/.graph/graph.json`832. **Add/update the note entry** using the graph schema in [`SCHEMAS.md`](SCHEMAS.md)843. **Write** the updated graph back to `sync/slipbox/.graph/graph.json`8586**Done when** `graph.json` contains an entry for the new note whose `links` count matches the links written in §2, and `last_updated` is set.8788## Querying8990When the user asks to retrieve notes ("show me notes about X", "find quotes from Y", "what links to Z", "what have I written about A"), see [`QUERYING.md`](QUERYING.md).9192## Maintenance9394When the user asks to maintain the slipbox (validate frontmatter, remove broken links, suggest merges, rebuild graph), see [`MAINTENANCE.md`](MAINTENANCE.md).9596## Error Handling9798- **Missing timezone:** Default to UTC, ask user to set in USER.md99- **Corrupted graph:** Rebuild from note files (see [`MAINTENANCE.md`](MAINTENANCE.md))100- **Invalid frontmatter:** Fix the offending fields in place and notify the user what was fixed101102## User Feedback103104Reply with one line: `Note captured: [title]` (plus `Added N links to related notes` when N>0). Narrate steps only when debugging.