flake-update-20260201

Denote Note-Taking Format

Complete reference for creating and organizing notes in denote format using org-mode.

Note Location

Notes directory: /home/vincent/desktop/org/notes

Denote Format

Denote is an Emacs package for simple note management with a consistent naming scheme.

File Naming Pattern

Standard format:

YYYYMMDDTHHMMSS--title__tag1_tag2_tag3.org

With signature (for automated/system-generated notes):

YYYYMMDDTHHMMSS==signature--title__tag1_tag2_tag3.org

Components:

  • Timestamp: YYYYMMDDTHHMMSS - Unique identifier and creation time
  • Signature (optional): ==signature - Identifies note origin/type (e.g., ==pkai for automated history notes)
  • Separator: -- - Separates timestamp/signature from title
  • Title: Descriptive, lowercase with hyphens
  • Tag separator: __ - Separates title from tags
  • Tags: Underscore-separated, descriptive keywords

Examples:

# Regular note
20251203T151822--personal-ai-infrastructure-implementation-plan__ai_claude_infrastructure_nixos_plan.org

# Automated history note (with pkai signature)
20251203T155616==pkai--claude-skills-implementation-session__history_session_ai_claude.org

Signature Usage:

  • ==pkai - Personal Knowledge Automated Infrastructure (history-generated notes)
  • Use signatures to identify system-generated or automated notes
  • Makes it easy to filter: ls *==pkai*.org shows all automated notes

File Structure

Every denote note follows this org-mode structure:

#+title:      Note Title Here
#+date:       [YYYY-MM-DD Day HH:MM]
#+filetags:   :tag1:tag2:tag3:
#+identifier: YYYYMMDDTHHMMSS
#+category: category_name

* First Section
Content goes here...

** Subsection
More content...

* Second Section
Additional content...

Key Elements:

  • #+title: - Human-readable title (can have spaces, capitalization)
  • #+date: - Creation date in org-mode date format
  • #+filetags: - Tags surrounded by colons (:tag1:tag2:)
  • #+identifier: - Same as filename timestamp
  • #+category: - Optional category for organization

Common Tags

Technical Topics

  • :ai: - AI, LLMs, Claude Code
  • :nixos: - NixOS configuration and packages
  • :golang: - Go programming language
  • :homelab: - Infrastructure, servers, self-hosting
  • :keyboards: - Keyboard firmware (QMK, ZMK, Kanata)
  • :emacs: - Emacs editor and configuration
  • :linux: - Linux operating system
  • :programming: - General programming topics

Work and Projects

  • :work: - Work-related notes
  • :redhat: - Red Hat specific
  • :openshift: - OpenShift/Kubernetes
  • :tekton: - Tekton CI/CD
  • :project: - Project-specific notes

Personal

  • :life: - Personal life and experiences
  • :books: - Book notes and highlights
  • :ideas: - Ideas and brainstorming
  • :plan: - Planning and roadmaps
  • :learning: - Learning notes

Content Type

  • :howto: - How-to guides
  • :reference: - Reference material
  • :tutorial: - Tutorials and walkthroughs

History Integration

  • :history: - All history-related notes (required for integration)
  • :history:session: - Work session summaries
  • :history:learning: - Problem-solving insights and learnings
  • :history:research: - Deep technical investigations
  • :history:decision: - Architecture and design decisions
  • :history:execution: - Command execution logs

Note: History-tagged notes are interconnected with ~/.config/claude/history/ entries.

Creating Notes

The org-manager tool provides batch mode denote integration:

# Create a simple note
org-manager denote-create "Note Title" "tag1,tag2,tag3" \
  --category=homelab --directory=~/desktop/org/notes

# Create with signature (for automated notes)
org-manager denote-create "Session Summary" "history,session" \
  --signature=pkai --category=history

# Create with initial content from file
echo "* Custom Content" > /tmp/content.org
org-manager denote-create "My Note" "nixos,config" \
  --content=/tmp/content.org

Output: Returns JSON with created file path:

{
  "success": true,
  "filepath": "/path/to/20251205T140049--note-title__tag1_tag2_tag3.org",
  "timestamp": "20251205T140049",
  "message": "Created note: ..."
}

Manual Creation

If creating notes manually without org-manager:

Generate Timestamp

# Get current timestamp for identifier
date +"%Y%m%dT%H%M%S"

Generate Full Date

# Get org-mode formatted date
date +"[%Y-%m-%d %a %H:%M]"

Best Practices

