Getting it into your agent
This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.
/plugin marketplace add swt-labs/vibe-better-with-claude-code-vbw/plugin install vbwWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/swt-labs/vibe-better-with-claude-code-vbw/todo)<a href="https://agentmods.dev/commands/swt-labs/vibe-better-with-claude-code-vbw/todo"><img src="https://agentmods.dev/badge/commands/swt-labs/vibe-better-with-claude-code-vbw/todo/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/commands/swt-labs/vibe-better-with-claude-code-vbw/todo"><img src="https://agentmods.dev/badge/commands/swt-labs/vibe-better-with-claude-code-vbw/todo.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00016 | $0.01688 |
| Opus 5 | $0.00008 | $0.00844 |
| Sonnet 5 | $0.00003 | $0.00338 |
| Haiku 4.5 | $0.00002 | $0.00169 |
Grade A, and why
vbw:todo 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 9d 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.
How it starts
The opening of the file, as written. The whole thing — 69 lines — stays where its author put it; the contents beside it link to each section on GitHub.
VBW Todo: $ARGUMENTS
Context
- Working directory: current workspace root.
- Plugin cache root:
"${CLAUDE_CONFIG_DIR:-$HOME/.claude}/plugins/cache/vbw-marketplace/vbw"(respects non-defaultCLAUDE_CONFIG_DIR; always quote — path may contain spaces).
Guard
- Not initialized (no .vbw-planning/ dir): STOP "Run /vbw:init first."
- Missing description: STOP:
Usage: /vbw:todo <description> [--priority=high|normal|low] - Restricted mode: If the current permission mode does not allow both Bash and edits, STOP: "
/vbw:todoneeds Bash plus write access to update.vbw-planning/STATE.mdand run the planning git boundary. If you're in read-only or another restricted mode, switch to a mode that allows both and rerun the command."
Steps
- Resolve context: Always use
.vbw-planning/STATE.mdfor todos — project-level data lives at the root, not in milestone subdirectories. If.vbw-planning/STATE.mddoes not exist, STOP: "STATE.md not found. Session startup normally recovers archived state automatically — try restarting your Claude session, or run /vbw:init to set up your project." - Parse args: Description (non-flag text), --priority (default: normal). Format: high=
[HIGH], normal=plain, low=[low]. Append(added {YYYY-MM-DD}). - Add plain todo to STATE.md: Find
## Todossection. Replace "None." / placeholder or append after last item. - Resolve plugin root. Determine the plugin root path for helper-backed follow-up work. Always quote derived paths (they may contain spaces). Try in order:
(a) The
local/subdirectory under the plugin cache root (i.e."${CLAUDE_CONFIG_DIR:-$HOME/.claude}/plugins/cache/vbw-marketplace/vbw/local/"), if it exists and containsscripts/hook-wrapper.sh. (b) The numerically highest versioned directory under the plugin cache root — list subdirectories matching a dotted-version pattern (e.g.1.30.0), sort by each numeric component (major, minor, patch), pick the highest, and accept it only if it containsscripts/hook-wrapper.sh. (c) Any other (non-versioned) subdirectory under the plugin cache root — pick the newest by name, accept only if it containsscripts/hook-wrapper.sh. This covers non-standard cache layouts. (d) The session symlink/tmp/.vbw-plugin-root-link-${CLAUDE_SESSION_ID:-default}, or any existing/tmp/.vbw-plugin-root-link-*symlink whose target containsscripts/hook-wrapper.sh. (e) Extract--plugin-dir <path>from the process tree (ps axww) and use that path if it containsscripts/hook-wrapper.sh. Store the resolved path asPLUGIN_ROOTfor subsequent helper calls. If none of the fallbacks resolve, leavePLUGIN_ROOTempty and continue — extended detail and the planning git boundary will degrade gracefully later. - Capture extended detail (conditional). Check whether the description from step 2 contains any of these: file paths, reproduction steps, stack traces, code references, error messages, or multi-sentence design rationale. Only evaluate the current
$ARGUMENTStext — do not scan prior conversation history.- If triggered: The todo has rich context worth preserving for later execution.
- If
PLUGIN_ROOTis empty, leave the plain todo line from step 3 unchanged, do not append a ref tag, do not write.vbw-planning/todo-details/HASH.jsonyourself, and continue to step 6 with a warning that extended detail was not saved. - Extract a brief one-line summary (first sentence or the user's explicit title) — this is already the
STATE.mdbullet text from step 3. - Compute a hash:
printf '%s' "<summary text>" | shasum | cut -c1-8 - Build a JSON detail object:
{"summary": "<brief summary>", "context": "<full description, max 2000 chars>", "files": ["<any file paths mentioned>"], "added": "<YYYY-MM-DD>", "source": "user"} - Store it through the canonical helper — pipe JSON via heredoc to avoid shell-quoting issues with apostrophes or special characters in user text:
bash "${PLUGIN_ROOT}/scripts/todo-details.sh" add HASH - <<'DETAIL_JSON' <json> DETAIL_JSON - Parse the helper's stdout JSON. Only when the parsed stdout is valid JSON with
status="ok"may you:- edit the exact todo line you just added in
STATE.mdto append(ref:HASH)after the(added YYYY-MM-DD)tag - later report
Extended detail saved (ref:HASH).
- edit the exact todo line you just added in
- If the helper's stdout is not valid JSON or the parsed
statusis anything other thanok, leave the plain todo line from step 3 unchanged, do not append a ref tag, and do not write.vbw-planning/todo-details/HASH.jsonyourself.
- If
- If not triggered (simple one-liner with no structural context): skip — no ref tag, no detail storage. Brief bullets keep STATE.md scannable and token-efficient for context compilation. The detail file preserves context that would otherwise be lost when the todo is executed in a later session.
- If triggered: The todo has rich context worth preserving for later execution.
- Run planning git boundary. This step only happens after the plain
STATE.mdwrite from step 3 succeeded. For simple one-line todos, run it after step 3 using the sharedPLUGIN_ROOTfrom step 4. For rich-detail todos, run it only after step 5 completes — after the(ref:HASH)update on detail-save success, or after the failed-detail/no-ref branch on helper failure. IfPLUGIN_ROOTis non-empty and${PLUGIN_ROOT}/scripts/planning-git.shexists, run:
Ifbash "${PLUGIN_ROOT}/scripts/planning-git.sh" commit-boundary "add todo item" .vbw-planning/config.jsonPLUGIN_ROOTis empty or the helper is unavailable, keep the todo write intact and warn with the literal existing message:
Do not add bespoke staging, commit, or push logic here — the helper owns that behavior.VBW: planning-git.sh unavailable; skipping planning git boundary commitplanning_tracking=commit: the helper stages.vbw-planning/+CLAUDE.mdand commits if there are changes.planning_tracking=manual|ignore: the helper no-ops.auto_push=always: the helper pushes when the branch already has an upstream.
- Confirm: Display ✓ + formatted item + Next Up (/vbw:status). If detail was captured successfully after step 5.6, also display:
Extended detail saved (ref:HASH).If step 5 triggered but helper-backed storage did not succeed, warn that the plain todo was added but extended detail was not saved. If step 6 emitted the planning-git warning, surface it too.
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.
- 9d ago First seen · 69 lines · 16 tokens per session scan A 6cdf1f6a1768
vbw:todo is a command published in the GitHub repository swt-labs/vibe-better-with-claude-code-vbw (79 stars, last pushed 2mo ago), licensed MIT. It adds 16 tokens to every session and 1,688 once invoked, about $0.0001 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.
Other commands, from other repositories
template
Manage issue templates for streamlined issue creation.
sync-linear
Sync current work with Linear ticket status.
add-note
Add an internal or external note to a ConnectWise PSA ticket.
fest-show
Show festival progression (in-progress tasks, roadmap, and dependency view).
dispatcher
Pick the next-best repo to work on across the portfolio — rank free repos, recommend one, claim its lease atomically, and route to the entry command.
workpm
A project-management workflow for coordinating multiple AI workers through five stages. It includes task assignment, shared activity logs, worker replacement, and final checks.