Skip to content
Testing
Skill

/test-cases

Test case authoring per QA best practices, with CSV export for Zephyr Scale import (Option 1) or direct creation via your TMS MCP. Use when the user asks to generate, write, or prepare test cases, checklists, or CSV for TMS import.

From plugin
paranoid-qa
165 skills

Claude Code

$ npx -y skills add akovalion/paranoid-qa --skill test-cases --agent claude-code

SKILL.md

test-cases.SKILL.md
name: test-cases
description: Test case authoring per QA best practices, with CSV export for Zephyr Scale import (Option 1) or direct creation via your TMS MCP. Use when the user asks to generate, write, or prepare test cases, checklists, or CSV for TMS import.
allowed-tools:
  — Read
  — Write
  — AskUserQuestion

Write test cases per the rules below. First prepare them in an md file for validation, then produce the CSV for import (or create directly via MCP, section 13).

Account for the requirements logic and existing mockups. On mismatch between mockup and implementation — log a question for the analyst.

0. Source completeness and honest limitations: — Before generating, collect ALL sources and track their status explicitly. In the final report include a source table: ticket / ticket attachments / linked issues / wiki (Confluence) / Figma node dump / visual review of ALL frames / Figma comments / implementation (if any) — for each: studied | not studied | what blocked it. "Not studied" with no reason and no workaround plan is an unacceptable report state. — Hit a tool limitation (truncated MCP response, unreachable file, crashed subagent)? Do NOT degrade silently: tell the user immediately and propose a workaround. Typical example: tracker MCP truncates ticket attachments by response size — the same files often live on linked wiki pages, where a tool that saves the file to disk in full can fetch them (for Confluence — `confluence_download_attachment`). — A subagent's self-report ("read everything, no gaps") is not evidence: spot-check the facts your expected results are built on (texts, field sets, labels, NUMBERS — sizes, spacing, gap) against the primary source (frame visual, file, live system). — Figma comments are not available via MCP (`get_figma_data` does not return them): BEFORE generating test cases, explicitly ask the user for the mockup comments (as text or screenshots) — they often carry corrections on top of the mockup (error texts, removed fields, final wording). Until you have them, that source stays open, and the report says so. — When the scope is defined by a spec document — tie every test case to a specific spec item (a "spec item" column in the coverage table). A check born only from the mockup or a heuristic does not become a test case — it goes to "Questions for the analyst" / "observations outside the spec". The mockup is a source of exact values for spec items, not a generator of new checks.

1. Test case format: — Name — short and clear (object: essence of the check, e.g. "Calendar opening", "List pagination"). No URLs, selectors, or technical details in the name (they belong in steps/objective). Do not put TC-(test case number) in the name. — Objective: 1-2 lines, up to ~200 characters - what is checked and which defect it guards against ("Regression of PROJ-123"). For an automated case, a second line "Autotest: tests/…spec.ts". Defect history, why the data was chosen, browsers, the state "as of a date", what the autotest does not check - belong in the spec comment and the linked tickets, not in the objective. A decision recorded neither in the tracker nor in the code - one sentence. — Test case preconditions (if applicable) — Steps (maximally detailed, atomic) — Expected result (state it only after logically significant steps) — Priority (High / Normal / Low) — Type (UI / Functionality / Integration — or the values used in your project) — Reference (link or mockup name from Figma/PDF, specific element) — if applicable — Use the EXACT names of fields, buttons, headings, placeholders as in the implementation/mockups/spec — If the mockup labels a field "Issued by?" — write "Issued by?", not "Issued by (ID document)" — Check: colons, question marks, letter case, spaces in labels — If names differ between requirements and mockups - log it as a question for the analyst

2. Steps: — One action per step — Always spell out: • "Click the "Button name" button" • "Enter the value "…" in the "Field name" field" • "Select the value "…" from the "Name" dropdown" • "Hover over the "…" element" • "Open the page at URL …" — Avoid shorthand references: ❌ "similarly", "repeat the steps", "as in the previous test case", ❌ "select values per the test case name" Each step must read independently of other test cases. — Everything the tester copies goes into the step's Test Data (`testData`), ready to paste: • a GET request - as a full link that opens in the browser. GraphQL accepts GET too: `https://…/graphql?query=` + the query through encodeURIComponent. An unreadable encoded link gets a short link text ("GraphQL - fields of item 123"), the full URL lives only in href; • POST/PUT - `curl -i` on one line (without `-i` the status is not in the output, while the expected result requires it): full URL, the headers you need, the body (`-F` for multipart, `--form-string` for a JSON string inside a multipart field, `-H 'Content-Type: application/json' -d '…'` for JSON); a unique email via `$(date +%s)` right inside the curl; a chain of requests - through a shell variable in the same terminal; a boundary length - through `printf` (`'$(printf '%0101d' 0 | tr 0 A)'` gives 101 letters A), not a typed run of 101 characters: such a run comes out one off when copied, and the boundary stops being checked; • form field values - as "Field: value" lines separated by `<br />`; • a DevTools Console snippet - on one line, its output goes into the expected result. A heavy response or a check over a whole list - a snippet run on the opened link that prints the verdict itself: `fetch(location.href).then(r=>r.json()).then(d=>…)`.

Read more
@akovalion
Ships withparanoid-qa

Claude Code skills that turn an AI agent into a meticulous QA engineer. Your AI says "everything works, tests are green." Did it actually check?

Stars on GitHub

Momentum

stars in total
16
Star history of akovalion/paranoid-qa on GitHub, a chart by star-history.com

Other skills on paranoid-qa.

bug-report

bug-report

Quick bug report in Jira. Invoke via /bug-report. Gathers data, shows a preview, creates the defect in Jira after confirmation.

interview

interview

Structured requirements gathering through a series of questions. Use when the task is described verbally/informally (not from an…

test-review

test-review

Review of just-written or modified autotests against TypeScript + Playwright best practices (per official documentation) and your…

testing

testing

Universal testing framework (frontend + backend) — a meticulous run of any testing task with evidence discipline. Use when you…

More skills from other plugins.

api-review

api-review

Produce the "Playwright 1.xx API Review" artifact for a range of commits - the public API additions and the breaking or behavior…

@microsoft@microsoftInstall Skill
add-e2e-selectors

add-e2e-selectors

Add reliable @grafana/e2e-selectors to interactive elements and key containers in the Grafana frontend. Use when adding e2e…

grafana3d78k
@grafana@grafanaInstall Skill
promptfoo-evals

promptfoo-evals

Write, refine, run, and QA promptfoo evaluation suites: promptfooconfig.yaml, prompts, providers, vars, tests, assertions,…

promptfoo11d27k
@promptfoo@promptfooInstall Skill
deepeval

deepeval

DeepEval evaluation workflow for AI agents and LLM applications. TRIGGER when the user wants to evaluate or improve an AI agent,…

@confident-ai@confident-aiInstall Skill

Questions about test-cases.

Which coding agents can use test-cases?
test-cases installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.