QA
Required Reading
- skill: ts-principles
- Read
ts-principles/SKILL.md.
- Read every linked principle detail document before preparing QA.
- skill: ts-technical-writing
- Read
ts-technical-writing/SKILL.md, ts-technical-writing/audience.md, ts-technical-writing/prose.md,
ts-technical-writing/structure.md, and ts-technical-writing/examples.md before writing the artifacts.
Role
QA is a judge.
It owns scope, context loading, product-area selection, changelog writing, QA design, and artifact writing. It turns an
implementation into two brief, easy-to-scan artifacts:
docs/changelog/: the user-facing changeset
docs/qa/: the manual QA walkthrough for that changeset
Do the work directly. Do not spawn workers; these artifacts need one coherent
product view.
Do not test the product yourself. Do not run app code, tests, browsers, dev
servers, jobs, migrations, scripts, or API calls that exercise behavior. Use
read-only repo inspection to understand the implementation.
Workflow
- DETERMINE_SCOPE
- LOAD_IMPLEMENTATION
- FIND_USER_ENTRY_POINTS
- DRAFT_CHANGELOG
- DESIGN_MANUAL_QA
- CHECK_GATES
- WRITE_ARTIFACTS
DETERMINE_SCOPE
- Determine the implemented change from the user's request, commit range, PR,
branch, plan, handoff, files, or working tree.
- If no scope is supplied, use current working tree changes.
- If the working tree is clean and no scope is supplied, use the latest commit.
- If no implementation can be identified, stop and ask for scope. Do not write a
generic checklist.
- Name the repository root and paired artifact paths:
- changelog:
<repository-root>/docs/changelog/YYYY-MM-DD_HH:MM_<qa-name>.md
- QA:
<repository-root>/docs/qa/YYYY-MM-DD_HH:MM_<qa-name>.md
- Use the same timestamp and
<qa-name> for both files.
- Create
docs/changelog/ and docs/qa/ if they do not exist.
LOAD_IMPLEMENTATION
- Read the relevant diffs, source files, tests, docs, routes, schemas, and local
guidance.
- Use read-only commands such as
git status, git diff, git show,
git log, rg, fd, and file reads.
- Do not run project commands that execute product behavior, automated tests,
builds, linters, dev servers, migrations, scripts, background jobs, browsers,
or network calls.
- Identify changed behavior, affected entry points, data prerequisites, feature
flags, permissions, roles, devices, and external dependencies when visible in
the repo.
- Record unknowns only after repo context cannot answer them. Do not invent
routes, roles, flags, account states, or expected copy.
FIND_USER_ENTRY_POINTS
- Describe the changeset from the user's perspective, not from the file list.
- Assign stable change IDs:
C1, C2, C3.
- Prefer concrete product language:
- Good:
Checkout shows tax before payment confirmation.
- Bad:
Refactored checkout total calculation.
- Map each change to an entry point a human can use:
- screen, route, modal, form, notification, email, report, API, CLI command,
import/export, admin task, scheduled outcome, or documented workflow
- For internal-only changes, name the nearest user-observable behavior and explain why it is the right place to test.
- Separate direct changes from nearby behavior likely to break. Do not turn every touched file into a test area.
DRAFT_CHANGELOG
- Write a brief changelog for a human who needs to understand what changed.
- Include only user-facing behavior, operator-visible behavior, API behavior,
CLI behavior, documentation changes, or workflow outcomes.
- Put implementation notes only when they explain a visible limit or a manual QA prerequisite.
- Link to the companion QA artifact by relative path.
- Do not claim the change shipped, passed QA, or reached production.
DESIGN_MANUAL_QA
- Write a brief walkthrough for a skilled engineer.
- Link to the companion changelog artifact by relative path.
- Order tests by user workflow, then by risk.
- Cover the changed behavior first, then one or two high-risk regressions.
- Prefer 3-7 test cases for a normal change. Add more only when the
implementation changes distinct user workflows.
- Each test case must include:
- priority:
P0 for must-run changed behavior, P1 for likely regression,
P2 for optional edge coverage
- where: the screen, route, command, API, or workflow under test
- setup: account state, data, flags, permissions, environment, or
None
- steps: exact manual actions
- expected result: observable result a human can confirm
- checks: the changeset item or risk the test proves
- Avoid broad smoke tests, full regression suites, and implementation details.
- Do not claim anything passed. The artifact is a plan for manual QA, not a test
report.
CHECK_GATES
Before writing the artifacts, verify:
- The changelog and QA artifacts stand alone without prior chat.
- The changelog is written from a user perspective.
- The changelog links to the QA artifact, and the QA artifact links to the
changelog artifact.
- Every direct user-facing change has at least one
P0 test.
- Every test says where to run it and includes setup, steps, expected result, and checks.
- Every
Checks value references a changelog item ID or named regression risk.
- Unknown prerequisites are explicit.
- No test result, pass/fail claim, or executed command output appears.
- The test list is compact and scoped to the implementation.
- Exact UI labels, routes, commands, API names, and domain terms are preserved. Other prose uses the reader's words.
- The artifacts have no meta notes about this skill or the authoring process.
WRITE_ARTIFACTS
- Write the final changelog artifact to
<repository-root>/docs/changelog/YYYY-MM-DD_HH:MM_<qa-name>.md.
- Write the final QA artifact to
<repository-root>/docs/qa/YYYY-MM-DD_HH:MM_<qa-name>.md.
- When revising artifacts, rewrite both complete artifacts. Do not write deltas
from previous drafts.
Changelog Artifact Template
# Changelog: <Feature Name>
## Scope
- Source: <working tree, commit range, PR, plan, or files>
- Generated: <YYYY-MM-DD HH:MM>
- Product area: <area>
- QA: [Manual QA](../qa/YYYY-MM-DD_HH:MM_<qa-name>.md)
## Changes
- C1: <user-facing change>
- C2: <user-facing change>
## Notes
- <Visible limit, prerequisite, or limitation; skip section if none>
QA Artifact Template
# QA: <Feature Name>
## Scope
- Source: <working tree, commit range, PR, plan, or files>
- Generated: <YYYY-MM-DD HH:MM>
- Product area: <area>
- Changelog: [User-facing changes](../changelog/YYYY-MM-DD_HH:MM_<qa-name>.md)
## Setup
- <Prerequisite needed by multiple tests; skip section if none>
## Test Cases
### QA-1: <scenario>
Priority: P0
Where: <screen, route, command, API, or workflow>
Setup: <specific data, account, flag, permission, or None>
Checks: C1
Steps:
1. <manual action>
2. <manual action>
Expected:
- <observable result>
## Not Covered
- <Known gap, unavailable prerequisite, or deferred adjacent regression; skip
section if none>
1---2name: ts-qa3description: Prepare changelog and manual QA artifacts from implemented changes. Only explicitly triggered by user.4---56# QA78## Required Reading910- skill: ts-principles11 - Read `ts-principles/SKILL.md`.12 - Read every linked principle detail document before preparing QA.13- skill: ts-technical-writing14 - Read `ts-technical-writing/SKILL.md`, `ts-technical-writing/audience.md`, `ts-technical-writing/prose.md`,15 `ts-technical-writing/structure.md`, and `ts-technical-writing/examples.md` before writing the artifacts.1617## Role1819QA is a judge.2021It owns scope, context loading, product-area selection, changelog writing, QA design, and artifact writing. It turns an22implementation into two brief, easy-to-scan artifacts:2324- `docs/changelog/`: the user-facing changeset25- `docs/qa/`: the manual QA walkthrough for that changeset2627Do the work directly. Do not spawn workers; these artifacts need one coherent28product view.2930Do not test the product yourself. Do not run app code, tests, browsers, dev31servers, jobs, migrations, scripts, or API calls that exercise behavior. Use32read-only repo inspection to understand the implementation.3334## Workflow35361. DETERMINE_SCOPE372. LOAD_IMPLEMENTATION383. FIND_USER_ENTRY_POINTS394. DRAFT_CHANGELOG405. DESIGN_MANUAL_QA416. CHECK_GATES427. WRITE_ARTIFACTS4344### DETERMINE_SCOPE4546- Determine the implemented change from the user's request, commit range, PR,47 branch, plan, handoff, files, or working tree.48- If no scope is supplied, use current working tree changes.49- If the working tree is clean and no scope is supplied, use the latest commit.50- If no implementation can be identified, stop and ask for scope. Do not write a51 generic checklist.52- Name the repository root and paired artifact paths:53 - changelog: `<repository-root>/docs/changelog/YYYY-MM-DD_HH:MM_<qa-name>.md`54 - QA: `<repository-root>/docs/qa/YYYY-MM-DD_HH:MM_<qa-name>.md`55- Use the same timestamp and `<qa-name>` for both files.56- Create `docs/changelog/` and `docs/qa/` if they do not exist.5758### LOAD_IMPLEMENTATION5960- Read the relevant diffs, source files, tests, docs, routes, schemas, and local61 guidance.62- Use read-only commands such as `git status`, `git diff`, `git show`,63 `git log`, `rg`, `fd`, and file reads.64- Do not run project commands that execute product behavior, automated tests,65 builds, linters, dev servers, migrations, scripts, background jobs, browsers,66 or network calls.67- Identify changed behavior, affected entry points, data prerequisites, feature68 flags, permissions, roles, devices, and external dependencies when visible in69 the repo.70- Record unknowns only after repo context cannot answer them. Do not invent71 routes, roles, flags, account states, or expected copy.7273### FIND_USER_ENTRY_POINTS7475- Describe the changeset from the user's perspective, not from the file list.76- Assign stable change IDs: `C1`, `C2`, `C3`.77- Prefer concrete product language:78 - Good: `Checkout shows tax before payment confirmation.`79 - Bad: `Refactored checkout total calculation.`80- Map each change to an entry point a human can use:81 - screen, route, modal, form, notification, email, report, API, CLI command,82 import/export, admin task, scheduled outcome, or documented workflow83- For internal-only changes, name the nearest user-observable behavior and explain why it is the right place to test.84- Separate direct changes from nearby behavior likely to break. Do not turn every touched file into a test area.8586### DRAFT_CHANGELOG8788- Write a brief changelog for a human who needs to understand what changed.89- Include only user-facing behavior, operator-visible behavior, API behavior,90 CLI behavior, documentation changes, or workflow outcomes.91- Put implementation notes only when they explain a visible limit or a manual QA prerequisite.92- Link to the companion QA artifact by relative path.93- Do not claim the change shipped, passed QA, or reached production.9495### DESIGN_MANUAL_QA9697- Write a brief walkthrough for a skilled engineer.98- Link to the companion changelog artifact by relative path.99- Order tests by user workflow, then by risk.100- Cover the changed behavior first, then one or two high-risk regressions.101- Prefer 3-7 test cases for a normal change. Add more only when the102 implementation changes distinct user workflows.103- Each test case must include:104 - priority: `P0` for must-run changed behavior, `P1` for likely regression,105 `P2` for optional edge coverage106 - where: the screen, route, command, API, or workflow under test107 - setup: account state, data, flags, permissions, environment, or `None`108 - steps: exact manual actions109 - expected result: observable result a human can confirm110 - checks: the changeset item or risk the test proves111- Avoid broad smoke tests, full regression suites, and implementation details.112- Do not claim anything passed. The artifact is a plan for manual QA, not a test113 report.114115### CHECK_GATES116117Before writing the artifacts, verify:118119- The changelog and QA artifacts stand alone without prior chat.120- The changelog is written from a user perspective.121- The changelog links to the QA artifact, and the QA artifact links to the122 changelog artifact.123- Every direct user-facing change has at least one `P0` test.124- Every test says where to run it and includes setup, steps, expected result, and checks.125- Every `Checks` value references a changelog item ID or named regression risk.126- Unknown prerequisites are explicit.127- No test result, pass/fail claim, or executed command output appears.128- The test list is compact and scoped to the implementation.129- Exact UI labels, routes, commands, API names, and domain terms are preserved. Other prose uses the reader's words.130- The artifacts have no meta notes about this skill or the authoring process.131132### WRITE_ARTIFACTS133134- Write the final changelog artifact to135 `<repository-root>/docs/changelog/YYYY-MM-DD_HH:MM_<qa-name>.md`.136- Write the final QA artifact to137 `<repository-root>/docs/qa/YYYY-MM-DD_HH:MM_<qa-name>.md`.138- When revising artifacts, rewrite both complete artifacts. Do not write deltas139 from previous drafts.140141## Changelog Artifact Template142143```markdown144# Changelog: <Feature Name>145146## Scope147- Source: <working tree, commit range, PR, plan, or files>148- Generated: <YYYY-MM-DD HH:MM>149- Product area: <area>150- QA: [Manual QA](../qa/YYYY-MM-DD_HH:MM_<qa-name>.md)151152## Changes153- C1: <user-facing change>154- C2: <user-facing change>155156## Notes157- <Visible limit, prerequisite, or limitation; skip section if none>158```159160## QA Artifact Template161162```markdown163# QA: <Feature Name>164165## Scope166- Source: <working tree, commit range, PR, plan, or files>167- Generated: <YYYY-MM-DD HH:MM>168- Product area: <area>169- Changelog: [User-facing changes](../changelog/YYYY-MM-DD_HH:MM_<qa-name>.md)170171## Setup172- <Prerequisite needed by multiple tests; skip section if none>173174## Test Cases175176### QA-1: <scenario>177Priority: P0178Where: <screen, route, command, API, or workflow>179Setup: <specific data, account, flag, permission, or None>180Checks: C1181182Steps:1831. <manual action>1842. <manual action>185186Expected:187- <observable result>188189## Not Covered190- <Known gap, unavailable prerequisite, or deferred adjacent regression; skip191 section if none>192```