agents/skills/trello-qa/SKILL.md
Verify a developer's finished Trello ticket on a non-Shopify web app and render a verdict. Dogfood the posted preview (desktop + mobile) against the card's acceptance criteria, then PASS it (approve the PR, move to Ready for Release) or FAIL it (request changes, attach repro, reassign the dev, move to Development). Read-only: never implements, commits, or opens a PR. Use when asked to 'QA this card', 'test before release', or 'sign off on this ticket'. Shopify themes use shopify-trello-qa; building a ticket uses trello-delivery.
npx skillsauth add carterdea/dots trello-qaInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Take a developer's finished ticket and decide whether it is releasable. The deliverable is a verdict, not code: the Trello card, the GitHub PR review, the QA report comment, and the evidence all agree on PASS or FAIL.
This skill is host-agnostic (Vercel, Fly.io, anything) and is for non-Shopify projects; Shopify theme tickets belong to shopify-trello-qa. It does the opposite job of trello-delivery: that skill builds a ticket into a PR; this one verifies a PR someone else built and moves the card forward or kicks it back.
This skill is read-only on the codebase. It never edits files, never commits, never pushes, and never changes a PR's code. Its only writes are to Trello (comment, attachment, checklist, assignment, move) and a single GitHub PR review (approve or request-changes).
trello-cli skill for Trello auth, card/comment/checklist reads, comments, attachments, member assignment, list discovery, moves, and mutation verification.agent-browser skill for all browser QA, viewport sizing, interaction, console/network inspection, and screenshots — strongly preferred. Invoke that skill first and drive the agent-browser CLI. Fall back to mcp__claude-in-chrome__* only if agent-browser can't run.dogfood skill for systematic exploration of the touched surface, the regression sweep, and structured reproduction evidence (numbered steps, screenshots, repro video) on any failure.gh) to read the PR (read-only) and leave one PR review.dogfood earns its keep.dogfood-style reproduction for each failing criterion: numbered steps, before/after screenshots, and a repro video/gif for interaction bugs.code-simplifier / de-slop (duplication, nested ternaries, slop comments, stray scratch files, etc.) as inline PR comments — but never let them change the PASS/FAIL verdict. Without GitHub access, fold them into the Trello comment. You observe these; you never run those skills or edit the code.Use subagents for read-only parallel work: ticket intake (criteria, PR link, preview URL, Figma links, original developer), Figma reference capture, and PR-diff review for scope/missing-criteria signals. Keep the browser QA session, the verdict decision, the GitHub PR review, and all Trello comments/attachments/moves in the lead agent so nothing races and the verdict has one owner.
Hard gate. Two checks before anything else:
package.json name, README, remote slug) — abbreviations and expansions count (an mmops label matches a "Mundial Media Ops" repo). If none plausibly matches, stop: report the mismatch and do nothing else.Ready for Review, or the board's closest handoff list). If it's still in development, already in Ready for Release, or shipped, stop and report — QA should not pull a card that wasn't handed off.trello auth status.node-id= URLs). Description links win unless a later comment explicitly supersedes them.CLAUDE.md, AGENTS.md, CONTRIBUTING.md) only to understand expected behavior. Change nothing.node-id (701-56 → 701:56); use get_design_context for the node and get_screenshot for a reference image. If Figma MCP can't open the file, say so and fall back to ticket screenshots.gh pr view <number> --json headRefName,baseRefName,url,state,title,author,additions,deletions,files and gh pr diff <number> to understand what actually changed.Only run this when the QA has GitHub access to the repo (confirm with gh auth status and a successful gh pr view). With no access, skip GitHub and record any observations for the Trello comment instead.
Do not run code-simplifier or de-slop, and do not edit code. You are only noting evidence in the diff that the developer skipped those passes. These observations are never a reason to FAIL — they're a courtesy heads-up kept separate from the acceptance-criteria verdict, so an approved card can still carry them.
Scan gh pr diff <number> for the tells those skills exist to catch:
NOTES/PLAN/IDEAS/TODO.md), any casts that only paper over types, defensive try/catch on trusted paths, mock-heavy tests with no real assertions, fake/uncited metrics.Keep the bar high: flag clear, line-locatable instances, not stylistic preference. A clean diff gets no note.
Where to post, in order of preference:
gh pr review call in step 7, create one review carrying both the verdict and the line comments: gh api repos/<owner>/<repo>/pulls/<number>/reviews --method POST --input <payload.json>, where the payload has event (APPROVE or REQUEST_CHANGES), the verdict body, and a comments array of { "path", "line", "side": "RIGHT", "body" } — one per finding, each referencing a line present in the diff. Prefix each comment body with code hygiene (non-blocking):.file:line — note.file:line — note.This is the core of the job. Invoke the dogfood skill to drive the preview systematically, on a desktop viewport (1440x1000) and a mobile viewport (430x932x3,mobile,touch).
agent-browser, read the console and network panel on the touched surface; flag JS errors, failed requests, and broken assets the change introduced.<card-short>-desktop.png and <card-short>-mobile.png showing the criteria satisfied.dogfood — numbered repro steps, before/after screenshots, and a gif/video for interaction-driven bugs. This is what the developer will work from, so make it self-contained.code hygiene (non-blocking): comments as one review via the reviews API; otherwise a plain gh pr review <number> --approve --body "<short sign-off>".<card-short>-desktop.png and <card-short>-mobile.png to the card.trello lists list --board <board-id>, move by ID, re-fetch to confirm idList).code hygiene (non-blocking): comments into one review via the reviews API; otherwise a plain gh pr review <number> --request-changes --body "<failing criteria summary>". (Hygiene notes ride along but are not the reason for the changes request — the failing criteria are.)trello members add --card <card-id> --member <member-id>).State the verdict (PASS or FAIL), which criteria passed and which failed, the viewports tested, the preview URL used, where the card moved, and that screenshots/repro were posted to both the PR review and the Trello card. Name anything that blocked verification. Keep it concise and always include the Trello card URL.
idList.idList.PASS:
**QA: PASS** ✅
**PR:** <pr-url>
**Preview:** <preview-url used for QA>
**Figma:** <figma-url if compared>
**Viewports:** desktop 1440x1000, mobile 430x932
**Acceptance criteria**
- [x] <criterion 1>
- [x] <criterion 2>
No console errors introduced; no regressions found in adjacent flows. Desktop and mobile screenshots attached. Approving the PR and moving to Ready for Release.
<!-- Include only when you have no GitHub access and found hygiene tells: -->
**Code hygiene (non-blocking)** — looks like code-simplifier/de-slop may not have been run:
- <file:line — note>
FAIL:
**QA: FAIL** ❌
**PR:** <pr-url>
**Preview:** <preview-url used for QA>
**Figma:** <figma-url if compared>
**Viewports:** desktop 1440x1000, mobile 430x932
**Acceptance criteria**
- [x] <criterion that passed>
- [ ] <criterion that failed> — see repro below
**Issue 1 — <short title>** (<viewport>)
1. <step>
2. <step>
3. Expected: <…> Actual: <…>
(screenshots / repro video attached)
Requested changes on the PR and moved back to Development In Progress, reassigned to @<developer>.
<!-- Include only when you have no GitHub access and found hygiene tells: -->
**Code hygiene (non-blocking)** — looks like code-simplifier/de-slop may not have been run:
- <file:line — note>
Discover real list names per board; these are the current defaults:
trello lists list --board <board-id> before moving.development
Add net-new product, workflow, platform, or developer-experience features as small vertical slices. Use this skill whenever the user asks to build a new feature, add a new page/route/API/workflow/job/eval/operator path, enrich an existing feature with a new user-visible capability, or plan feature architecture before coding. This skill maps the files to change or create, defines the authoritative contract, specifies tests, and gives a QA plan before treating the feature as done.
development
Verify a developer's finished Shopify theme ticket and render a verdict. Dogfood the posted preview theme and Customizer (desktop + mobile) against the card's acceptance criteria and Figma, then PASS it (approve the PR, move to Ready for Release) or FAIL it (request changes, attach repro, reassign the dev, move to Development). Read-only: never implements, commits, deploys, or opens a PR. Use when asked to 'QA this Shopify card', 'verify the Ready for Testing card', or 'sign off on this theme ticket'. Non-Shopify apps use trello-qa; building a ticket uses shopify-trello-delivery.
development
Survey any codebase as a senior advisor and produce prioritized, self-contained implementation plans for OTHER models/agents to execute. Strictly read-only on source code — never implements, fixes, or refactors anything itself. Use when asked to audit a codebase, find improvement opportunities (bugs, security, performance, test coverage, tech debt, migrations, DX), suggest features or where to take the project next (roadmap, product direction), or generate handoff plans for another agent to implement.
development
Refactor codebases by collapsing orchestration, tightening typed boundaries, deleting broad context leakage, and adding ratchet tests