Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Turn a requirement or user story into clear, executable test cases. Use when asked to write test cases, test scenarios, a test suite for a feature, or to derive tests from acceptance criteria. Produces structured test cases — preconditions, steps, test data, expected results — across happy path, edge cases, and negative cases, plus a coverage note, so a tester (or automation) can run them without guessing.
.claude/skills/mohitagw15856-test-case-writer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 9% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 41% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 21% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 20% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 18% | 0% |
Good test cases are unambiguous and complete: anyone can run them and get the same result, and together they cover the ways the feature can succeed and fail. This skill derives test cases from a requirement or user story — happy path first, then the edge and negative cases that find real bugs — each written so it's directly executable.
Given a user story or a one-line feature description, write the test cases anyway — infer the acceptance criteria, boundaries, and likely failure modes, labelling assumptions. Always include edge and negative cases, not just the happy path. Never hand back questions instead of cases.
Ask for these only if they aren't already provided (else infer and label):
A short intro line, then cases in a table (or per-case blocks for complex flows):
| ID | Title | Type | Preconditions | Steps | Test data | Expected result | Priority | |---|---|---|---|---|---|---|---| | TC-01 | Valid login | Happy path | user exists | 1. … 2. … | valid creds | logged in, lands on … | High | | TC-02 | Wrong password | Negative | user exists | … | bad password | error shown, not logged in | High | | TC-03 | Empty fields | Negative/validation | — | … | blank | inline validation | Med | | TC-04 | Max-length input | Edge/boundary | — | … | boundary value | accepted/handled | Med |
Cover, deliberately: happy path, boundary/edge (empty, max, min, just over/under limits), negative (invalid input, wrong state, unauthorised), and any business-rule cases.
End with a coverage note: which acceptance criteria/requirements each case maps to, and any gaps or risks to flag for review.
Test-design practice — requirement-derived cases with boundary-value and negative testing, atomic executable steps, and traceability to acceptance criteria.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 32,925 | 27,685 | -16% | 1 | 1 | 0% | 4,289 | 4,275 | -0% | 0 | 0 | — |
case-02 | fail→pass | 24,895 | 22,370 | -10% | 1 | 1 | 0% | 3,369 | 3,661 | +9% | 0 | 0 | — |
case-03 | pass→pass | 17,931 | 25,663 | +43% | 1 | 1 | 0% | 3,225 | 4,903 | +52% | 0 | 0 | — |
case-04 | fail→pass | 24,185 | 31,521 | +30% | 1 | 1 | 0% | 3,287 | 4,647 | +41% | 0 | 0 | — |
case-05 | fail→fail | 17,133 | 19,116 | +12% | 1 | 1 | 0% | 3,270 | 4,423 | +35% | 0 | 0 | — |
case-06 | pass→pass | 29,139 | 25,299 | -13% | 1 | 1 | 0% | 3,451 | 3,873 | +12% | 0 | 0 | — |
case-07 | pass→pass | 27,836 | 20,365 | -27% | 1 | 1 | 0% | 3,205 | 3,616 | +13% | 0 | 0 | — |
case-08 | fail→pass | 18,999 | 23,089 | +22% | 1 | 1 | 0% | 3,443 | 4,152 | +21% | 0 | 0 | — |
case-09 | fail→pass | 23,149 | 22,789 | -2% | 1 | 1 | 0% | 3,401 | 4,098 | +20% | 0 | 0 | — |
case-10 | pass→pass | 21,987 | 22,812 | +4% | 1 | 1 | 0% | 3,220 | 4,127 | +28% | 0 | 0 | — |
case-11 | fail→pass | 22,727 | 21,347 | -6% | 1 | 1 | 0% | 3,226 | 3,801 | +18% | 0 | 0 | — |
case-12 | fail→pass | 25,590 | 22,974 | -10% | 1 | 1 | 0% | 2,905 | 4,029 | +39% | 0 | 0 | — |
case-13 | pass→pass | 28,641 | 22,188 | -23% | 1 | 1 | 0% | 3,410 | 4,092 | +20% | 0 | 0 | — |
case-14 | pass→pass | 23,760 | 20,152 | -15% | 1 | 1 | 0% | 2,773 | 3,547 | +28% | 0 | 0 | — |
case-15 | pass→pass | 35,998 | 30,694 | -15% | 1 | 1 | 0% | 3,314 | 4,566 | +38% | 0 | 0 | — |
case-16 | fail→pass | 22,955 | 19,144 | -17% | 1 | 1 | 0% | 3,131 | 3,287 | +5% | 0 | 0 | — |
case-17 | fail→fail | 29,273 | 24,383 | -17% | 1 | 1 | 0% | 3,888 | 3,832 | -1% | 0 | 0 | — |
case-18 | fail→fail | 17,143 | 20,272 | +18% | 1 | 1 | 0% | 3,030 | 3,550 | +17% | 0 | 0 | — |
case-19 | pass→pass | 23,047 | 22,249 | -3% | 1 | 1 | 0% | 3,152 | 3,760 | +19% | 0 | 0 | — |
case-20 | pass→fail | 18,628 | 23,195 | +25% | 1 | 1 | 0% | 1,872 | 4,167 | +123% | 0 | 0 | — |
case-21 | pass→fail | 17,848 | 22,770 | +28% | 1 | 1 | 0% | 2,509 | 4,036 | +61% | 0 | 0 | — |
case-22 | pass→pass | 15,921 | 11,878 | -25% | 1 | 1 | 0% | 1,543 | 2,274 | +47% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +23 percentage points is the difference between those two pass rates over the 22 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.