From knowledge-gardener
Use when one or more named existing vault notes need to be removed — archived by default (git mv into the vault's documented archive folder, preserves history), hard-deleted only on explicit request. Surfaces inbound-link warnings but never auto-rewrites links. Pairs with garden-survey (find candidates) and garden-water (clean up links afterwards).
How this skill is triggered — by the user, by Claude, or both
Slash command
/knowledge-gardener:garden-pruneThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Remove one or more named existing notes from the vault. Default is **archive** (soft delete via `git mv` into the vault-documented archive folder, preserving git history). **Hard delete** (`git rm`) only fires on an explicit user trigger. The vault's README still owns format conventions (link syntax, archive folder); this skill owns the decision to move or delete the file and the discipline aro...
Remove one or more named existing notes from the vault. Default is archive (soft delete via git mv into the vault-documented archive folder, preserving git history). Hard delete (git rm) only fires on an explicit user trigger. The vault's README still owns format conventions (link syntax, archive folder); this skill owns the decision to move or delete the file and the discipline around inbound-link warnings.
garden-survey surfaced empty / stale / orphan notes → propose a prune (the user confirms each before any move/delete)garden-survey. This skill consumes a named target; it does not discover.garden-watergarden-watergarden-water for the targeted editgarden-water (or manual git mv).md) — out of scope; handle manuallygit rm -r and a thoughtful commit messageFollow Pre-flight Setup in using-knowledge-gardener to resolve $KG_VAULT and load vault conventions.
From the conventions, extract for this skill: link syntax (e.g. standard markdown [text](path.md) vs [[wikilink]]), archive folder location (e.g. 99_archive/, archive/, _archive/), tag namespace (only relevant for surfacing inbound link snippets), lint rules, commit conventions.
garden-survey for candidates and ask which to prune. Never silently pick.<archive-folder>/<basename>.<basename-without-ext>.<YYYY-MM-DD>.<ext> (e.g. ssh-old.md → ssh-old.2026-05-18.md). Surface the final name in the proposal.For each target, scan the rest of the vault for links pointing at it. Use rg when available; fall back to grep. The exact patterns depend on the link syntax declared by the vault README.
# Substitute EXCLUDES with the vault's documented non-content folders (read from the README).
EXCLUDES=(-g '!<archive-folder>/**' -g '!<templates-folder>/**' -g '!<assets-folder>/**')
# basename match (works for both [[wikilink]] and [text](path.md) variants)
BASENAME="$(basename "$target" .md)"
if command -v rg >/dev/null 2>&1; then
rg --type md -n "$BASENAME" "$KG_VAULT" "${EXCLUDES[@]}"
else
grep -rn "$BASENAME" "$KG_VAULT" --include='*.md' \
--exclude-dir=<archive-folder> --exclude-dir=<templates-folder> --exclude-dir=<assets-folder>
fi
Collect file + line snippets. Exclude the target file itself from the results. Exclude the archive folder (the target's future home doesn't count as an inbound link).
Do not edit any of the matches. This step is read-only; it produces a list for the proposal.
Follow Common: Propose, Don't Commit. For this skill, show per target:
$KG_VAULT-relative).DELETE (hard mode).完全に削除").Trigger phrases that count as implicit approval: "archive X" / "X 消して" / "delete X permanently" — show the proposal anyway (especially when inbound links exist; user may want to abort and clean up first).
Per target, in order:
git mv <source> <destination>. The destination path is the one resolved in Step 4 (with date suffix if there was a collision). Do not git mv and immediately re-edit the file; leave its contents byte-for-byte identical.git rm <source>. No copy, no backup; the user explicitly chose this.Do not stage anything else. Do not use git add -A.
Follow Common: Lint, Commit, Push. Commit subject verb for this skill: prune:. Skill-specific notes:
pre-commit run --files. git mv produces no content diff, so most lint hooks no-op.git status shows only the intended renames / deletes before committing.| Operation | Subject |
|---|---|
| Archive single (no inbound) | prune: archive ssh-deprecated |
| Archive single (with inbound count) | prune: archive ssh-deprecated (3 inbound links left) |
| Archive batch | prune: archive 5 empty fleeting notes |
| Hard delete single | prune: delete ssh-leaked-token (hard) |
| Hard delete batch | prune: delete 3 accidentally-created stubs (hard) |
Cap at ~60 chars; put detail (target list, inbound-link locations) in the commit body when needed.
garden-survey to find the actual filename.archive/.<basename>.<YYYY-MM-DD>.<ext>). Surface the final name in the proposal so the user sees it before approval.garden-water as separate commits..md file requested: stop. Out of scope; ask the user to handle manually.$KG_VAULT/.git absent): fall back to plain mv (archive) or rm (hard). Skip the pre-commit + git commit step. Warn the user that history is not preserved.git mv does not change content, so a failure usually means the moved file had a pre-existing lint issue in its new context (e.g. a relative link that resolved before the move and doesn't now). Either fix the link as part of the same commit (still atomic — one logical prune) or abort the prune and run garden-water first to fix the source, then retry.garden-survey. This skill consumes a named target list and acts. The composed workflow survey → prune is intentional, not a defect.garden-water. A prune that silently rewrites N other files is not atomic.git mv, not copy-then-delete. Preserve history. The diff should be a pure rename, no content changes.garden-survey finding empty notes, or from a consolidation in garden-water. Use that to write a meaningful commit subject and rationale.Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub kohei-wada/knowledge-gardener --plugin knowledge-gardener