nico2sh/kimun/kimun-cli
Claude Code and agent skill by nico2sh/kimun
- community
Checking that the SKILL.md file is still in the repository.
Use when the user has kimun installed and wants to create, append, search, or read notes from the terminal, or when automating note management as part of a workflow or agent task
Install
npx vskill@latest install nico2sh/kimun/kimun-cliSKILL.md
Kimün CLI Reference
Kimün is a local-first, terminal notes app. Notes are plain Markdown files indexed for fast search. Use the CLI to write, append, search, and read notes without opening the TUI — ideal for automation, piping, and AI-driven workflows.
Quick Reference
| Task | Command | |
|---|---|---|
| Create note | kimun note create "path" "content" | |
| Append to note | kimun note append "path" "content" | |
| Overwrite a note | kimun note overwrite "path" "content" --force | |
| Replace text in a note | kimun note replace "path" "old" "new" [--all] [--regex] [--preview] | |
| Delete a note | kimun note delete "path" --force | |
| List a note's properties | kimun note prop list "path" [--format json] | |
| Read one property | kimun note prop get "path" key | |
| Set a property | kimun note prop set "path" key value… [--type KIND] [--yaml] | |
| Remove a property | kimun note prop remove "path" key | |
| Log to today's journal | kimun journal "text" | |
| Log to a specific date | kimun journal --date YYYY-MM-DD "text" | |
| Show today's journal | kimun journal show | |
| Show a specific journal entry | kimun journal show --date YYYY-MM-DD | |
| Show note content | kimun note show "path" | |
| Search notes | kimun search "query" | |
| List notes | kimun notes | |
| List all labels | kimun labels | |
| Reindex after external edits | kimun workspace reindex |
Writing Notes
All write commands accept content as a second argument or from stdin (when stdin is not a TTY).
Create
Creates a new note. Fails if the note already exists — use append if unsure.
Append
Appends to a note. Creates it automatically if it doesn't exist. Safe to use as the default write command.
Modifying Notes
Three destructive operations let you change or remove existing content. Each one backs up the note first (see below), so an edit is recoverable.
Overwrite
Replaces a note's entire body. Requires --force (it discards the old body). Content comes from an argument or stdin.
Replace
Swaps text for new text, leaving the rest of the note intact. The find text must match exactly once — the command errors if it is missing or appears more than once, so it never edits the wrong spot. Use --all to replace every occurrence. No --force needed (it's a targeted, scriptable edit).
By default the find text is a literal substring. Add --regex to treat it as a regular expression; the replacement may then use capture references ($1, ${name}; $$ for a literal $, and ${1}/${name} when the next character is alphanumeric, e.g. ${1}_). Inline flags (?m), (?s), (?i) control line/case behaviour. An invalid pattern errors without touching the note.
--preview is a dry run: it prints the resulting note content to stdout (match count to stderr) and writes nothing — useful to inspect before committing.
Delete
Removes a note. Requires --force.
Properties
Read and edit frontmatter properties without touching the rest of the note.
tags is always a list (comma-separated values become separate items; set n tags with no value clears it). Any other key's value must be exactly a value of the type the key has in other notes; one that doesn't fit (e.g. high, or 02134, where priority is a number elsewhere) is refused with a user error — retry with --type text|number|bool|date|datetime|list, which changes only that note. A key no other note has is typed by its look (5 → number, true → bool, 2026-05-01 → date, 2026-05-01T14:30 → date-time kept local, else text; 02134 stays text). Query properties with kimun search "%status=active" (see the search syntax).
Automatic backups
Every CLI/MCP edit that overwrites or deletes a note's content first copies the old content into a hidden, dated backup inside the vault (excluded from search). Backups are kept for 30 days, then purged automatically. This covers overwrite, replace, delete, prop set/prop remove, and the backlink rewrites done by rename/move. create and append of a new note have nothing to back up. Interactive TUI editing does not back up (the editor has its own history). If a backup can't be written, the edit is aborted (fail-closed) — the note is left untouched.
Errors
Failed operations print a one-line message to stderr and exit non-zero:
- Exit 2 — user/input error you can act on. The message is clean and stable,
e.g. Error: Note not found: inbox/x.md, Error: Note already exists: inbox/x.md, Error: Text to replace is not unique in note: …, Error: Text to replace not found in note: …, Error: Invalid path '…': …. Read it and adjust (fix the path, use --all, etc.) — don't retry unchanged.
- Exit 1 — internal failure (database, filesystem, unexpected). Treat as a
real fault, not something to retry blindly; the full report goes to stderr.
The MCP server returns the same wording as a tool error, so both surfaces report note problems identically.
Journal
kimun journal appends to a journal entry (today by default). kimun journal show displays one.
- Defaults to today;
--date YYYY-MM-DDtargets any date - Creates the entry if it doesn't exist
showsupports--format text(default) and--format json
Reindexing After External Edits
Kimün serves search, listing, labels, backlinks, and forward links from an index, not by reading every file on each query. Every write through the CLI (or MCP, or the TUI) updates that index automatically. But if a note file is changed outside Kimün — edited with sed, vim, another editor, a sync tool, or any direct filesystem write — the index goes stale: search and metadata keep reflecting the old content until you rebuild it.
After any out-of-band change to vault files, reindex:
Until you reindex, results from search, notes, labels, and link filters may be wrong. Stick to the note write commands above and you never need this — they keep the index in sync for you.
Path Rules
"inbox/note"— relative to the configuredquick_note_path(default: vault root)"/inbox/note"— absolute from vault root; use a leading/to be explicit.mdextension is optional in all commands
Searching
Query syntax
Free text is case-insensitive, diacritics-ignored. Multiple terms = AND.
Wildcards — * matches any sequence of characters, works in free text and with operators:
| Operator | Long form | Matches | |
|---|---|---|---|
=term | name:term | note name contains term | |
@term | in:term | Markdown section heading contains term | |
/term | pt:term | note path (directory) contains term | |
#label | lb:label | note carries that label (#label in the body, or in the frontmatter tags property) | |
<note | lk:note | notes that link to note (its backlinks) | |
>note | fwd:note | notes that note links to (its forward links) | |
%key<op>value | prop:key<op>value | frontmatter property compares true; op is = != < <= > >= (%status=done, %priority>=2, %due<2026-05-01, %status="in progress", %"due date"<2026-05-01, %status=d* wildcard) | |
%key | prop:key | note has that property at all | |
^%key | or:prop:key | sort by a property (-^%key descending; notes without it last) | |
-term | exclude notes containing term |
Hashtag labels — any #name token in a note body (letters/digits/underscore) is indexed as a label and is case-insensitive. Hashtags inside frontmatter, code spans, fenced blocks, HTML, link bodies, and wikilinks are NOT indexed. Multiple # filters AND together.
Link filters — <note (or lk:note) matches notes that link to note (its backlinks); >note (or fwd:note) matches the notes that note links to (its forward links). Both match by note name (.md optional, case-insensitive); a bare name matches in any folder, <dir/note / >dir/note disambiguates, and * wildcards work (<proj*). Only links to other notes count, not attachments or URLs.
Exclusion composes with all operators — `-` leads, then the operator:
Combining filters (all terms are ANDed):
Listing Labels
kimun labels enumerates every distinct hashtag label in the vault with note counts. Three formats:
When to reach for it
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/kimun-cli/SKILL.md
Popularity
- Repository stars
- 47
- Repository forks
- 1
- 7-day trend score
- 19
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/nico2sh/kimun/kimun-cli)