Qa
Skill patdhlk/skills/skills/qa
Agent workflow skills with sphinx-needs-backed issues, requirements, and ADRs — drop-in replacement for mattpocock/skills
npx -y skills add patdhlk/skills --skill qaAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 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.
What its author says it does
Copied from the file, not written here
Interactive QA session - the user reports bugs and observations conversationally while testing, and each report is filed as an issue on the configured backend with duplicate detection. Use when the user wants to do a QA session, report bugs conversationally, file issues while testing, or says "QA session" / "let me report some bugs".
SKILL.md
4.2 KB, as published. Nobody here has run it
QA
The user is testing; you are the scribe. Keep filing friction near zero —
short confirmations, no interrogations. Everything files at
needs-triage: routing is /triage's job, not yours (ADR_0005).
Workflow
1. Open the session
Read [tool.patdhlk-skills] from ubproject.toml (missing → point to
/setup-patdhlk-skills).
- sphinx-needs: read glossary terms from needs.json (ADR_0006) so
reports get written in the repo's domain language.
pdsmissing from PATH → emit one loud line pointing at/setup-patdhlk-skills, then degrade to a one-sentence jq title scan over needs.json. - github:
gh issue list --state all --limit 200title matching. (pds dedupexits 2 on the github backend — no v1 driver.)
Skim the codebase for the named components when it helps phrase a report precisely — in the background, never blocking the user.
2. The loop — per report
-
Capture: title (symptom, not diagnosis), what happened vs what was expected, repro steps as far as known.
kind:bugfor defects,feature/improvementfor ideas mid-session. -
Clarify at most once — only if the report is unfilable as heard (e.g. no clue what action triggered it). Otherwise file what's known;
/triagewill route thin reports toneeds-infolater. -
Dedup — on the sphinx-needs backend, run
pds dedup "<full draft>"(title + body — never a bare title; short queries over-gate). Branch on exit code:- exit 0: proceed to file.
- exit 1: duplicate verdict — build one short status-aware ask from
the hits JSON (
{id, type, status, title, score}): if the top hit is an open issue, default ask is "append detail to ISSUE_xxxx instead?"; if the top hit is done or an ADR, ask "ISSUE_xxxx (done) — may already be shipped — file as regression?". Never a hard block; never silent filing. - exit 2: tool/config error — stop and escalate.
On the github backend
pds dedupexits 2; fall back to title matching against thegh issue listcorpus. Also consider this session's declined and filed reports —pdsrebuilds needs.json after each filing, but declined reports are not in the corpus.
-
File after a one-line confirmation ("Filing: <title> — ok?"):
-
sphinx-needs: rebuild needs.json, allocate dense max+1 ID (ADR_0008), append to
issue_doc:.. issue:: Theme toggle resets after logout :id: ISSUE_0013 :status: needs-triage :kind: bug Logout and back in: theme is light again although dark was chosen. Expected: choice survives sessions. Seen on Safari 17.Link
:links: REQ_xxxxonly when the user names the behavior a requirement covers — don't go hunting. -
github:
gh issue createwith theneeds-triagelabel (create the label if missing).
-
-
Acknowledge with the ID and return to listening. Never editorialize on severity or cause mid-session.
3. Close the session
When the user is done: run the strict gate over any local mutations (ADR_0007, ADR_0017) —
pds check
# no pds: uv run sphinx-build -W -b html <spec_dir> <spec_dir>/_build/html
— exit 1 means fix the corpus and re-run, exit 2 means stop and escalate —
then summarize: filed issues (ID + title), deduped reports, anything the
user mentioned but declined to file. Suggest /triage as the natural next
step — the session deliberately leaves everything at needs-triage.
Hard rules
- Everything files at
needs-triage—/qanever routes, never sets any other status. - One clarifying question per report, maximum. Thin reports still get
filed; that's what
needs-infoexists for. - Always dedup before filing; never silently file a known twin.
- The strict gate must pass before the session summary claims success.