Title Guidelines

  • Use descriptive, specific titles
  • Keep titles concise (3-7 words ideal)
  • Use lowercase in filename, normal case in #+title:
  • Examples:
    • Good: “implementing-oauth2-authentication”
    • Bad: “notes” or “stuff-about-things”

Tagging Strategy

  • Use 2-5 tags per note
  • Start general, then specific: :programming:golang:testing:
  • Create tags consistently (don’t use both :ai: and :artificial-intelligence:)
  • Tags are for finding, not categorizing everything

Content Organization

  • Use org-mode headings (*, **, ***)
  • Include a brief overview/summary at the top
  • Use TODO items for actionable content
  • Link related notes with org-mode links

Org-Mode Features

Headings

* Level 1
** Level 2
*** Level 3
# Link to other notes
[[file:~/desktop/org/notes/20251203T151822--personal-ai-infrastructure__ai.org][PAI Implementation Plan]]

# External links
[[https://example.com][Example Website]]

Code Blocks

#+begin_src bash
make switch
#+end_src

#+begin_src nix
services.nginx.enable = true;
#+end_src

Lists

# Unordered
- Item 1
- Item 2
  - Subitem

# Ordered
1. First
2. Second

# TODO lists
- [ ] Uncompleted task
- [X] Completed task

Tables

| Name    | Value | Status |
|---------+-------+--------|
| Item 1  |   100 | Done   |
| Item 2  |   200 | Pending|

Finding Notes

By Tags

# Find notes with specific tag
ls ~/desktop/org/notes/*__*homelab*.org
ls ~/desktop/org/notes/*__*nixos*.org

By Date

# Most recent notes
ls -t ~/desktop/org/notes/*.org | head -10

# Notes from specific month
ls ~/desktop/org/notes/202512*.org

By Title

# Find notes with "wireguard" in title
ls ~/desktop/org/notes/*--*wireguard*.org

Using grep

# Find notes about a topic
grep -l "wireguard" ~/desktop/org/notes/*.org

# Find notes with specific tag in frontmatter
rg "#+filetags:.*:nixos:" ~/desktop/org/notes/

Special Note Types

Readwise Notes

  • Filename: TIMESTAMP==readwise=TYPE--title.org
  • Include #+property: READWISE_URL:
  • Don’t create manually; they’re imported automatically

Meeting Notes

#+title:      Team Meeting 2025-12-03
#+date:       [2025-12-03 Wed 10:00]
#+filetags:   :work:meetings:
#+identifier: 20251203T100000
#+category: work

* Attendees
- Alice, Bob

* Agenda
** Topic 1

* Action Items
- [ ] Alice: Follow up on X

Learning Notes

#+title:      Learning Rust Ownership
#+date:       [2025-12-03 Wed 16:00]
#+filetags:   :learning:rust:programming:
#+identifier: 20251203T160000
#+category: learning

* Key Concepts
** Ownership Rules
1. Each value has an owner
2. Only one owner at a time

* Resources
- [[https://doc.rust-lang.org/book/][Rust Book]]

History Integration

When to Create History-Linked Notes

Create notes with :history: tags when:

  • Documenting significant work sessions
  • Capturing important learnings from debugging
  • Recording research findings worth referencing
  • Noting architecture decisions

History Note Format

Filename with pkai signature:

YYYYMMDDTHHMMSS==pkai--description__history_category_tags.org

Content:

#+title:      <Title>
#+date:       [YYYY-MM-DD Day HH:MM]
#+filetags:   :history:category:topic1:topic2:
#+identifier: YYYYMMDDTHHMMSS
#+category: history

* Context
What this documents

* Details
Main content

* Related History Entries
- [[file:~/.config/claude/history/sessions/2025-12/...][Session Entry]]

* Related Notes
- [[file:~/desktop/org/notes/...][Other Note]]

Note: The ==pkai signature marks this as a history-system generated note.

Finding History Notes

# All history notes (by tag)
ls ~/desktop/org/notes/*__history*.org

# All automated history notes (by signature)
ls ~/desktop/org/notes/*==pkai*.org

# Specific category
ls ~/desktop/org/notes/*__history_session*.org

Tips

  1. Timestamps are unique: Use current time for new notes
  2. Tags are lowercase: Keep them simple and consistent
  3. Link liberally: Connect related notes and history entries
  4. Use TODO items: Make notes actionable
  5. Include examples: Code, commands, configurations
  6. Reference sources: Link to documentation, articles
  7. Review regularly: Update and refine over time
  8. History tag: Add :history: for integration with history system