Pwp test
11 systematic skills for Claude Code — structured protocols for debugging, code review, security, refactoring, testing, deployment, and more. No vibes, just discipline.
npx -y skills add shandar/pwp-plugin --skill pwp-testAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Testing strategy and implementation protocol — structured quality assurance that catches real bugs. Use this skill whenever the user asks to write tests, add test coverage, set up a testing strategy, or asks 'how should I test this'. Also use when they say 'add tests', 'write tests for this', 'test coverage', 'what should I test', 'this needs tests', or 'set up testing'. Covers test pyramid, naming conventions, coverage targets, test data factories, and when to test what.
SKILL.md
4.7 KB, as published. Nobody here has run it
PWP Testing Protocol
You are now operating under the Project Workflow Protocol's testing discipline. Follow this structured approach for every testing task.
Context: $ARGUMENTS
Phase 1: Assess Testing Needs
Before writing any test, understand:
- What is being tested? — Business logic, API endpoint, UI component, integration?
- What layer of the test pyramid? — Unit (fast, many), Integration (medium, some), E2E (slow, few)
- What already exists? — Check for existing test files, test utils, and coverage reports
- What's the testing stack? — Jest, Vitest, Playwright, Cypress, React Testing Library, etc.
Phase 2: Apply the Test Pyramid
Distribute testing effort intentionally:
| Layer | What It Tests | Speed | Quantity |
|---|---|---|---|
| Unit | Pure functions, utilities, isolated logic | Fast (ms) | Many |
| Integration | Component interactions, API endpoints, DB queries | Medium (s) | Some |
| E2E | Full user journeys through real UI | Slow (min) | Few |
Always Test
- Business logic and calculations
- Data transformations and parsing
- Edge cases: empty inputs, null values, boundary conditions
- Error paths: what happens when things fail
- API contracts: request/response shapes
- Auth and permission logic
Test With Judgment
- Component rendering (test behavior, not snapshot every div)
- Form validation rules
- State transitions
- Navigation flows
Rarely Test
- Third-party library internals (trust the library, mock the boundary)
- Pure styling (visual regression tools handle this better)
- One-line getters or trivial pass-through functions
- Framework boilerplate
Phase 3: Write Tests
File Naming
Co-locate test files with source:
src/utils/formatCurrency.ts
src/utils/formatCurrency.test.ts ← co-located
src/components/InvoiceTable.tsx
src/components/InvoiceTable.test.tsx ← co-located
__tests__/integration/checkout.test.ts ← integration in dedicated folder
Test Case Naming
Pattern: it('should {expected behavior} when {condition}')
describe('formatCurrency')
it('should format positive numbers with two decimals')
it('should return "$0.00" when given zero')
it('should handle negative numbers with a minus prefix')
it('should throw when given NaN')
Test Data Rules
- Use factories, not fixtures. Generate test data with overridable defaults.
- No production data. Use realistic but synthetic data.
- Isolate state. Each test sets up and tears down its own state.
- Name clearly.
validUser,expiredToken,emptyCart— nottestData1.
Phase 4: When to Write Tests
| Scenario | Approach |
|---|---|
| New business logic | Write tests alongside implementation |
| Bug fix | Write failing test first, then fix (TDD for bugs) |
| Refactoring | Ensure tests exist BEFORE refactoring (safety net) |
| Exploratory/prototype | Skip tests, but flag as untested |
| Performance-critical path | Add benchmark tests with baseline thresholds |
Phase 5: Coverage Targets
| Context | Target | Rationale |
|---|---|---|
| Business logic / utils | 90%+ | Most testable and most critical |
| API routes / controllers | 80%+ | Integration tests cover important paths |
| UI components | 60%+ | Test behavior and interactions |
| Overall project | 70%+ | Meaningful floor that compounds confidence |
Coverage is a compass, not a destination.
Philosophy (non-negotiable)
- Test behavior, not implementation. Tests should survive refactors.
- Tests are documentation. A well-named test suite tells the next dev what the code does.
- Diminishing returns are real. 80% meaningful coverage beats 100% checkbox coverage.
- Flaky tests are worse than no tests. A flaky test erodes trust in the entire suite. Fix or delete.
Verification Checklist
After writing tests, confirm:
- New business logic has corresponding tests
- Bug fixes include a regression test
- Tests are named descriptively (behavior + condition)
- Test data is synthetic, isolated, and clearly named
- No test depends on another test's state
- Flaky tests are fixed or removed
- Coverage targets met for changed code
- Test suite passes with exit code 0