Install any skill in seconds. Free to start, no credit card required.
Get Started Free →nwave-ai/nw-distill
Acceptance test creation methodology for the DISTILL wave. Domain knowledge for the acceptance designer agent: port-to-port principle, prior wave reading, wave-decision reconciliation, graceful degradation, and document back-propagation.
Passed 15 of 18 test cases with the skill, and 9 of 18 without it.
and 7 more in the full report
7 fixed11 passed either way4 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 7 test cases the skill fixed. Same model, same prompt, with and without the skill.
Before handing off scaffolds and acceptance scenarios to the implementation wave, we run `pytest tests/billing/acceptance/`. One test fails with `ImportError: cannot import name PaymentProcessor`. How is this failure classified?
| Checked | Without skill | With skill |
|---|---|---|
| The test failure is classified as BROKEN rather than RED | Missed | Passed |
| The implementation handoff is blocked until the missing import is resolved | Passed | Passed |
The instructions your model reads when the skill loads.
This skill provides the acceptance designer's methodology for creating acceptance tests. The orchestrator controls the overall flow (agent dispatch, review gate, handoff) -- this skill focuses on HOW to create good acceptance tests.
Code examples in this skill use Python syntax for illustration only. They are NOT prescriptive about target language. nWave is language-agnostic per the "genericity and agnosticism" mandate (2026-05-24).
Before authoring ATs, detect the target project's language from these manifest files (in order):
package.json → TypeScript / JavaScript (jest, vitest, cucumber-js, playwright)Cargo.toml → Rust (cargo test, proptest, cucumber-rust)go.mod → Go (testing, ginkgo, godog)pyproject.toml / setup.py / Pipfile → Python (pytest, pytest-bdd, hypothesis)pom.xml / build.gradle → Java / Kotlin (JUnit5, Cucumber-JVM, jqwik)*.csproj / *.fsproj → C# / F# (xUnit, SpecFlow, FsCheck)Gemfile → Ruby (RSpec, Cucumber-Ruby)Package.swift → Swift (XCTest, swift-testing)When the target language is NOT Python:
from pytest_bdd import ..., from hypothesis import ..., import dataclasses) with target-language equivalents (import { Given, When, Then } from '@cucumber/cucumber', import * as fc from 'fast-check', etc.).def f(x: int) -> str) with target-language type syntax.tests/, __init__.py) with target conventions (test/, __tests__/, no init files for TS/JS).class Customer:, def given_port():) with target equivalents.Project conventions ALWAYS WIN over examples below. If the user's repo has 50 TS files using describe()/it() blocks and zero Python files, ATs MUST be TypeScript with describe()/it() — never Python pytest-bdd regardless of how authoritative this skill's examples look.
Empirical anchor: skill examples being Python-only caused LLM to infer Python conventions universal, leading to Python code emitted in greenfield TS project. Connects [[feedback_language_adapter_plugin_architecture_2026_05_24]] (genericity mandate) + F-LANGUAGE-ADAPTER-PLUGIN-INFRASTRUCTURE epic.
DISTILL produces ALL acceptance tests as scaffolded RED (skip/pending markers). DELIVER's 3-phase cycle (RED / GREEN / COMMIT, per ADR-025) does NOT re-author ATs in RED — it only unskips the scaffolds and writes PBT unit tests. Wave separation: DISTILL = "what should the system do" (ATs), DELIVER = "how" (PBT unit + impl). The pre-DELIVER fail-for-right-reason gate (described in this skill) becomes the RED phase entry/exit gate in DELIVER per ADR-025 D2.
Provenance: feature lean-wave-documentation — D2 (schema-typed sections), D10 (one-line expansion descriptions). Tier-1 [REF] sections (always emitted) + Tier-2 EXPANSION CATALOG items (lazy, on-demand) are the two output bands. The .feature file remains the SSOT for scenarios; the wave-delta sections are pointers + structured summaries. Full contract: nWave/skills/nw-density-resolution-contract/SKILL.md.
Under ## Wave: DISTILL / [REF] <Section> headings:
test cases passed, vs 9 / 18 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.