From qa-persona
Use when promoting a row from docs/qa-persona/bugs.md to a GitHub issue via gh CLI; back-links the issue number into the bug tracker row. Refuses if the bug was already promoted.
How this skill is triggered — by the user, by Claude, or both
Slash command
/qa-persona:qa-persona-bugThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Promote one bug row from `docs/qa-persona/bugs.md` to a GitHub issue and back-link the issue number into the bug tracker. Closes the loop between the walkthrough's Markdown ledger and the team's actual issue tracker.
Promote one bug row from docs/qa-persona/bugs.md to a GitHub issue and back-link the issue number into the bug tracker. Closes the loop between the walkthrough's Markdown ledger and the team's actual issue tracker.
$ARGUMENTS — the stable bug ID (the # column in bugs.md). One ID at a time. Refuse if multiple are passed — promote them one by one so commit messages stay clean.
docs/qa-persona/bugs.md exists.
gh CLI is available (gh --version). If not → tell the user to install it (brew install gh / winget install GitHub.cli) and stop.
gh auth status shows authenticated. If not → tell the user to run gh auth login and stop.
Find the row matching the ID. If absent → list available IDs and stop.
Inspect the row — refuse if any of these is true:
Bug column contains a back-link of the form (#<digits>) — definitive proof of prior promotion.Fixed in column already references an issue.Note: Fixed in alone is not a reliable signal — step 4 below intentionally leaves it empty until a later walkthrough verifies the fix landed. Check the back-link in the Bug column or the 🟡 status as the primary "already promoted" indicators.
From the bug row, construct an issue with this shape:
Title: [qa-persona bug #<ID>] <one-line description>
Body:
**Severity:** <Major|Medium|Minor>
**Discovered:** <YYYY-MM-DD> (qa-persona Run #<N>)
**Where:** `<file:line>`
**Description**
<full description from bugs.md>
**Fix sketch**
<fix sketch from bugs.md>
**Walkthrough context**
See `docs/qa-persona/walkthrough-RUN-<latest>.md` Run #<N>.
---
*Filed via qa-persona-bug — back-linked into `docs/qa-persona/bugs.md`.*
Map severity → label:
Major → bug,severity:majorMedium → bug,severity:mediumMinor → bug,severity:minor,good-first-issueIf a label doesn't exist in the repo, fall back to bug only — never abort on a missing label.
gh issue create \
--title "[qa-persona bug #<ID>] <one-line>" \
--body-file <tmpfile> \
--label "<labels>"
Capture the resulting issue URL and number.
Update the row in docs/qa-persona/bugs.md:
(#<issue-number>) to the Bug column, e.g. Idempotent submit downgrades status (#42).🔴 → 🟡 (in progress, since it's now tracked).Fixed in empty until a later walkthrough confirms 🟢.✓ Filed issue #42: <title>
URL: <url>
bugs.md row updated: status 🔴 → 🟡, back-link added
Next: qa-persona-walkthrough after the fix lands to verify and mark 🟢.
bugs.md — the issue must reflect the ledger faithfully.bugs.md when the issue is filed. The bug closes only when a later walkthrough confirms it's gone — that's the methodology's verification rule.gh issue close --reason completed to "skip ahead." Never. The issue lifecycle mirrors the bug lifecycle.Provides a checklist for code reviews covering functionality, security, performance, maintainability, tests, and quality. Use for pull requests, audits, team standards, and developer training.
npx claudepluginhub andreykuzin/qa-persona --plugin qa-persona