qfai 1.8.0 → 1.8.2

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 (60) hide show
  1. package/README.md +1 -1
  2. package/assets/init/.qfai/assistant/agents/frontend-engineer.md +2 -2
  3. package/assets/init/.qfai/assistant/agents/product-experience-architect.md +2 -2
  4. package/assets/init/.qfai/assistant/skills/qfai-atdd/SKILL.md +4 -0
  5. package/assets/init/.qfai/assistant/skills/qfai-configure/SKILL.md +2 -1
  6. package/assets/init/.qfai/assistant/skills/qfai-discussion/SKILL.md +60 -330
  7. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/14_Review-Request.md +15 -16
  8. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/00_index.md +13 -21
  9. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/30_exploration_brief.md +29 -0
  10. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/31_reference_pool.md +13 -0
  11. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/32_design_anti_goals.md +10 -0
  12. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/33_exploration_rubric.md +27 -0
  13. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/34_evaluator_calibration.md +17 -0
  14. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/50_review_input_bundle.md +16 -22
  15. package/assets/init/.qfai/assistant/skills/qfai-implement/SKILL.md +7 -5
  16. package/assets/init/.qfai/assistant/skills/qfai-prototyping/SKILL.md +187 -132
  17. package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/design-system-compliance.md +22 -0
  18. package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/evidence-requirements.md +31 -0
  19. package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/iteration-cycle.md +25 -0
  20. package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/l1-review-guide.md +36 -0
  21. package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/l2-review-guide.md +39 -0
  22. package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/reviewer-gate.md +24 -0
  23. package/assets/init/.qfai/assistant/skills/qfai-sdd/SKILL.md +18 -9
  24. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/contracts/design-system.sample.yaml +22 -0
  25. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/contracts/evaluation-rubric.sample.yaml +16 -0
  26. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/contracts/evaluator-calibration.sample.yaml +9 -0
  27. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/contracts/exploration-brief.sample.yaml +10 -0
  28. package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/contracts/selected-direction.sample.yaml +7 -0
  29. package/assets/init/.qfai/assistant/skills/qfai-verify/SKILL.md +3 -0
  30. package/assets/init/.qfai/assistant/steering/agent-catalog.yml +1 -1
  31. package/assets/init/.qfai/assistant/steering/ui-definition-protocol.md +6 -6
  32. package/assets/init/.qfai/contracts/README.md +17 -10
  33. package/assets/init/.qfai/contracts/design/README.md +23 -15
  34. package/assets/init/.qfai/contracts/ui/README.md +9 -8
  35. package/assets/init/.qfai/discussion/README.md +18 -18
  36. package/assets/uix-rev/comparison-review.md +8 -10
  37. package/assets/uix-rev/contracts-review.md +1 -1
  38. package/assets/uix-rev/scoring-review.md +20 -46
  39. package/assets/uix-rev/strategy-review.md +11 -16
  40. package/dist/cli/index.cjs +7709 -16321
  41. package/dist/cli/index.cjs.map +1 -1
  42. package/dist/cli/index.mjs +7776 -16388
  43. package/dist/cli/index.mjs.map +1 -1
  44. package/dist/index.cjs +13589 -20963
  45. package/dist/index.cjs.map +1 -1
  46. package/dist/index.d.cts +196 -589
  47. package/dist/index.d.ts +196 -589
  48. package/dist/index.mjs +10289 -17651
  49. package/dist/index.mjs.map +1 -1
  50. package/package.json +1 -1
  51. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/10_implementation_strategy.md +0 -38
  52. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/11_design_taste_interview.md +0 -45
  53. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/12_design_system.md +0 -115
  54. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/20_design_eval_invariant.md +0 -68
  55. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/21_design_eval_trend_derived.md +0 -130
  56. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/22_design_eval_product_specific.md +0 -68
  57. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/23_design_eval_aggregate.md +0 -53
  58. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/24_design_eval_dynamic_overrides.md +0 -28
  59. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/30_option_comparison.md +0 -56
  60. package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/31_selected_anchor_screen.md +0 -42
