Resolving ui feedback
Resolve UI issues captured by the Nitpick overlay. Use when the user asks to process UI feedback, fix issues from the .nitpick queue, address visual/design feedback, or mentions Nitpick feedback. Reads .nitpick/*.json + annotated screenshots and fixes each at its source.From its SKILL.md
npx -y skills add lokkrish/nitpick --skill resolving-ui-feedbackAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.6 KB, as published. Nobody here has run it
Resolving Nitpick UI feedback
Nitpick lets the user point at a broken UI element in their running Next.js app (Ctrl+Shift+. (period)),
annotate it, and save a precise, source-located report. Your job is to turn each report into a
correct code fix. (For how reports are produced and the full data contract, see the plugin's
DESIGN.md.)
When to use this
- The user runs
/nitpick:process, or asks to "process UI feedback", "fix the nitpick issues", "go through .nitpick", or similar. - You notice new/open items in
.nitpick/queue.jsonand the user wants them addressed.
The queue
.nitpick/queue.jsonis the index:{ "items": [{ id, status, comment, route }], "nextId" }.- Each report is
.nitpick/<id>.json, with optional images:<id>.png(snip/viewport shot),<id>-1.png,<id>-2.png, … (one cropped screenshot per Inspected element), and<id>-ref.png(user reference). - Process open items oldest-id-first, one at a time, unless the user scopes to one id.
Workflow
- Load the queue. Read
.nitpick/queue.json. No open items → say so and remind the user to capture issues with Ctrl+Shift+. (period). Done. - For each open item (
.nitpick/<id>.json): a. See it. What's on disk depends oncaptureType:element(Inspect) — each Inspected element has its own cropped screenshot<id>-1.png,<id>-2.png, … (also referenced astarget.imageon each entry intargets, and listed intargetImages). Read the crop for the element you're fixing.snip/full— read<id>.png(the snipped region, or the viewport, with marks baked in).recording— there is no screenshot; it's an action flow (readactions).meta("Fix me") — the report is about the Nitpick tool itself, not the app.<id>.pngshows the viewport including the Nitpick UI, andmetacarries tool diagnostics (version,userAgent,hotkey). Skip steps (b)–(d) and instead fix the installed Nitpick copy (thenitpick/components folder and/or theapi/nitpickroute), using the plugin's templates (${CLAUDE_PLUGIN_ROOT}/templates/nitpick/) as the reference — ifmeta.versionlags the template, refreshing the stale copy usually IS the fix. If the bug exists in the template too, fix the local copy and tell the user to report it upstream. Never route meta items to BMAD. In all cases read<id>-ref.pngif present — that's the user's target look. b. Locate the code. A report may reference several elements (targets[]) or none (a free-form visual/region note). For each entry intargets(fall back toelement=targets[0]on older reports):target.sourceset → opentarget.source.fileat.line.- else use the rich locators:
target.locators.getBy(Playwright-style, e.g.getByRole('button', { name: "Upgrade" })),componentName/componentStack(grep the component), thenlocators.testId,locators.css,locators.xpath,text,classes. - No
targets? It's a free-form report — locate the area from theroute, the annotatedscreenshot, and thecomment. c. Diagnose. Combinecomment+ the relevant image(s) + reference image with the live facts:target.computedStyles(current values),target.boundingBox, andviewport(viewport.width≈ 390/430 → a mobile complaint; fix responsively, never hardcode px for one width). For an Inspect report each element has its own crop (target.image); a Snip report'sscreenshotis the snipped region with the user's marks baked in. Trust the picture for where, the comment for what. Ifactionsis present, it's a recorded repro flow (clicks / inputs / navigations, in order, across screens, each with a Playwright-style locator) — use it to reproduce the bug and understand the steps that lead to it. d. Fix at the source. Edit the real component. Match the project's styling system (Tailwind / CSS modules / styled-components / inline — infer from the file and neighbors). Keep edits minimal and idiomatic; don't refactor unrelated code. e. Mark resolved. Setstatus: "resolved"and add a one-lineresolutionnote in BOTH.nitpick/<id>.jsonand the matching entry in.nitpick/queue.json.
- Summarize. List each item: id, the fix, and the file:line touched. For anything you
can't resolve with confidence, leave it
open, explain why, and ask the user for the missing detail.
Principles
- The screenshot is ground truth for visual issues — trust what the marks point at over a vague comment.
- Verify before editing: confirm the file you're about to change actually renders the reported element (text/classes/component should line up). If the source line looks stale (the build stamp can drift after edits), re-locate by component + text.
- Be conservative. Fix exactly what's reported. Resist scope creep.
- Responsiveness: treat captures at narrow
viewport.widthas responsive bugs; use the project's breakpoint system rather than fixed widths. - Never edit anything under
.nitpick/except to flipstatus/addresolution.