Pgjev
realZachi/pg-jev
Install, configure, query and explain pgjev (the jev PostgreSQL extension that filters, ranks and classifies rows with plain-language conditions via TypeSafe's Jev model).
Remove AI-generated patterns from QA reports, bug reports, test summaries, status updates, and quality communications.
$ npx skills add petrkindlmann/qa-skills --skill qa-report-humanizer -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install petrkindlmann/qa-skills qa-report-humanizer --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/petrkindlmann/qa-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/qa-report-humanizer .claude/skills/qa-report-humanizer && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "qa-report-humanizer" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/qa-report-humanizer into .claude/skills/qa-report-humanizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-report-humanizer", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/petrkindlmann/qa-skills/tree/main/skills/qa-report-humanizerType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add petrkindlmann/qa-skills --skill qa-report-humanizer -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install petrkindlmann/qa-skills qa-report-humanizer --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/petrkindlmann/qa-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/qa-report-humanizer .agents/skills/qa-report-humanizer && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "qa-report-humanizer" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/qa-report-humanizer into .agents/skills/qa-report-humanizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-report-humanizer", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add petrkindlmann/qa-skills --skill qa-report-humanizer -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install petrkindlmann/qa-skills qa-report-humanizer --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/petrkindlmann/qa-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/qa-report-humanizer .cursor/skills/qa-report-humanizer && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "qa-report-humanizer" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/qa-report-humanizer into .cursor/skills/qa-report-humanizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-report-humanizer", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/petrkindlmann/qa-skills.git --path skills/qa-report-humanizer--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add petrkindlmann/qa-skills --skill qa-report-humanizer -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install petrkindlmann/qa-skills qa-report-humanizer --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/petrkindlmann/qa-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/qa-report-humanizer .gemini/skills/qa-report-humanizer && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "qa-report-humanizer" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/qa-report-humanizer into .gemini/skills/qa-report-humanizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-report-humanizer", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install petrkindlmann/qa-skills qa-report-humanizerInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add petrkindlmann/qa-skills --skill qa-report-humanizer -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/petrkindlmann/qa-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/qa-report-humanizer .github/skills/qa-report-humanizer && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "qa-report-humanizer" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/qa-report-humanizer into .github/skills/qa-report-humanizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-report-humanizer", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add petrkindlmann/qa-skills --skill qa-report-humanizer -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install petrkindlmann/qa-skills qa-report-humanizer --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/petrkindlmann/qa-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/qa-report-humanizer .opencode/skills/qa-report-humanizer && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "qa-report-humanizer" agent skill from https://github.com/petrkindlmann/qa-skills/tree/main/skills/qa-report-humanizer into .opencode/skills/qa-report-humanizer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa-report-humanizer", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
qa-report-humanizerRemove AI-generated patterns from QA reports, bug reports, test summaries, status updates, and quality communications.
QA Report Humanizer is an agent skill from petrkindlmann/qa-skills. 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…
Its SKILL.md is about 4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/filler-blocklist.md`).
It sits in Writing & Content, covering Humanizing AI text, QA and bug reports and Issue triage. The repository describes itself as: 50 QA and test-automation skills for Claude Code, Codex, Cursor, and any Agent Skills Standard runtime. The licence is MIT.
10 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit b3bb61b. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
QA Report Humanizer loads about 4k tokens when it runs, and up to ~4.5k if it reads all its reference files. Until then it costs about 179 tokens; SKILL.md has 2,180 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from petrkindlmann/qa-skills at commit b3bb61b, republished under its MIT licence (© petrkindlmann). 2,180 words, ~3,988 tokens.
.claude/skills/qa-report-humanizer/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.<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 — and guarantees the
rewrite invents no numbers, errors, or severities that were not in the source.
</objective>
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:
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.
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. Replace every category with the concrete thing inside it.
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.
Preserve every fact; cut every adjective. The rewrite changes the prose, never the data. No number, error string, severity, bug description, or test result may shift. The only things you delete are filler, hedging, and synonym cycling — not information.
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.
For each: the BAD draft, the rewrite, and why. The single most damaging one — the template opener — is shown in full; the rest are compact.
Bad:
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. The following sections provide detailed results.
Better:
Sprint 47: 342 tests run, 9 failed. 6 of the failures are in checkout (payment form validation). The other 3 are flaky timing issues we've seen before.
Why: the first version buries the signal under throat-clearing. The second tells you what happened and where to look in one line.
Bad: "A critical defect was identified in the authentication module that could potentially impact the user experience across multiple touchpoints."
Better: "Login breaks if your email has a + in it. We've checked analytics — about 8% of our users have plus-sign emails. Needs a fix before release."
Why: a "critical defect in the authentication module" is a category; "login breaks if your email has a plus sign" is something you can fix. (The 8% here is from the source's own analytics — don't add a figure the source doesn't have.)
Bad: "The overall pass rate increased from 94.2% to 97.1%, demonstrating significant improvement and showcasing the team's commitment to quality." Better: "Pass rate went from 94% to 97%. Most of that was fixing the 3 flaky Playwright tests that kept timing out on the dashboard load. Real bugs found: 2 (both in the new export feature)."
Why: pass rates are vanity metrics without context. Say what actually changed.
Bad: "Several high-risk areas have been identified that require careful monitoring. The team recommends continued vigilance and proactive testing." Better: "The payment flow has no E2E coverage for 3D Secure cards. We've had two production incidents from this in the past 6 months. I'd prioritize this over the admin panel work."
Why: "high-risk areas" and "continued vigilance" mean nothing. Name the area, name the risk, say what to do.
Bad: "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." Better: "All auth tests passed (login, registration, password reset, SSO)."
Why: four ways to say "auth tests passed" is four times too many. One outcome gets one verb.
Bad: "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." Better: "We didn't get to the mobile browser tests this sprint — ran out of time after the checkout regression. Carrying those to next sprint. Everything else is done."
Why: name the gap and the reason, then the carry-forward plan. Drop the "despite challenges" framing.
Bad: "Quality metrics continue to trend positively. The team is aligned on priorities and committed to delivering a high-quality release." Better: "The release looks fine. 4 bugs open, all P2 or lower. The login plus-sign bug (P1) was fixed yesterday. Smoke tests pass on staging."
Why: lead with ship/no-ship and the open blockers. That's the decision the reader is making.
Bad: "Great work on this implementation! I noticed a few potential areas for improvement that might enhance the overall test coverage and robustness."
Better: "This test only checks the happy path. What happens when the API returns a 429? And the selector .btn-submit will break if anyone changes the CSS class — use getByRole('button', { name: 'Submit' }) instead."
Why: name the missing scenario and the brittle line, then the concrete fix. getByRole is
Playwright's recommended user-facing locator — prefer it over CSS-class selectors.
Bad: "While conducting comprehensive regression testing of the user management module, a significant defect was discovered that impacts the core functionality of the system." Better:
Deleting a user doesn't revoke their API tokens — they can still call the API after deletion. Repro: create a user, mint a token,
DELETE /api/users/{id}, thenGET /api/mewith that token. Returns200 OKwith the user's data instead of401 Unauthorized. Found in the user-management API.
Why: lead with the broken behavior, give a 2-line repro and the actual error/status so the fixer can reproduce it in seconds. Drop the passive "was discovered" and the testing-session preamble.
Bad: "This sprint we improved quality, velocity, and confidence. The team demonstrated strong collaboration, technical excellence, and customer focus." Better: "This sprint we fixed the checkout flakiness (was failing 12% of the time, now <1%) and added E2E coverage for the new export feature."
Why: three generic virtues in a tricolon is the loudest AI tell in a sprint summary. Replace with the two things that actually happened.
references/filler-blocklist.md — "It is worth noting that," "Moving forward," "Despite challenges," "The team is committed to," "Stakeholders can feel confident," and the rest.| Format | Lead with | Skip | Also include |
|---|---|---|---|
| Test execution summary | Failure count, where they are, whether they're new | Total counts, pass % (unless asked) | What's not covered yet, what to watch |
| Bug report | What 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 blockers | Methodology, process, team-morale lines | What you'd want to know if you were deciding whether to ship |
| Slack message | The result in 2-3 lines + a link | Greetings, "I wanted to share…" | — |
| Postmortem | What broke, when, how long, who was affected | "This postmortem aims to provide…" | An honest account of what you missed and why |
Slack example — Bad: "Hello team, I wanted to share the results of our latest test execution…" Better: "E2E run passed. 2 flaky failures (both dashboard timeout, known issue). Full report: [link]"
The fact-preservation promise (Core Principle 4) is the load-bearing claim — prove it mechanically, smallest check first:
grep -oE '[0-9]+(\.[0-9]+)?%?|P[0-3]|[0-9]{3}' input.md | sort -u > /tmp/in.txt
grep -oE '[0-9]+(\.[0-9]+)?%?|P[0-3]|[0-9]{3}' output.md | sort -u > /tmp/out.txt
comm -13 /tmp/in.txt /tmp/out.txt # must be empty (allow only obvious rounding, e.g. 97.4 -> 97)references/filler-blocklist.md into BLOCKLIST and grep the output:BLOCKLIST='it('\''?s)? worth noting|moving forward|in conclusion|despite (several )?challenges|the team is (committed|aligned)|stakeholders can feel confident'
grep -iE "$BLOCKLIST" output.md # expect no output; extend BLOCKLIST with the full regex from the referencehumanizer (or avoid-ai-writing)
skill in detect mode. It should flag no remaining em-dash overuse, tricolon, or vague
attribution. If it flags something QA-specific that this skill missed, fix it here too.comm -13 diff in Verification step 1 is empty, rounding aside).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.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, run the global skill 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.references/)© petrkindlmann, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in skills/qa-report-humanizer of petrkindlmann/qa-skills.
Open the folder on GitHubat commit b3bb61b
QA Report Humanizer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| QA Report Humanizer this skillpetrkindlmann/qa-skills | 170 | — | ~4k | Automated safety check: Pass | MIT | |
| PgjevrealZachi/pg-jev | 1.1k | — | ~2.9k | Automated safety check: Pass | Custom licence | |
| Bug Report TriageOrchestratorInc/agent-orchestrator | 13k | — | ~1.8k | Automated safety check: Pass | Apache-2.0 | |
| Triage IssuesClickHouse/clickhouse-java | 1.6k | — | ~904 | Automated safety check: Pass | Apache-2.0 | |
| Issues DeduplicationJetBrains/ideavim | 10k | — | ~1.3k | Automated safety check: Pass | MIT | |
| Simple Issue Descriptionevery-app/open-seo | 23k | — | ~1.2k | Automated safety check: Pass | MIT |
realZachi/pg-jev
Install, configure, query and explain pgjev (the jev PostgreSQL extension that filters, ranks and classifies rows with plain-language conditions via TypeSafe's Jev model).
OrchestratorInc/agent-orchestrator
Helps a reporter describe a bug, searches for duplicates and gathers diagnostic evidence kept separate from a short, human-worded issue draft.
ClickHouse/clickhouse-java
Analyzes a single GitHub issue at a time. An agent skill from ClickHouse/clickhouse-java.
JetBrains/ideavim
Handles deduplication of YouTrack issues. An agent skill from JetBrains/ideavim.
every-app/open-seo
Turn a rough bug report, feature request, support note, or pull request into a short, plain-language issue focused on the problem and desired behavior.
The-OpenROAD-Project/OpenROAD
Reproduces an OpenROAD GitHub bug from an attached tarball and shrinks the failing design with whittle.py so maintainers get a minimal test case.
petrkindlmann/qa-skills
Test for WCAG 2.2 AA compliance with axe-core + Playwright, keyboard navigation audits, screen reader testing, ARIA pattern validation, and legal compliance mapping (ADA, EAA, Section 508).
petrkindlmann/qa-skills
Goal-driven E2E testing where a browser agent (Playwright MCP / computer-use) reads a natural-language goal and explores the app via the accessibility tree to assert outcomes — no pre-written script.
petrkindlmann/qa-skills
Use AI to write NEW test code from specs, PRDs, user stories, code diffs, bug reports, or OpenAPI specs.
petrkindlmann/qa-skills
Test REST and GraphQL APIs with Playwright APIRequestContext, Supertest, or standalone HTTP clients.
petrkindlmann/qa-skills
Design CI/CD pipelines that run test suites. An agent skill from petrkindlmann/qa-skills.
petrkindlmann/qa-skills
Test for regulatory compliance: GDPR/CMP consent verification, Google Consent Mode v2, Global Privacy Control (GPC), CCPA/US state opt-out, EU AI Act Article 50 transparency, Better Ads Standards…
Categories
Remove AI-generated patterns from QA reports, bug reports, test summaries, status updates, and quality communications. QA Report Humanizer is an agent skill from petrkindlmann/qa-skills. Remove AI-generated patterns from QA reports, bug reports, test summaries, status updates, and quality communications.
QA Report Humanizer fits situations like: : humanize report; rewrite QA summary; fix test report; make this sound human.
Run `npx skills add petrkindlmann/qa-skills --skill qa-report-humanizer -a claude-code`. Or copy the skill folder (skills/qa-report-humanizer in petrkindlmann/qa-skills) into .claude/skills/qa-report-humanizer in your project. Claude Code loads it when a task matches its description.
Run `npx skills add petrkindlmann/qa-skills --skill qa-report-humanizer -a codex`. Or copy the skill folder (skills/qa-report-humanizer in petrkindlmann/qa-skills) into .agents/skills/qa-report-humanizer in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add petrkindlmann/qa-skills --skill qa-report-humanizer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/qa-report-humanizer, .gemini/skills/qa-report-humanizer, .github/skills/qa-report-humanizer and .opencode/skills/qa-report-humanizer in your project.
SKILL.md names no scripts, command-line tools or credentials: QA Report Humanizer is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
QA Report Humanizer is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 4k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 517 tokens, read only when the agent opens those files.
Skills that share tags, products or a category with QA Report Humanizer: Pgjev (realZachi/pg-jev, 1.1k stars), Bug Report Triage (OrchestratorInc/agent-orchestrator, 13k stars), Triage Issues (ClickHouse/clickhouse-java, 1.6k stars) and Issues Deduplication (JetBrains/ideavim, 10k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
petrkindlmann (a GitHub user) maintains it in petrkindlmann/qa-skills, which has 170 GitHub stars. The repository holds 45 skills in this directory. The repository was last updated on June 10, 2026.
Source: petrkindlmann/qa-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.