Taste prune
AI tools, hooks, skills, and prompts I actually use day to day β each with a what/why/how write-up
npx -y skills add kev-hu/ai-toolkit --skill taste-pruneAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Prune and tighten a TASTE.md file β resolve π© contradictions, retire stale low-N rules, tighten phrasing, and surface emerging patterns. Use when the user wants to clean up, audit, trim, or review their TASTE.md, when π© markers have accumulated, or when TASTE.md has grown unwieldy.
SKILL.md
11.2 KB, as published. Nobody here has run it
Prune TASTE.md
Walk every π© marker forcing a resolution decision, then audit the remaining rules for staleness, vagueness, and redundancy. Goal: keep TASTE.md sharp and load-bearing.
Before you start
-
Read the TASTE.md in scope in full. A repo may have a cross-cutting root TASTE.md plus nested subdirectory-scoped ones. Prune the file the user pointed at, or the root by default. Note siblings exist but don't merge them β each is scoped to its subtree deliberately; keep the root cross-cutting and push area-specific rules down.
-
Read context files β
CLAUDE.md,LESSONS.md, and your auto-memory (e.g..claude/memory/MEMORY.md) if they exist. These are redundancy references: if a TASTE rule duplicates content there, it's a candidate to cut. -
Assess current state:
- Count
π©markers. Each one is an unresolved decision that blocks completion. - Count rules per domain subsection. Subsections with only 1 rule may be premature (collapse them back to flat).
- Note rules at
(1)older than ~3 months (checkgit log -Lif needed). These are "never reinforced" candidates. - Total rule count. Target: under 30 rules across all subsections. Over 50 is overdue for pruning.
- Count
-
Ask about scope: "Walk all π© markers, then full prune β or just π© resolution this round?" Default to all if the user said
/taste-prunewithout qualification. -
Establish a clean git baseline. Prune is destructive, so the pre-prune state must be its own recoverable commit before you cut anything. Check
git statusforTASTE.md:- Dirty (uncommitted edits): commit it first, scoped β
git add TASTE.md && git commit -m "context(taste): checkpoint before prune". Nevergit add -A. - Clean: HEAD is already your baseline; nothing to do.
This guarantees every rule you're about to cut or rewrite is preserved at a known SHA, recoverable with one command.
- Dirty (uncommitted edits): commit it first, scoped β
Phase 1 β Resolve π© markers
This phase is non-skippable: every π© must be addressed before any other cleanup happens.
For each rule with a π© marker, present:
π© {Subsection} / "{Rule excerpt}"
Marked {date}: {context from the marker}
Resolve:
[a] Retire the rule entirely
β The contradiction shows the rule is wrong, not just narrow.
[b] Rewrite trigger condition to exclude the contradicting case
β The rule is right in general but its `When [context]` was too broad.
Propose a narrowed trigger; user can edit.
[c] Dismiss as one-off β strip π©, keep the rule as-is
β The contradicting moment was situational, not a real counter-pattern.
[d] Scope it β move the contradicting variant to a subdirectory-scoped TASTE.md
β The contradiction is a genuine per-area divergence, not a narrowing.
Both rules are right, each in its own subtree. Only when that subdir's
taste is substantial and usually out-of-scope elsewhere; otherwise prefer
[b]. The nested file gets a precedence header + names the root rule it overrides.
Choice? [a/b/c/d]
Apply each decision before moving to the next π©. After all π© markers are resolved, the file is in a clean state β counters preserved, narrowing applied, dead rules cut.
Worked example β narrowing a trigger (path [b])
Rule in TASTE.md:
- Writing / "When writing emotional content, prefer honest plainness over
symmetrical phrasing, because concrete beats clever. (2)
π© 2026-04-22: chose symmetrical hook for YouTube thumbnail"
Presented:
π© Writing / "When writing emotional content, prefer honest plainness..."
Marked 2026-04-22: chose symmetrical hook for YouTube thumbnail
Choice? [a/b/c]
User picks [b]. Propose:
Narrowed trigger: "When writing emotional content in long-form prose..."
Reason: thumbnails/hooks have different forces β memorability rewards symmetry.
Result: "When writing emotional content in long-form prose, prefer honest
plainness over symmetrical phrasing, because concrete beats clever. (2)"
Counter preserved. π© stripped.
The instinct on [b] is to find the smallest phrasing change that excludes the contradicting case without gutting the rule. If you can't narrow without making the trigger awkward or near-empty, that's a signal the rule was wrong in shape β escalate to [a].
Phase 2 β Classify remaining rules
For each rule still in the file, classify:
| Category | Action | What it means |
|---|---|---|
| Sharp | Keep | When [context] has fired in real sessions (Nβ₯2), rule held up, phrasing is specific. |
| Stale | Cut or ask | (1) for many months, no recent reinforcement, no clear current use case. |
| Vague | Tighten | When [context] is too broad to match reliably (e.g., "When working with codeβ¦"). Rewrite. |
| Redundant | Merge | Two rules cover overlapping triggers with the same preference. Combine. |
| Misplaced | Flag | Belongs in LESSONS.md (gotcha), your process/workflow docs (workflow), CLAUDE.md (architecture), memory (single fact), or a subdirectory-scoped TASTE.md (area-specific taste that shouldn't sit in the cross-cutting root). |
Decision tree per rule
Apply in order; short-circuit on first match:
1. Does the `When [context]` describe a situation specific enough to match in a future session?
β No: tighten (vague)
2. Is the `because [principle]` cited in TASTE.md's Principles section?
β No: propose adding the principle, OR rephrase to cite an existing one.
3. Does another rule in the file cover the same trigger context?
β Yes: merge
4. Is `(N) == 1` and the rule has been in the file >3 months without a π© (no contradiction either)?
β Ask the user: "This rule has never been reinforced. Still relevant?"
5. Does this rule actually express a *judgment call*, or is it a factual gotcha / workflow step / single fact?
β Not a judgment call: move to LESSONS / process docs / memory
6. None of the above:
β Keep (sharp)
Subsection hygiene
This is easy to skip β do it deliberately, not as an afterthought.
- Collapse premature subsections. If a domain subsection (Design, Writing, etc.) has only 1 rule, remove the subheading and put the rule under Decision Rules flat. Subsections should emerge from data, not anticipation.
- Graduate a subsection to a nested file when warranted. If a subsection has grown into a distinct sub-project domain (β₯~3 rules) whose taste is usually out-of-scope elsewhere, flag it as a candidate to move into a subdirectory-scoped TASTE.md (progressive disclosure β it loads only when working in that subtree). Don't move it unilaterally; propose it, since it changes file layout and discovery wiring.
- Surface cross-domain patterns. If 3+ rules across different domains resolve the same underlying force (e.g., "plain vs clever" appears in Writing and Design), flag it to the user as a candidate Tension grouping. Do not create the grouping unilaterally β it changes file structure.
Phase 3 β Audit Principles
- Orphan principles β Principles not cited in any Decision Rule's
becauseclause. Ask: "Still load-bearing, or candidate to cut?" - Missing principles β
becauseclauses citing a value that isn't in the Principles section. Propose adding it, or rewording the rule to cite an existing principle. - Format check β Principles use
[aphorism] β [clarifier]form on a single line. The aphorism is the citable handle; the 5-15 word clarifier prevents misreading when read cold. Tighten any that bury the aphorism in the clarifier, omit the clarifier entirely, or whose clarifier just restates the aphorism.
Phase 4 β Present and apply
Show the user a structured summary before any writes:
TASTE.md prune proposal
Phase 1 β π© resolutions:
[resolved interactively above]
Phase 2 β Rule changes:
Cut (stale): X rules
Cut (misplaced): Y rules β see recommendations
Rewritten (vague/narrowed): Z rules
Merged: A rules combined into B
Phase 3 β Principles:
Added: ...
Cut: ...
Tightened: ...
Subsections:
Collapsed: ...
Pattern flagged for Tension grouping: ...
Apply all? [y / n / by-phase]
by-phase means walk Phase 2 β Phase 3 β subsections one at a time, getting [y/n] per phase. Use it when the user wants to commit between phases or veto a single phase's worth of edits.
Apply all approved edits in a single pass, then commit β scoped, immediately, so the prune is its own atomic, identifiable commit. A prune is one semantic op, so it's a single commit (or one per phase if the user chose by-phase), following the ledger grammar (see the lessons skill's Commit protocol). List what was cut or retired so a wrongly-removed rule is greppable in git log later:
git add TASTE.md
git commit -m "context(taste): prune β cut N, rewrote M, resolved K π©" -m "cut: <rule key 1>
cut: <rule key 2>
rewrote: <rule key 3>"
Only ever add the specific TASTE.md you pruned (use its real path for a nested file) β never git add -A. Skip the commit only on a true no-op. Then verify it landed (git status + git log -1 --stat) and register the repo in the machine-wide ledger index:
mkdir -p ~/.claude/context-ledger
r=$(git rev-parse --show-toplevel)
grep -qxF "$r" ~/.claude/context-ledger/repos 2>/dev/null || echo "$r" >> ~/.claude/context-ledger/repos
Report the recovery line to the user: the prune commit SHA plus git revert <sha> to undo the entire prune in one step.
Rescue pass
Before writing, do a final scan of everything being cut. Ask: "Any of these look like they'd be painful to re-derive if cut?" Show the full cut list. A cut taste rule is harder to recover than a cut gotcha β it required real session experience to articulate.
Rules
- Never silently delete π© markers. Every one must be resolved interactively or the user must explicitly say "dismiss all π©s as one-offs."
- Never decrement
(N)counters. If a rule is wrong, cut it or rewrite it β don't reduce N. - Preserve
(N)on rewrites. When narrowing a trigger, the prior reinforcements still count. On merges, default to sum β each prior(N)represents an independent confirmation of the underlying judgment, so summing reflects real cumulative evidence. Use max only when you suspect a single session reinforced both rules in parallel (double-counting). Ask the user if uncertain. - Never move rules across files without telling the user. Flag misplaced rules in the proposal; the user decides whether to move them.
- Use
(N), never[N].(N)is the counter convention across these skills. (Square brackets also render as checkboxes in Obsidian.) - Tension groupings require explicit approval. Don't restructure the file by adding a Tensions section unilaterally.
- If TASTE.md is already clean (no π©, all rules sharp, principles cited), say so and exit. Don't manufacture work.