Generate QA Summary for PR Handoff

VerifiedCaution

Generate a QA handoff document from current branch changes, ready for Jira and GitHub.

Sby Skills Guide Bot
TestingIntermediate
7/23/2026
Claude Code
#qa-handoff#git-diff#jira#test-cases#pull-request

Recommended for

Automated summary

Builds a QA handoff document (what changed, affected areas, test cases, and test credentials) from the current branch's changes, formatted to paste into a Jira ticket.

Strengths

  • Outputs two versions of the same content: Markdown for GitHub PRs and plain text formatted for Jira
  • Diffs against the parent branch and also checks uncommitted work, keeping the scope tied to this branch
  • Resolves real test credentials (emails, OTP bypass, environment variables) by reading seeds and config instead of leaving generic labels
  • Enforces Jira formatting rules (no markdown, no wiki markup) and copies the result to the clipboard

Limitations

  • The clipboard step relies on `pbcopy`, so that final action only works on macOS
  • Runs no tests — the document is descriptive and its accuracy depends on correctly reading the changed files
  • Assumes the parent branch is named `development`; other branch names require adjustment
When to use it

Use it at the end of development, right before opening a PR or handing a ticket to QA.

When not to use it

Skip it if you need automated test execution or if the repository has no usable Git history.

Security analysis

Caution
Quality score82/100

The skill is a straightforward git-diff-based QA document generator. There is no obfuscation, no remote calls, no destructive commands, and no instruction to disable safety. The one real concern is that it deliberately mines .env files, seed configs, and docs for concrete credential values and writes them into repo-local files, which creates a secret-leakage path if those files are committed or the environment holds non-dev secrets. Treat as caution rather than risky since the intent is clearly dev/QA test users, not exfiltration.

Findings
  • •Instructs the agent to search for and surface actual credential values (emails, OTP/password bypass mechanisms, .env* and appsettings*.json contents) into generated files
  • •Writes harvested credentials into `.claude/qa-summary.md` / `.claude/qa-summary.txt`, which live inside the repo and could be accidentally committed, leaking test/dev secrets into version control
  • •Runs shell commands (`git diff`, `git log`, `cat ... | pbcopy`) — legitimate but powerful; clipboard piping is benign, no network exfiltration or destructive operations present
How this analysis is made

Examples

Generate QA summary for branch
/qa — generate a QA summary for my current branch so I can hand it off to QA
Jira-ready handoff
Write a QA handoff for this branch, list the test credentials QA needs, and copy the Jira version to my clipboard
PR plus Jira
Summarize what changed on this branch with happy path, edge cases, and regression checks, and save both the Markdown and Jira text versions

name: qa description: "Generate QA test summary from current branch changes for PR handoff" allowed-tools: Read, Grep, Glob, Bash, Write

/qa - QA Test Summary Generator

Generate a QA handoff document from the current branch's changes. Output should be ready to paste as a Jira comment on the ticket.

Write two versions of the output:

  1. .claude/qa-summary.md — Markdown version with proper headings, bold, checkboxes, and code formatting. Useful for GitHub PRs or reference.
  2. .claude/qa-summary.txt — Plain text version following the Jira formatting rules below. This is the one that gets copied to clipboard.

After writing both files, run cat .claude/qa-summary.txt | pbcopy to copy the Jira version to the clipboard. Tell the user: "Copied to clipboard — paste into Jira with Cmd+V. Markdown version also saved to .claude/qa-summary.md."

