CLAUDE
llm-pkm — Agentic OS Kernel
This vault is an LLM OS (Karpathy model): Obsidian = disk, Claude Code = kernel, slash-commands = programs, notes = persistent state. Every command reads this file first. It defines the contract all programs obey.
Active Skills
- .claude/skills/css-conventions/SKILL.md
Folder semantics (where things live)
| Path | Holds | Frontmatter type |
|---|---|---|
00-Inbox/ | raw capture buffer (Inbox.md) | inbox |
01-Daily/ | daily notes YYYY-MM-DD.md | daily |
10-Projects/ | active, deadline-bound efforts | project |
20-Areas/ | ongoing responsibilities (no end date) | area |
30-Resources/ | topic reference material | resource |
40-Archive/ | inactive / done | (keep prior type, status: archived) |
50-Zettel/ | atomic permanent notes | zettel |
60-MOCs/ | Maps of Content (indexes) | moc |
70-Sources/ | research / literature notes w/ citations | source |
90-Meta/ | templates, dashboards, bases, scripts | meta |
PARA = action zone (10–40). Zettelkasten = knowledge zone (50–70). Inbox + Daily are shared.
Frontmatter schema (the "inode")
Every note (except Inbox/templates) MUST open with:
---
type: project|area|resource|zettel|source|daily|moc
status: active|on-hold|done|archived # action notes; omit for zettel/source
created: YYYY-MM-DD
modified: YYYY-MM-DD
tags: []
up: [] # parent MOC/area link, e.g. ["[[Learning]]"]
related: [] # lateral links
---- Dates are real (today = check the
currentDatereminder). up/relateduse[[wikilinks]]. Link liberally; dangling links are fine (they mark notes-to-write).- On any edit to a note, bump
modified.
Naming conventions
- Zettels: descriptive title-case, no IDs (
Spaced Repetition.md). Atomic = one idea per note. - Projects/Areas: noun phrase (
Launch Personal Site.md). - Sources:
Author - Title.mdor the work's title. - MOCs: the topic name (
Learning.md). - Daily:
YYYY-MM-DD.mdonly.
Tag taxonomy
Lowercase, /-nested. Stems: #topic/..., #status/... (mirrors frontmatter), #type/.... Keep tags few — prefer [[links]] for relationships, tags for cross-cutting facets.
Tasks syntax (Tasks plugin)
- [ ] action 📅 YYYY-MM-DD #tag — emoji metadata (📅 due, ⏫ priority, 🔁 recur). Dashboards/daily query these globally.
Programs (.claude/commands/)
| Command | Does |
|---|---|
/capture <text> | append timestamped line to 00-Inbox/Inbox.md |
/think [topic] | Socratic drill on a topic; auto-invokes /zettel /link /moc /research as insights crystallize; empty = picks latest inbox item |
/process-inbox | classify each inbox item → route to right folder w/ frontmatter → suggest links → clear |
/daily | scaffold today's daily note; pull open tasks + carryover + due projects |
/weekly-review | surface stale/on-hold/overdue; propose archive moves |
/new-project <name> | scaffold project note from template |
/zettel <idea> | create atomic note; search vault; suggest up/related links |
/research <q> | deep-research skill → source note(s) w/ citations → synthesis zettel |
/link [note] | find backlink candidates across vault; propose related edits |
/moc <topic> | build/refresh a MOC index from tag/folder/links |
/status-refresh | parse latest agent session log → write 90-Meta/status/*.json for the Cockpit |
Conventions for the kernel (you)
- Respect the schema. New notes get full frontmatter. Never leave
created/typeblank. - Link, don't orphan. Every new knowledge note gets at least one
up(its MOC) and proposedrelated. - Templates first. Scaffold from
90-Meta/Templates/rather than inventing structure. - Confirm destructive moves. Archiving / deleting notes → confirm with user first.
- Manual autonomy. Act on explicit command invocation. No background jobs (daemons deferred).
Version control
- Vault is a git repo. A Stop hook runs
90-Meta/scripts/autosave.shafter every turn → auto-commits all changes. Commit-only; the user pushes manually. - Commits in this vault must NOT reference Claude in any way — no
Co-Authored-By: Claude …trailer, no mention in subject/body. This explicitly overrides the global~/.claude/CLAUDE.mdcommit-trailer rule. The autosave script controls the message; if you ever commit by hand, follow the same rule. - Identity is local repo config:
FirasAEN <test@none.com>. Never edit global git config.
See 90-Meta/System.md for the human-readable overview and architecture diagram.