MCPInstall

qa-report-humanizer

Remove AI-generated patterns from QA reports, bug reports, test summaries, status updates, and quality communications. Detects and rewrites robotic test-result language, template-sounding status updates, inflated severity descriptions, and generic stakeholder reports — without inventing facts. Makes QA writing sound like a real engineer wrote it. Use when: "humanize report," "rewrite QA summary," "fix test report," "make this sound human," "clean up status update." Not for: general prose, blog, or marketing-copy cleanup — use the global humanizer skill. Not for: classifying or routing CI failures — use ai-bug-triage. Related: ai-bug-triage, qa-metrics, qa-dashboard, quality-postmortem.

Installs
1.3K
Last 24h
+12
Trending rank
#8065
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/petrkindlmann/qa-skills --skill qa-report-humanizer
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads qa-report-humanizer automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

<objective> A polished QA report that says nothing is worse than a rough one that says what broke. "A critical defect was identified in the authentication module" passes every grammar check and tells the reader nothing. This skill rewrites QA reports, bug reports, test summaries, and status updates so a real engineer can act on them. Preserve the source's facts and uncertainty; compare the rewrite with the source before delivering it. </objective>

Discovery Questions

Check .agents/qa-project-context.md first — it carries the team's tone, the tracker, and severity conventions; skip anything answered there. Then clarify only what changes the rewrite:

  • Who reads this — an engineer, an exec, or a customer? An engineer wants the failing selector and the repro; an exec wants ship/no-ship and open blockers; a customer wants impact and timeline. The register and what you cut differ for each.
  • What channel — Slack, PR comment, or a formal report? Slack gets 2-3 lines and a link; a PR comment gets the specific code/selector fix; a report gets structure. Length and formatting follow the channel.
  • Is any information deliberately excluded from this audience? Otherwise keep every supplied count, percentage, severity, identifier, result, and material qualification. These are locked by default; do not ask permission to preserve them. Name relevant missing evidence instead of inventing it (see Core Principle 5).

Core Principles

  1. Specific beats comprehensive. "Login fails when the email has a plus sign" beats "Various authentication edge cases were identified." The reader fixes the first and learns nothing from the second. Name the behavior, the trigger, and the scope when supplied. When they are absent, identify the missing details without inventing a better story.

  2. Say what happened, not what category it falls into. "Authentication module" is a bucket; "login with plus-sign emails" is a bug. Categories let the writer sound thorough while hiding that they don't know the specifics. Use concrete details from the source; a vague source may need a short statement of what is still unknown.

  3. If the reader can't tell what broke or what to do, the report failed. Write for the person who has to fix it at 4pm on a Friday. Lead with what's broken or risky, then what they should do about it. Skip the parts nobody reads.

  4. Preserve facts and uncertainty. The rewrite changes the prose, never the data. Keep exact numbers, severities, error strings, test names, commit IDs, and timestamps attached to the same result and environment. Do not round percentages or infer failure counts from a rounded pass rate. Preserve "suspected," "not reproduced," "not run," and "not approved": these describe evidence, not filler. A prior build's passing run does not establish the current candidate's status. A recommendation is not approval.

  5. Never invent the specifics you're asked to add. "Make it specific" tempts the model to manufacture an exact percentage, an incident count, or a repro it never saw. Do not. If the source is vague and the number isn't verifiable, the honest rewrite names the gap ("user impact not measured") instead of writing "8% of users." A fabricated metric is a worse failure than a vague one.

QA-specific AI patterns to detect and fix

Each rewrite below uses only facts in its draft. A missing detail remains missing.

1. The template opener

Draft: "Test execution was completed successfully for Sprint 47. A total of 342 test cases were executed across 5 test suites, achieving a 97.4% pass rate."

Rewrite: "Sprint 47: 342 tests run across 5 suites; reported pass rate 97.4%. The draft does not give the failure count, affected suites, or whether failures are new or known."

The rounded rate cannot establish an exact failure breakdown. Do not invent checkout failures or flaky tests to make the report more useful.

2. Inflated severity language

Draft: "A critical defect was identified in the authentication module that could potentially impact the user experience across multiple touchpoints."

Rewrite: "A critical authentication defect was reported. The broken behavior, reproduction steps, and affected users are not specified."

Keep the reported severity without independently confirming it. Plus-sign emails and an affected-user percentage belong here only when the source supplies them.

3. The pass-rate obsession

Draft: "The overall pass rate increased from 94.2% to 97.1%, demonstrating significant improvement and showcasing the team's commitment to quality."

Rewrite: "Pass rate increased from 94.2% to 97.1%. The cause of the change and which tests changed are not given."

Keep exact percentages. Do not attribute the change to repairs, flakiness, or fewer product defects without evidence. If causes are supplied, lead with them.

4. Generic risk language

