v-preferences

A command for managing Compound V decision preferences: dated records of the maker's past reasoning that are used to prompt reconsideration, not to copy decisions. It also handles a local raw record and a scrubbed, committed preferences document.

In plain words
What is it for?
Use it to inspect statistics, view preferences, and regenerate the in-repository preferences document from local decision records.
Why use it?
It helps review remembered decisions while keeping them separate from routing and distinguishing private raw data from the shared distilled record.

Command

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add commands/procoders/superpowers-v/v-preferences
Clone the repo
git clone --depth 1 https://github.com/procoders/superpowers-v
Per session 120 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,316 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00120 $0.01316
Opus 5 $0.00060 $0.00658
Sonnet 5 $0.00024 $0.00263
Haiku 4.5 $0.00012 $0.00132

Measured 2d ago against content hash a43d903f5ec7, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

v-preferences scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

commands/v-preferences.md · 78 lines

How it starts

The opening of the file, as written. The whole thing — 78 lines — stays where its author put it; the contents beside it link to each section on GitHub.

You are managing Compound V decision preferences — the maker's OWN dated past reasoning at a brainstorm fork. This is memory + challenge, not a clone: it recalls "you decided X before" only to trigger re-examination, always paired with a divergent counter-move — never "reason as the creator", never a pre-selected default. It has no routing influence. Every subcommand here is read-only-ish observation and LOCAL model management; the live fork surface is wired into the elicitation driver, not this command.

Split storage (state it honestly):

  • The raw decisions.jsonl — the full free-text why + question context, the PII-prone part — lives LOCAL under ~/.claude/compound-v/preferences/ and is NEVER committed / never shipped. It is purgeable.
  • The distilled preferences.md lives in-repo at docs/superpowers/preferences/preferences.md, git-tracked and V-memory-indexed (recallable via /v:remember) — the "all in one memory" path. It is secret+PII-scrubbed at distill time before it is written, so the committed copy carries no flagged token (the honest caveat: the scrubbed distillate DOES ship with the plugin).

Deterministic mechanics live in scripts/compound-v-preferences.py (pure stdlib, --selftest-gated). Anti-ruflo: counts only ("4/5 similar forks"), never a fabricated confidence %; drift + staleness are surfaced, never hidden.

Args: {{args}} — one of stats (default) · distill · show · purge.

Branch on {{args}}

  • stats (default) — per-pattern override/disagreement rates plus demoted/expired flags, from the LOCAL log:

    python3 scripts/compound-v-preferences.py stats
    

    Render each pattern's dominant choice with its sample size (counts only), the recency-weighted last-K disagreement (N/M diverged, not an all-time ratio), and any demoted (your reasoning here may have shifted → stops surfacing) or expired (past the staleness window → stops surfacing until refreshed) banner. Never print a % confidence.

  • distill — regenerate the in-repo docs/superpowers/preferences/preferences.md from the LOCAL jsonl, secret+PII-scrubbed before write:

    python3 scripts/compound-v-preferences.py distill --repo .
    

    Only unprompted rationales appear as "your reasoning" — a borrowed (candidate-tapped) why is excluded. Print the written path + pattern count. Commit the result so V-memory can index it (then it surfaces via /v:remember); re-index with /v:memory-refresh.

  • show — print the current distilled model (the committed, scrubbed in-repo view):

    cat docs/superpowers/preferences/preferences.md
    

    If it is absent, say so and suggest running distill first. distill always writes the in-repo preferences.md — a placeholder (_No decisions captured yet._) when the local log is empty, or the distilled, PII-scrubbed pattern model once decisions exist. This is the shared, aggregated model — the raw per-decision log (local ~/.claude) is never shown here.

  • purge — wipe the LOCAL raw decisions.jsonl in one command. State that it is IRREVERSIBLE (per the base rule for destructive actions — say WHY and confirm intent before running): it deletes the full free-text history under ~/.claude/compound-v/preferences/. The already-committed distillate is untouched.

    python3 scripts/compound-v-preferences.py purge
    

Read the full file on GitHub · 78 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 78 lines · 120 tokens per session scan A a43d903f5ec7

Subscribe to this mod's changes

v-preferences is a command published in the GitHub repository procoders/superpowers-v (35 stars, last pushed 3d ago), licensed MIT. It adds 120 tokens to every session and 1,316 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.