create-ai-project 1.23.2 → 1.23.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/.claude/agents-en/acceptance-test-generator.md +4 -2
  2. package/.claude/agents-en/code-reviewer.md +3 -0
  3. package/.claude/agents-en/quality-fixer-frontend.md +3 -3
  4. package/.claude/agents-en/quality-fixer.md +3 -3
  5. package/.claude/agents-en/task-decomposer.md +2 -1
  6. package/.claude/agents-en/task-executor-frontend.md +8 -2
  7. package/.claude/agents-en/task-executor.md +8 -2
  8. package/.claude/agents-en/technical-designer-frontend.md +10 -48
  9. package/.claude/agents-en/technical-designer.md +10 -26
  10. package/.claude/agents-en/work-planner.md +2 -5
  11. package/.claude/agents-ja/acceptance-test-generator.md +4 -2
  12. package/.claude/agents-ja/code-reviewer.md +3 -0
  13. package/.claude/agents-ja/quality-fixer-frontend.md +3 -3
  14. package/.claude/agents-ja/quality-fixer.md +3 -3
  15. package/.claude/agents-ja/task-decomposer.md +2 -1
  16. package/.claude/agents-ja/task-executor-frontend.md +8 -2
  17. package/.claude/agents-ja/task-executor.md +8 -2
  18. package/.claude/agents-ja/technical-designer-frontend.md +10 -48
  19. package/.claude/agents-ja/technical-designer.md +9 -25
  20. package/.claude/agents-ja/work-planner.md +2 -5
  21. package/.claude/commands-en/build.md +6 -15
  22. package/.claude/commands-en/front-build.md +4 -13
  23. package/.claude/commands-en/implement.md +2 -15
  24. package/.claude/commands-en/plan.md +7 -2
  25. package/.claude/commands-en/prepare-implementation.md +7 -17
  26. package/.claude/commands-en/sync-skills.md +3 -3
  27. package/.claude/commands-ja/build.md +7 -16
  28. package/.claude/commands-ja/front-build.md +4 -13
  29. package/.claude/commands-ja/implement.md +2 -15
  30. package/.claude/commands-ja/plan.md +6 -1
  31. package/.claude/commands-ja/prepare-implementation.md +8 -18
  32. package/.claude/commands-ja/sync-skills.md +3 -3
  33. package/.claude/skills-en/documentation-criteria/references/plan-template.md +0 -2
  34. package/.claude/skills-en/frontend-technical-spec/SKILL.md +4 -4
  35. package/.claude/skills-en/frontend-typescript-rules/SKILL.md +45 -111
  36. package/.claude/skills-en/frontend-typescript-testing/SKILL.md +8 -6
  37. package/.claude/skills-en/integration-e2e-testing/SKILL.md +2 -0
  38. package/.claude/skills-en/subagents-orchestration-guide/SKILL.md +2 -7
  39. package/.claude/skills-en/task-analyzer/references/skills-index.yaml +9 -11
  40. package/.claude/skills-ja/documentation-criteria/references/plan-template.md +0 -2
  41. package/.claude/skills-ja/frontend-technical-spec/SKILL.md +3 -3
  42. package/.claude/skills-ja/frontend-typescript-rules/SKILL.md +43 -288
  43. package/.claude/skills-ja/frontend-typescript-testing/SKILL.md +15 -71
  44. package/.claude/skills-ja/integration-e2e-testing/SKILL.md +2 -0
  45. package/.claude/skills-ja/subagents-orchestration-guide/SKILL.md +2 -7
  46. package/.claude/skills-ja/task-analyzer/references/skills-index.yaml +10 -11
  47. package/CHANGELOG.md +19 -0
  48. package/package.json +1 -1
@@ -68,6 +68,7 @@ For each valid AC from Phase 1:
68
68
  - Happy path (1 test mandatory)
69
69
  - Error handling (only user-visible errors)
70
70
  - Edge cases (only if high business impact)
71
+ - Boundary path (behavior-changing AC only): when the AC can hold on the main path while a distinct branch, state, input class, lifecycle step, or fallback regresses, capture that boundary as a proof obligation so the test exercises it
71
72
 
72
73
  2. **Classify test level**:
73
74
  - Integration test candidate (feature-level interaction)
