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.
- package/README.md +1 -1
- package/assets/init/.qfai/assistant/agents/frontend-engineer.md +2 -2
- package/assets/init/.qfai/assistant/agents/product-experience-architect.md +2 -2
- package/assets/init/.qfai/assistant/skills/qfai-atdd/SKILL.md +4 -0
- package/assets/init/.qfai/assistant/skills/qfai-configure/SKILL.md +2 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/SKILL.md +60 -330
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/14_Review-Request.md +15 -16
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/00_index.md +13 -21
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/30_exploration_brief.md +29 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/31_reference_pool.md +13 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/32_design_anti_goals.md +10 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/33_exploration_rubric.md +27 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/34_evaluator_calibration.md +17 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/50_review_input_bundle.md +16 -22
- package/assets/init/.qfai/assistant/skills/qfai-implement/SKILL.md +7 -5
- package/assets/init/.qfai/assistant/skills/qfai-prototyping/SKILL.md +187 -132
- package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/design-system-compliance.md +22 -0
- package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/evidence-requirements.md +31 -0
- package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/iteration-cycle.md +25 -0
- package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/l1-review-guide.md +36 -0
- package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/l2-review-guide.md +39 -0
- package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/reviewer-gate.md +24 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/SKILL.md +18 -9
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/contracts/design-system.sample.yaml +22 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/contracts/evaluation-rubric.sample.yaml +16 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/contracts/evaluator-calibration.sample.yaml +9 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/contracts/exploration-brief.sample.yaml +10 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/contracts/selected-direction.sample.yaml +7 -0
- package/assets/init/.qfai/assistant/skills/qfai-verify/SKILL.md +3 -0
- package/assets/init/.qfai/assistant/steering/agent-catalog.yml +1 -1
- package/assets/init/.qfai/assistant/steering/ui-definition-protocol.md +6 -6
- package/assets/init/.qfai/contracts/README.md +17 -10
- package/assets/init/.qfai/contracts/design/README.md +23 -15
- package/assets/init/.qfai/contracts/ui/README.md +9 -8
- package/assets/init/.qfai/discussion/README.md +18 -18
- package/assets/uix-rev/comparison-review.md +8 -10
- package/assets/uix-rev/contracts-review.md +1 -1
- package/assets/uix-rev/scoring-review.md +20 -46
- package/assets/uix-rev/strategy-review.md +11 -16
- package/dist/cli/index.cjs +7709 -16321
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.mjs +7776 -16388
- package/dist/cli/index.mjs.map +1 -1
- package/dist/index.cjs +13589 -20963
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +196 -589
- package/dist/index.d.ts +196 -589
- package/dist/index.mjs +10289 -17651
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/10_implementation_strategy.md +0 -38
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/11_design_taste_interview.md +0 -45
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/12_design_system.md +0 -115
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/20_design_eval_invariant.md +0 -68
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/21_design_eval_trend_derived.md +0 -130
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/22_design_eval_product_specific.md +0 -68
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/23_design_eval_aggregate.md +0 -53
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/24_design_eval_dynamic_overrides.md +0 -28
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/30_option_comparison.md +0 -56
- 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
|
|
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.
|
|
236
|
-
6.
|
|
237
|
-
7.
|
|
238
|
-
8. Execute Phase
|
|
239
|
-
9. Execute Phase
|
|
240
|
-
10.
|
|
241
|
-
11.
|
|
242
|
-
12.
|
|
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
|
|
package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/contracts/design-system.sample.yaml
ADDED
|
@@ -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
|
|
@@ -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
|
|
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
|
-
- `
|
|
12
|
-
- `
|
|
13
|
-
- `
|
|
14
|
-
- `
|
|
15
|
-
- `
|
|
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/
|
|
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 (
|
|
1
|
+
# .qfai/contracts (downstream truth)
|
|
2
2
|
|
|
3
3
|
## Purpose
|
|
4
4
|
|
|
5
|
-
This directory holds
|
|
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
|
-
- **
|
|
11
|
-
|
|
12
|
-
|
|
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/ #
|
|
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:**
|
|
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/`
|
|
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
|
-
│
|
|
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
|
|
67
|
+
- [ ] Contracts/design files are sufficient for downstream skills without discussion-pack fallback.
|
|
@@ -1,32 +1,40 @@
|
|
|
1
|
-
# contracts/design (Design
|
|
1
|
+
# contracts/design (Exploration + Design Execution Inputs)
|
|
2
2
|
|
|
3
3
|
## Purpose
|
|
4
4
|
|
|
5
|
-
Provide
|
|
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
|
-
|
|
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.
|
|
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
|
|
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
|
-
##
|
|
15
|
+
## Typical Exploration-first Files
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Typical files:
|
|
18
18
|
|
|
19
|
-
- `
|
|
20
|
-
- `
|
|
21
|
-
-
|
|
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
|
-
- `
|
|
26
|
-
- `
|
|
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**
|
|
31
|
-
- **Not**
|
|
32
|
-
- **Not** a
|
|
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
|
|
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
|
|
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[]
|
|
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
|
|
149
|
+
### Q3. "Can I skip this because the discussion pack already has 40_screen_contracts.md?"
|
|
150
150
|
|
|
151
|
-
- No.
|
|
152
|
-
- `
|
|
153
|
-
-
|
|
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.
|
|
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 #
|
|
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
|
|
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/
|
|
59
|
-
- `uiux/
|
|
60
|
-
- `uiux/
|
|
61
|
-
- `uiux/
|
|
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
|
-
|
|
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 (
|
|
120
|
+
## prototyping.yaml (Optional Recommendation Artifact)
|
|
120
121
|
|
|
121
|
-
|
|
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 (
|
|
124
|
+
### Canonical namespaced schema (when present)
|
|
124
125
|
|
|
125
126
|
```yaml
|
|
126
127
|
prototyping:
|
|
127
128
|
recommended_mode: full-harness
|
|
128
|
-
rationale:
|
|
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
|
-
|
|
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
|
-
###
|
|
146
|
+
### Current behavior
|
|
146
147
|
|
|
147
|
-
-
|
|
148
|
-
-
|
|
149
|
-
- `recommended_mode`
|
|
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
|
|
3
|
+
Review exploration artifacts as comparison inputs, not a fixed option-comparison artifact.
|
|
4
4
|
|
|
5
|
-
## Comparison Quality
|
|
5
|
+
## Comparison Quality
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
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
|
-
-
|
|
14
|
+
- Reference-pool inputs are translated into comparison pressure
|
|
17
15
|
- Stale / overused AI slop avoidance is reflected in comparison criteria
|
|
18
|
-
- Keep
|
|
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
|
|
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
|