Draft: "Several high-risk areas have been identified that require careful monitoring. The team recommends continued vigilance and proactive testing."

Rewrite: "The draft reports high-risk areas but does not identify them or the proposed checks. Name the areas and evidence before setting priorities."

This is an information request, not a claim that payment coverage or incidents exist.

5. Synonym cycling for test results

Draft: "The authentication tests passed successfully. The login verification suite completed without issues. The credential validation checks returned positive results. The sign-in workflow tests executed as expected."

Rewrite: "The reported authentication checks passed: login, credential validation, and the sign-in workflow."

Collapse repetition without adding registration, password reset, or SSO coverage.

6. The vague closer

Draft: "Despite several challenges encountered during the testing phase, the team successfully completed all planned test activities. Moving forward, the focus will be on continuous improvement."

Rewrite: "The team reports that all planned test activities are complete. The draft does not specify the challenges, results, or next steps."

Do not turn a completed plan into invented skipped mobile tests or a carry-forward plan.

7. Vague stakeholder updates

Draft: "Quality metrics continue to trend positively. The team is aligned on priorities and committed to delivering a high-quality release."

Rewrite: "The draft gives no test results, open blockers, or release decision to assess readiness. Add that evidence before describing the release as ready."

Reported optimism is not evidence that smoke tests passed or that approval was granted.

8. PR review comments that say nothing

Draft: "Great work on this implementation! I noticed a few potential areas for improvement that might enhance the overall test coverage and robustness."

Rewrite: "The comment raises possible coverage gaps without identifying a test or missing scenario. Which case needs an assertion?"

Do not claim the code has a brittle CSS selector, a missing 429 case, or only a happy path unless the supplied code or review actually shows it.

9. Bug report padding with supplied evidence

Draft: "While conducting regression testing, we discovered that deleting a user does not revoke their API tokens. Repro: create a user, mint a token, DELETE /api/users/{id}, then GET /api/me with that token. Actual: 200 OK with user data. Expected: 401 Unauthorized."

Rewrite: "Deleting a user leaves their API tokens usable. Repro: create a user, mint a token, DELETE /api/users/{id}, then GET /api/me with that token. Actual: 200 OK with user data. Expected: 401 Unauthorized."

The source supplies this behavior and repro. A source saying only "a user-management defect was found" does not justify any of these details.

10. The rule-of-three summary

Draft: "This sprint we improved quality, velocity, and confidence. The team demonstrated strong collaboration, technical excellence, and customer focus."

Rewrite: "The draft gives no specific work or measurements for this sprint. Add the completed changes and their results."

Do not invent a 12% to <1% flakiness change or new export coverage.

How to rewrite

  1. Inventory the facts. Note results, counts, percentages, errors, severities, owners, IDs, dates, evidence links, unknowns, and proposed actions. Keep each with its subject.
  2. Lead with what matters. What broke? What's risky? What should someone do? That goes first.
  3. Use supplied specifics. Replace categories only when the source identifies their behavior. Name missing information when it affects the reader's decision.
  4. Cut filler. Use references/filler-blocklist.md as an editing aid. Preserve exact quoted errors, UI labels, test names, and evidence even if they contain a listed phrase.
  5. Add what's useful — without inventing it. What should the reader do next? What's the risk if they don't? How confident are you (be honest — "I'm not sure this is stable yet" is fine)? If a number to back a claim isn't in the source, say so; don't manufacture one.
  6. Read it out loud. If you wouldn't say it in standup, rewrite it.

Format-specific guidance

FormatLead withSkipAlso include
Test execution summarySupplied failures and their statusTemplate opener and duplicate wordingExact counts and percentages, unrun checks, build identity
Bug reportWhat breaks, how to reproduce it, who's affected"while performing comprehensive testing…"Actual error message, status code, screenshot, or console output
Sprint update (stakeholders)Release readiness (yes/no/conditional), open blockersMethodology, process, team-morale linesWhat you'd want to know if you were deciding whether to ship
Slack messageThe result in 2-3 lines + a linkGreetings, "I wanted to share…"—
PostmortemWhat broke, when, how long, who was affected"This postmortem aims to provide…"An honest account of what you missed and why

Slack example with supplied facts: "Hello team, I wanted to share that the E2E run has 2 dashboard timeout failures under investigation. Full report: [link]." Rewrite: "E2E: 2 dashboard timeout failures under investigation. Full report: [link]." Do not call failures flaky, known, or passed before the source establishes that status.

