2.1 KiB
2.1 KiB
SKILL: Org-Mode & Org-Roam (Technical Implementation)
Philosophy
Plain text is forever. Structure is metadata. Everything is a node.
Technical Implementation
1. Document Structure
- Headlines: Use `*` for top-level, `**` for second-level, etc.
- Properties: Every node (headline) that is intended to be an atomic note must have a `:PROPERTIES:` drawer.
- Unique IDs: Use `:ID:` for Org-roam style linking (e.g., `:ID: 550e8400-e29b-41d4-a716-446655440000`).
- Dates: Use `[YYYY-MM-DD Day HH:MM]` for inactive timestamps and `<YYYY-MM-DD Day HH:MM>` for active/scheduled ones.
2. Task Management (GTD)
- Hub: Use `memex/gtd.org` for all TODOs, Projects, and Habits.
- Statuses: `TODO`, `DOING`, `DONE` (with `CLOSED:`), `WAITING`, `SOMEDAY`.
3. File Naming
- Daily & Fleeting: `memex/1_daily/YYYY-MM-DD.org`
- Atomic Notes: `memex/2_notes/slug-of-the-concept.org`
- Projects: `memex/5_projects/ProjectName/SPEC.org`
4. Code Blocks
- Use `#+BEGIN_SRC <language>` and `#+END_SRC` for all code snippets.
- Use `#+RESULTS:` to capture output when running code within Org-mode (Babel).
6. Binary Management (org-attach)
- Philosophy: Treat binaries (PDFs, images, data) as first-class citizens linked to symbolic nodes. Never use fragile local file paths.
-
The Protocol (System 2):
- Identify the Host Node: Every attachment must be linked to a specific Org headline (e.g., in `memex/gtd.org` or a Literature Note).
- Generate Native ID: Use `(org-id-get-create)` via Emacs to ensure the node has a globally unique, persistent identifier.
- Perform the Attachment: Use `(org-attach-attach "/path/to/file" nil 'mv)` to move the file into the ID-based storage.
- Linking: Use `attachment:filename.ext` for all internal references. This ensures the link survives if the file or node is moved.
- Storage Root: The system-wide attachment directory is `$MEMEX_ATTACHMENTS` (typically `memex/7_resources/` or `memex/attachments/`).