with one click
notes
// Capture quick inbox notes without breaking flow. Verbatim capture with auto-match. Per-project filtering. Lists and triages the inbox.
// Capture quick inbox notes without breaking flow. Verbatim capture with auto-match. Per-project filtering. Lists and triages the inbox.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | notes |
| description | Capture quick inbox notes without breaking flow. Verbatim, auto-match, per-project filtering, list/triage. |
| when_to_use | Use for quick verbatim capture (`/note <text>`), listing pending inbox notes (`/note list`), or triaging the inbox (`/note process`). |
| allowed-tools | Bash Read |
Capture raw thoughts verbatim in notes/ without interrupting work. Triage later. Wiki is polished; notes/ is inbox. /save files synthesis; /note files raw thoughts.
See ยง1 Vault path resolution. Always write to <vault_root>/notes/ regardless of CWD. If no vault is configured, abort with No vault configured โ run /wiki init first.
| User says | Operation | Handled by |
|---|---|---|
/note <text>, /dump <text>, "note this โฆ", "remember this for later", "add to inbox โฆ", "todo: โฆ" | CAPTURE | this skill |
/note list, "show my inbox", "what's in notes" | LIST | this skill |
/note process, "process my notes", "triage the inbox" | PROCESS | this skill |
Capture, list, and process do not prompt for tags, types, or confirmations beyond the per-note action prompt in PROCESS.
Goal: persist the user's verbatim text with minimal metadata. No conversation context, no auto-tagging, no questions.
Steps:
Extract arguments from the user's message. For /note <args> and /dump <args>, capture everything after the trigger phrase as a single raw argument string. Scan it non-destructively for image-path tokens (any token that resolves to a path or carries a supported image extension) and URL tokens. Treat all remaining non-path, non-URL tokens as a single verbatim text segment โ joined in their original order with single spaces. Preserve the relative order of text, paths, and URLs as they appeared in the input.
Image routing. If any image paths are present โ read ${CLAUDE_PLUGIN_ROOT}/_shared/image-capture.md. Follow that file for the full image-input path; skip steps 3โ4 below.
URL detection (text-only, no images). If the argument is a single URL:
Detected URL: <url>. Ingest via /ingest? [y/n]y or yes as consent. Treat any other response (including n, no, empty input, or arbitrary text) as "no". Do not re-prompt./ingest. On success: Ingested via /ingest: <wiki-page>. Exit.Extract text for MATCH/NEW. Everything after the trigger phrase, verbatim โ no rewriting, no summarising.
Resolve <vault_root> per ยง1. Compute today's date as YYYY-MM-DD. Compute source_project = basename(cwd). If <vault_root>/notes/ does not exist, create the directory and initialise notes/index.md from _seed/notes/index.md.
Enumerate existing notes and decide MATCH or NEW per ยง4. Skip notes/index.md and status: deferred; cap at 20 most recent.
MATCH or NEW path per ยง4. Slug via ยง3. Frontmatter from ยง2; body is verbatim text.
Update notes/index.md per ยง6.
Confirm with one terse line:
Captured to notes/YYYY-MM-DD-<slug>.mdAppended to notes/YYYY-MM-DD-<slug>.mdDo not print the diff, the match reasoning, or attachment details.
Read frontmatter from all notes/*.md (skip index). Call obsidian properties path=notes/<filename>. Sort by updated descending.
Render reverse-chronological bullets:
Pending notes (N):
- [ ] YYYY-MM-DD [source_project] title
- [ ] YYYY-MM-DD [source_project] title
Deferred (M):
- [~] YYYY-MM-DD [source_project] title
Glyphs: [ ] pending, [~] deferred. Always include both sections; show (none) under a section that's empty.
Filter --project=<basename> โ when present, only show notes whose source_project matches. Honour the same flag in natural-language form ("show my inbox for claude-obsidian").
/note list includes pending + deferred. /note process iterates pending only by default; pass --include-deferred to walk both.
Walk pending notes one-at-a-time. Route to /save, defer, or delete.
Enumerate pending notes (skip status: deferred unless --include-deferred). Sort by updated ascending โ oldest first. If there are no notes to process, print Inbox is empty. and exit.
For each note, read full frontmatter + body and display:
[N/total] YYYY-MM-DD [source_project]
title: <title>
body:
> <verbatim body, indented as a blockquote>
Action? [s]ave / [d]efer / [x]delete / [q]uit
Wait for single-letter action. Loop on invalid input.
s (save) โ invoke save skill via Skill tool with note body, frontmatter, explicit name so name-prompt is pre-satisfied. On success:
<vault_root>/notes/<filename>.notes/index.md. On /save failure, leave the note untouched and surface the error.d (defer) โ patch the note's frontmatter: status: deferred, bump updated: to today. Move the row in notes/index.md from ## Pending to ## Deferred.
x (delete) โ delete the file unconditionally. Remove the corresponding row from notes/index.md.
q (quit) โ exit. Remaining notes stay pending.
Print one-line summary: Processed N notes: X saved, Y deferred, Z deleted.
/save is primary off-ramp. Defer for future-actionable notes. Delete for noise.
See ยง2 Frontmatter schema โ note shape.
The body is the user's verbatim text. No headings, no metadata in the body. On MATCH-append, the separator is a blank line + --- + blank line, then the new verbatim chunk.
notes/index.mdSee ยง6 Index patching. Canonical template lives at _seed/notes/index.md (copied during /wiki init).
Capture (NEW):
user> /note inbox count missing from /wiki status
assistant> Captured to notes/2026-04-25-inbox-count-missing-from-wiki-status.md
Capture (NEW, filler stripped from title):
user> /note we need to check why claude-workflow is not using 'wt' for worktrees but the git cli directly
# title summarised to "claude-workflow uses git CLI instead of wt for worktrees"
# slug exceeds 40 chars; truncated at last `-` before char 40
assistant> Captured to notes/2026-04-26-claude-workflow-uses-git-cli-instead.md
Capture (MATCH-append, scope unchanged):
user> note this: still seeing the same flaky behaviour on macOS
assistant> Appended to notes/2026-04-22-flaky-macos-runner.md
Capture (MATCH-append with title rewrite):
user> /dump same issue now reproduces on Linux too
# existing note title was "flaky macOS runner"; new content broadens scope
assistant> Appended to notes/2026-04-22-flaky-macos-runner.md
# title rewritten to "flaky CI runner (macOS + Linux)", filename unchanged
List, filtered:
user> /note list --project=claude-obsidian
assistant>
Pending notes (2):
- [ ] 2026-04-25 [claude-obsidian] /note process should reuse confidence threshold
- [ ] 2026-04-24 [claude-obsidian] inbox count missing from /wiki status
Deferred (1):
- [~] 2026-04-12 [claude-obsidian] consider auto-tagging from CWD remote name
Process:
user> /note process
assistant>
[1/3] 2026-04-25 [claude-obsidian]
title: /note process should reuse confidence threshold from save
body:
> /note process should reuse confidence threshold from save
Action? [s]ave / [d]efer / [x]delete / [q]uit
user> s
# /save invoked, wiki page created, note removed from notes/
assistant> Saved as [[Confidence threshold reuse]] in wiki/concepts/. Note deleted.
URL redirect (yes):
user> /note https://example.com/article
assistant> Detected URL: https://example.com/article. Ingest via /ingest? [y/n]
user> y
# /ingest invoked, wiki page created, URL processed
assistant> Ingested via /ingest: [[Article Title]]
URL redirect (no):
user> /note https://example.com/article
assistant> Detected URL: https://example.com/article. Ingest via /ingest? [y/n]
user> n
# standard CAPTURE proceeds, URL captured as text
assistant> Captured to notes/2026-04-27-example-article-url.md