@@ -0,0 +1,25 @@
1
+ # Iteration Cycle
2
+
3
+ Each iteration follows this order:
4
+
5
+ 1. Capture screenshot and HTML for every declared screen.
6
+ 2. Launch L1 and L2 evaluator sub-agents with the required inputs.
7
+ 3. Aggregate findings and classify them by severity and disposition.
8
+ 4. Fix the UI according to findings.
9
+ 5. Re-capture screenshot and HTML evidence for every changed screen.
10
+ 6. Re-run the evaluators.
11
+
12
+ ## Minimum iteration count
13
+
14
+ - Completion requires at least 2 iterations.
15
+ - A single successful-looking pass is not enough.
16
+ - If evidence is missing in any iteration, that iteration does not count as complete.
17
+
18
+ ## Stop conditions
19
+
20
+ You may stop only when all of the following are true:
21
+
22
+ - all declared screens have screenshot + HTML evidence
23
+ - blocking findings are closed or dispositioned
24
+ - validate passes with `--fail-on error`
25
+ - independent reviewer returns `PASS`
@@ -0,0 +1,36 @@
1
+ # L1 Review Guide
2
+
3
+ L1 checks implementation fidelity.
4
+
5
+ ## Inputs
6
+
7
+ - screenshots
8
+ - HTML snapshots
9
+ - canonical UI contracts from `.qfai/contracts/ui/*.yaml`
10
+ - latest code state
11
+
12
+ ## Required checks
13
+
14
+ For each declared screen:
15
+
16
+ - the screen is reachable/rendered
17
+ - screenshot exists
18
+ - HTML snapshot exists
19
+ - required elements are visibly present
20
+ - required actions are wired or explicitly marked missing
21
+ - blocking UI failures are identified
22
+
23
+ ## Failure handling
24
+
25
+ - Missing screenshot or HTML => score `0`, rerun required
26
+ - Missing primary action wiring => blocking finding
27
+ - Severe route/render failure => blocking finding
28
+
29
+ ## Output
30
+
31
+ Return:
32
+
33
+ - per-screen findings
34
+ - blocking/immediate-fix classification
35
+ - a numeric score per axis in the range `0.0..1.0`
36
+ - rationale tied to screenshot/HTML evidence
@@ -0,0 +1,39 @@
1
+ # L2 Review Guide
2
+
3
+ L2 checks product experience and design alignment.
4
+
5
+ ## Inputs
6
+
7
+ - screenshots
8
+ - HTML snapshots
9
+ - `.qfai/contracts/design/evaluation-axes.yaml`
10
+ - `.qfai/contracts/design/anchor-selection.yaml`
11
+ - `.qfai/contracts/design/design-system.yaml`
12
+ - previous iteration score
13
+
14
+ ## 3-layer evaluation family
15
+
16
+ L2 must explicitly use all of:
17
+
18
+ - invariant axes
19
+ - trend-derived axes
20
+ - product-specific axes
21
+ - aggregate rules
22
+
23
+ ## Required checks
24
+
25
+ - visual hierarchy aligns with invariant axes
26
+ - trend-based styling aligns with trend-derived axes
27
+ - product-specific differentiation is visible
28
+ - selected anchor direction is reflected in the current UI
29
+ - design system checklist is respected
30
+ - experience findings are recorded separately from blocking L1 findings
31
+
32
+ ## Output
33
+
34
+ Return:
35
+
36
+ - per-axis findings
37
+ - revise/manual-review classification
38
+ - a numeric score per axis in the range `0.0..1.0`
39
+ - rationale tied to screenshot/HTML evidence and axis refs
@@ -0,0 +1,24 @@
1
+ # Reviewer Gate
2
+
3
+ The reviewer is an independent gate, not the implementation author.
4
+
5
+ ## Reviewer must verify
6
+
7
+ - all declared screens have screenshot evidence
8
+ - all declared screens have HTML snapshot evidence
9
+ - L1 and L2 evaluators used the required inputs
10
+ - the 3-layer evaluation family was referenced
11
+ - missing evidence triggered rerun rather than waiver
12
+ - `qfai validate --fail-on error` passed
13
+
14
+ ## Reviewer output
15
+
16
+ ```text
17
+ Result: PASS | REVISE
18
+ Findings:
19
+ - ...
20
+ Required fixes:
21
+ - ...
22
+ Evidence checked:
23
+ - ...
24
+ ```
@@ -190,9 +190,10 @@ Follow `.qfai/assistant/instructions/shared-skill-operating-baseline.md#delta-re
190
190
  - Use only skill-local templates under `.qfai/assistant/skills/qfai-sdd/templates/`, including `templates/contracts`, `templates/report`, and `templates/specs`.
191
191
  - Always write `.qfai/report/preflight_summary.md` before generating shared/spec artifacts.
192
192
  - Contracts are contract-first mandatory outputs in this skill.
193
+ - UI-bearing targets must be normalized into downstream-ready contracts under `.qfai/contracts/design/**` and `.qfai/contracts/ui/**`.
193
194
  - `_policies/05_Contracts.md` must include a Contract Index.
194
195
  - `/qfai-sdd` must stop when discussion-pack is missing, incomplete, or has blocking OQ.
195
- - Discussion-pack preflight is mandatory, including classification-aware `prototyping.yaml` validation.
196
+ - Discussion-pack preflight is mandatory, including contract-first checks that UI-bearing targets are normalized into required design/ui contracts before downstream generation.
196
197
  - Reviewer routing is fixed by `.qfai/assistant/steering/agent-routing.yml` and `.qfai/assistant/steering/review-profiles.yml`.
197
198
  - RCP wording must be sourced from `.qfai/assistant/skills/qfai-sdd/references/rcp_footer.md`.
198
199
  - `_policies/04_Business-Flow.md` must be Markdown and include Mermaid `flowchart` or `sequenceDiagram`.
@@ -221,6 +222,13 @@ Create or update layered SDD artifacts in one run so downstream execution phases
221
222
  - Shared `_policies/01..11` layered files
222
223
  - Target `spec-XXXX/01..10` layered files
223
224
  - Updated contracts under `.qfai/contracts/**`
225
+ - UI-bearing normalized contracts:
226
+ - `.qfai/contracts/design/exploration-brief.yaml`
227
+ - `.qfai/contracts/design/evaluation-rubric.yaml`
228
+ - `.qfai/contracts/design/evaluator-calibration.yaml`
229
+ - `.qfai/contracts/design/selected-direction.yaml`
230
+ - `.qfai/contracts/design/design-system.yaml`
231
+ - `.qfai/contracts/ui/*.yaml`
224
232
  - `.qfai/report/preflight_summary.md`
225
233
  - Evidence file: `.qfai/evidence/sdd-spec-XXXX.md`
226
234
 
@@ -232,14 +240,15 @@ The canonical file set is defined by skill templates under `.qfai/assistant/skil
232
240
  2. Analyze repository context, existing artifacts, constraints, and open decisions.
233
241
  3. Write `.qfai/report/preflight_summary.md`.
234
242
  4. Execute Phase 0 (Contracts-first).
235
- 5. Execute Phase 1 (Outline).
236
- 6. Ensure `_policies/11_Slice-Policy.md` exists and matches the current slicing model.
237
- 7. Execute Phase 2 (Slice) and pass slice gate for each target spec.
238
- 8. Execute Phase 3 (Plan finalize) after at least one slice gate passes.
239
- 9. Execute Phase 4 (Delta update).
240
- 10. Run `qfai validate --fail-on error --format github | tee .qfai/report/validate.log`.
241
- 11. Review `.qfai/report/specs-coverage/spec-*.md` and triage density-smell warnings.
242
- 12. If validate fails, fix source-layer artifacts and repeat until `error=0`.
243
+ 5. For UI-bearing targets, normalize discussion UIUX artifacts into design/ui contracts for downstream execution.
244
+ 6. Execute Phase 1 (Outline).
245
+ 7. Ensure `_policies/11_Slice-Policy.md` exists and matches the current slicing model.
246
+ 8. Execute Phase 2 (Slice) and pass slice gate for each target spec.
247
+ 9. Execute Phase 3 (Plan finalize) after at least one slice gate passes.
248
+ 10. Execute Phase 4 (Delta update).
249
+ 11. Run `qfai validate --fail-on error --format github | tee .qfai/report/validate.log`.
250
+ 12. Review `.qfai/report/specs-coverage/spec-*.md` and triage density-smell warnings.
251
+ 13. If validate fails, fix source-layer artifacts and repeat until `error=0`.
243
252
 
244
253
  Use:
245
254
 
@@ -0,0 +1,22 @@
1
+ # Downstream design-system contract generated by /qfai-sdd
2
+ visual_theme:
3
+ name: Editorial Clarity
4
+ rationale: Emphasize calm, data-dense hierarchy with restrained accents.
5
+ checklist:
6
+ color:
7
+ - use semantic primary accent only for key actions
8
+ typography:
9
+ - keep page title and body scale distinct by at least one step
10
+ spacing:
11
+ - use a consistent vertical rhythm
12
+ border_radius:
13
+ - keep card and button radius aligned
14
+ shadow:
15
+ - reserve strong shadow for overlays only
16
+ dos_and_donts:
17
+ - do: maintain clear hierarchy on the primary screen
18
+ - dont: mix multiple accent palettes on one screen
19
+ component_tone:
20
+ - keep components visibly related to the chosen direction
21
+ motion_rules:
22
+ - use motion to clarify hierarchy and state change
@@ -0,0 +1,16 @@
1
+ # Downstream evaluation rubric generated by /qfai-sdd
2
+ axes:
3
+ - id: design-quality
4
+ weight: 3
5
+ - id: originality
6
+ weight: 3
7
+ - id: craft
8
+ weight: 1
9
+ - id: functionality
10
+ weight: 1
11
+ hard_floors:
12
+ - functionality
13
+ - accessibility-risk
14
+ weighted_axes:
15
+ - design-quality
16
+ - originality
@@ -0,0 +1,9 @@
1
+ # Downstream evaluator calibration generated by /qfai-sdd
2
+ good_critique_examples:
3
+ - Skeptical, specific, and actionable feedback
4
+ too_lenient_examples:
5
+ - Praise that ignores blandness
6
+ blandness_fail_examples:
7
+ - Technically correct but generic
8
+ originality_fail_examples:
9
+ - Library defaults with no product-specific decisions
@@ -0,0 +1,10 @@
1
+ # Downstream exploration brief generated by /qfai-sdd
2
+ product_intent: Create a deliberate, non-generic product surface.
3
+ target_users:
4
+ - Primary end users
5
+ must_preserve_interactions:
6
+ - Primary task remains obvious
7
+ brand_signals:
8
+ - Confident
9
+ differentiation_targets:
10
+ - Avoid generic dashboard defaults
@@ -0,0 +1,7 @@
1
+ # Downstream selected direction generated by /qfai-prototyping
2
+ chosen_direction_id: DIR-001
3
+ winning_rationale: Strongest balance of originality and clarity.
4
+ carry_forward_rules:
5
+ - Preserve hierarchy strategy
6
+ rejected_summary:
7
+ - DIR-002: too generic
@@ -96,8 +96,10 @@ Use the shared schema.
96
96
  - Reviewer checks:
97
97
  - required roles were delegated;
98
98
  - validate evidence exists: `qfai validate --fail-on error` completed with `error=0`;
99
+ - declared screens have mandatory screenshot and HTML evidence under `.qfai/evidence/prototyping/`;
99
100
  - Drift Protocol enforced;
100
101
  - test-layer policy enforced against `test-layers.md`.
102
+ - gate counts and ratios are signals, not gates.
101
103
  - Route specialist reviewers from `.qfai/assistant/steering/agent-routing.yml`.
102
104
  - Default verify review set:
103
105
  - `qa-gatekeeper`
@@ -147,6 +149,7 @@ Run quality gates and produce evidence that the change is correct and safe.
147
149
 
148
150
  - Repo quality gates PASS (format/lint/type/test/build/etc).
149
151
  - QFAI checks PASS (at minimum: `qfai validate`, and optionally `qfai report`).
152
+ - Declared screens have mandatory screenshot and HTML evidence.
150
153
  - A concise evidence summary exists (copy‑paste for PR).
151
154
  - The PR-ready summary includes **Change Classification (Primary/Tags)** per `.qfai/assistant/instructions/change-classification.md`.
152
155
  - Evidence file exists: `.qfai/evidence/verify-<spec-id>.md`.
@@ -65,7 +65,7 @@ agents:
65
65
  - id: frontend-engineer
66
66
  kind: worker
67
67
  domain: frontend
68
- mission: Implement frontend behavior aligned with selected anchor, strategy, screen contracts, and product-surface decisions.
68
+ mission: Implement frontend behavior aligned with selected direction, finalized design system, screen contracts, and product-surface decisions.
69
69
  owned_artifacts: [ui-implementation, surface-evidence]
70
70
  tool_profile: frontend
71
71
  permission_profile: authoring
@@ -8,11 +8,11 @@ spec-0013 (CAP-0013) で定義された、下流 skill(prototyping / ATDD / TD
8
8
  **Primary truth** は step 1 の discussion sidecar artifacts にある。step 2 以降は **存在する場合のみ読む supporting input / fallback** であり、init 直後に未作成でも正常である。
9
9
 
10
10
  1. **Discussion-side UI/UX Sidecar Artifacts** (`discussion-*/uiux/`) — **primary source of truth**
11
- - `30_option_comparison.md` — オプション比較(比較 artifact
12
- - `31_selected_anchor_screen.md` — 選定結果 + selected anchor の SSOT
13
- - `10_implementation_strategy.md` — 実装戦略(strict canonical schema)
14
- - `11_design_taste_interview.md` — デザインテイストインタビュー
15
- - `20-24` — 3-layer 評価ファミリー(**invariant / trend-derived / product-specific / aggregate / dynamic overrides** の 5 sidecar のみ。`20` は invariant axes, **Trend Scan は sidecar ではなく `04_Sources.md#Trend Scan` が正本**。旧 `uiux/20_trend_scan.md` は廃止。)
11
+ - `30_exploration_brief.md` — 探索ブリーフ(product intent / brand signals / must-preserve interactions
12
+ - `31_reference_pool.md` — 参照プール(reference registry + local translation)
13
+ - `32_design_anti_goals.md` — 避けるべきデザイン方向
14
+ - `33_exploration_rubric.md` — 探索評価基準
15
+ - `34_evaluator_calibration.md` — evaluator 較正用 examples
16
16
  - `40_screen_contracts.md` — スクリーンコントラクト(strong schema)
17
17
  - `50_review_input_bundle.md` — レビュー入力バンドル
18
18
 
@@ -47,7 +47,7 @@ spec-0013 (CAP-0013) で定義された、下流 skill(prototyping / ATDD / TD
47
47
 
48
48
  ## Priority and Override Semantics
49
49
 
50
- - discussion sidecar artifacts が **primary truth**。具体的には (a) `uiux/30_option_comparison.md`(option comparison)、(b) `uiux/31_selected_anchor_screen.md`(selected anchor)、(c) `uiux/10_implementation_strategy.md`(implementation strategy)、(d) `uiux/40_screen_contracts.md`(screen contracts / 強スキーマ)の順で読む。
50
+ - discussion sidecar artifacts が **primary truth**。具体的には (a) `uiux/30_exploration_brief.md`、(b) `uiux/31_reference_pool.md`、(c) `uiux/33_exploration_rubric.md`、(d) `uiux/34_evaluator_calibration.md`、(e) `uiux/40_screen_contracts.md` の順で読む。
51
51
  - `.qfai/contracts/ui/` の UI Contracts と Design Token は **存在する場合のみ読む supporting input**(primary truth ではない)。
52
52
  - Optional fallback mock はさらに後順位の **fallback**。
53
53
  - Design Token の値と HTML Mock の fallback 値が矛盾する場合は warning を発行。
@@ -1,15 +1,16 @@
1
- # .qfai/contracts (contracts + supporting inputs)
1
+ # .qfai/contracts (downstream truth)
2
2
 
3
3
  ## Purpose
4
4
 
5
- This directory holds two related categories of inputs:
5
+ This directory holds the version-managed artifacts that downstream execution skills consume.
6
6
 
7
7
  - **Contracts** (`api/`, `db/`, `ui/`) define the **stable surface** that
8
8
  specs and tests may reference. Each contract file requires a
9
9
  `QFAI-CONTRACT-ID` header and participates in the traceability ledger.
10
- - **Supporting inputs** (`design/`) supplement contracts they do **not**
11
- carry contract IDs and are not directly cited by specs. Design tokens are
12
- referenced indirectly from `ui/*.yaml` via token IDs.
10
+ - **Design definitions** (`design/`) hold downstream-ready design inputs that
11
+ `/qfai-sdd` normalizes from discussion-side exploration. They are
12
+ version-managed and may be consumed directly by `/qfai-prototyping`,
13
+ `/qfai-implement`, and `/qfai-atdd`.
13
14
 
14
15
  QFAI organizes this directory into four subdirectories:
15
16
 
@@ -17,17 +18,17 @@ QFAI organizes this directory into four subdirectories:
17
18
  .qfai/contracts/
18
19
  ├── api/ # OpenAPI YAML (endpoints, request/response)
19
20
  ├── db/ # SQL schema contracts (tables, columns, constraints)
20
- ├── design/ # Design token YAML optional supporting input
21
+ ├── design/ # Exploration brief / rubric / selected direction / design system YAML
21
22
  └── ui/ # UI contract YAML (screens, elements, user actions)
22
23
  ```
23
24
 
24
- > **Note:** `ui/` is a contract (QFAI-CONTRACT-ID required, cited by specs), but the **primary truth** for UI/UX definitions still lives in the discussion sidecar artifacts (`discussion-*/uiux/*`). UI contracts cite sidecar content by ID and exist specifically to make that sidecar machine-consumable for prototyping and selectors. `design/` is supporting input only (design tokens referenced indirectly from `ui/*.yaml`). After `qfai init`, these directories may contain only placeholder READMEs this is the normal initial state.
25
+ > **Note:** Discussion-pack UIUX files are upstream discovery artifacts. `/qfai-sdd` is responsible for normalizing the approved design/system/screen decisions into `.qfai/contracts/**`. Downstream execution skills must read these contracts instead of reading `discussion-*/uiux/*` directly.
25
26
 
26
27
  ## Directory rules
27
28
 
28
29
  - Contract files are **minimal**: only what specs actually need.
29
30
  - Each contract file in `api/`, `db/`, and `ui/` must declare `QFAI-CONTRACT-ID` at the top (`CON-UI-*` / `CON-API-*` / `CON-DB-*`).
30
- - `design/` (design token YAML) is a supporting input — **not** a contract in the traceability ledger. It does not require a `QFAI-CONTRACT-ID` header and is referenced indirectly from `ui/*.yaml` contracts via token IDs.
31
+ - `design/` files are version-managed downstream inputs. They do not require `QFAI-CONTRACT-ID`, but they are part of the execution-time SSOT.
31
32
  - Prefer additive changes; breaking changes require delta notes.
32
33
 
33
34
  ```text
@@ -41,7 +42,12 @@ QFAI organizes this directory into four subdirectories:
41
42
  │ └── db-0001-<slug>.sql
42
43
  ├── design/
43
44
  │ ├── README.md
44
- └── design-tokens.yaml (created when needed)
45
+ ├── exploration-brief.yaml
46
+ │ ├── evaluation-rubric.yaml
47
+ │ ├── evaluator-calibration.yaml
48
+ │ ├── selected-direction.yaml
49
+ │ ├── design-system.yaml
50
+ │ └── design-tokens.yaml (optional)
45
51
  └── ui/
46
52
  ├── README.md
47
53
  └── ui-0001-<slug>.yaml
@@ -52,9 +58,10 @@ QFAI organizes this directory into four subdirectories:
52
58
  - Traceability Ledger (`16_Traceability-ledger.md`) references contracts via `con_ids`.
53
59
  - Layered overlays (`09_Examples.feature`, `11_Contracts.md`) may also reference contracts.
54
60
  - `11_Contracts.md` is an index layer and must not become behavior SSOT.
61
+ - Discussion packs may explain where a contract came from, but they are not downstream execution inputs.
55
62
 
56
63
  ## Checklist
57
64
 
58
65
  - [ ] Contract IDs exist and are unique.
59
66
  - [ ] Contracts match what specs reference (no missing IDs).
60
- - [ ] Contracts are minimal but sufficient for prototyping and test automation.
67
+ - [ ] Contracts/design files are sufficient for downstream skills without discussion-pack fallback.
@@ -1,32 +1,40 @@
1
- # contracts/design (Design Token YAML) — Optional Supporting Input
1
+ # contracts/design (Exploration + Design Execution Inputs)
2
2
 
3
3
  ## Purpose
4
4
 
5
- Provide a designated location for design token files (`design-tokens*.yaml`) that serve as **optional supporting input** for UI review, validation, and implementation.
5
+ Provide the downstream execution truth for exploration-first prototyping and final design-system extraction that `/qfai-sdd` and `/qfai-prototyping` normalize from UI-bearing discussion packs.
6
6
 
7
- **Primary truth** for UI/UX definitions resides in the discussion sidecar artifacts (`discussion-*/uiux/*`). Design token files in this directory supplement — but never override — those primary artifacts.
7
+ These files are version-managed and may be read directly by `/qfai-prototyping`, `/qfai-implement`, `/qfai-atdd`, and `qfai validate`.
8
8
 
9
9
  ## Status After Init
10
10
 
11
- After `qfai init`, this directory contains only this README. This is the normal initial state. Design token files are created later when the project needs explicit token definitions.
11
+ After `qfai init`, this directory contains only this README. This is the normal initial state. `/qfai-sdd` creates design files when a UI-bearing capability is normalized for downstream execution.
12
12
 
13
- The absence of design token files is **not** a defect and does not affect the canonical discussion or contracts flow.
13
+ The absence of design files is not a defect for non-UI capabilities. For UI-bearing capabilities, missing required design files should be resolved in `/qfai-sdd`.
14
14
 
15
- ## When Design Tokens Are Used
15
+ ## Typical Exploration-first Files
16
16
 
17
- Design token files are consumed **only when they exist**:
17
+ Typical files:
18
18
 
19
- - `qfai validate` runs token-level checks (schema, circular references, platform coverage) if token files are present
20
- - `ui-definition-protocol.md` read-order includes this path as a conditional step
21
- - Prototyping and review skills reference tokens as supplementary color/spacing/typography values
19
+ - `exploration-brief.yaml` machine-readable exploration brief generated from discussion
20
+ - `evaluation-rubric.yaml` — machine-readable evaluator rubric with weighted originality/design criteria
21
+ - `evaluator-calibration.yaml` evaluator alignment examples and anti-leniency guidance
22
+ - `selected-direction.yaml` — current winning direction, rationale, and carry-forward rules
23
+ - `design-system.yaml` — extracted final design system produced after direction convergence
24
+ - `design-tokens*.yaml` — optional token definitions
22
25
 
23
26
  ## Expected File Names
24
27
 
25
- - `design-tokens.yaml` — primary token definitions (primitive → semantic → component)
26
- - `design-tokens.mobile.yaml` — mobile-specific overrides (optional)
28
+ - `exploration-brief.yaml`
29
+ - `evaluation-rubric.yaml`
30
+ - `evaluator-calibration.yaml`
31
+ - `selected-direction.yaml`
32
+ - `design-system.yaml`
33
+ - `design-tokens.yaml`
34
+ - `design-tokens.mobile.yaml`
27
35
 
28
36
  ## What This Directory Is NOT
29
37
 
30
- - **Not** the primary truth for screen layout or component hierarchy
31
- - **Not** a required baseline for discussion or spec authoring
32
- - **Not** a substitute for sidecar artifacts or UI contracts
38
+ - **Not** a replacement for specs or UI contracts
39
+ - **Not** an excuse for downstream skills to read discussion-side artifacts directly
40
+ - **Not** a place to finalize a winner before prototyping convergence
@@ -2,10 +2,10 @@
2
2
 
3
3
  ## Purpose
4
4
 
5
- Define UI surface contracts for prototyping and E2E selection.
6
- The contract must describe screen structure, action coverage targets, and inspection anchors for full-harness evidence.
5
+ Define UI surface contracts for prototyping, implementation review, and E2E selection.
6
+ The contract must describe screen structure, action coverage targets, and stable inspection anchors.
7
7
 
8
- > **Note:** UI contracts are supporting input that supplements the discussion sidecar artifacts (`discussion-*/uiux/*`), which remain the primary truth for UI/UX definitions. In `packages/qfai` v1.7.15, prototyping execution is `full-harness` only; therefore, running the prototype harness requires both canonical screen contracts and matching `CON-UI-*` YAML contracts.
8
+ > **Note:** UI contracts are the downstream execution truth for screen obligations. `/qfai-sdd` may derive them from discussion-side exploration, but `/qfai-prototyping`, `/qfai-implement`, and `/qfai-atdd` must read `contracts/ui/*.yaml` instead of reading `discussion-*/uiux/40_screen_contracts.md` directly.
9
9
 
10
10
  ## File rules
11
11
 
@@ -52,7 +52,7 @@ Add `prototype` at the top level.
52
52
 
53
53
  ### `prototype.mode` and `mockPaths[]` example
54
54
 
55
- The `mockPaths[]` entry is a **negative-only review ledger** — only populate it when a Browser QA finding or review outcome has identified a failure/gap in the mockable path. Do **not** populate it with expected success flows; those belong in `screens[].actions[]` (contracts) and the discussion sidecar.
55
+ The `mockPaths[]` entry is a **negative-only review ledger** — only populate it when a Browser QA finding or review outcome has identified a failure/gap in the mockable path. Do **not** populate it with expected success flows; those belong in `screens[].actions[]`.
56
56
 
57
57
  ```yaml
58
58
  prototype:
@@ -146,11 +146,11 @@ screens:
146
146
  3. Prototyping evidence (`.qfai/evidence/prototyping.json`)
147
147
  - If only one side is updated, `QFAI-PROT-238` can remain unresolved in review.
148
148
 
149
- ### Q3. "Can I treat this as a static screen?"
149
+ ### Q3. "Can I skip this because the discussion pack already has 40_screen_contracts.md?"
150
150
 
151
- - No. `packages/qfai` v1.7.15 prototyping is `full-harness` only.
152
- - `uiFidelity.mode: skeleton` is not a valid prototyping execution target.
153
- - Define actionable routes and `actions[]`, then collect real render and Browser QA evidence.
151
+ - No.
152
+ - `discussion-*/uiux/40_screen_contracts.md` is upstream discovery output.
153
+ - Downstream execution and validation read `contracts/ui/*.yaml`; keep them synchronized via `/qfai-sdd`.
154
154
 
155
155
  ## Checklist
156
156
 
@@ -159,3 +159,4 @@ screens:
159
159
  - [ ] `elements[].label` matches runtime-visible inspection text or documented marker mapping.
160
160
  - [ ] `elements` and `actions` include the minimum fields above.
161
161
  - [ ] `prototype.mode` is `interactive` and `mockPaths` is treated as a negative-only issue ledger.
162
+ - [ ] Every declared screen needed by downstream skills exists in `contracts/ui/*.yaml`.
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Purpose
4
4
 
5
- `discussion/` stores the unified discussion pack that merges interview outputs (discuss) and requirement intake (require). Discussion packs use 15 required markdown files. When the latest pack is `ui_bearing: true`, it must also include `prototyping.yaml`; when `ui_bearing: false`, `prototyping.yaml` is not required.
5
+ `discussion/` stores the unified discussion pack that merges interview outputs (discuss) and requirement intake (require). Discussion packs use 15 required markdown files. UI-bearing discussion packs may include `prototyping.yaml` as an optional recommendation artifact; non-ui discussion packs typically omit it.
6
6
 
7
7
  This directory does not directly update `specs/`; it prepares decisions, requirements, open questions, and rationale as inputs for `/qfai-sdd`.
8
8
 
@@ -29,7 +29,7 @@ discussion/
29
29
  ├── 13_Deferred.md
30
30
  ├── 14_Review-Request.md
31
31
  ├── 99_delta.md
32
- └── prototyping.yaml # required only when ui_bearing: true
32
+ └── prototyping.yaml # optional recommendation artifact for UI-bearing packs
33
33
  ```
34
34
 
35
35
  ## File responsibilities
@@ -52,16 +52,17 @@ discussion/
52
52
 
53
53
  ## UI/UX canonical family
54
54
 
55
- For UI-bearing packs, the canonical design-evaluation source-of-truth is:
55
+ For UI-bearing packs, the canonical exploration-first source-of-truth is:
56
56
 
57
57
  - `04_Sources.md` for trend translation and competitive reference registry
58
- - `uiux/20_design_eval_invariant.md`
59
- - `uiux/21_design_eval_trend_derived.md`
60
- - `uiux/22_design_eval_product_specific.md`
61
- - `uiux/23_design_eval_aggregate.md`
58
+ - `uiux/30_exploration_brief.md`
59
+ - `uiux/31_reference_pool.md`
60
+ - `uiux/32_design_anti_goals.md`
61
+ - `uiux/33_exploration_rubric.md`
62
+ - `uiux/34_evaluator_calibration.md`
62
63
  - `uiux/40_screen_contracts.md`
63
64
 
64
- `05_Scope.md` is not a trend source-of-truth for L2 scoring, and fallback scans such as `uiux/*trend*` or `uiux/*competitive*` must not replace these canonical files.
65
+ Discussion must not choose a single winner or finalize a design system. Those are downstream prototyping outputs.
65
66
 
66
67
  ## OQ Register rules
67
68
 
@@ -116,16 +117,16 @@ For UI-bearing packs, the canonical design-evaluation source-of-truth is:
116
117
  - Use timestamp directory naming for new outputs: `discussion-YYYYMMDDhhmmssSSS`.
117
118
  - `14_Review-Request.md` must reference routing SSOT: `.qfai/assistant/steering/agent-routing.yml` and `.qfai/assistant/steering/review-profiles.yml`.
118
119
 
119
- ## prototyping.yaml (Classification-aware Recommendation Artifact)
120
+ ## prototyping.yaml (Optional Recommendation Artifact)
120
121
 
121
- Each UI-bearing discussion pack (`ui_bearing: true`) **must** include a `prototyping.yaml` file that recommends the prototyping mode for the project. Non-UI discussion packs (`ui_bearing: false`) do not require `prototyping.yaml`.
122
+ UI-bearing discussion packs (`ui_bearing: true`) may include a `prototyping.yaml` file to record a recommended prototyping mode. Non-UI discussion packs (`ui_bearing: false`) typically omit `prototyping.yaml`.
122
123
 
123
- ### Canonical namespaced schema (required)
124
+ ### Canonical namespaced schema (when present)
124
125
 
125
126
  ```yaml
126
127
  prototyping:
127
128
  recommended_mode: full-harness
128
- rationale: UI validation requires the full-harness runtime loop in packages/qfai.
129
+ rationale: Exploration-first prototyping requires the full-harness runtime loop in packages/qfai.
129
130
  allowed_modes:
130
131
  - full-harness
131
132
  surface: web
@@ -133,7 +134,7 @@ prototyping:
133
134
 
134
135
  ### Field reference
135
136
 
136
- All 4 fields are **required**. An artifact missing any field will fail validation.
137
+ If you create this artifact, populate all 4 fields.
137
138
 
138
139
  | Field | Required | Description |
139
140
  | ------------------ | -------- | ---------------------------------------------- |
@@ -142,12 +143,11 @@ All 4 fields are **required**. An artifact missing any field will fail validatio
142
143
  | `allowed_modes` | yes | Unique array; must contain only `full-harness` |
143
144
  | `surface` | yes | `web`, `mobile`, `desktop`, or `mixed` |
144
145
 
145
- ### Validation rules
146
+ ### Current behavior
146
147
 
147
- - Only the canonical namespaced schema under the `prototyping:` key is accepted. Top-level recommendation keys (`recommended_mode`, `rationale`, `allowed_modes`, `surface` at root level) are not supported and will cause validation failure.
148
- - Coexistence of top-level recommendation keys with the namespaced `prototyping:` block is invalid.
149
- - `recommended_mode` must be included in `allowed_modes`. In packages/qfai, this means `recommended_mode` must be `full-harness` and `allowed_modes` must only contain `full-harness`.
150
- - An artifact that does not conform to the canonical namespaced schema is invalid and will be rejected by both validation and execution/CLI. No fallback to explicit mode or default mode is performed for invalid artifacts.
148
+ - Current discussion-pack readiness does not block on missing `prototyping.yaml`.
149
+ - When `prototyping.yaml` is present, prefer the canonical namespaced schema under the `prototyping:` key.
150
+ - `recommended_mode` should be included in `allowed_modes`. In packages/qfai, this means `recommended_mode` should be `full-harness` and `allowed_modes` should contain only `full-harness`.
151
151
 
152
152
  ## Suggested naming
153
153
 
@@ -1,18 +1,16 @@
1
1
  # UIX-REV: Comparison Review
2
2
 
3
- Review only `30_option_comparison.md` as the option comparison artifact.
3
+ Review exploration artifacts as comparison inputs, not a fixed option-comparison artifact.
4
4
 
5
- ## Comparison Quality (30_option_comparison.md)
5
+ ## Comparison Quality
6
6
 
7
- - Must contain at least 2 options with structured evaluation
8
- - Each option should have pros/cons/trade-off analysis
9
- - Evaluation criteria must reference the 3-layer evaluation family
10
- - Rejected/deferred options must have explicit rationale
11
- - Reconsideration conditions must be documented for deferred options
12
- - Do not move selected anchor ownership back into `30_option_comparison.md`
7
+ - Exploration must start from multiple divergent directions
8
+ - Comparison criteria must reflect the exploration rubric and evaluator calibration
9
+ - Rejected or superseded directions must have explicit rationale
10
+ - Best-of-history handling must remain visible during later loops
13
11
 
14
12
  ### Trend-derived conversion check
15
13
 
16
- - Trend scan results are converted to comparison axes
14
+ - Reference-pool inputs are translated into comparison pressure
17
15
  - Stale / overused AI slop avoidance is reflected in comparison criteria
18
- - Keep selected-anchor ownership in `31_selected_anchor_screen.md` and scoring-ready field ownership in `50_review_input_bundle.md`
16
+ - Keep winner ownership in `selected-direction.yaml` and history handling in `50_review_input_bundle.md`
@@ -22,7 +22,7 @@ Review screen contracts for canonical 11-field schema completeness.
22
22
  - Routes must be unique across all contracts
23
23
  - Required states must include `default`, `loading`, `empty`, and `error`
24
24
  - All 11 fields must be present and non-empty for each screen
25
- - Screen contracts must stay consistent with `31_selected_anchor_screen.md`
25
+ - Screen contracts must stay consistent with the exploration brief and selected direction
26
26
  - Screen contracts must stay consistent with Browser QA findings and screen-linked evidence
27
27
  - Do not reference legacy filenames such as `40_contracts.md`
28
28
  - Keep wording aligned with scoring-ready canonical fields and avoid stale migration vocabulary