nw-ab-critique-dimensi…
Review dimensions for validating agent quality - template compliance, safety, testing, and priority validation
Property-based testing strategies, mutation testing, shrinking, and combined PBT+mutation workflow for test quality validation
$ npx -y skills add nWave-ai/nWave --skill nw-property-based-testing --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/nw-property-based-testingContext preview
The summary Claude sees to decide when to auto-load this skill.
Property-based testing strategies, mutation testing, shrinking, and combined PBT+mutation workflow for test quality validation
name: nw-property-based-testing description: Property-based testing strategies, mutation testing, shrinking, and combined PBT+mutation workflow for test quality validation user-invocable: false disable-model-invocation: true
> Deferred to Phase 2.25: Mutation testing runs ONCE per feature as final quality gate at orchestrator Phase 2.25 (after all steps complete). Do NOT run mutation testing during inner TDD loop.
Instead of examples ("given X, expect Y"), write properties ("for all valid inputs, condition Z holds"). Framework generates hundreds/thousands of inputs checking property. Dramatically expands test coverage.
1. **Invariants**: "for all inputs, condition holds" (sorted list is ordered, balance >= 0) 2. **Roundtrip**: "encode then decode = original" (serialize/deserialize, compress/decompress) 3. **Oracle**: "compare against reference implementation" (optimized vs correct-but-slow) 4. **Metamorphic**: "different operations, same result" (add(a,b)==add(b,a), filter can't increase size)
When property fails, framework auto-finds minimal failing input. Dramatically accelerates debugging. Algorithm: find failing input -> try simpler variants -> if still fails, use as new candidate -> repeat.
| Language | Framework | |----------|-----------| | Python | Hypothesis | | JavaScript/TypeScript | fast-check | | Haskell | QuickCheck | | Rust | quickcheck | | Java | jqwik | | C# | FsCheck |
Adopted by Amazon, Volvo, Stripe, Jane Street (ICSE 2024 study).
HIGH value: algorithms | data structures | serialization | business rules (validation, calculations) | protocols/state machines | **unbounded input domain** with universal invariant. LOW value: simple CRUD | UI logic | external API integrations | **closed-world finite domain** (use parametrize instead — see falsifier-gate below). PBT complements example-based testing, doesn't replace it.
If the input domain is **finite + enumerable** (N known files, M known event types, K known skill names, fixed Python versions), PBT is the wrong tool:
**Decision rule**: enumerate the domain. If listable (`[a, b, c, ...]`), use parametrize-collapse or dict-iteration (see `nw-test-optimization` §3.1, §3.2). Reserve PBT for "for all X in DOMAIN, P(X) holds" where DOMAIN is infinite (all strings, all integers, all valid JSON, all sorted lists).
**Empirical anchor 2026-05-18**: 155-file closed-world skill registry PBT migration was correctly aborted at recon stage by the falsifier-gate. Solution: set-difference parametrize-collapse (commit `c2637f6c8`), 5.42s → 0.71s (8.9× faster). Mass-migrating closed-world tests to PBT would have made the suite **slower**, not faster.
See `nw-test-optimization` §4-bis Paradigm-Match Decision Rule for the full shape-to-paradigm table.
1. Start with example-based TDD for specific cases (drives detailed design) 2. Once basic implementation works, write properties to generalize 3. If property fails: found bug or need refined implementation 4. Refactor freely - properties verify behavior preservation
Properties = higher-level spec that survives refactoring better than examples.
Evaluates test suite quality by introducing artificial bugs (mutations) and checking if tests catch them. Mutation score = killed mutants / total mutants. Stronger metric than code coverage.
| Score | Quality | |-------|---------| | < 60% | Weak suite, significant gaps | | 60-80% | Moderate, some gaps | | > 80% | Strong, few gaps |
Target: 75-80% minimum. Not all survivors indicate bad tests (equivalent mutants exist).
Change == to != | + to - | remove method call | change constant | modify loop boundary | alter comparison.
| Language | Tool | |----------|------| | Java | PIT | | JavaScript/TypeScript/C# | Stryker | | Python | mutmut, Cosmic Ray |
Computationally expensive. Use incremental: on changed code in PRs, full codebase weekly.
1. Write example-based tests (TDD) -> cover known scenarios 2. Apply mutation testing -> identify assertion gaps -> write more tests 3. Add PBT for complex logic -> cover input space systematically 4. Mutation testing again -> verify properties are comprehensive
Quality ratchet: each technique exposes gaps others miss. Prioritize critical paths and complex algorithms.
Modern frameworks allow configuring example count per context.
Combines the delta-first paradigm (see `nw-tdd-methodology::Delta-First Test Paradigm`) with Hypothesis shrinking to cover production code that branches on input shape.
Location: `nwave_ai/state_delta/strategies/path_strategy.py`
Generates realistic PATH string shapes covering 4 production branches: 1. Empty string (no PATH set) 2. `$HOME/bin` literal (unexpanded shell variable) 3. Legacy fallback path (`/usr/local/bin` only) 4. Idempotent case (target already present in PATH)
**Lazy-import boundary**: `hypothesis` is NOT imported at `import nwave_ai.state_delta.matcher` time. It is loaded only when `path_strategy()` is called. This is verified by a subprocess-isolated test at `tests/state_delta/unit/test_lazy_import.py` — importing the matcher in a hypothesis-free environment must no
AI agents that guide you from idea to working code, with human judgment at every gate. nWave runs inside Claude Code. It breaks feature delivery into seven waves (discover, diverge, discuss, design, devops, distill, deliver).
Repo: nWave-ai/nWave
Review dimensions for validating agent quality - template compliance, safety, testing, and priority validation
Review dimensions for validating agent quality - template compliance, safety, testing, and priority validation
Review dimensions for acceptance test quality - happy path bias, GWT compliance, business language purity, coverage completeness, walking skeleton…
Detailed 5-phase workflow for creating agents - from requirements analysis through validation and iterative refinement
5-layer testing approach for agent validation including adversarial testing, security validation, and prompt injection resistance
Architectural style selection decision matrices, trade-off analysis, structural enforcement rules, and combination patterns. Load when choosing or evaluating…