From capture-plan
Backport existing plans into the Obsidian daily journal. Use when plans exist in the vault but are missing journal entries.
How this skill is triggered — by the user, by Claude, or both
Slash command
/capture-plan:backport-journalThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Import plans from Claude Code's plans directory (`$CLAUDE_CONFIG_DIR/plans/`, defaulting to `~/.claude/plans/` when the env var is unset) into the Obsidian vault, creating both the vault plan note and a daily journal entry. Plans already imported (tracked via `source_slug` frontmatter) are skipped. The script resolves the directory itself — no path needs to be passed.
Import plans from Claude Code's plans directory ($CLAUDE_CONFIG_DIR/plans/, defaulting to ~/.claude/plans/ when the env var is unset) into the Obsidian vault, creating both the vault plan note and a daily journal entry. Plans already imported (tracked via source_slug frontmatter) are skipped. The script resolves the directory itself — no path needs to be passed.
Run the discovery script from the plugin root directory to list all plans:
bun ${CLAUDE_PLUGIN_ROOT}/hooks/backport-journal.ts --list 2>/dev/null
Parse the JSON output. Each entry has: sourceSlug, title, date, ampmTime, projectLabel, isImported.
Count totals:
Tell the user: "Found N plans in the Claude Code plans directory, M already imported to vault, K are new."
If no new plans exist, inform the user and stop.
List the plans still missing, formatted as:
N. [YYYY-MM-DD HH:MM AM] [project/name] Title
Use AskUserQuestion with these options:
If "Date range": Ask the user for start date and end date (YYYY-MM-DD format).
If "By project": Display the unique project labels from the missing plans list. Ask which project(s) to import.
If "Specific plans": Display a numbered list of new plans (format: N. [YYYY-MM-DD HH:MM AM] [project/name] Title). Ask the user which numbers they want (comma-separated). Map their selections back to sourceSlug values.
Use AskUserQuestion with these options:
Execute the script with --dry-run and the appropriate filters:
# All new plans
bun ${CLAUDE_PLUGIN_ROOT}/hooks/backport-journal.ts --all --dry-run [--skip-summarize] 2>/dev/null
# Date range
bun ${CLAUDE_PLUGIN_ROOT}/hooks/backport-journal.ts --all --from=YYYY-MM-DD --to=YYYY-MM-DD --dry-run [--skip-summarize] 2>/dev/null
# By project
bun ${CLAUDE_PLUGIN_ROOT}/hooks/backport-journal.ts --all --project=project-name --dry-run [--skip-summarize] 2>/dev/null
# Specific plans
bun ${CLAUDE_PLUGIN_ROOT}/hooks/backport-journal.ts --plans=slug1,slug2,slug3 --dry-run [--skip-summarize] 2>/dev/null
Add --skip-summarize if the user chose fast text extraction.
Parse the JSON result and display a summary: "Will import N plans, M will be skipped (already imported), E errors."
If there are errors, show them to the user.
Use AskUserQuestion to confirm:
Run the same command without --dry-run:
bun ${CLAUDE_PLUGIN_ROOT}/hooks/backport-journal.ts --all [--skip-summarize] 2>/dev/null
Parse the JSON result and display the final report: "Imported N plans. M skipped. E errors."
If there were errors, list them for the user.
npx claudepluginhub kriswill/capture-plan --plugin capture-planCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.