From dev-workflow-skills
Use when designing acceptance documents from frozen requirements (for runtime products or static artifacts like skills/docs/articles) and running acceptance review cycles, including 验收设计/验收文档/验收评审/skill项目验收/产物型项目验收
How this skill is triggered — by the user, by Claude, or both
Slash command
/dev-workflow-skills:acceptance-designerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill owns workflow Steps 4-6: turning frozen requirements into the formal acceptance baseline. It defines what must be formally accepted before the project can move downstream into implementation and delivery. The acceptance surface may be runtime (Variants A/B) or fixture-based for static artifacts (Variant C; see `references/variant-c-skill-projects.md`).
This skill owns workflow Steps 4-6: turning frozen requirements into the formal acceptance baseline. It defines what must be formally accepted before the project can move downstream into implementation and delivery. The acceptance surface may be runtime (Variants A/B) or fixture-based for static artifacts (Variant C; see references/variant-c-skill-projects.md).
Acceptance cases produced under this skill are structured for mechanical verification: every step pairs an action with tool-checkable expected observations, every case declares an outcome rule with deterministic priority, and every case classifies whether it can be run by AI autonomously, by a human observer, or by both.
Use these assets for the full grammar and repeatable checks:
references/output-artifacts.md — full authoring grammar: observation vocabulary, Flow primitives, Condition sub-grammar, Pass-checklist scopes, outcome templates, State Catalog variants, case skeletons, required-field lists.references/boundary-examples.md — decisions for edge cases and scope boundaries versus other skills.references/illustrative-examples.md — non-normative worked examples on a hypothetical toy product, illustrating each case tier.references/variant-c-skill-projects.md — Variant C (fixture-based / artifact-only) authoring rules: when to use, State Catalog template, AI-tier observation patterns for static artifacts, Pass checklist examples, LLM non-determinism recipes, dogfood case.Read skills/workflow-protocol/SKILL.md, then read repository-root workflow-project.yaml, then read the progress dashboard at paths.progress before touching stage work.
Use this skill when the human wants to:
paths.acceptanceDo not use this skill for requirement clarification, architecture design, detailed design, coding, or E2E execution.
paths.requirementspaths.acceptance, if presentpaths.acceptance<from paths.acceptance parent>/reviews/acc-review-{nn}.mdreferences/variant-c-skill-projects.md.default-actor and verifier (see "Classifying a Case" below).references/output-artifacts.md.Every case declares two independent classification fields:
default-actor (who drives each step) — one of:
ai — AI executor runs steps autonomouslyhuman — a human performs the action (typing deterministic CLI commands, observing UI, judgment-requiring interaction)system — no external action; the product or workflow auto-advances. Always pairs with kind=wait on the step.Individual steps may override with (actor=<value>). Gate-typing humans use actor=human — there is no separate human-gate value.
verifier (which observation tier the expected bullets use) — one of:
ai — every expected bullet uses AI-tier modes (exit-code, file-field, log-line, etc.)human — every expected bullet uses human-tier modes (visual, perceived, quality, exploratory)hybrid — mix; case splits into AI block + Human blockKey rule: actor and verifier are independent. A case with human-typed gates and all AI-tier observations is verifier: ai, not hybrid. Tier is determined solely by observation modes, not by who typed a command.
Why human? is a required header field when verifier ∈ {human, hybrid}: one line justifying why no AI-tier mode suffices. Reviewers may challenge.
(r1))default-actorverifierStarting state (from the State Catalog)X track IDs)verifier: aiFlow block using only the 5 declared primitives (step, loop-until, if/else, for-each, set-outcome)Pass checklist with scoped bullets (per-step rollup / case-aggregate / end-state)Outcome rule in the standard AI priority-list formDeclared branches when the outcome rule contains rule 3 (partial-coverage); omitted otherwiseverifier: humanWhy human?, Estimated effort, Observer qualificationSetup for the observer, What to observe (human-tier modes only), What to tryPass signals, Fail signals, Inconclusive signalsOutcome rule in the standard human priority-list formDeclared branches when the outcome rule contains rule 3; omitted otherwiseRecordingverifier: hybridWhy human?AI block (Flow) using AI-tier observation modesAI pass checklist with scoped bulletsHuman block with What to observe / What to try / Pass signals / Fail signals / Inconclusive signals / RecordingOutcome rule in the standard hybrid priority-list form (references both blocks)Declared branches when the outcome rule contains rule 3; omitted otherwiseOverall pass: line — subsumed by the case-level outcome rule## 3. State Catalog declares the variant (A, B, or C) in its heading. No mixing variants in one document.references/output-artifacts.md).kind=wait steps must have within Ns on every expected bullet.set-outcome is legal only as set-outcome inconclusive-human-needed. It is a terminal, short-circuiting primitive; Pass-checklist bullets are not evaluated when it fires. First-reached wins if multiple paths could fire.inconclusive-human-needed is emitted only via declared channels (set-outcome in AI Flow, or Inconclusive signal in human block). Environment faults unguarded by an explicit inconclusive branch surface as fail.Declared branches exercised-conditions allow at-least-once, count-matching, or plain <observation>; for-all-iterations is not allowed. For verifier: human cases, only plain human-tier <observation> is legal (no Flow-level <scope> exists).X track ID. Unbranched requirements track to level 2; branched requirements track to level 3 must-have items.(r1)). When modified in a later release: (r1→r3 modified) — origin and latest only, never chain intermediates. Tags go on individual cases, not group headers.process-running / socket-listening / log-line) are not used. Cleanup defaults to rm -rf <output-dir>/<case-id>; fixtures are read-only and never reset. Run-lock is optional. See references/variant-c-skill-projects.md for the full template (State Catalog, Acceptance Preparation bindings, Pass checklist recipes).Three skeletons follow. Full expanded versions with all optional fields live in references/output-artifacts.md.
#### <case-id> <title> (<release-tag>)
**default-actor:** ai
**verifier:** ai
**Starting state:** S<n> (<parameters if any>)
**Extra preconditions:** <case-specific delta, if any>
**Placeholders:** (optional)
- `<name>` = <literal | list | file-field ref>
**Declared branches:** (required iff outcome rule contains rule 3)
- `<branch-id>`: <exercised-condition>
**Cleanup:** <reset target>
**Flow:**
- <P1..P5 primitives>
**Pass checklist:**
- [ ] every expected bullet in the Flow held
- [ ] (aggregate) <Scope-2 bullets>
- [ ] end state: <Scope-3 bullet>
**Outcome rule (priority order, first match wins):**
1. If `set-outcome inconclusive-human-needed` fired during the Flow: `inconclusive-human-needed`
2. Else if any Pass-checklist item failed: `fail`
3. Else if any declared branch's exercised-condition did not hold: `partial-coverage` (include iff `Declared branches` is present)
4. Else: `pass`
**Tracked requirements:** <req ids>
#### <case-id> <title> (<release-tag>)
**default-actor:** human
**verifier:** human
**Why human?** <one-line justification>
**Starting state:** S<n>
**Estimated effort:** <minutes>
**Observer qualification:** <who can do this>
**Declared branches:** (optional; required iff outcome rule contains rule 3)
- `<branch-id>`: <plain human-tier observation>
**Setup for the observer:**
<numbered preparation steps>
**What to observe (human-tier modes only):**
- <visual | perceived | quality | exploratory bullets>
**What to try:**
<bounded interactions to exercise>
**Pass signals:**
<conditions under which the case passes>
**Fail signals:**
<conditions under which the case fails>
**Inconclusive signals:**
<conditions under which the observer cannot reach a pass/fail verdict>
**Outcome rule (priority order, first match wins):**
1. If any Inconclusive signal was observed: `inconclusive-human-needed`
2. Else if any Fail signal was observed: `fail`
3. Else if any declared branch's exercised-condition did not hold: `partial-coverage` (include iff `Declared branches` is present)
4. Else: `pass`
**Recording:**
- Notes at `<acceptance-parent>/human-runs/<case-id>-<YYYYMMDD>.md`
- Attach screenshot or recording for any fail or inconclusive signal.
**Tracked requirements:** <req ids>
#### <case-id> <title> (<release-tag>)
**default-actor:** ai
**verifier:** hybrid
**Why human?** <one-line justification for the human block>
**Starting state:** S<n>
**Extra preconditions:** <case-specific delta, including any {var} bindings used below>
**Placeholders:** (optional)
**Declared branches:** (required iff outcome rule contains rule 3)
- `<branch-id>`: <exercised-condition>
**Cleanup:** <reset target>
**AI block (Flow):**
- <P1..P5 primitives using AI-tier observation modes>
**AI pass checklist:**
- [ ] every AI-block expected bullet held
- [ ] (aggregate) <Scope-2 bullets>
- [ ] end state: <Scope-3 bullet>
**Human block:**
- What to observe: <human-tier bullets>
- What to try: <bounded interactions>
- Pass signals: <...>
- Fail signals: <...>
- Inconclusive signals: <...>
- Recording: <notes path>
**Outcome rule (priority order, first match wins):**
1. If `set-outcome inconclusive-human-needed` fired in the AI Flow OR any Human Inconclusive signal was observed: `inconclusive-human-needed`
2. Else if any AI-pass-checklist item failed OR any Human Fail signal was observed: `fail`
3. Else if any declared branch's exercised-condition did not hold: `partial-coverage` (include iff `Declared branches` is present)
4. Else: `pass`
**Tracked requirements:** <req ids>
change_history.<from paths.changes_dir>/cr-{nn}.md, return to the requirement stage, then re-enter acceptance after the upstream loop completes.workflow-protocol.set-outcome is only set-outcome inconclusive-human-needed; no other valueDeclared branches present iff outcome rule contains rule 3paths.acceptance exists.default-actor, verifier, Starting state, Tracked requirements, plus tier-specific required fields.set-outcome (if any) is only set-outcome inconclusive-human-needed.X ID.Declared branches present iff outcome rule contains rule 3.workflow-protocol (dashboard + history).Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub yxzyzh08/dev-workflow-skills --plugin dev-workflow-skills