From Desktop Commander
Creates and maintains a Markdown knowledge base with index-first navigation, atomic notes, and stable IDs, designed for AI agent consumption.
How this skill is triggered — by the user, by Claude, or both
Slash command
/desktop-commander:knowledge-baseThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A knowledge base (KB) here is a folder of Markdown files designed so **any** AI
A knowledge base (KB) here is a folder of Markdown files designed so any AI agent can navigate it without a vector database: the agent reads one index file, picks the relevant notes by their descriptions, and opens only those. Keep the whole KB readable and the index lean — the index is what gets loaded into context, so it must be high-signal.
Apply the rules below when creating a new KB, adding/editing notes, or doing a maintenance pass. When the user's request is ambiguous (new KB vs. add note vs. cleanup), ask which one before acting.
INDEX.md, selects notes by their one-line descriptions, then opens
only those files. No note is "in" the KB unless it's registered in the index.INDEX.md instructions short and high-signal —
it competes for the agent's context budget. Bodies load on demand.knowledge-base/
INDEX.md # entry point: instructions + full note registry
topics/
<topic>/
_topic.md # topic map: what this topic covers + its notes
<slug>.md # one atomic note
assets/ # images / attachments referenced by notes
auth, billing, deploys)._topic.md is the topic-level map of content (MOC): a short intro plus links
to every note in that topic. It is a convenience view; INDEX.md remains the
source of truth.topics/auth/session-tokens.md.id slug portion.---
id: 20260618-session-tokens # ID scheme: YYYYMMDD-slug. Stable. Never reuse or change.
title: Session tokens # human title, also the note's H1
tags: [auth, security] # only tags from the controlled list in INDEX.md
created: 2026-06-18
updated: 2026-06-18
related: [20260618-auth-flow] # IDs of linked notes
summary: One scannable sentence describing what this note covers.
---
id: YYYYMMDD-slug. Sortable, readable, stable. Different-titled same-day
notes differ by slug; if two same-day notes would collide on the same slug,
append -2, -3, … (check the INDEX.md registry before assigning). Once
assigned, the id is permanent.summary: this exact sentence is what goes in the index registry — write it to
help an agent decide whether to open the note.updated: bump it whenever the body changes.# Session tokens
> Summary: One sentence (mirrors frontmatter summary).
## Context
Why this note exists / when it applies.
## Details
The actual content, in short H2/H3 sections.
## Related
- [Auth flow](auth-flow.md) — prerequisite: tokens are issued during the auth flow.
- [Rate limiting](../api/rate-limiting.md) — see-also: tokens carry the rate-limit key.
related frontmatter.INDEX.md has two parts: operating instructions for agents, and the registry.
# Knowledge Base — Index
## How to use this KB (for agents)
1. Read this index first. Pick notes by their descriptions; open only those.
2. To answer a question, prefer opening 1–3 specific notes over scanning everything.
3. Cite the note `id` when you use information from it.
## How to update this KB (for agents)
- New idea → create a new note (atomic). Same idea changed → edit the note in place and bump `updated`.
- Any create / rename / delete MUST update this registry and the topic's `_topic.md` in the same change.
- Use only tags from the controlled vocabulary below; add a new tag here before using it.
## Controlled tags
`auth`, `security`, `billing`, `api`, `ops` <!-- extend deliberately -->
## Registry
### auth
- `20260618-auth-flow` — **Authentication flow** — `topics/auth/auth-flow.md` — How a user session is established end to end.
- `20260618-session-tokens` — **Session tokens** — `topics/auth/session-tokens.md` — Token format, lifetime, and rotation.
### billing
- `20260618-invoicing` — **Invoicing** — `topics/billing/invoicing.md` — How invoices are generated and sent.
Registry line format: `id` — **Title** — `path` — one-line description.
# Auth
Notes covering authentication, sessions, and access control.
- [Authentication flow](auth-flow.md) — how a session is established.
- [Session tokens](session-tokens.md) — token format, lifetime, rotation.
create_directory for the folder structure above.write_file INDEX.md with the instructions block, an empty controlled-tag
list, and an empty registry._topic.md, then the first note (each via write_file).INDEX.md and link it from _topic.md — edit_block
both so you touch only the changed lines.list_directory to see what's there).write_file the note (kebab-case slug) with full frontmatter and the body shape.related).INDEX.md and link it in _topic.md with edit_block — same change.edit_block the note in place, bump updated, and
edit_block the registry line if the scope changed.write_file a new atomic note instead of expanding this one.Use start_search (ripgrep) for text scans and get_file_info / list_directory
for existence checks — together they make this tractable at scale:
start_search the
KB for the note's id and filename slug, then discount the self-matches that
always exist — the note's own file, INDEX.md, and its _topic.md. Anything
left is a genuine inbound reference; nothing left = orphan, so link it from a
relevant note/MOC or archive it.related:
target exists with get_file_info (or list_directory per topic), and that
every file on disk is registered. Use a text compare only for the
titles/summaries-out-of-sync half.id, redirect links.INDEX.md, then start_search
the frontmatter tags: lines and flag any tag not on the list → reconcile.
Pull candidates in bulk with read_multiple_files, apply fixes with edit_block,
and report what changed.id is unique and unchanged; filename slug matches the id slug.related.INDEX.md registry and the topic _topic.md reflect the change.updated bumped on every changed note.claude plugin install desktop-commander@claude-plugins-officialAdds learnings, rules, or notes to the knowledge base via free-text input, suggesting optimal KB file locations based on existing structure and tags.
Use when setting up a new knowledge base, bootstrapping an Obsidian vault, or when user says 'init kb', 'new knowledge base', 'create kb', or 'setup vault'. Triggers on any request to initialize or scaffold a knowledge base project.
Persistent markdown knowledge base for cross-session project knowledge. Supports ingest, query, lint, and auto-capture with wiki-links and categorized pages.