@@ -190,7 +191,7 @@ describe('[Feature Name] Integration Test', () => {
190
191
 
191
192
  **Proof annotations** (apply to every skeleton, alongside the metadata above): each `it.todo` carries two comment lines that hand the proof contract to the test implementer and to integration-test-reviewer (these map to the task template's Proof Obligations fields):
192
193
  - `Primary failure mode`: the specific regression that turns this test red — the behavior the AC promises and would break
193
- - `Proof obligation`: what the implemented test must assert to prove the claim — the boundary to traverse, the observable state before/after for state-changing ACs, and which boundaries may be mocked and why. Phrase it as design intent describing what to assert; the implementer writes the executable assertions and mock setup
194
+ - `Proof obligation`: what the implemented test must assert to prove the claim — the boundary to traverse, the observable state before/after for state-changing ACs, and which boundaries may be mocked and why. For behavior-changing ACs, name the boundary path (branch, state, input class, lifecycle step, or fallback) the test must traverse when the main path alone would stay green through the regression. Phrase it as design intent describing what to assert; the implementer writes the executable assertions and mock setup
194
195
 
195
196
  ### E2E Test Files
196
197
 
@@ -331,7 +332,8 @@ Upon completion, report in the following JSON format. Detailed meta information
331
332
 
332
333
  **Required Compliance**:
333
334
  - Output `it.todo` skeletons only: each skeleton contains verification points, expected results, pass criteria, primary failure mode, and proof obligation as comments inside `it.todo` blocks.
334
- Implementation code, assertions (`expect`), and mock setup must not be includeddownstream consumers parse `it.todo` presence to determine phase placement and review status.
335
+ Import only the test-framework symbols the `it.todo` needs (e.g. `describe`/`it`); the implementing task adds application-module imports, assertions (`expect`), and mock setup alongside the implementation (Red→Green within one task/commit). Keep the module under test out of the skeleton's imports because it may not exist yeta committed skeleton that references not-yet-implemented code can fail gates that type-check, compile, or load test files before implementation begins (e.g. TypeScript projects may report TS2307).
336
+ Downstream consumers parse `it.todo` presence to determine phase placement and review status.
335
337
  - Clearly state verification points, expected results, and pass criteria for each test
336
338
  - Preserve original AC statements in comments (ensure traceability)
337
339
  - Stay within budget; report to user if budget insufficient for critical tests
@@ -62,6 +62,9 @@ For each acceptance criterion extracted in Step 1:
62
62
  - Determine status: fulfilled / partially fulfilled / unfulfilled
63
63
  - Record the file path and relevant code location
64
64
  - Note any deviations from the Design Doc specification
65
+ - For behavior-changing ACs, confirm the evidence covers the boundary paths, not only the main path: where a distinct branch, state, input class, lifecycle step, or fallback governs the behavior, verify it is exercised. Compare the source/referenced behavior and the implemented behavior at the same granularity; an unsupported change in a boundary dimension is a `dd_violation`
66
+ - Confirm the implementation keeps the core mechanism the AC, Design Doc, or referenced materials explicitly require; cite the source phrase. A simpler substitute that passes tests but drops the required mechanism is a `dd_violation`
67
+ - For changes to persisted, shared, or externally observable state, identify the publication boundary (where the new state becomes observable to another process, component, user, or later step). State that is observable as complete while still partial, uninitialized, stale, or rollback-only is a `reliability` finding, because a downstream consumer can treat the incomplete state as complete and fail
65
68
 
66
69
  #### 2-2. Identifier Verification
67
70
 
@@ -241,10 +241,10 @@ Minimal example (`blocked` — Variant B, missing prerequisites):
241
241
  During execution, report progress between tool calls using this format:
242
242
 
243
243
  ```markdown
244
- 📋 Phase [Number]: [Phase Name]
244
+ Phase [Number]: [Phase Name]
245
245
 
246
246
  Executed Command: [Command]
247
- Result: Errors [Count] / ⚠️ Warnings [Count] / Pass
247
+ Result: Errors [Count] / Warnings [Count] / Pass
248
248
 
249
249
  Issues requiring fixes:
250
250
  1. [Issue Summary]
@@ -253,7 +253,7 @@ Issues requiring fixes:
253
253
  - Fix Method: [Specific Fix Approach]
254
254
 
255
255
  [After Fix Implementation]
256
- Phase [Number] Complete! Proceeding to next phase.
256
+ Phase [Number] Complete! Proceeding to next phase.
257
257
  ```
258
258
 
259
259
  This is intermediate output only. The final response must be the JSON result (Step 6).
@@ -205,10 +205,10 @@ Minimal example (`blocked` — Variant B, missing prerequisites):
205
205
  During execution, report progress between tool calls using this format:
206
206
 
207
207
  ```markdown
208
- 📋 Phase [Number]: [Phase Name]
208
+ Phase [Number]: [Phase Name]
209
209
 
210
210
  Executed Command: [Command]
211
- Result: Errors [Count] / ⚠️ Warnings [Count] / Pass
211
+ Result: Errors [Count] / Warnings [Count] / Pass
212
212
 
213
213
  Issues requiring fixes:
214
214
  1. [Issue Summary]
@@ -217,7 +217,7 @@ Issues requiring fixes:
217
217
  - Fix Method: [Specific Fix Approach]
218
218
 
219
219
  [After Fix Implementation]
220
- Phase [Number] Complete! Proceeding to next phase.
220
+ Phase [Number] Complete! Proceeding to next phase.
221
221
  ```
222
222
 
223
223
  This is intermediate output only. The final response must be the JSON result (Step 6).
@@ -65,6 +65,7 @@ Decompose tasks based on implementation strategy patterns determined in implemen
65
65
  2. **Plan Analysis and Overall Design**
66
66
  - Confirm phase structure
67
67
  - Extract task list
68
+ - Skip any task already checked off (`[x]`) and annotated as committed (e.g. a Phase 0 resolved by the prepare-implementation recipe) — its work is already in the codebase. Generate task files only for outstanding (`[ ]`) tasks so completed work is not regenerated or re-executed
68
69
  - Identify dependencies
69
70
  - **Overall Optimization Considerations**
70
71
  - Identify common processing (prevent redundant implementation)
@@ -287,7 +288,7 @@ Task 3: [Content]
287
288
  ### Decomposition Completion Report
288
289
 
289
290
  ```markdown
290
- 📋 Task Decomposition Complete
291
+ Task Decomposition Complete
291
292
 
292
293
  Plan Document: [Filename]
293
294
  Overall Design Document: _overview-[plan-name].md
@@ -94,6 +94,12 @@ Escalation thresholds:
94
94
  - Exactly the pair (a+c) or (b+c) → Escalation; any other 2-indicator combination → Continue
95
95
  - 1 or fewer indicators match → Continue implementation
96
96
 
97
+ ### Step4: Core Mechanism Preservation Check (Any YES → Immediate Escalation)
98
+ Preserve the core mechanism the task, AC, Design Doc, or UI Spec requires. Implementation details (variable names, internal logic order, local structure) stay free to change; the required mechanism itself stays intact.
99
+ □ Required core mechanism replaced by a simpler or weaker substitute? (passing tests do not make a substitute acceptable)
100
+ □ Required core mechanism infeasible as specified?
101
+ Any YES → stop and escalate with `escalation_type: "design_compliance_violation"` per the Escalation Response table, mapping the case to the contract fields: `design_doc_expectation` = the required mechanism and the source phrase it cites (task/AC/Design Doc/UI Spec); `actual_situation` = the proposed substitute and the resulting behavioral delta; `why_cannot_implement` = why the required mechanism was replaced or is infeasible as specified; `attempted_approaches[]` = the ways attempted to preserve the required mechanism, or `[]` when infeasibility is known before implementation; `claude_recommendation` = the condition that would lift the block.
102
+
97
103
  ### Boundary Cases and Iron Rule
98
104
 
99
105
  | Case | Continue | Escalate |
@@ -105,12 +111,12 @@ Escalation thresholds:
105
111
 
106
112
  **Iron Rule — escalate when objectively undeterminable**: 2+ valid interpretations for a judgment item; pattern unprecedented in past implementation experience; required information not in Design Doc; equivalent engineers would split on the call.
107
113
 
108
- ### Implementation Continuable (all Step1-3 checks NO and clearly applicable)
114
+ ### Implementation Continuable (all Step1-4 checks NO and clearly applicable)
109
115
  Internal detail optimization (variable names, logic order); specs not in Design Doc; safe `unknown` → concrete type guard for external API responses; minor UI/message text adjustments.
110
116
 
111
117
  ## Responsibilities, Authority, and Boundaries
112
118
 
113
- **In scope**: Read task files from `docs/plans/tasks/`, review dependency deliverables listed in task "Metadata", create React function components and React Testing Library tests, co-locate tests with components, apply Red→Green→Refactor TDD, update progress checkboxes (task file always; work plan and overall design only when those files exist — at small scale only the task file exists), produce research deliverables specified in `Provides`. State transitions: `[ ]` → `[🔄]` → `[x]`.
119
+ **In scope**: Read task files from `docs/plans/tasks/`, review dependency deliverables listed in task "Metadata", create React function components and React Testing Library tests, co-locate tests with components, apply Red→Green→Refactor TDD, update progress checkboxes (task file always; work plan and overall design only when those files exist — at small scale only the task file exists), produce research deliverables specified in `Provides`. State transitions: `[ ]` → `[x]`.
114
120
 
115
121
  **Out of scope (always)**: Overall quality checks (delegated to quality assurance), commit creation (after quality checks), forcing implementation when Design Doc cannot be satisfied (always escalate), class components (deprecated in modern React).
116
122
 
@@ -94,6 +94,12 @@ Escalation thresholds:
94
94
  - Exactly the pair (a+c) or (b+c) → Escalation; any other 2-indicator combination → Continue
95
95
  - 1 or fewer indicators match → Continue implementation
96
96
 
97
+ ### Step4: Core Mechanism Preservation Check (Any YES → Immediate Escalation)
98
+ Preserve the core mechanism the task, AC, Design Doc, or referenced materials require. Implementation details (variable names, internal ordering, local structure) stay free to change; the required mechanism itself stays intact.
99
+ □ Required core mechanism replaced by a simpler or weaker substitute? (passing tests do not make a substitute acceptable)
100
+ □ Required core mechanism infeasible as specified?
101
+ Any YES → stop and escalate with `escalation_type: "design_compliance_violation"` per the Escalation Response table, mapping the case to the contract fields: `design_doc_expectation` = the required mechanism and the source phrase it cites (task/AC/Design Doc/referenced material); `actual_situation` = the proposed substitute and the resulting behavioral delta; `why_cannot_implement` = why the required mechanism was replaced or is infeasible as specified; `attempted_approaches[]` = the ways attempted to preserve the required mechanism, or `[]` when infeasibility is known before implementation; `claude_recommendation` = the condition that would lift the block.
102
+
97
103
  ### Boundary Cases and Iron Rule
98
104
 
99
105
  | Case | Continue | Escalate |
@@ -105,12 +111,12 @@ Escalation thresholds:
105
111
 
106
112
  **Iron Rule — escalate when objectively undeterminable**: 2+ valid interpretations for a judgment item; pattern unprecedented in past implementation experience; required information not in Design Doc; equivalent engineers would split on the call.
107
113
 
108
- ### Implementation Continuable (all Step1-3 checks NO and clearly applicable)
114
+ ### Implementation Continuable (all Step1-4 checks NO and clearly applicable)
109
115
  Internal detail optimization (variable names, processing order); specs not in Design Doc; safe `unknown` → concrete type guard; minor UI/message text adjustments.
110
116
 
111
117
  ## Responsibilities, Authority, and Boundaries
112
118
 
113
- **In scope**: Read task files from `docs/plans/tasks/`, review dependency deliverables listed in task "Metadata", create implementation and tests, apply Red→Green→Refactor TDD, update progress checkboxes (task file always; work plan and overall design only when those files exist — at small scale only the task file exists), produce research deliverables specified in `Provides`. State transitions: `[ ]` → `[🔄]` → `[x]`.
119
+ **In scope**: Read task files from `docs/plans/tasks/`, review dependency deliverables listed in task "Metadata", create implementation and tests, apply Red→Green→Refactor TDD, update progress checkboxes (task file always; work plan and overall design only when those files exist — at small scale only the task file exists), produce research deliverables specified in `Provides`. State transitions: `[ ]` → `[x]`.
114
120
 
115
121
  **Out of scope (always)**: Overall quality checks (delegated to quality assurance), commit creation (after quality checks), forcing implementation when Design Doc cannot be satisfied (always escalate).
116
122
 
@@ -30,29 +30,7 @@ Follow documentation-criteria skill for ADR/Design Doc creation thresholds. If a
30
30
 
31
31
  ### Gate Ordering [BLOCKING]
32
32
 
33
- The subsections below are not parallel mandates; they form four serial gates. Complete each gate fully before starting the next. Within a gate, all listed subsections are required (subject to each subsection's own conditions).
34
-
35
- **Gate 0 — Inputs and Standards** (no upstream dependencies):
36
- - Agreement Checklist
37
- - Standards Identification
38
-
39
- **Gate 1 — Existing State Analysis** (depends on Gate 0):
40
- - Existing Code Investigation
41
- - Fact Disposition (when Codebase Analysis input is provided)
42
- - Minimal Surface Alternatives (when introducing persistent client/server state, props or fields crossing ownership boundaries — public API props of exported reusable components, Context values, or state lifted across ownership boundaries — behavioral modes/variants that change observable behavior, or reusable component splits)
43
-
44
- **Gate 2 — Design Decisions** (depends on Gate 1):
45
- - Implementation Approach Decision
46
- - Common ADR Process
47
- - Data Contracts
48
- - State Transitions (when applicable)
49
-
50
- **Gate 3 — Impact Documentation** (depends on Gate 2):
51
- - Integration Point Analysis
52
- - Change Impact Map
53
- - Interface Change Impact Analysis
54
-
55
- Each subsection below carries a `[Gate N — ...]` annotation in its heading. Subsections appear in Gate order (Gate 0 → 1 → 2 → 3); execute them in document order.
33
+ The subsections below are not parallel mandates; they form four serial gates: **Gate 0** Inputs & Standards → **Gate 1** Existing-State Analysis → **Gate 2** Design Decisions → **Gate 3** Impact Documentation. Complete each gate fully before starting the next. Each subsection below carries a `[Gate N ...]` annotation (with its own applicability condition) in its heading and appears in Gate order; execute them in document order.
56
34
 
57
35
  ### Agreement Checklist [Gate 0 — Required]
58
36
  Must be performed at the beginning of Design Doc creation:
@@ -331,31 +309,7 @@ Consistency first (follow existing React component patterns; document reason whe
331
309
 
332
310
  **MANDATORY**: implementation samples in ADR/Design Docs MUST comply with frontend-typescript-rules skill. Required: function components (class components deprecated); Props type definitions on all components; custom hooks for logic reuse; strict types (`unknown` + type guards for external API responses, `any` prohibited); Error Boundary / error state management; environment variables — secrets server-side only.
333
311
 
334
- Compliant sample (function component with Props type, custom hook with `unknown` type-guarded fetch):
335
-
336
- ```typescript
337
- type ButtonProps = { label: string; onClick: () => void; disabled?: boolean }
338
- export function Button({ label, onClick, disabled = false }: ButtonProps) {
339
- return <button onClick={onClick} disabled={disabled}>{label}</button>
340
- }
341
-
342
- function useUserData(userId: string) {
343
- const [user, setUser] = useState<User | null>(null)
344
- const [error, setError] = useState<Error | null>(null)
345
- useEffect(() => {
346
- void (async () => {
347
- try {
348
- const data: unknown = await (await fetch(`/api/users/${userId}`)).json()
349
- if (!isUser(data)) throw new Error('Invalid user data')
350
- setUser(data)
351
- } catch (e) { setError(e instanceof Error ? e : new Error('Unknown error')) }
352
- })()
353
- }, [userId])
354
- return { user, error }
355
- }
356
- ```
357
-
358
- Non-compliant: class components, `any`, untyped responses without guards, secrets embedded client-side.
312
+ Non-compliant: class components (except Error Boundaries), `any`, untyped responses without guards, secrets embedded client-side.
359
313
 
360
314
  ## Diagram Creation (mermaid)
361
315
 
@@ -394,6 +348,14 @@ Non-compliant: class components, `any`, untyped responses without guards, secret
394
348
 
395
349
  ## Acceptance Criteria Creation Guidelines
396
350
 
351
+ ### Value-First Drafting and Boundary Expansion
352
+
353
+ Draft each AC value-first, then expand it across requirement boundaries before applying the scoping rules below:
354
+
355
+ 1. **Value first**: name the user value, then the observable UI behavior that delivers it, then the technical boundary that realizes it.
356
+ 2. **Expand across boundaries** (candidate extraction — the scoping rules below decide which to keep): a behavior can hold on the happy path while regressing on a separate state. For each behavior-changing AC, consider an AC wherever the promised behavior must also hold — single/latest/full list rendering, sibling props or fields, loading/empty/error and later interaction states, stale or missing data, failed fetches or fallback UI, permission/validation gating, input scope and ordering/selection, side effects, and visibility or route boundaries (state becoming observable on another screen, to another component, or after navigation).
357
+ 3. **Compare at the same granularity**: when the AC concerns existing or referenced behavior, state the source behavior and the target behavior at the same level of detail, so a reviewer can confirm each boundary is preserved or intentionally changed.
358
+
397
359
  ### AC Scoping for Autonomous Implementation (Frontend)
398
360
 
399
361
  **Principle**: AC = User-observable behavior in browser verifiable in isolated CI environment. Cover happy path, unhappy path (errors), and edge cases (empty/loading states); prioritize important ACs at the top; document non-functional requirements in a separate section.
@@ -29,31 +29,7 @@ Follow documentation-criteria skill for ADR/Design Doc creation thresholds. If a
29
29
 
30
30
  ### Gate Ordering [BLOCKING]
31
31
 
32
- The subsections below are not parallel mandates; they form four serial gates. Complete each gate fully before starting the next. Within a gate, all listed subsections are required (subject to each subsection's own conditions).
33
-
34
- **Gate 0 — Inputs and Standards** (no upstream dependencies):
35
- - Agreement Checklist
36
- - Standards Identification
37
-
38
- **Gate 1 — Existing State Analysis** (depends on Gate 0):
39
- - Existing Code Investigation
40
- - Fact Disposition (when Codebase Analysis input is provided)
41
- - Data Representation Decision (when new or modified data structures are introduced)
42
- - Minimal Surface Alternatives (when introducing persistent state, public-contract elements or cross-boundary fields, behavioral modes/flags, or reusable abstractions)
43
-
44
- **Gate 2 — Design Decisions** (depends on Gate 1):
45
- - Implementation Approach Decision
46
- - Common ADR Process
47
- - Data Contracts
48
- - State Transitions (when applicable)
49
-
50
- **Gate 3 — Impact Documentation** (depends on Gate 2):
51
- - Integration Points
52
- - Change Impact Map
53
- - Field Propagation Map (when fields cross component boundaries)
54
- - Interface Change Impact Analysis
55
-
56
- Each subsection below carries a `[Gate N — ...]` annotation in its heading. Subsections appear in Gate order (Gate 0 → 1 → 2 → 3); execute them in document order.
32
+ The subsections below are not parallel mandates; they form four serial gates: **Gate 0** Inputs & Standards → **Gate 1** Existing-State Analysis → **Gate 2** Design Decisions → **Gate 3** Impact Documentation. Complete each gate fully before starting the next. Each subsection below carries a `[Gate N ...]` annotation (with its own applicability condition) in its heading and appears in Gate order; execute them in document order.
57
33
 
58
34
  ### Agreement Checklist [Gate 0 — Required]
59
35
  Must be performed at the beginning of Design Doc creation:
@@ -370,6 +346,14 @@ Consistency first (follow existing patterns; document reason when introducing ne
370
346
 
371
347
  ## Acceptance Criteria Creation Guidelines
372
348
 
349
+ ### Value-First Drafting and Boundary Expansion
350
+
351
+ Draft each AC value-first, then expand it across requirement boundaries before applying the rules below:
352
+
353
+ 1. **Value first**: name the user/operator/maintainer value, then the observable behavior that delivers it, then the technical boundary that realizes it.
354
+ 2. **Expand across boundaries** (candidate extraction — the rules below decide which to keep): a behavior can hold on the main path while regressing on a separate dimension. For each behavior-changing AC, consider an AC wherever the promised behavior must also hold — single/latest/full collection, sibling fields on the same surface, later lifecycle states and retries, stale/missing/empty values, failed refreshes or unavailable fallbacks, permission/validation/policy boundaries, input scope and selection/ordering/identity keys, side effects, and publication or visibility boundaries (state becoming observable to another process, component, user, or later step).
355
+ 3. **Compare at the same granularity**: when the AC concerns existing or referenced behavior, state the source behavior and the target behavior at the same level of detail, so a reviewer can confirm each boundary is preserved or intentionally changed.
356
+
373
357
  ### Writing Measurable ACs
374
358
 
375
359
  **Core Principle**: AC = User-observable behavior verifiable in isolated environment. Cover happy path, unhappy path, and edge cases. Non-functional requirements (performance, reliability, scalability) live in a separate "Non-functional Requirements" section.
@@ -453,4 +437,4 @@ Mode for documenting existing architecture as-is. Used when creating Design Docs
453
437
  ### Reverse-Engineer Mode Quality Standard
454
438
  - Every claim cites file:line as evidence
455
439
  - Identifiers transcribed exactly from code
456
- - Test existence confirmed by Glob, not assumed
440
+ - Test existence confirmed by Glob, not assumed
@@ -55,7 +55,7 @@ fixture-e2e gap:
55
55
  AND e2eAbsenceReason.fixtureE2e was not communicated
56
56
  AND Design Doc or UI Spec contains user-facing multi-step user journey
57
57
  THEN add to work plan header:
58
- fixture-e2e Gap: This feature contains user-facing multi-step journey(s)
58
+ fixture-e2e Gap: This feature contains user-facing multi-step journey(s)
59
59
  but no fixture-e2e skeleton was provided. Route this feature back through
60
60
  acceptance-test generation to evaluate fixture-e2e candidates before the
61
61
  UI implementation phase.
@@ -68,7 +68,7 @@ service-integration-e2e gap:
68
68
  verification (data persistence across services, transactional
69
69
  consistency, external service contract)
70
70
  THEN add to work plan header:
71
- service-integration-e2e Gap: This feature crosses service boundaries
71
+ service-integration-e2e Gap: This feature crosses service boundaries
72
72
  where correctness depends on real cross-service behavior, but no
73
73
  service-integration-e2e skeleton was provided.
74
74
  Detected boundaries: [list crossings and AC references]
@@ -159,8 +159,6 @@ For each task, derive completion criteria from Design Doc acceptance criteria. A
159
159
  - **`scale: medium` / `scale: large`**: Write a work plan following the **plan-template** from documentation-criteria skill. Include Phase Structure Diagram and Task Dependency Diagram (mermaid).
160
160
  - **`scale: small`**: Write a single task file following the **task-template** from documentation-criteria skill (see "Output Mode by Scale" below). Skip Phase Structure / Task Dependency diagrams; the task file's `## Implementation Steps` section drives execution.
161
161
 
162
- For `scale: medium` / `scale: large`, the plan header MUST include the line `Implementation Readiness: pending`. The marker contract: it takes one of three values — `pending` (initial, set here by work-planner), `ready` (verification completed with no remaining gaps), or `escalated` (verification completed with remaining gaps). The producer that promotes the marker beyond `pending` and the consumer that reads it before execution are external orchestration concerns owned outside this agent.
163
-
164
162
  ## Input Parameters
165
163
 
166
164
  - **mode**: `create` (default) | `update`
@@ -365,7 +363,6 @@ When creating work plans, **Phase Structure Diagrams** and **Task Dependency Dia
365
363
  - [ ] Each row's `Axis` value is exactly one of `placement` | `dependency_direction` | `contract_schema` | `data_flow` | `persistence`
366
364
  - [ ] Each row's `Source Section` is set to `Decision` or `Implementation Guidance` matching the actual location of the decision in the ADR
367
365
  - [ ] Every row maps to at least one covering task
368
- - [ ] Plan header includes `Implementation Readiness: pending` (medium / large only)
369
366
  - [ ] Verification Strategy extracted from Design Doc and included in plan header
370
367
  - [ ] Proof Strategy included in plan header (proof obligation source + per-task propagation rule)
371
368
  - [ ] Review Scope recorded in plan header (base branch / diff range / changed-files scope)
@@ -68,6 +68,7 @@ Phase 1から有効な各ACについて:
68
68
  - ハッピーパス(1テスト必須)
69
69
  - エラーハンドリング(ユーザーから見えるエラーのみ)
70
70
  - エッジケース(ビジネス影響が高い場合のみ)
71
+ - 境界パス(振る舞いを変えるACのみ): ACがメインパスでは成立しつつ、別個の分岐・状態・入力クラス・ライフサイクルステップ・フォールバックで退行しうる場合、その境界を証明義務として捉え、テストがそこを通過するようにする
71
72
 
72
73
  2. **テストレベルを分類**:
73
74
  - 統合テスト候補(機能レベルの相互作用)
@@ -192,7 +193,7 @@ describe('[機能名] Integration Test', () => {
192
193
 
193
194
  **証明注釈**(すべてのスケルトンに、上記メタ情報とともに付与): 各 `it.todo` は証明コントラクトをテスト実装者と integration-test-reviewer に渡す2行のコメントを持つ(これらは task template の Proof Obligations フィールドに対応する):
194
195
  - `主要な故障モード`: このテストをレッドにする具体的なリグレッション — ACが約束し、壊れると失われる振る舞い
195
- - `証明義務`: 実装されたテストが主張を証明するためにアサートすべき内容 — 通過する境界、状態変更を伴うACでは操作前後の観測可能な状態、どの境界をなぜモックしてよいか。アサート対象を記述する設計意図として書き、実行可能なアサーションとモック設定は実装者が書く
196
+ - `証明義務`: 実装されたテストが主張を証明するためにアサートすべき内容 — 通過する境界、状態変更を伴うACでは操作前後の観測可能な状態、どの境界をなぜモックしてよいか。振る舞いを変えるACでは、メインパスだけでは、そのリグレッションがあってもグリーンのままになる場合に、テストが通過すべき境界パス(分岐・状態・入力クラス・ライフサイクルステップ・フォールバック)を明示する。アサート対象を記述する設計意図として書き、実行可能なアサーションとモック設定は実装者が書く
196
197
 
197
198
  ### E2Eテストファイル群
198
199
 
@@ -333,7 +334,8 @@ it.todo('[AC番号]-property: [不変条件を自然言語で記述]')
333
334
 
334
335
  **必須準拠事項**:
335
336
  - `it.todo`スケルトンのみ出力: 各スケルトン内にコメントとして検証観点、期待結果、合格基準、主要な故障モード、証明義務を記述。
336
- 実装コード、アサーション(`expect`)、モックセットアップは含めない下流の処理で`it.todo`の有無によりフェーズ配置やレビュー判定が行われる。
337
+ `it.todo` が必要とするテストフレームワークのシンボル(`describe`/`it` など)のみを import する。アプリケーション側モジュールの import、アサーション(`expect`)、モックセットアップは、実装と同じタスク/コミットで実装時に追加する(Red→Green を1コミット内に収める)。テスト対象モジュールはまだ存在しない可能性があるため、スケルトンの import には含めない 未実装コードを参照するスケルトンをコミットすると、テストファイルを型チェック・コンパイル・ロードするゲートが実装着手前に失敗し得る(例: TypeScript では TS2307 が報告され得る)。
338
+ 下流の処理では`it.todo`の有無によりフェーズ配置やレビュー判定が行われる。
337
339
  - 各テストの検証観点、期待結果、合格基準を明確に記述
338
340
  - コメントに元のAC文を保持(トレーサビリティ確保)
339
341
  - テスト上限設定内に収める;重要テストに上限超過の場合は報告
@@ -62,6 +62,9 @@ Step 1で抽出した各受入条件について:
62
62
  - ステータスを判定: fulfilled / partially fulfilled / unfulfilled
63
63
  - ファイルパスと関連コード箇所を記録
64
64
  - Design Doc仕様からの逸脱を記録
65
+ - 振る舞いを変えるACでは、エビデンスがメインパスだけでなく境界パスもカバーしていることを確認する。別個の分岐・状態・入力クラス・ライフサイクルステップ・フォールバックが振る舞いを左右する箇所では、それが実際に通過されていることを検証する。参照元(source)/参照先の振る舞いと実装された振る舞いを同一粒度で比較し、境界次元における根拠のない変更は `dd_violation` とする
66
+ - 実装が AC・Design Doc・参照資料が明示的に要求する中核メカニズムを保持していることを確認し、出所となる文言を引用する。テストは通るが要求された中核メカニズムを落とす単純な代替は `dd_violation` とする
67
+ - 永続化・共有・外部から観測可能な状態への変更では、公開境界(新しい状態が別プロセス・コンポーネント・ユーザー・後続ステップから観測可能になる箇所)を特定する。部分的・未初期化・stale・ロールバックのみでありながら完了として観測可能な状態は `reliability` の検出事項とする。下流の利用者が不完全な状態を完了とみなして失敗しうるためである
65
68
 
66
69
  #### 2-2. 識別子の検証
67
70
 
@@ -241,10 +241,10 @@ package.json からフロントエンドビルドコマンドを自動検出し
241
241
  実行中、ツール呼び出しの間に以下のフォーマットで進捗を報告する:
242
242
 
243
243
  ```markdown
244
- 📋 Phase [番号]: [フェーズ名]
244
+ Phase [番号]: [フェーズ名]
245
245
 
246
246
  実行コマンド: [コマンド]
247
- 結果: エラー [件数] / ⚠️ 警告 [件数] / パス
247
+ 結果: エラー [件数] / 警告 [件数] / パス
248
248
 
249
249
  修正が必要な問題:
250
250
  1. [問題概要]
@@ -253,7 +253,7 @@ package.json からフロントエンドビルドコマンドを自動検出し
253
253
  - 修正方法: [具体的な修正アプローチ]
254
254
 
255
255
  [修正実施後]
256
- Phase [番号] 完了!次のフェーズへ進みます。
256
+ Phase [番号] 完了!次のフェーズへ進みます。
257
257
  ```
258
258
 
259
259
  これは中間出力であり、最終レスポンスはJSON結果(ステップ6)で出力する。
@@ -205,10 +205,10 @@ coding-standardsおよびtypescript-testingスキルに従って修正を適用
205
205
  実行中、ツール呼び出しの間に以下のフォーマットで進捗を報告する:
206
206
 
207
207
  ```markdown
208
- 📋 Phase [番号]: [フェーズ名]
208
+ Phase [番号]: [フェーズ名]
209
209
 
210
210
  実行コマンド: [コマンド]
211
- 結果: エラー [件数] / ⚠️ 警告 [件数] / パス
211
+ 結果: エラー [件数] / 警告 [件数] / パス
212
212
 
213
213
  修正が必要な問題:
214
214
  1. [問題概要]
@@ -217,7 +217,7 @@ coding-standardsおよびtypescript-testingスキルに従って修正を適用
217
217
  - 修正方法: [具体的な修正アプローチ]
218
218
 
219
219
  [修正実施後]
220
- Phase [番号] 完了!次のフェーズへ進みます。
220
+ Phase [番号] 完了!次のフェーズへ進みます。
221
221
  ```
222
222
 
223
223
  これは中間出力であり、最終レスポンスはJSON結果(ステップ6)で出力する。
@@ -65,6 +65,7 @@ implementation-approachスキルで決定された実装戦略パターンに基
65
65
  2. **計画書の分析と全体設計**
66
66
  - フェーズ構成の確認
67
67
  - タスクリストの抽出
68
+ - `[x]` で完了マーク済みかつコミット済みと注記されたタスク(例: prepare-implementation レシピが解消した Phase 0)はスキップする — その作業は既にコードベースに存在する。未消化(`[ ]`)のタスクのみタスクファイルを生成し、完了済みの作業を再生成・再実行しない
68
69
  - 依存関係の特定
69
70
  - **全体最適化の検討**
70
71
  - 共通処理の識別(冗長実装の防止)
@@ -287,7 +288,7 @@ implementation-approachスキルで決定された実装戦略パターンに基
287
288
  ### 分解完了レポート
288
289
 
289
290
  ```markdown
290
- 📋 タスク分解完了
291
+ タスク分解完了
291
292
 
292
293
  計画書: [ファイル名]
293
294
  全体設計書: _overview-[plan-name].md
@@ -94,6 +94,12 @@ package.json の `packageManager` フィールドに従って実行コマンド
94
94
  - 一致したのが (a+c) または (b+c) の組み合わせのみ → エスカレーション。その他の2項目組み合わせ → 継続実装
95
95
  - 1項目以下一致 → 継続実装
96
96
 
97
+ ### Step4: 中核メカニズム保全チェック(以下1つでもYES → 即エスカレーション)
98
+ タスク・AC・Design Doc・UI Spec が要求する中核メカニズムを保全する。実装詳細(変数名、内部のロジック順序、ローカルな構造)は自由に変更してよいが、要求された中核メカニズムそのものは保つ。
99
+ □ 要求された中核メカニズムを、より単純または弱い代替で置き換えようとしている?(テストが通ることは代替を正当化しない)
100
+ □ 要求された中核メカニズムが仕様どおりには実現不可能?
101
+ 1つでもYES → 実装を中止し、`escalation_type: "design_compliance_violation"` でエスカレーション(エスカレーションレスポンス表に従い、ケースを契約フィールドに対応づける): `design_doc_expectation` = 要求された中核メカニズムと、その出所となる文言(task/AC/Design Doc/UI Spec); `actual_situation` = 提案された代替と、結果として生じる振る舞いの差分; `why_cannot_implement` = 中核メカニズムを置き換えた、または仕様どおりに実現できない理由; `attempted_approaches[]` = 中核メカニズムを保全するために試みた方法。実装前に実現不可能と判明している場合は `[]`; `claude_recommendation` = ブロックを解除する条件。
102
+
97
103
  ### 境界ケースと鉄則
98
104
 
99
105
  | ケース | 継続 | エスカレーション |
@@ -105,12 +111,12 @@ package.json の `packageManager` フィールドに従って実行コマンド
105
111
 
106
112
  **鉄則 — 客観的に判定不可のときはエスカレーション**: 判定項目について2通り以上の解釈が成り立つ; 過去の実装経験で遭遇していないパターン; 判定に必要な情報がDesign Docにない; 同等の技術者でも判断が分かれる。
107
113
 
108
- ### 継続実装可(Step1-3 の全チェックが NO かつ明確に該当)
114
+ ### 継続実装可(Step1-4 の全チェックが NO かつ明確に該当)
109
115
  内部詳細の最適化(変数名、ロジック順序); Design Doc 未記載の詳細仕様; 外部 API レスポンス用の `unknown` → 具体型への安全な型ガード; 軽微なUI・メッセージ文言調整。
110
116
 
111
117
  ## 責務・権限・境界
112
118
 
113
- **範囲内**: `docs/plans/tasks/` からタスクファイルを読み込み、タスクの「Metadata」に記載された依存成果物を確認、React 関数コンポーネントと React Testing Library テストを作成、テストはコンポーネントと共に配置(co-locate)、Red→Green→Refactor のTDDを適用、進捗チェックボックスを更新(タスクファイルは常時更新。作業計画書と全体設計書は存在する場合のみ更新 — 小規模単一タスクではタスクファイルのみ存在)、`Provides` に指定された調査成果物を作成。状態遷移: `[ ]` → `[🔄]` → `[x]`。
119
+ **範囲内**: `docs/plans/tasks/` からタスクファイルを読み込み、タスクの「Metadata」に記載された依存成果物を確認、React 関数コンポーネントと React Testing Library テストを作成、テストはコンポーネントと共に配置(co-locate)、Red→Green→Refactor のTDDを適用、進捗チェックボックスを更新(タスクファイルは常時更新。作業計画書と全体設計書は存在する場合のみ更新 — 小規模単一タスクではタスクファイルのみ存在)、`Provides` に指定された調査成果物を作成。状態遷移: `[ ]` → `[x]`。
114
120
 
115
121
  **範囲外(常に)**: 全体品質チェック(品質保証工程に委譲)、コミット作成(品質チェック後に実施)、Design Doc を満たせない場合の強行(必ずエスカレーション)、クラスコンポーネント(モダン React では非推奨)。
116
122
 
@@ -94,6 +94,12 @@ package.json の `packageManager` フィールドに従って実行コマンド
94
94
  - 一致したのが (a+c) または (b+c) の組み合わせのみ → エスカレーション。その他の2項目組み合わせ → 継続実装
95
95
  - 1項目以下一致 → 継続実装
96
96
 
97
+ ### Step4: 中核メカニズム保全チェック(以下1つでもYES → 即エスカレーション)
98
+ タスク・AC・Design Doc・参照資料が要求する中核メカニズムを保全する。実装詳細(変数名、内部の処理順序、ローカルな構造)は自由に変更してよいが、要求された中核メカニズムそのものは保つ。
99
+ □ 要求された中核メカニズムを、より単純または弱い代替で置き換えようとしている?(テストが通ることは代替を正当化しない)
100
+ □ 要求された中核メカニズムが仕様どおりには実現不可能?
101
+ 1つでもYES → 実装を中止し、`escalation_type: "design_compliance_violation"` でエスカレーション(エスカレーションレスポンス表に従い、ケースを契約フィールドに対応づける): `design_doc_expectation` = 要求された中核メカニズムと、その出所となる文言(task/AC/Design Doc/参照資料); `actual_situation` = 提案された代替と、結果として生じる振る舞いの差分; `why_cannot_implement` = 中核メカニズムを置き換えた、または仕様どおりに実現できない理由; `attempted_approaches[]` = 中核メカニズムを保全するために試みた方法。実装前に実現不可能と判明している場合は `[]`; `claude_recommendation` = ブロックを解除する条件。
102
+
97
103
  ### 境界ケースと鉄則
98
104
 
99
105
  | ケース | 継続 | エスカレーション |
@@ -105,12 +111,12 @@ package.json の `packageManager` フィールドに従って実行コマンド
105
111
 
106
112
  **鉄則 — 客観的に判定不可のときはエスカレーション**: 判定項目について2通り以上の解釈が成り立つ; 過去の実装経験で遭遇していないパターン; 判定に必要な情報がDesign Docにない; 同等の技術者でも判断が分かれる。
107
113
 
108
- ### 継続実装可(Step1-3 の全チェックが NO かつ明確に該当)
114
+ ### 継続実装可(Step1-4 の全チェックが NO かつ明確に該当)
109
115
  内部詳細の最適化(変数名、処理順序); Design Doc 未記載の詳細仕様; `unknown` → 具体型への安全な型ガード; 軽微なUI・メッセージ文言調整。
110
116
 
111
117
  ## 責務・権限・境界
112
118
 
113
- **範囲内**: `docs/plans/tasks/` からタスクファイルを読み込み、タスクの「Metadata」に記載された依存成果物を確認、実装とテストを作成、Red→Green→Refactor のTDDを適用、進捗チェックボックスを更新(タスクファイルは常時更新。作業計画書と全体設計書は存在する場合のみ更新 — 小規模単一タスクではタスクファイルのみ存在)、`Provides` に指定された調査成果物を作成。状態遷移: `[ ]` → `[🔄]` → `[x]`。
119
+ **範囲内**: `docs/plans/tasks/` からタスクファイルを読み込み、タスクの「Metadata」に記載された依存成果物を確認、実装とテストを作成、Red→Green→Refactor のTDDを適用、進捗チェックボックスを更新(タスクファイルは常時更新。作業計画書と全体設計書は存在する場合のみ更新 — 小規模単一タスクではタスクファイルのみ存在)、`Provides` に指定された調査成果物を作成。状態遷移: `[ ]` → `[x]`。
114
120
 
115
121
  **範囲外(常に)**: 全体品質チェック(品質保証工程に委譲)、コミット作成(品質チェック後に実施)、Design Doc を満たせない場合の強行(必ずエスカレーション)。
116
122
 
@@ -30,29 +30,7 @@ ADR/Design Docの作成閾値はdocumentation-criteriaスキルに準拠。判
30
30
 
31
31
  ### ゲート順序 [BLOCKING]
32
32
 
33
- 以下のサブセクションは並列の必須事項ではなく、4段階の直列ゲートを構成する。各ゲートを完了してから次のゲートに進むこと。各ゲート内では列挙されたサブセクションすべてが必須(各サブセクションの条件に従う)。
34
-
35
- **Gate 0 — Inputs and Standards**(上流依存なし):
36
- - Agreement Checklist
37
- - Standards Identification
38
-
39
- **Gate 1 — Existing State Analysis**(Gate 0 に依存):
40
- - Existing Code Investigation
41
- - Fact Disposition(Codebase Analysis 入力が提供される場合)
42
- - Minimal Surface Alternatives(永続化されるクライアント/サーバー状態、所有境界を越える Props またはフィールド — エクスポートされた再利用可能コンポーネントの公開 API Props、Context 値、所有境界を越えて持ち上げられた状態 — 観測可能な振る舞いを変える振る舞いモード/バリアント、または再利用可能なコンポーネント分割を導入する場合)
43
-
44
- **Gate 2 — Design Decisions**(Gate 1 に依存):
45
- - Implementation Approach Decision
46
- - Common ADR Process
47
- - Data Contracts
48
- - State Transitions(該当する場合)
49
-
50
- **Gate 3 — Impact Documentation**(Gate 2 に依存):
51
- - Integration Point Analysis
52
- - Change Impact Map
53
- - Interface Change Impact Analysis
54
-
55
- 各サブセクションには見出しに `[Gate N — ...]` の注記を付す。サブセクションはゲート順(Gate 0 → 1 → 2 → 3)で記載されており、文書順に実行すること。
33
+ 以下のサブセクションは並列の必須事項ではなく、4段階の直列ゲートを構成する: **Gate 0** Inputs & Standards → **Gate 1** Existing-State Analysis → **Gate 2** Design Decisions → **Gate 3** Impact Documentation。各ゲートを完了してから次のゲートに進むこと。各サブセクションには見出しに `[Gate N — ...]` の注記(適用条件を含む)が付き、ゲート順に記載されている。文書順に実行すること。
56
34
 
57
35
  ### 合意事項チェックリスト [Gate 0 — Required]
58
36
  Design Doc作成の最初に必ず実施:
@@ -331,31 +309,7 @@ UI Specが存在する場合(`docs/ui-spec/{feature-name}-ui-spec.md`):
331
309
 
332
310
  **必須**: ADR/Design Doc 内の実装サンプルは frontend-typescript-rules スキルに必ず準拠すること。必須項目: function components(class components は非推奨); 全コンポーネントに Props 型定義; ロジック再利用にはカスタムフック; 厳密な型(外部APIレスポンスは `unknown` + 型ガード、`any` 禁止); Error Boundary / エラー状態管理; 環境変数 — 秘密情報はサーバーサイドのみ。
333
311
 
334
- 準拠サンプル(Props型付き function component、`unknown` を型ガードする fetch のカスタムフック):
335
-
336
- ```typescript
337
- type ButtonProps = { label: string; onClick: () => void; disabled?: boolean }
338
- export function Button({ label, onClick, disabled = false }: ButtonProps) {
339
- return <button onClick={onClick} disabled={disabled}>{label}</button>
340
- }
341
-
342
- function useUserData(userId: string) {
343
- const [user, setUser] = useState<User | null>(null)
344
- const [error, setError] = useState<Error | null>(null)
345
- useEffect(() => {
346
- void (async () => {
347
- try {
348
- const data: unknown = await (await fetch(`/api/users/${userId}`)).json()
349
- if (!isUser(data)) throw new Error('Invalid user data')
350
- setUser(data)
351
- } catch (e) { setError(e instanceof Error ? e : new Error('Unknown error')) }
352
- })()
353
- }, [userId])
354
- return { user, error }
355
- }
356
- ```
357
-
358
- 非準拠: class components、`any`、ガードなし型なしレスポンス、クライアントサイドに埋め込まれた秘密情報。
312
+ 非準拠: class components(Error Boundary を除く)、`any`、ガードなし型なしレスポンス、クライアントサイドに埋め込まれた秘密情報。
359
313
 
360
314
  ## 図表作成(mermaid)
361
315
 
@@ -394,6 +348,14 @@ function useUserData(userId: string) {
394
348
 
395
349
  ## 受け入れ基準作成ガイドライン
396
350
 
351
+ ### 価値起点のドラフトと境界拡張
352
+
353
+ 各ACは価値起点でドラフトし、下記のスコーピングルールを適用する前に要件境界へ展開する:
354
+
355
+ 1. **価値起点**: まずユーザーにとっての価値を挙げ、次にそれを実現する観察可能なUIの振る舞い、最後にそれを支える技術的境界を特定する。
356
+ 2. **境界への展開**(候補抽出 — 採否は下記のスコーピングルールが決定): ある振る舞いはハッピーパスでは成立しつつ、別の状態で退行しうる。振る舞いを変えるACごとに、約束した振る舞いが成立すべき箇所すべてでACを検討する — 単一/最新/全件のリスト描画、隣接する Props やフィールド、ローディング/空/エラーおよび後続のインタラクション状態、stale または欠損データ、フェッチ失敗やフォールバックUI、権限/バリデーションのゲーティング、入力スコープと順序/選択、副作用、可視性やルートの境界(状態が別画面・別コンポーネント・ナビゲーション後に観察可能になる箇所)。
357
+ 3. **同一粒度での比較**: ACが既存または参照先の振る舞いに関わる場合、参照元(source)の振る舞いと対象(target)の振る舞いを同じ詳細度で記述し、各境界が保持されているか意図的に変更されたかをレビュアーが確認できるようにする。
358
+
397
359
  ### 自律実装のためのACスコーピング(フロントエンド)
398
360
 
399
361
  **原則**: AC = 隔離されたCI環境でブラウザ上で検証可能なユーザー観察可能動作。ハッピーパス、アンハッピーパス(エラー)、エッジケース(空状態・ローディング状態)をカバー。重要なACを上位に配置し、非機能要件は別セクションで定義する。