SLOPSHOPPER

quick-actions

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…

new
v0.3.0no licenseupdated 2026-10-08oleksandrkodua/qa-mods/quick-actions
A shopper browsing a rack in a slop shop
README

qa-mods

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.

Install

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.

Plugins

PluginWhat it does
sandbox-guardDenies writes to protected Claude config paths and hands back a Terminal command
remote-gateAsks before git push and wrangler --remote, showing folder, branch, remote and the commits that will go out
blast-radiusShows what a risky Bash command will touch before it runs
retry-analyzerDetects repeated identical failing tool calls and tells Claude to change strategy
secret-redactorMasks tokens and keys in tool output
evidence-saverSaves screenshots from tool results to a folder you pick
replay-theater/replay: step through the session's file edits one by one
verification-guardChecks claims like "tests pass" against tool calls that actually ran
handoffOffers /handoff as the context fills up; fills the prompt box with a HANDOFF.md prompt
notifyA toast and a macOS notification when a long command or turn finishes
quick-actionsCompact and Clear buttons, each asks to confirm first
hudContext 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-ukFork of next-steps (MIT, Thariq Shihipar): suggested next prompts are always in Ukrainian. Install instead of next-steps
plan-progressFork of plan-progress 0.7.6 (zycck, MIT): live progress bars above the prompt. Install instead of plan-progress@zycck-mods

Tests

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.

License

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).

Source 1 files
hooks/register.tsx 32 lines
1import 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