qfai 1.7.9 → 1.7.13
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 +34 -70
- package/assets/init/.qfai/README.md +11 -16
- package/assets/init/.qfai/assistant/agents/acceptance-test-engineer.md +51 -0
- package/assets/init/.qfai/assistant/agents/architecture-reviewer.md +57 -0
- package/assets/init/.qfai/assistant/agents/backend-engineer.md +40 -31
- package/assets/init/.qfai/assistant/agents/completion-reviewer.md +48 -0
- package/assets/init/.qfai/assistant/agents/delivery-planner.md +52 -0
- package/assets/init/.qfai/assistant/agents/devops-ci-engineer.md +31 -28
- package/assets/init/.qfai/assistant/agents/discovery-analyst.md +50 -0
- package/assets/init/.qfai/assistant/agents/doc-steward.md +30 -20
- package/assets/init/.qfai/assistant/agents/frontend-engineer.md +40 -31
- package/assets/init/.qfai/assistant/agents/implementation-reviewer.md +58 -0
- package/assets/init/.qfai/assistant/agents/orchestrator.md +19 -2
- package/assets/init/.qfai/assistant/agents/product-experience-architect.md +59 -0
- package/assets/init/.qfai/assistant/agents/product-surface-reviewer.md +60 -0
- package/assets/init/.qfai/assistant/agents/qa-gatekeeper.md +53 -48
- package/assets/init/.qfai/assistant/agents/qa-strategist.md +49 -0
- package/assets/init/.qfai/assistant/agents/requirements-analyst.md +32 -29
- package/assets/init/.qfai/assistant/agents/requirements-reviewer.md +48 -0
- package/assets/init/.qfai/assistant/agents/solution-architect.md +59 -0
- package/assets/init/.qfai/assistant/agents/test-design-analyst.md +64 -0
- package/assets/init/.qfai/assistant/instructions/agent-selection.md +64 -50
- package/assets/init/.qfai/assistant/instructions/communication.md +17 -0
- package/assets/init/.qfai/assistant/instructions/constitution.md +36 -1
- package/assets/init/.qfai/assistant/instructions/drift-protocol.md +1 -1
- package/assets/init/.qfai/assistant/instructions/requirements-decomposition.md +20 -13
- package/assets/init/.qfai/assistant/instructions/workflow.md +2 -1
- package/assets/init/.qfai/assistant/skills/qfai-atdd/SKILL.md +32 -31
- package/assets/init/.qfai/assistant/skills/qfai-atdd/references/test-case-depth-checklist.md +80 -0
- package/assets/init/.qfai/assistant/skills/qfai-configure/SKILL.md +21 -15
- package/assets/init/.qfai/assistant/skills/qfai-discussion/SKILL.md +95 -61
- package/assets/init/.qfai/assistant/skills/qfai-discussion/references/rcp_footer.md +17 -85
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/01_Context.md +9 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/02_Inception-Deck.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/03_Story-Workshop.md +17 -60
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/04_Sources.md +69 -2
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/06_REQ.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/07_NFR.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/09_Constraints.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/10_Policy.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/11_OQ-Register.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/12_OQ-Resolution-Log.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/13_Deferred.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/14_Review-Request.md +25 -16
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/99_delta.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/prototyping.yaml +9 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/review/Rxx_reviewer.md +8 -4
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/review/review_request.md +11 -7
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/review/summary.json +6 -44
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/00_index.md +29 -14
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/10_implementation_strategy.md +20 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/11_design_taste_interview.md +45 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/20_design_eval_invariant.md +68 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/21_design_eval_trend_derived.md +68 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/22_design_eval_product_specific.md +68 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/23_design_eval_aggregate.md +41 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/24_design_eval_dynamic_overrides.md +28 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/30_option_comparison.md +56 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/31_selected_anchor_screen.md +42 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/40_screen_contracts.md +44 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/50_review_input_bundle.md +36 -0
- package/assets/init/.qfai/assistant/skills/qfai-implement/SKILL.md +65 -67
- package/assets/init/.qfai/assistant/skills/qfai-prototyping/SKILL.md +171 -279
- package/assets/init/.qfai/assistant/skills/qfai-sdd/SKILL.md +91 -57
- package/assets/init/.qfai/assistant/skills/qfai-sdd/references/rcp_footer.md +21 -80
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/evidence/import-lite.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/_policies/11_Slice-Policy.md +50 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/spec/06_Test-Cases.md +23 -3
- package/assets/init/.qfai/assistant/skills/qfai-verify/SKILL.md +25 -17
- package/assets/init/.qfai/assistant/steering/agent-catalog.yml +194 -0
- package/assets/init/.qfai/assistant/steering/agent-routing.yml +176 -0
- package/assets/init/.qfai/assistant/steering/cli-ux-guidelines.md +49 -0
- package/assets/init/.qfai/assistant/steering/manifest.md +44 -19
- package/assets/init/.qfai/assistant/steering/product.md +53 -11
- package/assets/init/.qfai/assistant/steering/research-first-protocol.md +58 -0
- package/assets/init/.qfai/assistant/steering/review-gate.rules.yml +17 -66
- package/assets/init/.qfai/assistant/steering/review-profiles.yml +30 -0
- package/assets/init/.qfai/assistant/steering/structure.md +30 -16
- package/assets/init/.qfai/assistant/steering/tech.md +37 -21
- package/assets/init/.qfai/assistant/steering/ui-definition-protocol.md +54 -0
- package/assets/init/.qfai/contracts/README.md +10 -4
- package/assets/init/.qfai/contracts/design/README.md +32 -0
- package/assets/init/.qfai/contracts/ui/README.md +5 -3
- package/assets/init/.qfai/discussion/README.md +52 -5
- package/assets/init/.qfai/evidence/README.md +143 -116
- package/assets/init/.qfai/report/README.md +1 -1
- package/assets/init/.qfai/review/README.md +24 -9
- package/assets/init/.qfai/specs/README.md +5 -2
- package/assets/init/root/qfai.config.yaml +13 -0
- package/assets/uix-rev/comparison-review.md +24 -7
- package/assets/uix-rev/contracts-review.md +17 -10
- package/assets/uix-rev/scoring-review.md +42 -6
- package/assets/uix-rev/strategy-review.md +13 -9
- package/dist/cli/index.cjs +15618 -11547
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.mjs +15487 -11415
- package/dist/cli/index.mjs.map +1 -1
- package/dist/index.cjs +10486 -6080
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +766 -198
- package/dist/index.d.ts +766 -198
- package/dist/index.mjs +10823 -6420
- package/dist/index.mjs.map +1 -1
- package/package.json +11 -3
- package/assets/init/.qfai/assistant/agents/architect-reviewer.md +0 -65
- package/assets/init/.qfai/assistant/agents/architect.md +0 -49
- package/assets/init/.qfai/assistant/agents/atdd-api-implementer.md +0 -49
- package/assets/init/.qfai/assistant/agents/atdd-e2e-implementer.md +0 -48
- package/assets/init/.qfai/assistant/agents/atdd-integration-implementer.md +0 -48
- package/assets/init/.qfai/assistant/agents/backend-reviewer.md +0 -66
- package/assets/init/.qfai/assistant/agents/code-reviewer.md +0 -67
- package/assets/init/.qfai/assistant/agents/contract-designer.md +0 -49
- package/assets/init/.qfai/assistant/agents/coverage-planner.md +0 -49
- package/assets/init/.qfai/assistant/agents/design-owner.md +0 -48
- package/assets/init/.qfai/assistant/agents/design-review-lead.md +0 -68
- package/assets/init/.qfai/assistant/agents/facilitator.md +0 -48
- package/assets/init/.qfai/assistant/agents/frontend-reviewer.md +0 -66
- package/assets/init/.qfai/assistant/agents/interviewer.md +0 -45
- package/assets/init/.qfai/assistant/agents/option-explorer.md +0 -51
- package/assets/init/.qfai/assistant/agents/option-reviewer.md +0 -66
- package/assets/init/.qfai/assistant/agents/oq-harvester.md +0 -50
- package/assets/init/.qfai/assistant/agents/oq-reviewer.md +0 -70
- package/assets/init/.qfai/assistant/agents/planner.md +0 -48
- package/assets/init/.qfai/assistant/agents/project-lead.md +0 -47
- package/assets/init/.qfai/assistant/agents/prototyping-coverage-auditor.md +0 -46
- package/assets/init/.qfai/assistant/agents/qa-engineer.md +0 -47
- package/assets/init/.qfai/assistant/agents/qa-lead.md +0 -44
- package/assets/init/.qfai/assistant/agents/qa-reviewer.md +0 -66
- package/assets/init/.qfai/assistant/agents/researcher.md +0 -47
- package/assets/init/.qfai/assistant/agents/reviewer.md +0 -62
- package/assets/init/.qfai/assistant/agents/runtime-gatekeeper.md +0 -46
- package/assets/init/.qfai/assistant/agents/test-case-owner.md +0 -53
- package/assets/init/.qfai/assistant/agents/test-engineer.md +0 -50
- package/assets/init/.qfai/assistant/agents/test-volume-estimator.md +0 -48
- package/assets/init/.qfai/assistant/agents/ui-ux-reviewer.md +0 -71
- package/assets/init/.qfai/assistant/agents/unit-test-scope-enforcer.md +0 -46
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/10_strategy.md +0 -28
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/20_eval_axis_usability.md +0 -31
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/21_eval_axis_consistency.md +0 -31
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/22_eval_axis_accessibility.md +0 -31
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/23_eval_axis_delight.md +0 -56
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/30_comparison.md +0 -45
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/31_anchor.md +0 -27
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/40_contracts.md +0 -51
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/50_review_bundle.md +0 -31
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/60_critique_loop.md +0 -23
- package/assets/init/.qfai/assistant/skills/qfai-prototyping-full-harness/SKILL.md +0 -185
- package/assets/init/.qfai/assistant/steering/review-roster.yml +0 -128
- package/assets/init/.qfai/evidence/.gitignore +0 -3
- package/assets/init/.qfai/report/.gitignore +0 -3
- package/assets/init/.qfai/review/.gitignore +0 -5
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# RCP Footer (qfai-discussion / SSOT)
|
|
2
2
|
|
|
3
|
-
この文書は `/qfai-discussion`
|
|
4
|
-
他skill向けの共通規約ではありません。
|
|
3
|
+
この文書は `/qfai-discussion` の Review Cycle を discussion-pack 前提で固定する SSOT です。
|
|
5
4
|
|
|
6
5
|
---
|
|
7
6
|
|
|
@@ -9,32 +8,21 @@
|
|
|
9
8
|
|
|
10
9
|
- Scope: `discussion`
|
|
11
10
|
- Pack: `.qfai/discussion/discussion-<YYYYMMDDhhmmssSSS>/`
|
|
12
|
-
-
|
|
13
|
-
- `01_Context.md`
|
|
14
|
-
- `02_Inception-Deck.md`
|
|
15
|
-
- `03_Story-Workshop.md`
|
|
16
|
-
- `04_Sources.md`
|
|
17
|
-
- `05_Scope.md`
|
|
18
|
-
- `06_REQ.md`
|
|
19
|
-
- `07_NFR.md`
|
|
20
|
-
- `08_Glossary.md`
|
|
21
|
-
- `09_Constraints.md`
|
|
22
|
-
- `10_Policy.md`
|
|
23
|
-
- `11_OQ-Register.md`
|
|
24
|
-
- `12_OQ-Resolution-Log.md`
|
|
25
|
-
- `13_Deferred.md`
|
|
26
|
-
- `14_Review-Request.md`
|
|
27
|
-
- `99_delta.md`
|
|
11
|
+
- レビュー対象は discussion-pack の必須15ファイル
|
|
28
12
|
|
|
29
13
|
---
|
|
30
14
|
|
|
31
|
-
##
|
|
15
|
+
## Routing Rule(固定)
|
|
32
16
|
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
- `
|
|
36
|
-
- `
|
|
37
|
-
-
|
|
17
|
+
- reviewer の選定は `.qfai/assistant/steering/agent-routing.yml` と `.qfai/assistant/steering/review-profiles.yml` を読む
|
|
18
|
+
- 常設 reviewer:
|
|
19
|
+
- `completion-reviewer`
|
|
20
|
+
- `requirements-reviewer`
|
|
21
|
+
- 条件付き reviewer:
|
|
22
|
+
- `architecture-reviewer` — architecture-affecting decision がある場合
|
|
23
|
+
- `product-surface-reviewer` — UI-bearing の場合
|
|
24
|
+
- 各レビューは `PASS` / `FAIL` を返す
|
|
25
|
+
- `FAIL` が出たら、失敗 reviewer と修正影響を受ける reviewer のみ再実行する
|
|
38
26
|
|
|
39
27
|
---
|
|
40
28
|
|
|
@@ -47,71 +35,15 @@
|
|
|
47
35
|
|
|
48
36
|
## discussion-pack 固有の Gate(必須)
|
|
49
37
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
- pack は `discussion-YYYYMMDDhhmmssSSS/` のみ許可
|
|
55
|
-
- 不正な `discussion-*` がある場合は latest 判定が壊れるため、退避または削除する
|
|
56
|
-
|
|
57
|
-
2. Blocking OQ の解消
|
|
58
|
-
|
|
59
|
-
- `11_OQ-Register.md` の **Disposition が `open` のまま**で、
|
|
60
|
-
かつ Gate が `discuss|require|sdd` の OQ が残っていないこと
|
|
61
|
-
- `open` を残す場合は、**Gateを外す**か `Disposition: deferred/resolved` に変更する
|
|
62
|
-
|
|
63
|
-
3. Deferred の整合
|
|
64
|
-
|
|
65
|
-
- OQ register で `deferred` にした OQ-ID は、`13_Deferred.md` に同じ OQ-ID で必ず記載する
|
|
66
|
-
|
|
67
|
-
4. Story Workshop の Mermaid(最小要件)
|
|
68
|
-
|
|
69
|
-
- `03_Story-Workshop.md` に mermaid fenced block を最低1つ含める
|
|
70
|
-
- `flowchart` または `sequenceDiagram` を推奨
|
|
38
|
+
- `11_OQ-Register.md` に `Disposition: open` かつ blocking gate の OQ を残さない
|
|
39
|
+
- `13_Deferred.md` は deferred OQ と整合している
|
|
40
|
+
- `03_Story-Workshop.md` は Mermaid を最低1つ含む
|
|
71
41
|
|
|
72
42
|
---
|
|
73
43
|
|
|
74
44
|
## レビュー観点(discussion-pack 特化)
|
|
75
45
|
|
|
76
46
|
- Context → Inception Deck → Story Workshop の因果が通っているか
|
|
77
|
-
- 「なぜ作るか」→「誰のためか」→「どんな業務フローか」が矛盾しない
|
|
78
47
|
- `06_REQ.md` と `07_NFR.md` の境界が崩れていないか
|
|
79
|
-
- Glossary/Constraints/Policy
|
|
80
|
-
- `99_delta.md`
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## 代表的な FAIL と復旧(discussion-pack 特化)
|
|
85
|
-
|
|
86
|
-
- FAIL: `11_OQ-Register.md` に open+Gate が残る
|
|
87
|
-
- 復旧: 影響範囲が大きいものは `Disposition: deferred` + `13_Deferred.md` に詳細を移す
|
|
88
|
-
- FAIL: `03_Story-Workshop.md` に図がない
|
|
89
|
-
- 復旧: 1本でよいので、登場人物(ペルソナ)と主要分岐が分かる flowchart を入れる
|
|
90
|
-
- FAIL: pack 名が不正(latest 判定がブレる)
|
|
91
|
-
- 復旧: 不正 pack を `discussion-legacy-*` に退避し、最新 pack を timestamp 命名で作り直す
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
## 拡張レビュアー
|
|
96
|
-
|
|
97
|
-
### devils-advocate(11番目)
|
|
98
|
-
|
|
99
|
-
- 役割: 全否定エージェント — 「現状すべてが間違っている」前提でレビューし、あるべき姿を提示する
|
|
100
|
-
- `can_be_na: false` — N/A は許可されない
|
|
101
|
-
- FAIL 判定時は必ず具体的代替案を提示すること。代替案なしの FAIL は無効とし、再判定を要求する
|
|
102
|
-
- 3 回連続 FAIL → アドバイザリー降格(当該レビューサイクル限定)。降格後はブロッキング力が消失し、フィードバックのみ記録する
|
|
103
|
-
- レビュー記録: `R11_devils-advocate.md`
|
|
104
|
-
|
|
105
|
-
### pattern-doubler(12番目)
|
|
106
|
-
|
|
107
|
-
- 役割: パターン倍増エージェント — discussion phase では ID 付き項目が少ないため N/A が基本
|
|
108
|
-
- `can_be_na: true` — discussion phase では Example Seeds の数と観点網羅性を評価対象とする
|
|
109
|
-
- N/A でない場合、追加パターンの根拠提示が必須
|
|
110
|
-
- レビュー記録: `R12_pattern-doubler.md`
|
|
111
|
-
|
|
112
|
-
### 代表的な FAIL と復旧(拡張レビュアー特化)
|
|
113
|
-
|
|
114
|
-
- FAIL (devils-advocate): 代替案なしの否定のみ
|
|
115
|
-
- 復旧: 具体的な「あるべき姿」と移行パスを記述させ、再判定する
|
|
116
|
-
- FAIL (devils-advocate, 3回連続): 無限ループ検知
|
|
117
|
-
- 復旧: アドバイザリー降格を記録し、devils-advocate のフィードバックを advisory として保存。次フェーズに進行する
|
|
48
|
+
- Glossary / Constraints / Policy が後工程入力として十分か
|
|
49
|
+
- `99_delta.md` に採用/不採用の判断根拠が残っているか
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
# 01 Context
|
|
2
2
|
|
|
3
|
-
<!-- UX-INTENT: If UI-bearing, see uiux/
|
|
3
|
+
<!-- UX-INTENT: If UI-bearing, see uiux/10_implementation_strategy.md for implementation strategy context -->
|
|
4
|
+
|
|
5
|
+
## UI-bearing Classification
|
|
6
|
+
|
|
7
|
+
- ui_bearing: [true|false]
|
|
8
|
+
- primary_surface: [web|mobile|desktop|cli|mixed|non-ui]
|
|
9
|
+
- secondary_surfaces:
|
|
10
|
+
- [optional]
|
|
11
|
+
- classification_rationale: [Why this classification was chosen]
|
|
4
12
|
|
|
5
13
|
## Metadata
|
|
6
14
|
|
|
@@ -43,7 +43,7 @@ flowchart LR
|
|
|
43
43
|
App --> Data["Data Store"]
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
<!-- UX-INTENT: If UI-bearing, reference uiux/
|
|
46
|
+
<!-- UX-INTENT: If UI-bearing, reference uiux/30_option_comparison.md and uiux/31_selected_anchor_screen.md for design option alignment -->
|
|
47
47
|
|
|
48
48
|
## 7. What Keeps Us Up at Night (Risks)
|
|
49
49
|
|
|
@@ -45,22 +45,22 @@ flowchart TD
|
|
|
45
45
|
|
|
46
46
|
## Behavior Obligations
|
|
47
47
|
|
|
48
|
-
<!-- Primary focus for UI-bearing packs.
|
|
48
|
+
<!-- Primary focus for UI-bearing packs. Capture behavioral discovery before screen-level contracts.
|
|
49
|
+
Screen-level contract SSOT lives in uiux/40_screen_contracts.md. -->
|
|
49
50
|
|
|
50
51
|
### State Coverage
|
|
51
52
|
|
|
52
|
-
| State
|
|
53
|
-
|
|
|
54
|
-
|
|
|
55
|
-
| loading | [trigger] | [display] | [transitions] |
|
|
56
|
-
| error | [trigger] | [display] | [transitions] |
|
|
57
|
-
| populated | [trigger] | [display] | [transitions] |
|
|
53
|
+
| State / Risk | Discovery Notes | Handoff to Contract |
|
|
54
|
+
| --------------- | ------------------------------------------------- | ----------------------------------------------------------------------------- |
|
|
55
|
+
| [state or risk] | [what might trigger confusion, delay, or failure] | Reflect the final `required_states` contract in `uiux/40_screen_contracts.md` |
|
|
58
56
|
|
|
59
57
|
### Interaction Contracts
|
|
60
58
|
|
|
61
|
-
|
|
|
62
|
-
|
|
|
63
|
-
| [
|
|
59
|
+
| Primary Task | Key Action | Priority Hint | Expected Result | Error Handling |
|
|
60
|
+
| ---------------- | ------------------ | ------------------------ | --------------- | -------------- |
|
|
61
|
+
| [main user goal] | [main interaction] | [primary/high/secondary] | [result] | [error case] |
|
|
62
|
+
|
|
63
|
+
Screen-level contract details are finalized in `uiux/40_screen_contracts.md`. Primary tasks, required states, transitions, and observable outcomes are finalized there; Story Workshop is for discovery and handoff, not final contract fixation.
|
|
64
64
|
|
|
65
65
|
### Error Handling
|
|
66
66
|
|
|
@@ -68,11 +68,14 @@ flowchart TD
|
|
|
68
68
|
- Network failure: [approach]
|
|
69
69
|
- Timeout: [approach]
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Appendix: Screen Mock — Optional Fallback (HTML+CSS)
|
|
72
74
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
75
|
+
<!-- Optional fallback only — do not use as the primary UI definition artifact.
|
|
76
|
+
Include only when it materially clarifies the selected direction.
|
|
77
|
+
Behavior Obligations and sidecar artifacts (uiux/) are the primary UI definitions.
|
|
78
|
+
The required state SSOT is uiux/40_screen_contracts.md (`default/loading/empty/error`). -->
|
|
76
79
|
|
|
77
80
|
```html
|
|
78
81
|
<section class="screen-mock">
|
|
@@ -91,49 +94,3 @@ flowchart TD
|
|
|
91
94
|
border-radius: 12px;
|
|
92
95
|
}
|
|
93
96
|
```
|
|
94
|
-
|
|
95
|
-
## Design Direction Summary
|
|
96
|
-
|
|
97
|
-
<!-- Required for UI-bearing packs. Validated by QFAI-DDP-019..025. -->
|
|
98
|
-
|
|
99
|
-
### Option Comparison
|
|
100
|
-
|
|
101
|
-
<!-- List 2+ design options. Each must be a separate entry. (QFAI-DDP-020) -->
|
|
102
|
-
|
|
103
|
-
- **Option A**: [Name and description]
|
|
104
|
-
- **Option B**: [Name and description]
|
|
105
|
-
|
|
106
|
-
### Anchor Screen Selection
|
|
107
|
-
|
|
108
|
-
<!-- Select one of the compared options as the anchor. (QFAI-DDP-021) -->
|
|
109
|
-
|
|
110
|
-
Selected: [Option X] — [Reason for selection]
|
|
111
|
-
|
|
112
|
-
### Competitive References
|
|
113
|
-
|
|
114
|
-
<!-- Summarize competitive references from 04_Sources.md. (QFAI-DDP-022) -->
|
|
115
|
-
|
|
116
|
-
See 04_Sources.md for full competitive reference registry.
|
|
117
|
-
|
|
118
|
-
### CTA Hierarchy
|
|
119
|
-
|
|
120
|
-
<!-- Define CTA hierarchy with at least a primary CTA. (QFAI-DDP-023) -->
|
|
121
|
-
|
|
122
|
-
- Primary: [CTA label and placement]
|
|
123
|
-
- Secondary: [CTA label and placement]
|
|
124
|
-
|
|
125
|
-
### State Coverage
|
|
126
|
-
|
|
127
|
-
<!-- Define all 4 required states. (QFAI-DDP-024) -->
|
|
128
|
-
<!-- SSOT for state details: Behavior Obligations > State Coverage table above. Keep these bullets for validator compliance; fill display-level details or reference the table. -->
|
|
129
|
-
|
|
130
|
-
- empty: [Empty state display — see Behavior Obligations table for triggers/transitions]
|
|
131
|
-
- loading: [Loading state display — see Behavior Obligations table for triggers/transitions]
|
|
132
|
-
- error: [Error state display — see Behavior Obligations table for triggers/transitions]
|
|
133
|
-
- populated: [Populated state display — see Behavior Obligations table for triggers/transitions]
|
|
134
|
-
|
|
135
|
-
### Design Anti-goals
|
|
136
|
-
|
|
137
|
-
<!-- List 1+ design patterns to intentionally avoid. (QFAI-DDP-025) -->
|
|
138
|
-
|
|
139
|
-
- Anti-goal: [Pattern to avoid and reason]
|
|
@@ -12,12 +12,79 @@
|
|
|
12
12
|
- `secondary`: Derived information (summaries, analyses).
|
|
13
13
|
- `external`: Third-party references (specs, RFCs, vendor docs).
|
|
14
14
|
|
|
15
|
-
##
|
|
15
|
+
## Trend Scan
|
|
16
|
+
|
|
17
|
+
### Visual Tone Trends
|
|
18
|
+
|
|
19
|
+
#### Entry 1
|
|
20
|
+
|
|
21
|
+
- reference: [Source name or URL]
|
|
22
|
+
- observation: [What visual tone signal was observed]
|
|
23
|
+
- freshness_date: YYYY-MM-DD
|
|
24
|
+
- confidence: [high|medium|low]
|
|
25
|
+
- source_translation: [How the signal translates into this project]
|
|
26
|
+
- local_implication: [What should change locally]
|
|
27
|
+
|
|
28
|
+
### Layout / Composition Trends
|
|
29
|
+
|
|
30
|
+
#### Entry 1
|
|
31
|
+
|
|
32
|
+
- reference: [Source name or URL]
|
|
33
|
+
- observation: [What layout or composition signal was observed]
|
|
34
|
+
- freshness_date: YYYY-MM-DD
|
|
35
|
+
- confidence: [high|medium|low]
|
|
36
|
+
- source_translation: [How the signal translates into this project]
|
|
37
|
+
- local_implication: [What should change locally]
|
|
38
|
+
|
|
39
|
+
### Density / Hierarchy Trends
|
|
40
|
+
|
|
41
|
+
#### Entry 1
|
|
42
|
+
|
|
43
|
+
- reference: [Source name or URL]
|
|
44
|
+
- observation: [What density or hierarchy signal was observed]
|
|
45
|
+
- freshness_date: YYYY-MM-DD
|
|
46
|
+
- confidence: [high|medium|low]
|
|
47
|
+
- source_translation: [How the signal translates into this project]
|
|
48
|
+
- local_implication: [What should change locally]
|
|
16
49
|
|
|
17
|
-
|
|
50
|
+
### Interaction / Motion Trends
|
|
51
|
+
|
|
52
|
+
#### Entry 1
|
|
53
|
+
|
|
54
|
+
- reference: [Source name or URL]
|
|
55
|
+
- observation: [What interaction or motion signal was observed]
|
|
56
|
+
- freshness_date: YYYY-MM-DD
|
|
57
|
+
- confidence: [high|medium|low]
|
|
58
|
+
- source_translation: [How the signal translates into this project]
|
|
59
|
+
- local_implication: [What should change locally]
|
|
60
|
+
|
|
61
|
+
### Component Styling Trends
|
|
62
|
+
|
|
63
|
+
#### Entry 1
|
|
64
|
+
|
|
65
|
+
- reference: [Source name or URL]
|
|
66
|
+
- observation: [What component styling signal was observed]
|
|
67
|
+
- freshness_date: YYYY-MM-DD
|
|
68
|
+
- confidence: [high|medium|low]
|
|
69
|
+
- source_translation: [How the signal translates into this project]
|
|
70
|
+
- local_implication: [What should change locally]
|
|
71
|
+
|
|
72
|
+
### Stale / Overused AI Slop Patterns
|
|
73
|
+
|
|
74
|
+
#### Entry 1
|
|
75
|
+
|
|
76
|
+
- reference: [Source name or URL]
|
|
77
|
+
- observation: [What stale pattern should be avoided]
|
|
78
|
+
- freshness_date: YYYY-MM-DD
|
|
79
|
+
- confidence: [high|medium|low]
|
|
80
|
+
- source_translation: [Why this stale pattern is relevant to avoid here]
|
|
81
|
+
- local_implication: [What should be explicitly avoided locally]
|
|
82
|
+
|
|
83
|
+
## Competitive Reference Registry
|
|
18
84
|
|
|
19
85
|
### Reference: [Product/Service Name]
|
|
20
86
|
|
|
87
|
+
- reference: [Product/Service Name or URL]
|
|
21
88
|
- adopted_points: [What was adopted from this reference and why]
|
|
22
89
|
- rejected_points: [What was not adopted and why]
|
|
23
90
|
- local_translation: [How adopted points were adapted for this project]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 07 NFR (Non-Functional Requirements)
|
|
2
2
|
|
|
3
|
-
<!-- UX-INTENT: If UI-bearing, see uiux/
|
|
3
|
+
<!-- UX-INTENT: If UI-bearing, see uiux/20_design_eval_invariant.md for usability measurement targets -->
|
|
4
4
|
|
|
5
5
|
## Requirements Table
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 09 Constraints
|
|
2
2
|
|
|
3
|
-
<!-- UX-INTENT: If UI-bearing, see uiux/
|
|
3
|
+
<!-- UX-INTENT: If UI-bearing, see uiux/20_design_eval_invariant.md for accessibility constraints (invariant layer) -->
|
|
4
4
|
|
|
5
5
|
## Technical Constraints
|
|
6
6
|
|
package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/12_OQ-Resolution-Log.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 12 OQ Resolution Log
|
|
2
2
|
|
|
3
|
-
<!-- UX-INTENT: If UI-bearing, log design critique resolutions from uiux/
|
|
3
|
+
<!-- UX-INTENT: If UI-bearing, log design critique resolutions from uiux/30_option_comparison.md and uiux/31_selected_anchor_screen.md -->
|
|
4
4
|
|
|
5
5
|
## Resolution Timeline
|
|
6
6
|
|
|
@@ -35,38 +35,47 @@
|
|
|
35
35
|
- Acceptance criteria are consistent with flows/state transitions
|
|
36
36
|
- Security/operations risks are reflected in diagrams where relevant
|
|
37
37
|
- Mermaid diagrams use ` ```mermaid ` fences only
|
|
38
|
-
-
|
|
39
|
-
|
|
38
|
+
- Strategy alignment and chosen_option consistency (when UI-bearing)
|
|
39
|
+
- Taste reflection completeness and clarity (when UI-bearing)
|
|
40
|
+
- Trend scan freshness and source translation quality (when UI-bearing)
|
|
41
|
+
- 3-layer axes evaluation quality and traceability (when UI-bearing)
|
|
42
|
+
- Option comparison integrity (when UI-bearing)
|
|
43
|
+
- Selected anchor screen clarity and direction justification (when UI-bearing)
|
|
44
|
+
- Screen contract sufficiency and strong schema completeness (when UI-bearing)
|
|
45
|
+
- Generic fallback risk — ensure no unreviewed generic/placeholder UI remains (when UI-bearing)
|
|
40
46
|
- OQ register exit condition (open count = 0)
|
|
41
47
|
- Deferred items have full metadata
|
|
42
48
|
|
|
43
|
-
##
|
|
49
|
+
## Selected Direction Consistency
|
|
44
50
|
|
|
45
|
-
<!-- Required for UI-bearing packs.
|
|
51
|
+
<!-- Required for UI-bearing packs. Verifies sidecar-family alignment. -->
|
|
46
52
|
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
53
|
+
- Selected direction: verify `uiux/31_selected_anchor_screen.md` Selected Direction is populated and references a compared option from `uiux/30_option_comparison.md`
|
|
54
|
+
- Strategy alignment: verify `uiux/10_implementation_strategy.md` aligns with the selected direction in `uiux/31_selected_anchor_screen.md`
|
|
55
|
+
- Evaluation traceability: verify selected direction rationale aligns with 3-layer evaluation family (20/21/22/23 + optional 24)
|
|
50
56
|
|
|
51
57
|
## Sidecar Artifact Review Scope
|
|
52
58
|
|
|
53
59
|
<!-- Required for UI-bearing packs. Reviews uiux/ sidecar artifacts. -->
|
|
54
60
|
|
|
55
61
|
- Verify all 11 uiux/ sidecar files are present (when UI-bearing)
|
|
56
|
-
- Verify uiux/
|
|
62
|
+
- Verify uiux/10_implementation_strategy.md strict canonical schema is complete
|
|
57
63
|
- Verify scoring axes have evaluation criteria and measurement approaches
|
|
58
|
-
- Verify option comparison covers 2+ options against all scoring axes
|
|
59
|
-
- Verify
|
|
60
|
-
- Verify
|
|
64
|
+
- Verify option comparison covers 2+ options against all scoring axes in `uiux/30_option_comparison.md`
|
|
65
|
+
- Verify `uiux/31_selected_anchor_screen.md` Selected Direction references a compared option
|
|
66
|
+
- Verify `uiux/24_design_eval_dynamic_overrides.md` has documented override rules
|
|
67
|
+
- Verify screen contracts use nested strong schema with all 4 required states (default/loading/empty/error) and treat `uiux/40_screen_contracts.md` as the state SSOT
|
|
61
68
|
|
|
62
69
|
## Required Reviewers
|
|
63
70
|
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
71
|
+
- Resolve reviewers from `.qfai/assistant/steering/agent-routing.yml` and `.qfai/assistant/steering/review-profiles.yml`.
|
|
72
|
+
- Always run reviewers listed in `profiles.<routing_profile>.always_required` in `review-profiles.yml`.
|
|
73
|
+
- Add `architecture-reviewer` only when architecture-affecting decisions exist.
|
|
74
|
+
- Add `product-surface-reviewer` only when the pack is UI-bearing.
|
|
75
|
+
- Allowed verdicts: `PASS`, `FAIL`.
|
|
67
76
|
|
|
68
77
|
## RCP Rules (Mandatory)
|
|
69
78
|
|
|
70
79
|
- Any feedback triggers immediate return (`changes_requested`).
|
|
71
|
-
- After fixes,
|
|
72
|
-
- Set `overall_status: PASS` only when all
|
|
80
|
+
- After fixes, rerun only failed reviewers and reviewers whose scope changed because of the fix.
|
|
81
|
+
- Set `overall_status: PASS` only when all routed blocking reviewers are `PASS`, and no unresolved `FAIL` remains.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 99 Delta
|
|
2
2
|
|
|
3
|
-
<!-- UX-INTENT: If UI-bearing, record design direction changes from uiux/
|
|
3
|
+
<!-- UX-INTENT: If UI-bearing, record design direction changes from uiux/30_option_comparison.md and uiux/31_selected_anchor_screen.md -->
|
|
4
4
|
|
|
5
5
|
## Change History
|
|
6
6
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Reviewer Result
|
|
2
2
|
|
|
3
3
|
- reviewer_id: `Rxx`
|
|
4
|
-
- reviewer_role:
|
|
5
|
-
- verdict: `PASS` <!-- PASS | FAIL
|
|
4
|
+
- reviewer_role: `<reviewer-name>`
|
|
5
|
+
- verdict: `PASS` <!-- PASS | FAIL -->
|
|
6
6
|
- reviewed_at: `YYYY-MM-DDThh:mm:ssZ`
|
|
7
7
|
|
|
8
8
|
## Checked
|
|
@@ -13,7 +13,11 @@
|
|
|
13
13
|
- [ ] Clarity and actionability
|
|
14
14
|
- [ ] Mermaid diagrams are sufficient for decisions (scope/AC/risk consistency)
|
|
15
15
|
- [ ] Mermaid diagrams use ` ```mermaid ` fences only
|
|
16
|
-
- [ ]
|
|
16
|
+
- [ ] Taste interview completeness (when UI-bearing)
|
|
17
|
+
- [ ] Trend freshness and translation quality (when UI-bearing)
|
|
18
|
+
- [ ] 3-layer evaluation quality and traceability (when UI-bearing)
|
|
19
|
+
- [ ] Option comparison integrity and selected direction clarity (when UI-bearing)
|
|
20
|
+
- [ ] Strong screen contract completeness (when UI-bearing)
|
|
17
21
|
- [ ] OQ register exit condition (open count = 0)
|
|
18
22
|
- [ ] Deferred items have full metadata
|
|
19
23
|
|
|
@@ -23,4 +27,4 @@
|
|
|
23
27
|
|
|
24
28
|
## Decision
|
|
25
29
|
|
|
26
|
-
- PASS / FAIL
|
|
30
|
+
- PASS / FAIL
|
package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/review/review_request.md
CHANGED
|
@@ -22,8 +22,11 @@
|
|
|
22
22
|
- Acceptance criteria are consistent with flows/state transitions
|
|
23
23
|
- Security/operations risks are reflected in diagrams where relevant
|
|
24
24
|
- Mermaid diagrams use ` ```mermaid ` fences only (no ` ```text ` or language-less fences)
|
|
25
|
-
-
|
|
26
|
-
|
|
25
|
+
- Taste interview completeness and clarity (when UI-bearing)
|
|
26
|
+
- Trend freshness and source translation quality (when UI-bearing)
|
|
27
|
+
- 3-layer evaluation quality and traceability (when UI-bearing)
|
|
28
|
+
- Option comparison integrity and selected direction clarity (when UI-bearing)
|
|
29
|
+
- Strong screen contract completeness (when UI-bearing)
|
|
27
30
|
- OQ register exit condition (open count = 0)
|
|
28
31
|
- Deferred items have full metadata in `13_Deferred.md`
|
|
29
32
|
- Validate hard gate evidence exists (`.qfai/report/validate.log`).
|
|
@@ -31,12 +34,13 @@
|
|
|
31
34
|
|
|
32
35
|
## Required Reviewers
|
|
33
36
|
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
+
- Resolve reviewers from `.qfai/assistant/steering/agent-routing.yml` and `.qfai/assistant/steering/review-profiles.yml`.
|
|
38
|
+
- Always run reviewers listed in `profiles.<routing_profile>.always_required` in `review-profiles.yml`.
|
|
39
|
+
- Add conditional reviewers according to `conditional_required` and related routing rules defined in `agent-routing.yml` and `review-profiles.yml` (do not introduce additional ad-hoc conditions in this template).
|
|
40
|
+
- Allowed verdicts: `PASS`, `FAIL`.
|
|
37
41
|
|
|
38
42
|
## RCP Rules (Mandatory)
|
|
39
43
|
|
|
40
44
|
- Any feedback triggers immediate return (`changes_requested`).
|
|
41
|
-
- After fixes,
|
|
42
|
-
- Set `overall_status: PASS` only when all
|
|
45
|
+
- After fixes, rerun only failed reviewers and reviewers whose scope changed because of the fix.
|
|
46
|
+
- Set `overall_status: PASS` only when all routed blocking reviewers are `PASS`, and no unresolved `FAIL` remains.
|
|
@@ -1,61 +1,23 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "
|
|
2
|
+
"version": "2.0",
|
|
3
3
|
"created_at": "YYYY-MM-DDThh:mm:ssZ",
|
|
4
4
|
"target": {
|
|
5
5
|
"kind": "discussion",
|
|
6
6
|
"path": ".qfai/discussion/discussion-YYYYMMDDhhmmssSSS"
|
|
7
7
|
},
|
|
8
|
-
"
|
|
8
|
+
"routing_profile": "requirements-heavy",
|
|
9
|
+
"reviewers": [
|
|
9
10
|
{
|
|
10
|
-
"reviewer": "
|
|
11
|
+
"reviewer": "completion-reviewer",
|
|
11
12
|
"status": "PASS",
|
|
12
13
|
"feedback_count": 0
|
|
13
14
|
},
|
|
14
15
|
{
|
|
15
|
-
"reviewer": "
|
|
16
|
-
"status": "PASS",
|
|
17
|
-
"feedback_count": 0
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
"reviewer": "reviewer",
|
|
21
|
-
"status": "PASS",
|
|
22
|
-
"feedback_count": 0
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
"reviewer": "code-reviewer",
|
|
26
|
-
"status": "PASS",
|
|
27
|
-
"feedback_count": 0
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"reviewer": "architect-reviewer",
|
|
31
|
-
"status": "PASS",
|
|
32
|
-
"feedback_count": 0
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"reviewer": "qa-reviewer",
|
|
36
|
-
"status": "PASS",
|
|
37
|
-
"feedback_count": 0
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"reviewer": "frontend-reviewer",
|
|
41
|
-
"status": "PASS",
|
|
42
|
-
"feedback_count": 0
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
"reviewer": "backend-reviewer",
|
|
46
|
-
"status": "PASS",
|
|
47
|
-
"feedback_count": 0
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
"reviewer": "design-review-lead",
|
|
51
|
-
"status": "PASS",
|
|
52
|
-
"feedback_count": 0
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
"reviewer": "runtime-gatekeeper",
|
|
16
|
+
"reviewer": "requirements-reviewer",
|
|
56
17
|
"status": "PASS",
|
|
57
18
|
"feedback_count": 0
|
|
58
19
|
}
|
|
59
20
|
],
|
|
21
|
+
"conditional_reviewers": [],
|
|
60
22
|
"overall_status": "PASS"
|
|
61
23
|
}
|