Issue — QA Issue Reporter
Registers a new QA issue for the current project. Assigns a reference number, writes a structured file to qa/qa-inbox/, and appends to qa/qa-log.md. Does not fix anything — just intake and registration.
Use /qa to work through issues once they are registered.
Invoke
/issue
/issue broken contact form on mobile
If a description is passed inline, use it. Otherwise, ask.
Steps
1. Scaffold check
Confirm qa/ exists in the current project root. If not, stop and tell Mark to run /qa first to set up the QA structure.
2. Gather the issue details
If invoked with an inline description, use that as the starting point.
Ask for any missing fields using AskUserQuestion:
Required:
- Description — one line, plain English: what is broken or wrong
- Severity —
critical/high/medium/low - Feature area — what part of the site (e.g. "contact form", "mobile nav", "checkout", "homepage hero")
- Type —
description(text only) /image(screenshot exists) /bundle(multiple files)
Optional:
- Steps to reproduce — if the issue is not obvious from the description
- Expected behaviour — what should happen
- Actual behaviour — what actually happens
- Notes — any extra context
If an inline description was provided, ask only for the fields that are still missing (severity and feature area at minimum).
3. Assign the reference number
Read qa/qa-counter.json:
cat qa/qa-counter.json
If the file doesn't exist, read CLAUDE.md for ASANA_TASK_PREFIX. Create the counter:
{"prefix": "PREFIX", "next": 1}
Mint the ref: {prefix}-QA-{next:03d} (zero-padded, minimum 3 digits).
Increment next and write qa-counter.json back.
4. Write the issue file
Filename: qa/qa-inbox/{ref}-{slug}.md
Slug: lowercase, hyphens, max 6 words from the description.
Example: NORE-QA-007-contact-form-broken-mobile.md
File content:
---
ref: {ref}
type: {type}
severity: {severity}
feature: {feature area}
opened: {YYYY-MM-DD}
---
## {description}
## Steps to reproduce
{steps, or "Not provided."}
## Expected
{expected, or "Not provided."}
## Actual
{actual, or "Not provided."}
## Notes
{notes, or "None."}
If type is image or bundle, add a note: "Attach screenshot(s) to this folder alongside this file."
5. Append to the log
Append one line to qa/qa-log.md:
[YYYY-MM-DD HH:MM] {ref} registered — {description} ({severity} / {feature area})
Example:
[2026-06-19 10:45] NORE-QA-007 registered — contact form broken on mobile (high / contact-form)
If qa-log.md doesn't exist, create it with the header first:
# QA Log — {PREFIX}
Append-only event log. One line per lifecycle event.
Format: [YYYY-MM-DD HH:MM] {ref} {event} — {details}
6. Confirm
Report back:
{ref} registered — {description}
Severity: {severity} | Feature: {feature area}
File: qa/qa-inbox/{filename}
Run /qa to work through it.
Notes
/issueis intake only — it does not investigate or fix anything.- If the issue is urgent (critical/high), mention it in the confirmation so Mark can prioritise.
- Images and bundles: the skill creates the markdown file; Mark drops the screenshot(s) into
qa/qa-inbox/alongside it manually. - Works in any project that has
qa/set up. Run/qafirst if the structure doesn't exist yet.