Anti-Patterns

  • Inventing the specifics you were asked to add. Rewriting a vague draft into a precise-sounding one by manufacturing a percentage, an incident count, or a repro that wasn't in the source. Name the gap instead.
  • Opening with "Test execution was completed successfully" when tests failed. The opener contradicts the body. Lead with the failures.
  • Turning uncertainty into certainty. Keep potential impact as potential when the source is uncertain. Say what is known and what is unmeasured without guessing either.
  • Writing "the team is aligned" in any context. It conveys zero information and is a pure AI tell.
  • Padding 3 bullets into 12 by rewording the same thing. Synonym cycling. One outcome, one statement.
  • Closing with optimistic statements that add no information. "Moving forward, the focus will be on continuous improvement" — delete it.
  • Passive voice to avoid naming what broke. "An issue was identified" hides the subject. Name what broke and where.
  • Starting a bug report with the testing session instead of the bug. Nobody needs "while conducting regression testing of the module." Start with the broken behavior.

Verification

Check the source and rewrite side by side. A numeric set comparison cannot establish fact preservation: it misses omitted facts, switched build IDs, and reversed outcomes.

  1. Compare an evidence ledger. For each material source fact, check its exact value, subject, environment, date, and status in the output. Check both directions: nothing invented in the output and nothing silently omitted from the source. Preserve exact numbers; do not allow rounding unless the user explicitly asks for it.
  2. Check relationships and uncertainty. Failed is not skipped; a passing retry does not erase the first failure. A suspected cause is not confirmed. A run on an earlier commit is not evidence for a later candidate. Proposed release is not approved release. Missing evidence remains unknown. Label suggested next actions as suggestions.
  3. Review language. Check the filler blocklist in the reference and deduplicate repeated statements. A match inside an exact error string or required quotation is preserved. If the global humanizer or avoid-ai-writing skill is available, it may supply a second opinion; otherwise perform this review directly. Its absence does not block the rewrite. Recheck the evidence ledger after any stylistic changes.

Done When

  • Material source facts survive with their exact values and associations; each factual assertion in the output is supported by the source (Verification step 1).
  • Unknowns, unrun checks, retries, build identity, and approval status retain their meaning (Verification step 2). A missing fact is not filled from an example in this skill.
  • Filler is removed outside exact evidence strings and required quotations (Verification step 3).
  • No synonym cycling: each distinct test outcome is stated once (no "passed / completed without issues / returned positive results" chains).
  • The deliverable is the rewritten version in the requested language and channel. Do not delete or archive the user's original file unless that file action was requested.

Related Skills

  • ai-bug-triage — Bug-report templates and the severity/priority matrix. Triage decides what a bug is and how to classify it; this skill rewrites the prose of an already-classified report.
  • qa-metrics — What to actually track. Use it when the report should cite real metrics; this skill makes sure those metrics are stated with context, not as vanity numbers.
  • qa-dashboard — Dashboard setup and stakeholder report layout. This skill humanizes the narrative that accompanies the dashboard.
  • quality-postmortem — Postmortem structure and root-cause analysis. Build the postmortem there; humanize the writeup here.

External Skills

These live in the global Claude skill set, not in this repo's skills/ directory:

  • humanizer / avoid-ai-writing — General-purpose anti-AI-writing engines. When both apply and the skill is available, use it for language-level cleanup (em-dash overuse, tricolon, vague attribution) and this skill for QA-specific structure and fact preservation. If an engineer's real standup/Slack voice is available, feed a sample to the global humanizer's voice mode so the rewrite matches that person rather than a generic "human" register.

Reference Files (in references/)

  • filler-blocklist.md — Copy-paste blocklist of banned filler phrases, the grep-ready regex for optional language screening, synonym-cycling tells, and passive-voice "who broke it" dodges.

FAQ

What does the qa-report-humanizer skill do?

Remove AI-generated patterns from QA reports, bug reports, test summaries, status updates, and quality communications. Detects and rewrites robotic test-result language, template-sounding status updates, inflated severity descriptions, and generic stakeholder reports — without inventing facts. Makes QA writing sound like a real engineer wrote it. Use when: "humanize report," "rewrite QA summary," "fix test report," "make this sound human," "clean up status update." Not for: general prose, blog, or marketing-copy cleanup — use the global humanizer skill. Not for: classifying or routing CI failures — use ai-bug-triage. Related: ai-bug-triage, qa-metrics, qa-dashboard, quality-postmortem.

How do I install qa-report-humanizer?

Run npx skills add https://github.com/petrkindlmann/qa-skills --skill qa-report-humanizer in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/qa-report-humanizer/ (personal) or .claude/skills/qa-report-humanizer/ (project).

Which AI agents can use qa-report-humanizer?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is qa-report-humanizer safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains qa-report-humanizer?

It is published by petrkindlmann in petrkindlmann/qa-skills. It has 1,325 recorded installs.

More from petrkindlmann/qa-skills

View all →

playwright-automation

petrkindlmann/qa-skills

