In VS Code (no band above the prompt) the typed /compact and /clear ask first (confirm / cancel). The Compact and Clear buttons of the desktop and terminal are…

Fourteen Claude Code mods, packaged as one plugin marketplace (qa-mods). Made for a manual QA workflow: guard rails around risky commands, evidence for what was tested, and a status band above the prompt.
Run in your own Terminal (a sandboxed Claude session cannot write ~/.claude).
claude plugin marketplace add oleksandrkodua/qa-mods
claude plugin install hud@qa-mods
Replace hud with any plugin from the table.
To install everything from a local clone, or to set up a fresh machine, see INSTALL.md and install-pack.sh.
| Plugin | What it does |
|---|---|
sandbox-guard | Denies writes to protected Claude config paths and hands back a Terminal command |
remote-gate | Asks before git push and wrangler --remote, showing folder, branch, remote and the commits that will go out |
blast-radius | Shows what a risky Bash command will touch before it runs |
retry-analyzer | Detects repeated identical failing tool calls and tells Claude to change strategy |
secret-redactor | Masks tokens and keys in tool output |
evidence-saver | Saves screenshots from tool results to a folder you pick |
replay-theater | /replay: step through the session's file edits one by one |
verification-guard | Checks claims like "tests pass" against tool calls that actually ran |
handoff | Offers /handoff as the context fills up; fills the prompt box with a HANDOFF.md prompt |
notify | A toast and a macOS notification when a long command or turn finishes |
quick-actions | Compact and Clear buttons, each asks to confirm first |
hud | Context fill and rate-limit windows above the prompt, a кеш 59:48 chip (m:ss) while the prompt cache is warm, five buttons, and /hud with the figures as text |
next-steps-uk | Fork of next-steps (MIT, Thariq Shihipar): suggested next prompts are always in Ukrainian. Install instead of next-steps |
plan-progress | Fork of plan-progress 0.7.6 (zycck, MIT): live progress bars above the prompt. Install instead of plan-progress@zycck-mods |
claude plugin test hud # from the repo root
cd hud && node --test tests/format.test.mjs tests/handoff-prompt.test.mjs
A bare node --test also picks up register.test.ts, which only runs under claude plugin test.
No license file for the original mods yet. The two forks keep their upstream MIT notices: next-steps-uk/NOTICE.md and plan-progress/NOTICE.md (plus plan-progress/LICENSE.upstream).
hooks/register.tsx 32 lines1import type { Register } from 'claude-code'
2
3const QUESTION: Record<string, string> = {
4 compact: 'Стиснути розмову? Її буде замінено підсумком, щоб звільнити контекст; подробиці втрачаються.',
5 clear: 'Очистити всю розмову? Почнеться з порожнього контексту, це неможливо скасувати.',
6}
7const CHOICES = ['Підтвердити', 'Скасувати']
8
9/**
10 * Quick actions: VS Code has no band above the prompt, so there the typed `/compact` and `/clear` ask first
11 * (confirm / cancel; cancel changes nothing). On the desktop and in the terminal the Compact and Clear buttons are in
12 * the hud band and ask themselves: a button cannot go through here, because the engine refuses `command.run` from a
13 * `command.run` hook. A run that a plugin started is never asked twice.
14 */
15export const register: Register = on => {
16 let surface = ''
17
18 on('session.start', ($, e, next) => {
19 surface = String(e.surface ?? '')
20
21 return next(e)
22 })
23
24 on('command.run', { command: ['compact', 'clear'] }, async ($, e, next) => {
25 if (e.origin.kind === 'plugin' || surface !== 'vscode') return next(e)
26
27 const answer = await $.ui.ask(QUESTION[e.command] ?? 'Виконати?', CHOICES).catch(() => CHOICES[1])
28
29 return answer === CHOICES[0] ? next(e) : { text: `/${e.command} скасовано: нічого не змінено.` }
30 })
31}
32