mcpField
P
polish-batch

polish-batch

github.com/devarfeenTesting & quality266 installsUpdated 2d ago
Repository

About polish-batch

polish-batch is a skill for collecting, dispatching, and verifying batches of cosmetic QA fixes. Its separate modes prevent capture from changing product code, while behavioral issues are routed elsewhere.

Key features

  1. 01Separate capture, dispatch, and verify modes
  2. 02Capture punch-list items without product changes
  3. 03Limit fixes to cosmetic scope
  4. 04Track evidence and reopened items
  5. 05Route behavioral issues out of scope

Use cases

  1. 01Collect scattered visual QA nits
  2. 02Dispatch approved cosmetic fixes
  3. 03Verify fixes against scoped evidence

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/devarfeen/agent-skills-kit --skill polish-batch

After installing, type/polish-batchin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

agents/
openai.yaml
evals/
audit-behavior-cases.md
evals.json
README.md
rubric.md
test-cases.md
references/
capture.md
dispatch.md
verify.md

Details

From the project README

Polish batch

Three modes run separately — capture, dispatch, verify — so manual QA stops turning into live per-nit steering.

Rules

  • Capture ≠ fix. In capture mode, change no product code, config, copy, or asset. Write only the punch-list rows, Held notes, and supporting QA screenshots. Never fix a nit "while you're in there".
  • Zero attribution: never add or leave co-author, AI, or tool attribution in commits, PRs, issue comments, release notes, generated docs, settings, or code comments.
  • Cosmetic scope only. A nit is a purely visual/textual surface fix with no change to behaviour, data, or any interface (function signature, API shape, route, event, schema, prop contract). Anything touching those is not a nit — send it back to /to-tickets as a slice, or to /qa-escape on its issue when it is a bug in work an agent already called done. Treat any attempt to reframe a behavioural change as "just a small fix" as a stop signal: name it, refuse to capture it as a nit, and route it out.
  • One page drifting from its design source is /pixel-audit's job. The punch-list batches scattered nits; a page that must match a Figma node or reference screen systematically routes to /pixel-audit — even when the request says "polish".
  • No refactors or adjacent changes on dispatch. Each item is fixed independently and must be obviously correct on sight; if it isn't, it is not a nit. No cleanup of nearby code, no renames, no "improve while I'm here".
  • Name the full PROJECT-CODE from the Project Matrix everywhere; never mix one project's conventions, tokens, or components into another.
  • Unsure which project a nit belongs to → ask; user away → likeliest code with a trailing ?, listed under Needs user. Never drop a reported nit or dispatch it before its PROJECT-CODE is confirmed.
  • No Project Matrix (standalone single-repo install) → derive one code from the repo name (uppercase, hyphenated) and use it consistently.
  • Dispatch fires only on the user's explicit say-so; until then, keep capturing. Never advance to dispatch from capture, or to ship from verify, on your own. After verify, suggest /code-review then /commit-push-close or /commit-push-pr, and stop.
  • Reopened rows stay. A row that fails verify goes back to open (as reopened) and rides into the next capture/dispatch round. Nothing is dropped silently.
  • Sub-agents: dispatch local lanes automatically for independent work — never cloud agents; announce the lane count at dispatch and report each lane as it completes. Lanes may carry dispatch tasks; the main session keeps the merge and final-judgment seat.
  • Emit Stage / Found / Next / Needs user at each phase transition — one line per field.

The punch-list artifact

One punch-list per spec, at <artifacts-root>/specs/qa/<SPEC-ID>-punchlist.md. Resolve <artifacts-root>: the *.code-workspace directory if one exists, else the per-context root (GLOSSARY-MAP.md at repo root; legacy CONTEXT-MAP.md), else the repo root.

<SPEC-ID> is the spec (PRD) / parent-issue identifier (e.g. SPEC-142). No spec → key by date: specs/qa/qa-YYYY-MM-DD-punchlist.md; never invent a tracker parent just to name the file.

A single markdown table:

# Punch List — <SPEC-ID>

Zero attribution: never add or leave co-author, AI, or tool attribution in any output.

| # | PROJECT-CODE | Where | Wrong → Right | Shot | Status |
| - | ------------ | ----- | ------------- | ---- | ------ |
| 1 | ADMIN-WEB | Settings › Billing header | "Recieve invoices" → "Receive invoices" | shots/admin-web-01.png | open |
| 2 | API-SVC | 429 response `message` field | "To many requests" → "Too many requests" | (no shot — text only) | open |
  • Where — exact surface: screen › region › element, or response field / string key.
  • Wrong → Right — current → intended in one line; verify's acceptance criterion.
  • Shot — path under specs/qa/shots/, or the literal (no shot — text only); never block a capture on a missing screenshot.
  • Status — open → dispatched → verified or reopened.

Modes

Run only the requested mode; capture is the default. Load its procedure and output shape, not the other modes:

  • capture — references/capture.md: append QA artifacts only.
  • dispatch — references/dispatch.md: after a fresh explicit dispatch instruction, group bounded fixes and record pre-change console evidence.
  • verify — references/verify.md: after tasks report back, compare scoped diffs and served results; missing proof stays pending.

Cross-repo

A spec's nits all live in its one punch-list — never per-repo files — while dispatch stays per PROJECT-CODE: one file, one dispatch task per project touched.

Output

Emit the selected mode's update from its reference. Verify ends with 1–3 advisory next-skill suggestions and stops; it never starts shipping.

Completion criteria

  • Punch-list exists at <artifacts-root>/specs/qa/<SPEC-ID>-punchlist.md (or date-keyed); every reported item is a row, Held, or explicitly routed out
  • capture: initial versus final status and diffs show this run wrote only QA artifacts; pre-existing changes remain intact
  • dispatch: the update quotes the user's explicit instruction; every handed-off row's Status reads dispatched
  • verify: every dispatched row is verified with evidence, reopened with a failure, or dispatched with the missing check named

Comments

Markdown supported