create-ai-project 1.23.4 → 1.24.0
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 +8 -32
- package/.claude/agents-en/code-reviewer.md +24 -25
- package/.claude/agents-en/code-verifier.md +3 -32
- package/.claude/agents-en/codebase-analyzer.md +11 -79
- package/.claude/agents-en/document-reviewer.md +12 -58
- package/.claude/agents-en/integration-test-reviewer.md +6 -37
- package/.claude/agents-en/investigator.md +6 -59
- package/.claude/agents-en/quality-fixer-frontend.md +1 -5
- package/.claude/agents-en/quality-fixer.md +1 -5
- package/.claude/agents-en/requirement-analyzer.md +3 -14
- package/.claude/agents-en/rule-advisor.md +3 -16
- package/.claude/agents-en/scope-discoverer.md +5 -29
- package/.claude/agents-en/security-reviewer.md +2 -13
- package/.claude/agents-en/skill-creator.md +3 -6
- package/.claude/agents-en/skill-reviewer.md +7 -43
- package/.claude/agents-en/solver.md +9 -24
- package/.claude/agents-en/task-decomposer.md +39 -8
- package/.claude/agents-en/task-executor-frontend.md +29 -20
- package/.claude/agents-en/task-executor.md +29 -20
- package/.claude/agents-en/technical-designer-frontend.md +7 -12
- package/.claude/agents-en/technical-designer.md +4 -11
- package/.claude/agents-en/ui-analyzer.md +16 -115
- package/.claude/agents-en/ui-spec-designer.md +3 -3
- package/.claude/agents-en/verifier.md +9 -53
- package/.claude/agents-en/work-planner.md +27 -22
- package/.claude/agents-ja/acceptance-test-generator.md +10 -34
- package/.claude/agents-ja/code-reviewer.md +24 -25
- package/.claude/agents-ja/code-verifier.md +5 -34
- package/.claude/agents-ja/codebase-analyzer.md +11 -79
- package/.claude/agents-ja/document-reviewer.md +16 -62
- package/.claude/agents-ja/integration-test-reviewer.md +6 -37
- package/.claude/agents-ja/investigator.md +6 -59
- package/.claude/agents-ja/prd-creator.md +3 -3
- package/.claude/agents-ja/quality-fixer-frontend.md +2 -6
- package/.claude/agents-ja/quality-fixer.md +2 -6
- package/.claude/agents-ja/requirement-analyzer.md +3 -14
- package/.claude/agents-ja/rule-advisor.md +4 -17
- package/.claude/agents-ja/scope-discoverer.md +5 -29
- package/.claude/agents-ja/security-reviewer.md +3 -14
- package/.claude/agents-ja/skill-creator.md +3 -6
- package/.claude/agents-ja/skill-reviewer.md +7 -43
- package/.claude/agents-ja/solver.md +11 -26
- package/.claude/agents-ja/task-decomposer.md +40 -9
- package/.claude/agents-ja/task-executor-frontend.md +29 -20
- package/.claude/agents-ja/task-executor.md +29 -20
- package/.claude/agents-ja/technical-designer-frontend.md +8 -13
- package/.claude/agents-ja/technical-designer.md +5 -12
- package/.claude/agents-ja/ui-analyzer.md +17 -116
- package/.claude/agents-ja/ui-spec-designer.md +7 -7
- package/.claude/agents-ja/verifier.md +9 -53
- package/.claude/agents-ja/work-planner.md +51 -51
- package/.claude/commands-ja/build.md +1 -1
- package/.claude/commands-ja/design.md +1 -1
- package/.claude/commands-ja/diagnose.md +1 -1
- package/.claude/commands-ja/front-build.md +1 -1
- package/.claude/commands-ja/front-design.md +3 -3
- package/.claude/commands-ja/front-plan.md +2 -2
- package/.claude/commands-ja/implement.md +1 -1
- package/.claude/commands-ja/plan.md +2 -2
- package/.claude/commands-ja/prepare-implementation.md +4 -4
- package/.claude/commands-ja/reverse-engineer.md +1 -1
- package/.claude/commands-ja/review.md +1 -1
- package/.claude/commands-ja/task.md +2 -2
- package/.claude/commands-ja/update-doc.md +1 -1
- package/.claude/skills-en/documentation-criteria/references/design-template.md +5 -1
- package/.claude/skills-en/documentation-criteria/references/plan-template.md +17 -7
- package/.claude/skills-en/documentation-criteria/references/task-template.md +18 -0
- package/.claude/skills-en/documentation-criteria/references/ui-spec-template.md +1 -1
- package/.claude/skills-en/frontend-technical-spec/SKILL.md +4 -8
- package/.claude/skills-en/frontend-typescript-rules/SKILL.md +4 -2
- package/.claude/skills-en/frontend-typescript-testing/SKILL.md +5 -11
- package/.claude/skills-en/frontend-typescript-testing/references/e2e.md +1 -1
- package/.claude/skills-en/technical-spec/SKILL.md +4 -3
- package/.claude/skills-en/typescript-testing/SKILL.md +4 -4
- package/.claude/skills-ja/coding-standards/SKILL.md +4 -4
- package/.claude/skills-ja/coding-standards/references/security-checks.md +1 -1
- package/.claude/skills-ja/documentation-criteria/SKILL.md +1 -1
- package/.claude/skills-ja/documentation-criteria/references/design-template.md +10 -6
- package/.claude/skills-ja/documentation-criteria/references/plan-template.md +18 -8
- package/.claude/skills-ja/documentation-criteria/references/task-template.md +18 -0
- package/.claude/skills-ja/documentation-criteria/references/ui-spec-template.md +3 -3
- package/.claude/skills-ja/frontend-technical-spec/SKILL.md +4 -8
- package/.claude/skills-ja/frontend-typescript-rules/SKILL.md +5 -3
- package/.claude/skills-ja/frontend-typescript-testing/SKILL.md +5 -11
- package/.claude/skills-ja/frontend-typescript-testing/references/e2e.md +2 -2
- package/.claude/skills-ja/implementation-approach/SKILL.md +1 -1
- package/.claude/skills-ja/integration-e2e-testing/SKILL.md +1 -1
- package/.claude/skills-ja/integration-e2e-testing/references/e2e-environment-prerequisites.md +1 -1
- package/.claude/skills-ja/project-context/references/template.md +2 -2
- package/.claude/skills-ja/task-analyzer/references/skills-index.yaml +3 -3
- package/.claude/skills-ja/technical-spec/SKILL.md +4 -3
- package/.claude/skills-ja/typescript-testing/SKILL.md +4 -4
- package/CHANGELOG.md +19 -0
- package/package.json +1 -1
|
@@ -33,7 +33,6 @@ Follow documentation-criteria skill for ADR/Design Doc creation thresholds. If a
|
|
|
33
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.
|
|
34
34
|
|
|
35
35
|
### Agreement Checklist [Gate 0 — Required]
|
|
36
|
-
Must be performed at the beginning of Design Doc creation:
|
|
37
36
|
|
|
38
37
|
1. **List agreements with user in bullet points**
|
|
39
38
|
- Scope (which components/features to change)
|
|
@@ -47,7 +46,6 @@ Must be performed at the beginning of Design Doc creation:
|
|
|
47
46
|
- [ ] If any agreements are not reflected, state the reason
|
|
48
47
|
|
|
49
48
|
### Standards Identification [Gate 0 — Required]
|
|
50
|
-
Must be performed before existing-state investigation:
|
|
51
49
|
|
|
52
50
|
1. **Identify Project Standards**
|
|
53
51
|
- Scan project configuration, rule files, UI Spec / UI analysis inputs, and existing frontend code patterns
|
|
@@ -69,7 +67,6 @@ Must be performed before existing-state investigation:
|
|
|
69
67
|
- Deviations require documented rationale
|
|
70
68
|
|
|
71
69
|
### Existing Code Investigation [Gate 1 — Required]
|
|
72
|
-
Must be performed before Design Doc creation:
|
|
73
70
|
|
|
74
71
|
1. **Implementation File Path Verification**
|
|
75
72
|
- First grasp overall structure with `Glob: src/**/*.tsx`
|
|
@@ -163,7 +160,6 @@ Execute the 5 steps below for each in-scope element. Record the result in the De
|
|
|
163
160
|
- For each rejected alternative, record 1-2 lines: what it was, why rejected. Keep this in the Design Doc so future iterations or agents avoid re-proposing.
|
|
164
161
|
|
|
165
162
|
### Implementation Approach Decision [Gate 2 — Required]
|
|
166
|
-
Must be performed when creating Design Doc.
|
|
167
163
|
|
|
168
164
|
1. **Approach selection** (run Phase 1-4 of implementation-approach skill, record selection rationale):
|
|
169
165
|
|
|
@@ -186,7 +182,6 @@ Must be performed when creating Design Doc.
|
|
|
186
182
|
Define an **early verification point**: the first thing to verify and how, before scaling.
|
|
187
183
|
|
|
188
184
|
### Common ADR Process [Gate 2 — Required]
|
|
189
|
-
Perform before Design Doc creation:
|
|
190
185
|
1. Identify common technical areas (component patterns, state management, error handling, accessibility, etc.)
|
|
191
186
|
2. Search `docs/ADR/ADR-COMMON-*`, create if not found
|
|
192
187
|
3. Include in Design Doc's "Prerequisite ADRs"
|
|
@@ -199,6 +194,9 @@ Define Props types and state management contracts between components (types, pre
|
|
|
199
194
|
### State Transitions [Gate 2 — Required when applicable]
|
|
200
195
|
Document state definitions and transitions for stateful components (loading, error, success states).
|
|
201
196
|
|
|
197
|
+
### Serialized Boundary Contract [Gate 2 — Required when a value crosses a serialized boundary]
|
|
198
|
+
When a component emits or consumes a value through a **URL query, route param, form post, browser/session/local storage, generated config/artifact value, or any other encoded value another component, tool, or backend parses**, record it in the Design Doc's **Field Propagation Map**: the exact **Serialized Format** the producer emits and the **Consumer Parse Rule** (how the other side decodes/validates it). Producer and consumer must agree on the representation. Skip when no value crosses a serialized boundary.
|
|
199
|
+
|
|
202
200
|
### Integration Point Analysis [Gate 3 — Required]
|
|
203
201
|
Document all integration points with existing components in "## Integration Point Map" section:
|
|
204
202
|
|
|
@@ -272,7 +270,7 @@ When a UI Spec exists for the feature (`docs/ui-spec/{feature-name}-ui-spec.md`)
|
|
|
272
270
|
|
|
273
271
|
Conduct additional investigation only for areas not covered or flagged in `limitations`.
|
|
274
272
|
|
|
275
|
-
- **UI Analysis** (optional, frontend recipe). UI fact-gathering JSON from
|
|
273
|
+
- **UI Analysis** (optional, frontend recipe). UI fact-gathering JSON from the UI analysis step:
|
|
276
274
|
|
|
277
275
|
| input field | downstream use |
|
|
278
276
|
|---|---|
|
|
@@ -293,13 +291,10 @@ When a UI Spec exists for the feature (`docs/ui-spec/{feature-name}-ui-spec.md`)
|
|
|
293
291
|
- Follow respective templates (`template-en.md`)
|
|
294
292
|
- For ADR, check existing numbers and use max+1, initial status is "Proposed"
|
|
295
293
|
|
|
296
|
-
##
|
|
297
|
-
|
|
298
|
-
Include: decisions, rationale, principled guidelines (e.g., "Use custom hooks for logic reuse" ✓, "Implement in Phase 1" ✗)
|
|
299
|
-
Exclude: schedules, implementation procedures, specific code
|
|
294
|
+
## Output Rules
|
|
300
295
|
|
|
301
|
-
|
|
302
|
-
|
|
296
|
+
- Execute file output immediately (considered approved at execution).
|
|
297
|
+
- ADR includes decisions, rationale, and principled guidelines (e.g., "Use custom hooks for logic reuse" ✓, "Implement in Phase 1" ✗); it excludes schedules, implementation procedures, and specific code.
|
|
303
298
|
|
|
304
299
|
## Important Design Principles
|
|
305
300
|
|
|
@@ -32,7 +32,6 @@ Follow documentation-criteria skill for ADR/Design Doc creation thresholds. If a
|
|
|
32
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.
|
|
33
33
|
|
|
34
34
|
### Agreement Checklist [Gate 0 — Required]
|
|
35
|
-
Must be performed at the beginning of Design Doc creation:
|
|
36
35
|
|
|
37
36
|
1. **List agreements with user in bullet points**
|
|
38
37
|
- Scope (what to change)
|
|
@@ -46,7 +45,6 @@ Must be performed at the beginning of Design Doc creation:
|
|
|
46
45
|
- [ ] If any agreements are not reflected, state the reason
|
|
47
46
|
|
|
48
47
|
### Standards Identification [Gate 0 — Required]
|
|
49
|
-
Must be performed before any investigation:
|
|
50
48
|
|
|
51
49
|
1. **Identify Project Standards**
|
|
52
50
|
- Scan project configuration, rule files, and existing code patterns
|
|
@@ -69,7 +67,6 @@ Must be performed before any investigation:
|
|
|
69
67
|
- Deviations require documented rationale
|
|
70
68
|
|
|
71
69
|
### Existing Code Investigation [Gate 1 — Required]
|
|
72
|
-
Must be performed before Design Doc creation:
|
|
73
70
|
|
|
74
71
|
1. **Implementation File Path Verification**
|
|
75
72
|
- First grasp overall structure with `Glob: src/**/*.ts`
|
|
@@ -174,7 +171,6 @@ Execute the 5 steps below for each in-scope element. Record the result in the De
|
|
|
174
171
|
- For each rejected alternative, record 1-2 lines: what it was, why rejected. Keep this in the Design Doc so future iterations or agents avoid re-proposing.
|
|
175
172
|
|
|
176
173
|
### Implementation Approach Decision [Gate 2 — Required]
|
|
177
|
-
Must be performed when creating Design Doc.
|
|
178
174
|
|
|
179
175
|
1. **Approach selection** (run Phase 1-4 of implementation-approach skill, record selection rationale):
|
|
180
176
|
|
|
@@ -198,7 +194,6 @@ Must be performed when creating Design Doc.
|
|
|
198
194
|
Define an **early verification point**: the first thing to verify and how, before scaling. For replacements/modifications the default is an output comparison of at least one representative case. Exception: when the primary risk is not behavioral equivalence (e.g., schema compatibility, integration contract), specify the alternative verification target and document why output comparison is deferred.
|
|
199
195
|
|
|
200
196
|
### Common ADR Process [Gate 2 — Required]
|
|
201
|
-
Perform before Design Doc creation:
|
|
202
197
|
1. Identify common technical areas (logging, error handling, type definitions, API design, etc.)
|
|
203
198
|
2. Search `docs/ADR/ADR-COMMON-*`, create if not found
|
|
204
199
|
3. Include in Design Doc's "Prerequisite ADRs"
|
|
@@ -246,6 +241,7 @@ No Ripple Effect:
|
|
|
246
241
|
When new or changed fields cross component boundaries:
|
|
247
242
|
|
|
248
243
|
Document each field's status (preserved / transformed / dropped) at each boundary with rationale.
|
|
244
|
+
When the boundary is **serialized** — the value is encoded and re-parsed across a medium such as a query string, CLI argument, environment variable, config entry, message/queue payload, storage key, or file — also record the **Serialized Format** (the exact representation the producer emits) and the **Consumer Parse Rule** (how the consumer decodes/validates it), so producer and consumer agree. Omit both for in-memory field crossings.
|
|
249
245
|
Skip if no fields cross component boundaries.
|
|
250
246
|
|
|
251
247
|
### Interface Change Impact Analysis [Gate 3 — Required]
|
|
@@ -290,13 +286,10 @@ When conversion is required, clearly specify adapter implementation or migration
|
|
|
290
286
|
- Follow respective templates (`template-en.md`)
|
|
291
287
|
- For ADR, check existing numbers and use max+1, initial status is "Proposed"
|
|
292
288
|
|
|
293
|
-
##
|
|
289
|
+
## Output Rules
|
|
294
290
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
## Output Policy
|
|
299
|
-
Execute file output immediately (considered approved at execution).
|
|
291
|
+
- Execute file output immediately (considered approved at execution).
|
|
292
|
+
- ADR includes decisions, rationale, and principled guidelines (e.g., "Use dependency injection"); it excludes schedules, implementation procedures, and specific code.
|
|
300
293
|
|
|
301
294
|
## Important Design Principles
|
|
302
295
|
|
|
@@ -165,142 +165,43 @@ Produce `candidateWriteSet[]` listing the files most likely to require modificat
|
|
|
165
165
|
|
|
166
166
|
```json
|
|
167
167
|
{
|
|
168
|
-
"analysisScope": {
|
|
169
|
-
"filesAnalyzed": ["path/to/component.tsx"],
|
|
170
|
-
"stylesAnalyzed": ["path/to/styles.module.css"],
|
|
171
|
-
"uiConventions": {
|
|
172
|
-
"componentExtension": ".tsx",
|
|
173
|
-
"styleStrategy": "css-modules|vanilla-css|css-in-js|utility-classes",
|
|
174
|
-
"storybook": true,
|
|
175
|
-
"testRunner": "vitest|jest|other"
|
|
176
|
-
}
|
|
177
|
-
},
|
|
168
|
+
"analysisScope": {"filesAnalyzed": ["path/to/component.tsx"], "stylesAnalyzed": ["path/to/styles.module.css"], "uiConventions": {"componentExtension": ".tsx", "styleStrategy": "css-modules|vanilla-css|css-in-js|utility-classes", "storybook": true, "testRunner": "vitest|jest|other"}},
|
|
178
169
|
"externalResources": {
|
|
179
170
|
"status": "fetched|partial|not_recorded",
|
|
180
|
-
"designOrigin": {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
},
|
|
185
|
-
"designSystem": {
|
|
186
|
-
"fetch_status": "fetched|mcp_unavailable|skipped|not_applicable",
|
|
187
|
-
"accessMethod": "...",
|
|
188
|
-
"fetched_summary": "components catalogued, tokens captured, anti-pattern identifiers"
|
|
189
|
-
},
|
|
190
|
-
"guidelines": {
|
|
191
|
-
"fetch_status": "fetched|skipped|not_applicable",
|
|
192
|
-
"accessMethod": "...",
|
|
193
|
-
"fetched_summary": "rule categories captured (CSS, accessibility, i18n, etc.)"
|
|
194
|
-
},
|
|
195
|
-
"visualVerification": {
|
|
196
|
-
"fetch_status": "available|mcp_unavailable|not_applicable",
|
|
197
|
-
"accessMethod": "...",
|
|
198
|
-
"notes": "how rendered output is verified during implementation"
|
|
199
|
-
}
|
|
171
|
+
"designOrigin": {"fetch_status": "fetched|mcp_unavailable|skipped|not_applicable", "accessMethod": "MCP name | URL | file path | existing-implementation-only", "fetched_summary": "brief description of fetched content (e.g., screen names, frame ids, token snapshot)"},
|
|
172
|
+
"designSystem": {"fetch_status": "fetched|mcp_unavailable|skipped|not_applicable", "accessMethod": "...", "fetched_summary": "components catalogued, tokens captured, anti-pattern identifiers"},
|
|
173
|
+
"guidelines": {"fetch_status": "fetched|skipped|not_applicable", "accessMethod": "...", "fetched_summary": "rule categories captured (CSS, accessibility, i18n, etc.)"},
|
|
174
|
+
"visualVerification": {"fetch_status": "available|mcp_unavailable|not_applicable", "accessMethod": "...", "notes": "how rendered output is verified during implementation"}
|
|
200
175
|
},
|
|
201
176
|
"componentStructure": [
|
|
202
|
-
{
|
|
203
|
-
"name": "ComponentName",
|
|
204
|
-
"filePath": "path/to/file:lineNumber",
|
|
205
|
-
"propsInterface": "name and brief shape",
|
|
206
|
-
"topLevelElement": "tag or component name",
|
|
207
|
-
"domOrder": ["child1", "child2", "child3"],
|
|
208
|
-
"conditionalBranches": [
|
|
209
|
-
{"predicate": "condition expression", "renderedSubtree": "brief description"}
|
|
210
|
-
],
|
|
211
|
-
"callSites": ["path/to/consumer:line"]
|
|
212
|
-
}
|
|
177
|
+
{"name": "ComponentName", "filePath": "path/to/file:lineNumber", "propsInterface": "name and brief shape", "topLevelElement": "tag or component name", "domOrder": ["child1", "child2", "child3"], "conditionalBranches": [{"predicate": "condition expression", "renderedSubtree": "brief description"}], "callSites": ["path/to/consumer:line"]}
|
|
213
178
|
],
|
|
214
179
|
"propsPatterns": [
|
|
215
|
-
{
|
|
216
|
-
"component": "ComponentName",
|
|
217
|
-
"callSite": "path/to/file:line",
|
|
218
|
-
"props": {"variant": "primary", "size": "md"},
|
|
219
|
-
"computedProps": ["onClick (useCallback)"],
|
|
220
|
-
"groupKey": "primary-md"
|
|
221
|
-
}
|
|
180
|
+
{"component": "ComponentName", "callSite": "path/to/file:line", "props": {"variant": "primary", "size": "md"}, "computedProps": ["onClick (useCallback)"], "groupKey": "primary-md"}
|
|
222
181
|
],
|
|
223
182
|
"cssLayout": [
|
|
224
|
-
{
|
|
225
|
-
"filePath": "path/to/styles.module.css",
|
|
226
|
-
"classNamingConvention": "camelCase|kebab-case|BEM",
|
|
227
|
-
"baseClass": "root",
|
|
228
|
-
"layouts": [
|
|
229
|
-
{
|
|
230
|
-
"selector": ".className",
|
|
231
|
-
"display": "flex|grid|block",
|
|
232
|
-
"direction": "row|column|grid-template",
|
|
233
|
-
"gap": "8px|none",
|
|
234
|
-
"wrap": "wrap|nowrap|absent",
|
|
235
|
-
"logicalProperties": true,
|
|
236
|
-
"stateSelectors": ["[data-state=active]", "[aria-selected=true]"]
|
|
237
|
-
}
|
|
238
|
-
],
|
|
239
|
-
"responsiveBreakpoints": ["768px", "1024px"]
|
|
240
|
-
}
|
|
183
|
+
{"filePath": "path/to/styles.module.css", "classNamingConvention": "camelCase|kebab-case|BEM", "baseClass": "root", "layouts": [{"selector": ".className", "display": "flex|grid|block", "direction": "row|column|grid-template", "gap": "8px|none", "wrap": "wrap|nowrap|absent", "logicalProperties": true, "stateSelectors": ["[data-state=active]", "[aria-selected=true]"]}], "responsiveBreakpoints": ["768px", "1024px"]}
|
|
241
184
|
],
|
|
242
185
|
"stateDisplay": [
|
|
243
|
-
{
|
|
244
|
-
"component": "ComponentName",
|
|
245
|
-
"states": [
|
|
246
|
-
{"name": "loading|empty|partial|error|ready|disabled", "trigger": "what causes this state", "renders": "brief description"}
|
|
247
|
-
],
|
|
248
|
-
"unsupportedStates": ["states the component does not currently express"]
|
|
249
|
-
}
|
|
186
|
+
{"component": "ComponentName", "states": [{"name": "loading|empty|partial|error|ready|disabled", "trigger": "what causes this state", "renders": "brief description"}], "unsupportedStates": ["states the component does not currently express"]}
|
|
250
187
|
],
|
|
251
188
|
"displayConditions": [
|
|
252
|
-
{
|
|
253
|
-
"component": "ComponentName",
|
|
254
|
-
"condition": "feature_flag|role|route|region|tenant|page_context",
|
|
255
|
-
"predicateLocation": "path/to/file:line",
|
|
256
|
-
"predicate": "expression",
|
|
257
|
-
"gatedSubtree": "brief description"
|
|
258
|
-
}
|
|
189
|
+
{"component": "ComponentName", "condition": "feature_flag|role|route|region|tenant|page_context", "predicateLocation": "path/to/file:line", "predicate": "expression", "gatedSubtree": "brief description"}
|
|
259
190
|
],
|
|
260
|
-
"i18n": {
|
|
261
|
-
"format": "csv|json|code-catalog|other",
|
|
262
|
-
"structuralConventions": {"csvColumns": 2, "trailingComma": false, "jsonNestingDepth": 1},
|
|
263
|
-
"keyNamingConvention": "pattern with examples",
|
|
264
|
-
"locales": ["ja-JP", "en-US"],
|
|
265
|
-
"localeGaps": ["keys present in one locale only"],
|
|
266
|
-
"generatedTypings": {"command": "generator command", "outputPath": "path/to/output"}
|
|
267
|
-
},
|
|
191
|
+
"i18n": {"format": "csv|json|code-catalog|other", "structuralConventions": {"csvColumns": 2, "trailingComma": false, "jsonNestingDepth": 1}, "keyNamingConvention": "pattern with examples", "locales": ["ja-JP", "en-US"], "localeGaps": ["keys present in one locale only"], "generatedTypings": {"command": "generator command", "outputPath": "path/to/output"}},
|
|
268
192
|
"accessibility": [
|
|
269
|
-
{
|
|
270
|
-
"component": "ComponentName",
|
|
271
|
-
"ariaAttributes": ["role=button", "aria-label fed by prop accessibleName"],
|
|
272
|
-
"keyboardHandling": "Enter and Space mapped to onClick",
|
|
273
|
-
"focusStyling": "focus-visible outline",
|
|
274
|
-
"testCoverage": "axe checks present|absent"
|
|
275
|
-
}
|
|
193
|
+
{"component": "ComponentName", "ariaAttributes": ["role=button", "aria-label fed by prop accessibleName"], "keyboardHandling": "Enter and Space mapped to onClick", "focusStyling": "focus-visible outline", "testCoverage": "axe checks present|absent"}
|
|
276
194
|
],
|
|
277
195
|
"generatedArtifacts": [
|
|
278
|
-
{
|
|
279
|
-
"kind": "css-module-typings|message-catalog-typings|route-typings|other",
|
|
280
|
-
"command": "generator command",
|
|
281
|
-
"trigger": "on *.module.css change|manual|other",
|
|
282
|
-
"consumers": ["typecheck", "test", "build", "runtime"]
|
|
283
|
-
}
|
|
196
|
+
{"kind": "css-module-typings|message-catalog-typings|route-typings|other", "command": "generator command", "trigger": "on *.module.css change|manual|other", "consumers": ["typecheck", "test", "build", "runtime"]}
|
|
284
197
|
],
|
|
285
198
|
"focusAreas": [
|
|
286
|
-
{
|
|
287
|
-
"fact_id": "src/components/Card/Card.tsx:Card",
|
|
288
|
-
"area": "Brief UI area name",
|
|
289
|
-
"evidence": "componentStructure[name=Card] | cssLayout[selector=.root] | propsPatterns[groupKey=...] | externalResources.designOrigin",
|
|
290
|
-
"factsToAddress": "Concrete UI facts the designer or implementer must respect",
|
|
291
|
-
"risk": "What inconsistency results if these facts are omitted"
|
|
292
|
-
}
|
|
199
|
+
{"fact_id": "src/components/Card/Card.tsx:Card", "area": "Brief UI area name", "evidence": "componentStructure[name=Card] | cssLayout[selector=.root] | propsPatterns[groupKey=...] | externalResources.designOrigin", "factsToAddress": "Concrete UI facts the designer or implementer must respect", "risk": "What inconsistency results if these facts are omitted"}
|
|
293
200
|
],
|
|
294
201
|
"candidateWriteSet": [
|
|
295
|
-
{
|
|
296
|
-
"path": "src/components/Card/Card.tsx",
|
|
297
|
-
"reasonRef": "focusAreas[fact_id=src/components/Card/Card.tsx:Card]",
|
|
298
|
-
"confidence": "high|medium|low"
|
|
299
|
-
}
|
|
202
|
+
{"path": "src/components/Card/Card.tsx", "reasonRef": "focusAreas[fact_id=src/components/Card/Card.tsx:Card]", "confidence": "high|medium|low"}
|
|
300
203
|
],
|
|
301
|
-
"limitations": [
|
|
302
|
-
"Areas the analysis could not reach with confidence"
|
|
303
|
-
]
|
|
204
|
+
"limitations": ["Areas the analysis could not reach with confidence"]
|
|
304
205
|
}
|
|
305
206
|
```
|
|
306
207
|
|
|
@@ -25,10 +25,10 @@ You are a UI specification specialist AI assistant for creating UI Specification
|
|
|
25
25
|
## Required Information
|
|
26
26
|
|
|
27
27
|
- **PRD**: PRD document path, used when a PRD exists for the feature. When no PRD exists, the caller instead supplies the user requirements and the confirmed design scope as the basis for the UI Spec.
|
|
28
|
-
- **codebase_analysis**: Codebase analysis JSON
|
|
28
|
+
- **codebase_analysis**: Codebase analysis JSON (provided by the caller, especially in the no-PRD case). Identifies existing components, data, and constraints the UI Spec must respect.
|
|
29
29
|
- **Prototype code path**: Path to prototype code (optional, placed in `docs/ui-spec/assets/{feature-name}/`)
|
|
30
30
|
- **Existing frontend codebase**: Will be investigated automatically
|
|
31
|
-
- **ui_analysis**: UI fact-gathering JSON
|
|
31
|
+
- **ui_analysis**: UI fact-gathering JSON (optional). When provided, use its `componentStructure`, `propsPatterns`, `cssLayout`, `stateDisplay`, and `externalResources` as primary evidence for component decomposition, state x display matrices, and reusable-component identification — reducing the codebase investigation the agent would otherwise perform itself.
|
|
32
32
|
|
|
33
33
|
## Mandatory Process Before UI Spec Creation
|
|
34
34
|
|
|
@@ -105,7 +105,7 @@ Execute file output immediately (considered approved at execution).
|
|
|
105
105
|
- [ ] If prototype provided: prototype is placed in `docs/ui-spec/assets/`
|
|
106
106
|
- [ ] All TBDs in Open Items have owner and deadline
|
|
107
107
|
- [ ] All UI Spec requirements align with PRD requirements
|
|
108
|
-
- [ ] **Component heading uniqueness**: Every component is documented under a section heading whose text is unique within this UI Spec. Use the format `## Component: [ComponentName]` (or `### Component: [ComponentName]` when nested under a screen). Downstream
|
|
108
|
+
- [ ] **Component heading uniqueness**: Every component is documented under a section heading whose text is unique within this UI Spec. Use the format `## Component: [ComponentName]` (or `### Component: [ComponentName]` when nested under a screen). Downstream steps reference components by exact heading text — duplicate or paraphrased headings break the propagation chain.
|
|
109
109
|
- **Disambiguation rule**: When two components share a base name (e.g., the same `AlertCard` rendered as a banner variant and as an inline variant), append a parenthetical qualifier to make each heading unique: `Component: AlertCard (Banner variant)` and `Component: AlertCard (Inline variant)`. Verify uniqueness with a final pass: extract all `Component: ` headings, confirm zero duplicates
|
|
110
110
|
|
|
111
111
|
## Important Design Principles
|
|
@@ -61,7 +61,8 @@ Check the input `pathMap` for completeness:
|
|
|
61
61
|
|
|
62
62
|
1. **Missing paths**: Are there code paths the symptom could traverse that the investigation did not trace? (e.g., error handling branches, async forks, fallback paths)
|
|
63
63
|
2. **Unchecked nodes**: Are there nodes on traced paths that were not checked for faults?
|
|
64
|
-
3. **
|
|
64
|
+
3. **Adjacent cases**: When the investigation concerns a `bug-fix`, `regression`, `state-change`, or `boundary-change` (the debugging flow carries no Change Category field, so judge these from the investigation itself), are there cases sharing the same path, contract, persisted state, or external boundary that could carry the same fault? Trace all plausible adjacent cases, or explicitly justify any left untraced
|
|
65
|
+
4. **Additional failure points**: If missing paths, unchecked nodes, or adjacent cases reveal new faults, record them
|
|
65
66
|
|
|
66
67
|
The goal is to verify that the investigation's path coverage is sufficient.
|
|
67
68
|
|
|
@@ -115,78 +116,33 @@ Final message: exactly one JSON object matching the schema below (begins with `{
|
|
|
115
116
|
"identifiedGaps": ["Missing paths or unchecked nodes"]
|
|
116
117
|
},
|
|
117
118
|
"triangulationSupplements": [
|
|
118
|
-
{
|
|
119
|
-
"source": "Additional information source investigated",
|
|
120
|
-
"findings": "Content discovered",
|
|
121
|
-
"impactOnFailurePoints": "Impact on existing failure points"
|
|
122
|
-
}
|
|
119
|
+
{"source": "Additional information source investigated", "findings": "Content discovered", "impactOnFailurePoints": "Impact on existing failure points"}
|
|
123
120
|
],
|
|
124
121
|
"externalResearch": [
|
|
125
|
-
{
|
|
126
|
-
"query": "Search query used",
|
|
127
|
-
"source": "Information source",
|
|
128
|
-
"findings": "Related information discovered",
|
|
129
|
-
"impactOnFailurePoints": "Impact on failure points"
|
|
130
|
-
}
|
|
122
|
+
{"query": "Search query used", "source": "Information source", "findings": "Related information discovered", "impactOnFailurePoints": "Impact on failure points"}
|
|
131
123
|
],
|
|
132
124
|
"coverageCheck": {
|
|
133
125
|
"missingPaths": ["Paths not traced in the investigation input"],
|
|
134
126
|
"uncheckedNodes": ["Nodes on traced paths that were not checked"],
|
|
135
127
|
"additionalFailurePoints": [
|
|
136
|
-
{
|
|
137
|
-
"id": "AFP1",
|
|
138
|
-
"nodeId": "Node reference",
|
|
139
|
-
"symptomId": "Symptom reference",
|
|
140
|
-
"description": "Newly discovered fault",
|
|
141
|
-
"checkStatus": "supported|weakened|blocked|not_reached",
|
|
142
|
-
"evidence": [
|
|
143
|
-
{"type": "supporting", "detail": "Evidence detail", "source": "file:line"}
|
|
144
|
-
]
|
|
145
|
-
}
|
|
128
|
+
{"id": "AFP1", "nodeId": "Node reference", "symptomId": "Symptom reference", "description": "Newly discovered fault", "checkStatus": "supported|weakened|blocked|not_reached", "evidence": [{"type": "supporting", "detail": "Evidence detail", "source": "file:line"}]}
|
|
146
129
|
]
|
|
147
130
|
},
|
|
148
131
|
"devilsAdvocateFindings": [
|
|
149
|
-
{
|
|
150
|
-
"targetFailurePoint": "FP1",
|
|
151
|
-
"alternativeExplanation": "Could this be correct behavior?",
|
|
152
|
-
"hiddenAssumptions": ["Implicit assumptions"],
|
|
153
|
-
"potentialCounterEvidence": ["Potentially overlooked counter-evidence"]
|
|
154
|
-
}
|
|
132
|
+
{"targetFailurePoint": "FP1", "alternativeExplanation": "Could this be correct behavior?", "hiddenAssumptions": ["Implicit assumptions"], "potentialCounterEvidence": ["Potentially overlooked counter-evidence"]}
|
|
155
133
|
],
|
|
156
134
|
"failurePointEvaluation": [
|
|
157
|
-
{
|
|
158
|
-
"failurePointId": "FP1 or AFP1",
|
|
159
|
-
"description": "Failure point description",
|
|
160
|
-
"originalCheckStatus": "checkStatus from the investigation input (null when the AFP is discovered during verification)",
|
|
161
|
-
"finalStatus": "supported|weakened|blocked|not_reached",
|
|
162
|
-
"statusChangeReason": "Why status changed (if changed)",
|
|
163
|
-
"remainingUncertainty": ["Remaining uncertainty"]
|
|
164
|
-
}
|
|
135
|
+
{"failurePointId": "FP1 or AFP1", "description": "Failure point description", "originalCheckStatus": "checkStatus from the investigation input (null when the AFP is discovered during verification)", "finalStatus": "supported|weakened|blocked|not_reached", "statusChangeReason": "Why status changed (if changed)", "remainingUncertainty": ["Remaining uncertainty"]}
|
|
165
136
|
],
|
|
166
137
|
"conclusion": {
|
|
167
138
|
"confirmedFailurePoints": [
|
|
168
|
-
{
|
|
169
|
-
"failurePointId": "FP1",
|
|
170
|
-
"description": "What the fault is",
|
|
171
|
-
"location": "file:line",
|
|
172
|
-
"symptomId": "S1",
|
|
173
|
-
"symptomExplained": "How this fault leads to the observed symptom",
|
|
174
|
-
"causeCategory": "typo|logic_error|missing_constraint|design_gap|external_factor",
|
|
175
|
-
"finalStatus": "supported|weakened",
|
|
176
|
-
"causalChain": ["Phenomenon", "→ Direct cause", "→ Root cause"],
|
|
177
|
-
"impactScope": ["Affected file paths"],
|
|
178
|
-
"recurrenceRisk": "low|medium|high"
|
|
179
|
-
}
|
|
139
|
+
{"failurePointId": "FP1", "description": "What the fault is", "location": "file:line", "symptomId": "S1", "symptomExplained": "How this fault leads to the observed symptom", "causeCategory": "typo|logic_error|missing_constraint|design_gap|external_factor", "finalStatus": "supported|weakened", "causalChain": ["Phenomenon", "→ Direct cause", "→ Root cause"], "impactScope": ["Affected file paths"], "recurrenceRisk": "low|medium|high"}
|
|
180
140
|
],
|
|
181
141
|
"refutedFailurePoints": [
|
|
182
142
|
{"failurePointId": "FP2", "reason": "Reason for refutation"}
|
|
183
143
|
],
|
|
184
144
|
"failurePointRelationships": [
|
|
185
|
-
{
|
|
186
|
-
"points": ["FP1", "FP3"],
|
|
187
|
-
"relationship": "independent|dependent|same_chain",
|
|
188
|
-
"detail": "Description of how the failure points relate"
|
|
189
|
-
}
|
|
145
|
+
{"points": ["FP1", "FP3"], "relationship": "independent|dependent|same_chain", "detail": "Description of how the failure points relate"}
|
|
190
146
|
],
|
|
191
147
|
"coverageAssessment": "sufficient|partial|insufficient",
|
|
192
148
|
"unresolvedSymptoms": ["Symptoms not fully explained by confirmed failure points"],
|
|
@@ -74,9 +74,9 @@ service-integration-e2e gap:
|
|
|
74
74
|
Detected boundaries: [list crossings and AC references]
|
|
75
75
|
```
|
|
76
76
|
|
|
77
|
-
"Was not communicated" means the upstream planning flow skipped test skeleton generation entirely — in that case the absence reason field is not
|
|
77
|
+
"Was not communicated" means the upstream planning flow skipped test skeleton generation entirely — in that case the absence reason field is not provided, so the gap check still runs. Per the test-skeleton generation contract, when a skeleton was generated `e2eAbsenceReason.<lane>` is null; when generation ran but produced no skeleton, the reason is one of the strings enumerated in that contract — both cases mean the field WAS communicated, so no gap warning fires.
|
|
78
78
|
|
|
79
|
-
When an `e2eAbsenceReason` for a lane carries a string value (e.g., `no_multi_step_journey`, `below_threshold_user_confirmed`, `no_real_service_dependency` — see
|
|
79
|
+
When an `e2eAbsenceReason` for a lane carries a string value (e.g., `no_multi_step_journey`, `below_threshold_user_confirmed`, `no_real_service_dependency` — see the test-skeleton generation contract for the per-lane allowed values), absence in that lane is intentional — skip the gap check for that lane.
|
|
80
80
|
|
|
81
81
|
This check applies regardless of whether Strategy A or B was selected. Integration-only skeletons being provided does not imply E2E coverage. Service-internal journeys (async pipelines, service-to-service sagas) are not flagged for the reserved-slot rule but may still warrant service-integration-e2e through the normal ROI path.
|
|
82
82
|
|
|
@@ -98,36 +98,38 @@ Map each extracted item to a covering task. Items may be covered by a dedicated
|
|
|
98
98
|
|
|
99
99
|
If an item has no covering task, set Gap Status to `gap` with justification in Notes. **When the Traceability table contains any `gap` entry, the plan is in draft status.** Output the plan as draft, but do not finalize it until the user has confirmed each justified gap. Unjustified gaps (no Notes) are errors — add a covering task or provide justification before proceeding.
|
|
100
100
|
|
|
101
|
+
**Carry binding observable values verbatim.** Identify binding observable values from the Design Doc directly, not from the Traceability table's summarized DD Item, so the exact column/label order and derived-display rules are not lost to a summary. A binding observable value is a column/label set and order (Contract Type `structure-order`), a derived-display rule — a display value derived from another field — (`derived-display`), or a state-lifecycle negative — a condition under which the state must stay unused — (`state-lifecycle-negative`). Copy each value **verbatim from the Design Doc** into the plan's **Reference Contract Values** table (see plan template), one row per value with its Contract Type token, mapped to the covering task(s). Preserve the full value, so the covering task is later checked against this exact value rather than a re-derived summary. This table covers DD-derived observable contracts only; serialized boundaries go in the Connection Map (step 5b) and ADR-derived structural decisions in the ADR Bindings table.
|
|
102
|
+
|
|
101
103
|
### 5a. Map UI Spec Components to Tasks (when UI Spec provided)
|
|
102
104
|
|
|
103
|
-
When a UI Spec is among the inputs, also map components and states to the tasks that implement them.
|
|
105
|
+
When a UI Spec is among the inputs, also map components and states to the tasks that implement them. This mapping is read in a downstream step to populate each task's Investigation Targets, so without it the UI Spec never reaches implementation.
|
|
104
106
|
|
|
105
107
|
For each component documented in the UI Spec:
|
|
106
|
-
1. Identify the component's section heading exactly as it appears in the UI Spec (the heading is the reference key
|
|
108
|
+
1. Identify the component's section heading exactly as it appears in the UI Spec (the heading is the reference key, and headings are unique)
|
|
107
109
|
2. Identify which states (default / loading / empty / error / partial) the implementation must cover
|
|
108
110
|
3. Identify the task(s) in this plan that implement the component or its tests
|
|
109
111
|
|
|
110
112
|
Record the mapping in the **UI Spec Component → Task Mapping** table (see plan template). One row per component. Components with no covering task are flagged as `gap` requiring user confirmation, identical to the Design-to-Plan Traceability rule.
|
|
111
113
|
|
|
112
|
-
### 5b. Map
|
|
114
|
+
### 5b. Map Boundaries to Tasks (when crossing a runtime/deployment boundary, or passing a serialized value across any boundary)
|
|
113
115
|
|
|
114
|
-
|
|
116
|
+
Build a Connection Map when the implementation crosses a runtime or deployment boundary, **or when a value is serialized and re-parsed across any boundary (even within one runtime)**, so boundary context propagates to each affected task in the downstream step.
|
|
115
117
|
|
|
116
|
-
**A boundary qualifies for the Connection Map
|
|
117
|
-
-
|
|
118
|
-
-
|
|
119
|
-
- A failure on one side produces an observable signal on the other (status code, missing field, timeout, dropped message)
|
|
118
|
+
**A boundary qualifies for the Connection Map when EITHER condition holds**:
|
|
119
|
+
- *Cross-process*: the two sides run in separate processes, services, or runtimes (web client ↔ HTTP server, service A ↔ service B, frontend bundle ↔ backend handler); a serialized contract crosses between them (HTTP request/response, message envelope, RPC, event payload); and a failure on one side produces an observable signal on the other.
|
|
120
|
+
- *Serialized in-runtime*: a value is encoded and re-parsed across a boundary even within a single runtime — through a medium such as a query string, CLI argument, environment variable, config entry, message/queue payload, storage key, or file (e.g., one component encodes a value another component or process later decodes; a value written to storage and read after a transition). Producer and consumer must agree on the exact representation.
|
|
120
121
|
|
|
121
122
|
**Excluded — these are NOT boundaries for the Connection Map**:
|
|
122
|
-
- A package importing a sibling utility, type definition, or shared constant from the same monorepo (in-process, no serialized
|
|
123
|
-
- Internal layering within the same runtime (e.g., handler → usecase → repository)
|
|
123
|
+
- A package importing a sibling utility, type definition, or shared constant from the same monorepo (in-process, no serialized value)
|
|
124
|
+
- Internal layering within the same runtime where values pass as typed in-memory calls (e.g., handler → usecase → repository)
|
|
124
125
|
- Source code dependencies that compile/bundle into the same artifact
|
|
125
126
|
|
|
126
127
|
For each qualifying boundary:
|
|
127
|
-
1. Identify the boundary (e.g., `
|
|
128
|
-
2. Identify the owner module/package
|
|
129
|
-
3.
|
|
130
|
-
4. Identify the
|
|
128
|
+
1. Identify the boundary (e.g., `service A → service B`, `producer → storage → consumer`, `component A → component B via an encoded parameter`)
|
|
129
|
+
2. Identify the owner on each side (producer and consumer) and record it as concrete file path(s), not a bare module/package/component name, so it resolves as an Investigation Target downstream
|
|
130
|
+
3. For a serialized boundary, record the **Serialized Format** (the exact representation the producer emits) and the **Consumer Parse Rule** (how the consumer decodes/validates it). Set both to "—" when the contract is already captured by the Expected Signal (e.g., a cross-process call whose body matches the agreed schema); fill them when producer and consumer must agree on a specific encoding of a value (query string, storage key, CLI argument, config entry, message field).
|
|
131
|
+
4. Identify the expected signal that confirms the boundary works (e.g., a response matching the agreed schema; the consumer reproducing the producer's values)
|
|
132
|
+
5. Identify the task(s) that implement either side of the boundary
|
|
131
133
|
|
|
132
134
|
Record the mapping in the **Connection Map** table (see plan template). Omit this section entirely when no qualifying boundary exists.
|
|
133
135
|
|
|
@@ -162,8 +164,8 @@ For each task, derive completion criteria from Design Doc acceptance criteria. A
|
|
|
162
164
|
## Input Parameters
|
|
163
165
|
|
|
164
166
|
- **mode**: `create` (default) | `update`
|
|
165
|
-
- **scale**: `small` | `medium` | `large` (taken from
|
|
166
|
-
- **designDoc**: Path to Design Doc(s) (may be multiple for cross-layer features). At `scale: small` Design Doc may be absent; in that case derive the task directly from the
|
|
167
|
+
- **scale**: `small` | `medium` | `large` (taken from the requirements-analysis result; controls output mode — see "Output Mode by Scale" below)
|
|
168
|
+
- **designDoc**: Path to Design Doc(s) (may be multiple for cross-layer features). At `scale: small` Design Doc may be absent; in that case derive the task directly from the requirements-analysis output and PRD update notes.
|
|
167
169
|
- **uiSpec** (optional): Path to UI Specification (frontend/fullstack features)
|
|
168
170
|
- **prd** (optional): Path to PRD document
|
|
169
171
|
- **adr** (optional): Path to ADR document
|
|
@@ -174,8 +176,8 @@ For each task, derive completion criteria from Design Doc acceptance criteria. A
|
|
|
174
176
|
|
|
175
177
|
| scale | Output | Path | Rationale |
|
|
176
178
|
|---|---|---|---|
|
|
177
|
-
| `small` | A single task file in **task-template format** (per documentation-criteria skill) | `docs/plans/tasks/{feature-name}-task-YYYYMMDD.md` | At 1-2 files there is no separate decomposition step; the task file
|
|
178
|
-
| `medium` / `large` | A work plan in **plan-template format** | `docs/plans/{feature-name}-plan.md` | Decomposition into individual task files is performed
|
|
179
|
+
| `small` | A single task file in **task-template format** (per documentation-criteria skill) | `docs/plans/tasks/{feature-name}-task-YYYYMMDD.md` | At 1-2 files there is no separate decomposition step; the task file passed to the execution step as `task_file` is produced directly here. |
|
|
180
|
+
| `medium` / `large` | A work plan in **plan-template format** | `docs/plans/{feature-name}-plan.md` | Decomposition into individual task files is performed in a downstream step. |
|
|
179
181
|
|
|
180
182
|
In `small` mode, skip the multi-phase composition (Step 4) and the Design-to-Plan Traceability mapping (Step 5); produce the task file with `## Target Files`, `## Investigation Targets`, `## Investigation Notes`, `## Implementation Steps (TDD: Red-Green-Refactor)`, `## Quality Assurance Mechanisms`, `## Operation Verification Methods`, and `## Completion Criteria` sections, plus the `Metadata:` block (`Dependencies:`, `Provides:`, `Size:`). Do not output a separate work plan file at this scale.
|
|
181
183
|
|
|
@@ -352,11 +354,14 @@ When creating work plans, **Phase Structure Diagrams** and **Task Dependency Dia
|
|
|
352
354
|
- [ ] Design-to-Plan Traceability table complete (all DD technical requirements categorized and mapped)
|
|
353
355
|
- [ ] No `gap` entries without justification
|
|
354
356
|
- [ ] All justified `gap` entries flagged for user confirmation before plan approval
|
|
357
|
+
- [ ] Reference Contract Values table complete (when the Design Doc specifies binding observable values: column/label order, derived-display, state-lifecycle negative)
|
|
358
|
+
- [ ] Each value copied verbatim from the Design Doc, preserving full wording, and mapped to a covering task
|
|
355
359
|
- [ ] UI Spec Component → Task Mapping table complete (when UI Spec provided)
|
|
356
360
|
- [ ] Every UI Spec component has a covering task, OR an explicit `gap` justification
|
|
357
361
|
- [ ] Component reference uses the UI Spec section heading exactly as it appears in the document
|
|
358
|
-
- [ ] Connection Map table complete (when
|
|
359
|
-
- [ ] Every boundary lists owner
|
|
362
|
+
- [ ] Connection Map table complete (when crossing packages/services, or passing a serialized value across any boundary)
|
|
363
|
+
- [ ] Every boundary lists owner file path(s) and expected signal
|
|
364
|
+
- [ ] Serialized boundaries record Serialized Format and Consumer Parse Rule
|
|
360
365
|
- [ ] Every boundary maps to at least one covering task on each side
|
|
361
366
|
- [ ] ADR Bindings table complete (when ADR provided or referenced from Design Doc)
|
|
362
367
|
- [ ] Each row represents one implementation-binding decision (placement, dependency, contract, data flow, or persistence)
|