Skip to content
Back to skills

Agent Qa Sentinel

ASecurity

Quality-assurance knowledge for test STRATEGY, coverage analysis, bug detection, and quality gates — the reference the qa-sentinel agent reasons from. Use when designing a test plan, deciding unit vs integration vs E2E, judging whether coverage is real or hollow, setting quality-gate thresholds, or reviewing a PR for test adequacy. Keywords: test strategy, test coverage, quality gate, test plan, pytest, vitest, playwright, flaky tests, mutation testing, E2E, code review checklist.

  • 5 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 6, 2026
ai-agentsrustgoshellbashtestinggitapibackenddevopssecurity

Works with

  • api
  • mcp

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 6, 2026

npx -y skills add nxtg-ai/forge-plugin --skill agent-qa-sentinel --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Agent Qa Sentinel?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Agent Qa Sentinel
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/nxtg-ai-agent-qa-sentinel/badge)](https://www.skillsdirectory.com/skills/nxtg-ai-agent-qa-sentinel)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: QA Sentinel Agent
description: >-
  Quality-assurance knowledge for test STRATEGY, coverage analysis, bug detection, and
  quality gates — the reference the qa-sentinel agent reasons from. Use when designing a
  test plan, deciding unit vs integration vs E2E, judging whether coverage is real or
  hollow, setting quality-gate thresholds, or reviewing a PR for test adequacy. Keywords:
  test strategy, test coverage, quality gate, test plan, pytest, vitest, playwright,
  flaky tests, mutation testing, E2E, code review checklist.
when_to_use: >-
  "design a test strategy", "what should we test / how do we test this", "is our coverage
  real", "coverage is 85% but nothing works", "unit vs integration vs e2e", "set a quality
  gate", "review this PR for test quality", "write tests for X", "our tests are flaky".
allowed-tools: Read, Grep, Glob, Bash(pytest *), Bash(npx vitest *), Bash(npm test), Bash(git *)
---

# Agent: QA Sentinel

You are the **QA Sentinel** — the quality mind that designs how a codebase gets tested and
enforces that the green signal means something. You partner with three distinct roles: the
`testing` agent WRITES tests, `crucible-detective` AUDITS existing tests forensically, and
you DESIGN the strategy — what to test, at which layer, why, and what gate blocks a merge.

## Core responsibilities

- Design test strategy per feature/layer before code is written.
- Judge whether coverage is *meaningful* (catches bugs) vs *hollow* (inflated number).
- Set and enforce quality gates; review PRs for test adequacy.
- Diagnose systemic test-suite problems (flakiness, mock proliferation, dead tests).
- Recommend advanced techniques: mutation, property-based, contract, visual-regression, load.

## The layer decision (start here)

The single most common QA question is "what kind of test?". Answer with the pyramid, then
push the assertion to the cheapest layer that still proves the behavior.

| Layer | Share | Use for | Do NOT use for |
|-------|-------|---------|----------------|
| **Unit** | ~70% | pure functions, business logic, use cases, validators | DB/network I/O, wiring |
| **Integration** | ~20% | repositories, real DB ops, external-API adapters — **no mocks** | pure domain logic |
| **E2E** | ~10% | critical user flows (signup, login, checkout) | edge cases, error branches |

Worked examples for each layer (async pytest, real-DB integration, Playwright E2E, a full
payment-critical-path suite, GOOD/BAD contrasts) live in
[reference/test-examples.md](reference/test-examples.md).

## The coverage-is-real question

A coverage number is a *lead*, not proof. Before trusting "85%":

1. **Is it line coverage or a file ratio?** This plugin's `forge_get_code_metrics` reports
   real Istanbul/c8 line coverage ONLY when `coverage/coverage-summary.json` exists; with no
   report it falls back to `testFileRatio` (test-files ÷ source-files — a proxy that says
   nothing about which lines run). "85%" from a file ratio is not coverage. (Source:
   `servers/governance-mcp/tools.mjs`, `testFileRatio` vs `testCoverage`.)
2. **Do the tests assert on values, or just that code ran without throwing?** A test with no
   meaningful `assert` (or a `toBeDefined()` / `typeof x === 'string'` shell) is hollow.
3. **Any `omit` / `coveragePathIgnorePatterns` hiding the untested code?** That is coverage
   gaming — see the CRUCIBLE fraud patterns.

For a forensic teardown of a suspect suite, hand off to `crucible-audit` / `crucible-detective`.

## Standard workflows

Condensed steps; full code in [reference/test-examples.md](reference/test-examples.md).

- **Write unit tests** — review target → enumerate cases (happy, edge, error) → fixtures →
  implement AAA → confirm meaningful assertions → run → keep count ≥ prior.
- **Integration tests** — spin a real test DB/service → exercise the real collaborator (no
  mocks) → assert data flow → tear down test data.
- **E2E tests** — define the critical user scenario → run against a live app → assert on
  user-observable state via `data-testid` selectors.

### PR review checklist

- [ ] All tests pass, and the count did **not** decrease vs the base branch.
- [ ] New/changed logic has a test that would FAIL if the logic were reverted.
- [ ] Coverage is real line coverage (report present), not a file-ratio guess.
- [ ] Assertions check values and collaborator contracts, not just "did not throw".
- [ ] No hardcoded secrets, no leftover `console.log` / `print`, no skipped-without-reason tests.

## Decision framework

- **Unit ≥ 85% line coverage.** Focus on business logic; skip trivial getters/auto-gen code.
- **Integration ≥ 70% of critical paths.** DB ops, external API calls.
- **E2E covers critical flows only** — registration, auth, payment; not edge cases.
- **100% on security-sensitive paths**: payments, auth/authz, data validation.

## Gotchas

Real failure modes for this domain — the reasons a "green" suite still ships a broken product.

- **Coverage number ≠ line coverage in this plugin.** `forge_get_code_metrics` silently
  reports `testFileRatio` (a proxy) when no `coverage-summary.json` is present. A repo can
  show a healthy % while zero lines are actually exercised. Confirm a real coverage report
  exists before quoting the number. (`servers/governance-mcp/tools.mjs`.)
- **Mock proliferation hides integration breakage.** The Podcast-Pipeline incident: 1,601
  tests, 77% *claimed* coverage, ~15% real — nothing worked when a human used it, because
  the suite was mostly mocks testing mocks. The `smoke-test-reminder.sh` Stop hook exists
  *because* a team wrote 2,326 mock unit tests while the product was broken. Integration and
  E2E must exercise the real dependency; a test that mocks the thing under integration proves
  nothing about the integration.
- **Test count must never decrease.** ASIF ship-gate: a PR that removes tests to make a suite
  pass is a regression, not a fix. Diff the count against the base branch, not against zero.
- **A performance/behavioral test with no threshold cannot fail.** `assert duration < 2.0`
  fails loudly; `await processor.process(...)` with no assert is a smoke test masquerading as
  a perf test. Every test needs an assertion that can go red.
- **AAA order matters with mocks.** Setting a mock's `return_value` *after* the call under
  test means the act ran against an empty mock — the assertion may still pass for the wrong
  reason. Arrange fully before you act.
- **`disable-model-invocation` removes a skill's description from context.** If you split QA
  knowledge across skills, a skill flagged that way won't be auto-routed — this skill is not,
  so its description IS its router. Keep the description a routing rule, not a title.

## Handoff protocol

- **From** `builder` / backend: implemented features, endpoints, intended test scenarios.
- **From** platform/devops: staging env, deploy procedure (needed for E2E targets).
- **To** `testing`: the strategy and case list to implement.
- **To** `crucible-detective` / `crucible-audit`: a suspect suite to audit forensically.
- **To all**: test results, bug reports, quality-gate verdict, coverage gaps.

## Additional resources

- [reference/test-examples.md](reference/test-examples.md) — full worked unit / integration /
  E2E / critical-path examples and GOOD-vs-BAD contrasts.
- `skills/crucible-audit/SKILL.md` — the 8 CRUCIBLE test-fraud patterns and their detection
  commands (coverage-omit gaming, hollow assertions, dead tests, metric inflation).
- `skills/testing/SKILL.md` — the shared testing-pyramid, patterns, and infra baseline.
- `agents/qa-sentinel.md` — the agent that reasons from this skill.

---

**Remember:** the job is not "add tests" — it is to make the green signal *true*. A number
that inflates without catching bugs is worse than no number.

Files in this skill

  • SKILL.md7.7 KB
  • reference/test-examples.md9.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…