Instructions

  1. Discover changes: Diff against the branch's parent, not production. Run git diff development --stat and git log development..HEAD --oneline to see only what this branch adds. Also run git diff HEAD --stat to catch any uncommitted work.
  2. Read changed files: Read the key modified files to understand the actual changes, not just the diff stats
  3. Identify scope: Determine which features, pages, and components are affected
  4. Discover test credentials: For every persona a test case asks QA to sign in as, surface the actual credential values, not generic labels like "the seeded co-loaded persona." Look for:
    • Seed scenario names (e.g. src/**/Seed*.cs, seeds/**, prisma/seed.ts, fixtures)
    • Email patterns or templates in config (appsettings*.json, .env*, config/**)
    • OTP / password bypass mechanisms or where to read OTPs (Mailpit, MailHog, dev console, feature flags)
    • State / tenant env vars required to seed the right data (STATE, TENANT, etc.)
    • Any docs in README.md or docs/** that already enumerate test users Resolve patterns into concrete values — e.g. if EmailPattern is sebt.dc+{0}@codeforamerica.org and the scenario is co-loaded, the test credential is sebt.dc+co-loaded@codeforamerica.org.
  5. Generate test summary in plain text with light formatting. The output will be pasted into Jira Cloud's rich text editor. Use this format:
QA Summary — [Branch Name]

What Changed
Brief 2-3 sentence description of the feature/fix.

Affected Areas
- All pages — page views and browser tab titles
- Sign in / Sign out flow

Test Cases

Happy Path
1. Step-by-step test case with expected result
2. Another test case...

Edge Cases
1. Edge case scenario with expected behavior

Regression Checks
1. Verify [related feature] still works as expected

Test Credentials
- Persona name — login email — how to retrieve OTP/password
- Another persona — login email — how to retrieve OTP/password

Environment Notes
- Environment setup needed
- Which environments to test on

Formatting rules — CRITICAL

  • Use plain text with simple numbered and bulleted lists
  • NO markdown syntax (no ##, no **, no backticks, no [ ] checkboxes)
  • NO Jira wiki markup (no h2., no *, no {{}}, no #)
  • Section headers should be plain text on their own line, in ALL CAPS or Title Case to stand out
  • Use dashes (-) for bullet lists and numbers (1. 2. 3.) for ordered lists
  • For inline code references like event names, just use quotes: "page_view", "sign_in"
  • For links, write the full URL on its own line

Key Behaviors

  • Focus on user-facing behavior, not implementation details
  • Test cases should be actionable by someone who didn't write the code
  • Use relative paths for navigation (e.g. "Navigate to Tools > Tag Generator"), never reference localhost or full URLs — QA knows their environment
  • Assume QA is already signed in and on the app unless the test specifically involves auth
  • Call out any data dependencies (specific campaigns, creatives, etc.)
  • Always include a "Test Credentials" section listing every persona referenced in the test cases with the actual login email and a one-liner on how to retrieve the OTP/password (e.g. "Mailpit at http://localhost:8025" or "OTP bypass enabled in dev — any code works"). Never use generic phrases like "the seeded co-loaded persona" without the concrete email.
  • If changes touch auth, API layer, or shared components, expand regression scope
  • Keep it concise — QA doesn't need to know about refactors or code style changes
  • Use checkboxes only in the markdown version (qa-summary.md); the plain-text Jira version uses numbered lists per the formatting rules above

Language Rules — CRITICAL

  • NEVER reference file names, paths, components, stores, functions, or code concepts. QA does not read code.
  • Write everything in terms of what the user sees and does in the browser — pages, buttons, modals, fields, messages.
  • Instead of "interceptors.js tracks CRUD operations", say "Creating, editing, or deleting any item should be tracked"
  • Instead of "TableFilter.vue search is debounced", say "Type in a search bar, wait a second, and the search should be recorded"
  • Instead of "Affected: src/features/analytics/...", say "Affected: Analytics reports page"
  • The "Affected Areas" section should list page names and UI areas, not files or components
  • Environment Notes should only include things QA needs to configure or be aware of — no technical implementation details

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/generate-qa-summary-for-pr-handoff-mrx3xw9t/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/generate-qa-summary-for-pr-handoff-mrx3xw9t' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/generate-qa-summary-for-pr-handoff-mrx3xw9t/download' --output '.skill-downloads/generate-qa-summary-for-pr-handoff-mrx3xw9t/SKILL.md.part' && mv '.skill-downloads/generate-qa-summary-for-pr-handoff-mrx3xw9t/SKILL.md.part' '.skill-downloads/generate-qa-summary-for-pr-handoff-mrx3xw9t/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Tools declared by the author (check availability in your agent): Read, Grep, Glob, Bash, Write

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/generate-qa-summary-for-pr-handoff-mrx3xw9t/SKILL.md' && test -s '.skill-downloads/generate-qa-summary-for-pr-handoff-mrx3xw9t/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/qa' && cp -R '.skill-downloads/generate-qa-summary-for-pr-handoff-mrx3xw9t' '.claude/skills/qa'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/generate-qa-summary-for-pr-handoff-mrx3xw9t'

openskills read 'generate-qa-summary-for-pr-handoff-mrx3xw9t'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/generate-qa-summary-for-pr-handoff-mrx3xw9t/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills