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.
- package/.claude/agents-en/acceptance-test-generator.md +4 -2
- package/.claude/agents-en/code-reviewer.md +3 -0
- package/.claude/agents-en/quality-fixer-frontend.md +3 -3
- package/.claude/agents-en/quality-fixer.md +3 -3
- package/.claude/agents-en/task-decomposer.md +2 -1
- package/.claude/agents-en/task-executor-frontend.md +8 -2
- package/.claude/agents-en/task-executor.md +8 -2
- package/.claude/agents-en/technical-designer-frontend.md +10 -48
- package/.claude/agents-en/technical-designer.md +10 -26
- package/.claude/agents-en/work-planner.md +2 -5
- package/.claude/agents-ja/acceptance-test-generator.md +4 -2
- package/.claude/agents-ja/code-reviewer.md +3 -0
- package/.claude/agents-ja/quality-fixer-frontend.md +3 -3
- package/.claude/agents-ja/quality-fixer.md +3 -3
- package/.claude/agents-ja/task-decomposer.md +2 -1
- package/.claude/agents-ja/task-executor-frontend.md +8 -2
- package/.claude/agents-ja/task-executor.md +8 -2
- package/.claude/agents-ja/technical-designer-frontend.md +10 -48
- package/.claude/agents-ja/technical-designer.md +9 -25
- package/.claude/agents-ja/work-planner.md +2 -5
- package/.claude/commands-en/build.md +6 -15
- package/.claude/commands-en/front-build.md +4 -13
- package/.claude/commands-en/implement.md +2 -15
- package/.claude/commands-en/plan.md +7 -2
- package/.claude/commands-en/prepare-implementation.md +7 -17
- package/.claude/commands-en/sync-skills.md +3 -3
- package/.claude/commands-ja/build.md +7 -16
- package/.claude/commands-ja/front-build.md +4 -13
- package/.claude/commands-ja/implement.md +2 -15
- package/.claude/commands-ja/plan.md +6 -1
- package/.claude/commands-ja/prepare-implementation.md +8 -18
- package/.claude/commands-ja/sync-skills.md +3 -3
- package/.claude/skills-en/documentation-criteria/references/plan-template.md +0 -2
- package/.claude/skills-en/frontend-technical-spec/SKILL.md +4 -4
- package/.claude/skills-en/frontend-typescript-rules/SKILL.md +45 -111
- package/.claude/skills-en/frontend-typescript-testing/SKILL.md +8 -6
- package/.claude/skills-en/integration-e2e-testing/SKILL.md +2 -0
- package/.claude/skills-en/subagents-orchestration-guide/SKILL.md +2 -7
- package/.claude/skills-en/task-analyzer/references/skills-index.yaml +9 -11
- package/.claude/skills-ja/documentation-criteria/references/plan-template.md +0 -2
- package/.claude/skills-ja/frontend-technical-spec/SKILL.md +3 -3
- package/.claude/skills-ja/frontend-typescript-rules/SKILL.md +43 -288
- package/.claude/skills-ja/frontend-typescript-testing/SKILL.md +15 -71
- package/.claude/skills-ja/integration-e2e-testing/SKILL.md +2 -0
- package/.claude/skills-ja/subagents-orchestration-guide/SKILL.md +2 -7
- package/.claude/skills-ja/task-analyzer/references/skills-index.yaml +10 -11
- package/CHANGELOG.md +19 -0
- 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
|
-
|
|
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 yet — a 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
|
-
|
|
244
|
+
Phase [Number]: [Phase Name]
|
|
245
245
|
|
|
246
246
|
Executed Command: [Command]
|
|
247
|
-
Result:
|
|
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
|
-
|
|
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
|
-
|
|
208
|
+
Phase [Number]: [Phase Name]
|
|
209
209
|
|
|
210
210
|
Executed Command: [Command]
|
|
211
|
-
Result:
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
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: `[ ]` → `[
|
|
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-
|
|
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: `[ ]` → `[
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
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` に指定された調査成果物を作成。状態遷移: `[ ]` → `[
|
|
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-
|
|
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` に指定された調査成果物を作成。状態遷移: `[ ]` → `[
|
|
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
|
-
|
|
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を上位に配置し、非機能要件は別セクションで定義する。
|