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.,==pkaifor 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*.orgshows 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
Using org-manager (Recommended)
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
Links
# 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
- Timestamps are unique: Use current time for new notes
- Tags are lowercase: Keep them simple and consistent
- Link liberally: Connect related notes and history entries
- Use TODO items: Make notes actionable
- Include examples: Code, commands, configurations
- Reference sources: Link to documentation, articles
- Review regularly: Update and refine over time
- History tag: Add
:history:for integration with history system