Use this skill when working with ~/org/ directory, Denote files (YYYYMMDDTHHMMSS--title__tags.org), or org-mode knowledge bases. Provides scripts for: parsing Denote filenames/metadata, extracting org file TOC, and navigating 3,000+ file PKM systems. Trigger on: ~/org/, ~/org/llmlog/, ~/org/bib/, Denote ID parsing, org heading extraction.
This skill enables Claude to work with Denote-based Personal Knowledge Management (PKM) systems at scale. Denote is a simple yet powerful note-taking system for Emacs that combines file naming conventions, org-mode structure, and knowledge graph links. This skill provides procedural knowledge and executable scripts for handling 3,000+ file knowledge bases efficiently.
Claude should use this skill when:
YYYYMMDDTHHMMSS--title__tag1_tag2.org[[denote:TIMESTAMP]] links across files:tangle:results.org and .md exist for the same content, treat the org file as the primary, authoritative source and use markdown only as an export/share format.Denote is a note-taking system created by Protesilaos Stavrou that uses:
File naming: YYYYMMDDTHHMMSS--title__tag1_tag2.org
Org-mode frontmatter:
#+title: Title
#+date: [2025-10-21 Tue 10:53]
#+filetags: :tag1:tag2:tag3:
#+identifier: 20251021T105353
Knowledge graph: [[denote:20251021T105353]] links between files
Silo concept: Separate directories for different knowledge domains
Validated with 3,000+ org files in production PKM systems.
Location:
~/org/(symlink to~/sync/org/) Scale: 3,100+ org files
| Directory | Purpose | Scale |
|---|---|---|
bib/ | Bibliography notes (books, people, concepts) | 800+ files |
meta/ | Meta topics (programming, tools, workflows) | - |
notes/ | Personal notes and collections | - |
journal/ | Daily/weekly journals | - |
llmlog/ | AI/LLM conversation logs | - |
Philosophy, Science, Programming, AI, Education, Literature, Spirituality, etc.
# Find by Denote ID
fd "20251217T105827" ~/org/ --type f
# Find by tag
fd "__llmlog" ~/org/ --type f
# Find by title keyword
fd "wsl2" ~/org/ --type f
# Search content
rg "검색어" ~/org/ -t org
# List recent files
ls -lt ~/org/llmlog/*.org | head -10
For detailed knowledge base configuration, see ~/org/AGENTS.md.
Important: Scripts are executed via Bash, not Python import. Use the CLI commands shown below.
Behavioral rule: When reading org-mode documents, use structured approach: headings → history → focused sections. Only use grep as secondary tool.
CLI Usage:
# Parse a file (filename + frontmatter)
python3 ~/.claude/skills/denote-org/scripts/denote_parser.py ~/org/path/to/file.org
# Parse filename only
python3 ~/.claude/skills/denote-org/scripts/denote_parser.py --filename "20251021T105353--제목__tag.org"
# JSON output (recommended for parsing)
python3 ~/.claude/skills/denote-org/scripts/denote_parser.py --json ~/org/path/to/file.org
Example output (--json):
{
"path": "/home/user/org/llmlog/20241127T161109--제목__tag1_tag2.org",
"filename_meta": {
"timestamp": "20241127T161109",
"title": "제목",
"tags": ["tag1", "tag2"],
"ext": "org"
},
"frontmatter": {
"title": "제목",
"identifier": "20241127T161109",
"filetags": ["tag1", "tag2"],
"date": "[2024-11-27 Wed 16:11]"
}
}
When to use:
CLI Usage:
# Extract table of contents from org file
python3 ~/.claude/skills/denote-org/scripts/org_headings_toc.py ~/org/path/to/file.org
Example output:
1 히스토리
1 로그 :LLMLOG:
2 [2024-11-27 Wed 16:11]
3 git 리포지토리에서...
Format: LEVEL<TAB>TITLE - easy to parse.
When to use:
# Not yet implemented - use glob/grep for now
fd --type f "20251021T105353" ~/org/
# Not yet implemented - use grep for now
grep -r "20251021T105353" ~/org/ --include="*.org" -l
**When to use:
[[denote:...]] linksWhen working with org-mode files in this environment, follow this structured process instead of treating them as plain text:
Identify org-context and silos
~/org/**~/org/meta/**~/org/bib/**~/org/notes/**~/org/llmlog/**~/claude-memory/**~/repos/gh/*/docs/**~/repos/work/*/docs/**~/org/meta : meta-level models, config, and system design~/org/bib : bibliography and reference material~/org/notes : long-form notes and thinking~/org/llmlog: LLM conversation logs and experimentsdocs/: per-repo documentation tied to codeParse headings before content
*, **, ***)Locate and summarize history sections early
* 히스토리, * HISTORY, * History, * 작업 로그, * Changelog, or similarDrill down into relevant sections only
Prefer org over markdown when both exist
X.org and X.md exist for the same conceptual document:
X.org as canonical for structure, metadata, and detailed reasoning.X.md only as an export/share artifact or when the user explicitly prefers markdown.This strategy exists to maximize collaboration on org documents as first-class knowledge artifacts, not just as flat text blobs.
Common silos:
~/org/ - Main knowledge base (3,000+ files)~/claude-memory/ - AI memory system~/repos/*/docs/ - Project-specific docs# Get metadata from a Denote file
python3 ~/.claude/skills/denote-org/scripts/denote_parser.py --json ~/org/llmlog/20241127T161109--제목__tag.org
# First, get structure overview
python3 ~/.claude/skills/denote-org/scripts/org_headings_toc.py ~/org/notes/large-file.org
# Output:
# 1 섹션1
# 2 하위섹션
# Then read only relevant sections
# Until denote_finder.py is implemented
fd "20251021T105353" ~/org/ --type f
# or
find ~/org -name "*20251021T105353*"
Problem: 한글 filenames may cause encoding issues Solution: All scripts use UTF-8
Problem: Reading entire large org file exceeds context
Solution: Use org_headings_toc.py first, then read specific sections
scripts/
├── denote_parser.py ✅ Parse filenames and frontmatter (--json)
├── org_headings_toc.py ✅ Extract TOC from org file
├── denote_finder.py 🚧 Coming soon
├── denote_linker.py 🚧 Coming soon
└── denote_rename.py 🚧 Coming soon