Write production-grade Playwright tests in TypeScript: Page Object Model, fixtures, auto-waiting, user-facing locators, parallel execution, CI integration, sharding, and installed-version checks. Includes an explicit "do not" list for AI agents. Use when: "Playwright," "write E2E test," "page object," "new Playwright suite," "Playwright config." Not for: fixing one flaky test at runtime — use test-reliability. Not for: bulk regenerating selectors after a UI refactor — use selector-drift-recovery. Not for: visual baseline creation/management — use visual-testing. Not for: deep WCAG/axe audits — use accessibility-testing. Related: visual-testing, ci-cd-integration, api-testing, test-reliability, selector-drift-recovery, accessibility-testing.

Testing & QA1.9K installs

exploratory-testing

petrkindlmann/qa-skills

Design and execute structured exploratory testing sessions. Covers Session-Based Test Management (SBTM), charter writing, heuristic-based exploration (HICCUPS, FEW HICCUPS), bug discovery patterns, note-taking templates, and conversion of findings to automated tests. Use when: "exploratory testing," "SBTM," "manual testing," "bug hunting," "test charter," "heuristic testing." Not for: an AI browser agent autonomously exploring the app from a natural-language goal — use agentic-browser-testing. Not for: testing your product's own AI/LLM features — use ai-system-testing. Related: test-planning, ai-bug-triage, risk-based-testing, agentic-browser-testing.

Testing & QA1.5K installs

test-strategy

petrkindlmann/qa-skills

Produce a multi-quarter QA strategy document. Covers scope, risk-based prioritization, test levels (unit/integration/E2E), pyramid analysis, entry/exit criteria, quality KPIs, tool selection rationale, CI scaling levers, and timeline planning. Output is an actionable strategy document, not a shelf document. Use when: "test strategy," "QA strategy doc," "testing approach," "QA roadmap," "multi-quarter QA direction." Not for: a single-sprint or single-release plan — use test-planning. Not for: identifying which areas carry the most risk — use risk-based-testing first. Related: risk-based-testing, qa-metrics, release-readiness, test-planning, test-reliability.

Testing & QA1.5K installs

test-planning

petrkindlmann/qa-skills

Build a single sprint or release test plan. Covers feature decomposition into testable scenarios, requirements-to-test coverage mapping, effort estimation by test type, prioritization matrices (risk × effort), resource allocation, and scheduling with buffers. Use when: "sprint test plan," "release test plan," "what to test this sprint," "test estimation," "coverage mapping." Not for: multi-quarter strategy — use test-strategy. Not for: ranking areas by risk — use risk-based-testing. Not for: the go/no-go decision itself — use release-readiness. Related: test-strategy, risk-based-testing, release-readiness.

Testing & QA1.5K installs

qa-project-context

petrkindlmann/qa-skills

Create and fill .agents/qa-project-context.md with the project's tech stack, test frameworks, CI/CD pipeline, environments, quality goals, risk areas, team structure, and conventions. This is the one file every other QA skill reads first, so they skip redundant discovery and give context-aware advice. Use when: "set up QA context," "configure testing," "initialize project," first use of any QA skill. Not for: bootstrapping a brand-new project's QA end-to-end — use qa-start (which calls this skill as its first step). Related: qa-start, risk-based-testing, test-strategy, qa-metrics, playwright-automation.

Testing & QA1.4K installs

risk-based-testing

petrkindlmann/qa-skills

Produce a risk matrix or heatmap that quantifies what could break by business impact × probability, runs failure mode analysis on the top items, and maps test coverage to risk zones. Includes stakeholder interview frameworks and continuous reassessment. Run this BEFORE test-strategy or test-planning. Use when: "risk assessment," "risk matrix," "risk heatmap," "what could break," "critical paths," "failure modes," "where to focus testing." Not for: multi-quarter QA direction — use test-strategy. Not for: a single sprint/release test plan — use test-planning. Not for: hands-on session-based bug hunting — use exploratory-testing. Related: test-strategy, test-planning, release-readiness, qa-metrics.

Testing & QA1.4K installs

Popular testing & qa skills

View category →

tdd

mattpocock/skills

Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.

Testing & QA1.2M installs

grilling

mattpocock/skills

Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases.

Testing & QA996.2K installs

migrate-to-shoehorn

mattpocock/skills

Migrate test files from as type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace as in tests, or needs partial test data.

Testing & QA484.1K installs

run-train

lllllllama/rigorpilot-skills

Rigor Train skill for deep learning research repositories. Use when a documented or selected training command should be run conservatively for startup verification, short-run verification, full kickoff, or resume, with command, config, seed, log, checkpoint, status, and metric evidence written to standardized trainoutputs/. Do not use for environment setup, exploratory sweeps, speculative idea implementation, or end-to-end orchestration.

Testing & QA337.8K installs

test-driven-development

obra/superpowers

Use when implementing any feature or bugfix, before writing implementation code

Testing & QA261.8K installs

Use when implementation is complete, all tests pass, and you need to decide how to integrate the work

Testing & QA216.8K installs