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
|
@@ -6,20 +6,35 @@ Manifest of all UI/UX sidecar artifacts produced during a UI-bearing discussion.
|
|
|
6
6
|
|
|
7
7
|
## File Inventory
|
|
8
8
|
|
|
9
|
-
| File
|
|
10
|
-
|
|
|
11
|
-
| 00_index.md
|
|
12
|
-
|
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
|
20
|
-
|
|
|
21
|
-
|
|
|
9
|
+
| File | Purpose | Required |
|
|
10
|
+
| ----------------------------------- | ------------------------------------------- | -------- |
|
|
11
|
+
| 00_index.md | This manifest | Yes |
|
|
12
|
+
| 10_implementation_strategy.md | Implementation strategy (canonical) | Required |
|
|
13
|
+
| 11_design_taste_interview.md | Design taste interview (10 sections) | Yes |
|
|
14
|
+
| 20_design_eval_invariant.md | Invariant evaluation layer (3-layer) | Yes |
|
|
15
|
+
| 21_design_eval_trend_derived.md | Trend-derived evaluation layer (3-layer) | Yes |
|
|
16
|
+
| 22_design_eval_product_specific.md | Product-specific evaluation layer (3-layer) | Yes |
|
|
17
|
+
| 23_design_eval_aggregate.md | Aggregate scoring layer (3-layer) | Yes |
|
|
18
|
+
| 24_design_eval_dynamic_overrides.md | Dynamic evaluation overrides | Optional |
|
|
19
|
+
| 30_option_comparison.md | Option comparison against scoring axes | Yes |
|
|
20
|
+
| 31_selected_anchor_screen.md | Selected anchor screen & direction decision | Yes |
|
|
21
|
+
| 40_screen_contracts.md | Screen interaction contracts (11 fields) | Yes |
|
|
22
|
+
| 50_review_input_bundle.md | Review input bundle | Yes |
|
|
22
23
|
|
|
23
24
|
## Completeness Rule
|
|
24
25
|
|
|
25
|
-
All 11 files MUST be present for a UI-bearing pack. Partial generation is not permitted (BR-0026-0002).
|
|
26
|
+
All required files (11 files) MUST be present for a UI-bearing pack. `24_design_eval_dynamic_overrides.md` is optional. Partial generation is not permitted (BR-0026-0002).
|
|
27
|
+
|
|
28
|
+
## Forbidden Legacy Files
|
|
29
|
+
|
|
30
|
+
The following files are NOT part of the canonical family and must NOT be created in new packs:
|
|
31
|
+
|
|
32
|
+
- `30_comparison.md` — replaced by `30_option_comparison.md`
|
|
33
|
+
- `31_anchor.md` — replaced by `31_selected_anchor_screen.md`
|
|
34
|
+
- `40_contracts.md` — replaced by `40_screen_contracts.md`
|
|
35
|
+
- `50_review_bundle.md` — replaced by `50_review_input_bundle.md`
|
|
36
|
+
- `60_critique_loop.md` — removed (critique integrated into review bundle)
|
|
37
|
+
- `20_eval_axis_usability.md` — replaced by 3-layer model
|
|
38
|
+
- `21_eval_axis_consistency.md` — replaced by 3-layer model
|
|
39
|
+
- `22_eval_axis_accessibility.md` — replaced by 3-layer model
|
|
40
|
+
- `23_eval_axis_delight.md` — replaced by 3-layer model
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Implementation Strategy
|
|
2
|
+
|
|
3
|
+
## Strategy Definition
|
|
4
|
+
|
|
5
|
+
<!-- Use exactly one canonical strategy block. -->
|
|
6
|
+
|
|
7
|
+
### Strategy
|
|
8
|
+
|
|
9
|
+
- surface: [web|mobile|desktop|cli|mixed|non-ui]
|
|
10
|
+
- decision: [template|component-library|design-system|native-pattern|bespoke|none]
|
|
11
|
+
- why_this_strategy: [Why this strategy is the right fit for the current product and surface]
|
|
12
|
+
- expected_strengths: [Concrete strengths expected from this strategy]
|
|
13
|
+
- known_risks: [Concrete risks, failure modes, or tradeoffs]
|
|
14
|
+
- fit_for_this_product: [Why this strategy matches the actual product context]
|
|
15
|
+
|
|
16
|
+
## Constraints
|
|
17
|
+
|
|
18
|
+
- Use only the canonical enum values shown above.
|
|
19
|
+
- Do not add legacy keys or freeform alternative enums.
|
|
20
|
+
- Keep the strategy aligned with `01_Context.md` classification and `31_selected_anchor_screen.md`.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Design Taste Interview
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Structured interview to surface the design owner's taste preferences, aesthetic sensibilities, and quality expectations for this project.
|
|
6
|
+
|
|
7
|
+
## visual_character
|
|
8
|
+
|
|
9
|
+
<!-- Describe the visual identity: clean/bold/minimal/ornamental, color palette leanings, typography preferences -->
|
|
10
|
+
|
|
11
|
+
## emotional_tone
|
|
12
|
+
|
|
13
|
+
<!-- Describe the intended emotional response: professional/playful/serious/warm/neutral -->
|
|
14
|
+
|
|
15
|
+
## anti_preferences
|
|
16
|
+
|
|
17
|
+
<!-- List design patterns, styles, or approaches that should be explicitly avoided -->
|
|
18
|
+
|
|
19
|
+
## admired_rejected_references
|
|
20
|
+
|
|
21
|
+
<!-- Admired: products/designs that inspire. Rejected: anti-references to avoid -->
|
|
22
|
+
|
|
23
|
+
## novelty_vs_safety
|
|
24
|
+
|
|
25
|
+
<!-- Balance between innovative/novel and safe/conventional approaches -->
|
|
26
|
+
|
|
27
|
+
## density_hierarchy
|
|
28
|
+
|
|
29
|
+
<!-- Information density preferences: sparse/moderate/dense. Visual hierarchy approach -->
|
|
30
|
+
|
|
31
|
+
## motion_material
|
|
32
|
+
|
|
33
|
+
<!-- Motion design: minimal/functional/expressive. Material/depth: flat/layered/3D -->
|
|
34
|
+
|
|
35
|
+
## brand_tone
|
|
36
|
+
|
|
37
|
+
<!-- How brand voice manifests in UI: formal/casual, technical/accessible -->
|
|
38
|
+
|
|
39
|
+
## unresolved_taste_questions
|
|
40
|
+
|
|
41
|
+
<!-- Open questions about taste that need resolution during implementation -->
|
|
42
|
+
|
|
43
|
+
## taste_reflection_depth
|
|
44
|
+
|
|
45
|
+
<!-- Self-assessment: How well-defined is the taste direction? What needs more exploration? -->
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Evaluation Layer: Invariant
|
|
2
|
+
|
|
3
|
+
## Layer Classification
|
|
4
|
+
|
|
5
|
+
- Layer: invariant
|
|
6
|
+
- Source: Universal UX heuristic (Nielsen)
|
|
7
|
+
|
|
8
|
+
## Axes
|
|
9
|
+
|
|
10
|
+
### Axis: [INV-01]
|
|
11
|
+
|
|
12
|
+
- axis_id: INV-01
|
|
13
|
+
- axis_name: [e.g., Learnability]
|
|
14
|
+
- layer: invariant
|
|
15
|
+
- origin: [e.g., Nielsen heuristic #2]
|
|
16
|
+
- intent: [what this axis measures and why]
|
|
17
|
+
- why_it_matters: [business/user impact of this axis]
|
|
18
|
+
- score_scale: 1-5
|
|
19
|
+
- score_anchors:
|
|
20
|
+
- low: [1 — description of poor performance]
|
|
21
|
+
- mid: [3 — description of acceptable performance]
|
|
22
|
+
- high: [5 — description of excellent performance]
|
|
23
|
+
- positive_signals:
|
|
24
|
+
- [signal that indicates good performance on this axis]
|
|
25
|
+
- negative_signals:
|
|
26
|
+
- [signal that indicates poor performance on this axis]
|
|
27
|
+
- anti_patterns:
|
|
28
|
+
- [known anti-pattern to avoid]
|
|
29
|
+
- evidence_required: [what evidence must be gathered to score this axis]
|
|
30
|
+
- weight: [e.g., 0.20]
|
|
31
|
+
- minimum_floor: [minimum acceptable score, e.g., 2]
|
|
32
|
+
- source_refs:
|
|
33
|
+
- [reference to source material]
|
|
34
|
+
- goal_refs:
|
|
35
|
+
- [reference to project goals this axis supports]
|
|
36
|
+
- review_questions:
|
|
37
|
+
- [question a reviewer should ask when evaluating this axis]
|
|
38
|
+
|
|
39
|
+
### Axis: [INV-02]
|
|
40
|
+
|
|
41
|
+
<!-- Repeat the schema above for each invariant axis -->
|
|
42
|
+
|
|
43
|
+
- axis_id: INV-02
|
|
44
|
+
- axis_name: [e.g., Error Prevention]
|
|
45
|
+
- layer: invariant
|
|
46
|
+
- origin: [source]
|
|
47
|
+
- intent: [what this measures]
|
|
48
|
+
- why_it_matters: [impact]
|
|
49
|
+
- score_scale: 1-5
|
|
50
|
+
- score_anchors:
|
|
51
|
+
- low: [1 — poor]
|
|
52
|
+
- mid: [3 — acceptable]
|
|
53
|
+
- high: [5 — excellent]
|
|
54
|
+
- positive_signals:
|
|
55
|
+
- [signal]
|
|
56
|
+
- negative_signals:
|
|
57
|
+
- [signal]
|
|
58
|
+
- anti_patterns:
|
|
59
|
+
- [pattern]
|
|
60
|
+
- evidence_required: [evidence]
|
|
61
|
+
- weight: [weight]
|
|
62
|
+
- minimum_floor: [floor]
|
|
63
|
+
- source_refs:
|
|
64
|
+
- [ref]
|
|
65
|
+
- goal_refs:
|
|
66
|
+
- [ref]
|
|
67
|
+
- review_questions:
|
|
68
|
+
- [question]
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Evaluation Layer: Trend-derived
|
|
2
|
+
|
|
3
|
+
## Layer Classification
|
|
4
|
+
|
|
5
|
+
- Layer: trend-derived
|
|
6
|
+
- Source: Industry trend analysis and research synthesis
|
|
7
|
+
|
|
8
|
+
## Axes
|
|
9
|
+
|
|
10
|
+
### Axis: [TRD-01]
|
|
11
|
+
|
|
12
|
+
- axis_id: TRD-01
|
|
13
|
+
- axis_name: [e.g., Progressive Disclosure]
|
|
14
|
+
- layer: trend-derived
|
|
15
|
+
- origin: [research source / industry trend]
|
|
16
|
+
- intent: [what this axis measures]
|
|
17
|
+
- why_it_matters: [business/user impact]
|
|
18
|
+
- score_scale: 1-5
|
|
19
|
+
- score_anchors:
|
|
20
|
+
- low: [1 — description of poor performance]
|
|
21
|
+
- mid: [3 — description of acceptable performance]
|
|
22
|
+
- high: [5 — description of excellent performance]
|
|
23
|
+
- positive_signals:
|
|
24
|
+
- [signal that indicates good performance]
|
|
25
|
+
- negative_signals:
|
|
26
|
+
- [signal that indicates poor performance]
|
|
27
|
+
- anti_patterns:
|
|
28
|
+
- [anti-pattern to avoid]
|
|
29
|
+
- evidence_required: [what evidence must be gathered]
|
|
30
|
+
- weight: [e.g., 0.15]
|
|
31
|
+
- minimum_floor: [minimum acceptable score]
|
|
32
|
+
- source_refs:
|
|
33
|
+
- [research source with freshness_date and confidence]
|
|
34
|
+
- goal_refs:
|
|
35
|
+
- [project goal this axis supports]
|
|
36
|
+
- review_questions:
|
|
37
|
+
- [question for reviewer]
|
|
38
|
+
|
|
39
|
+
### Axis: [TRD-02]
|
|
40
|
+
|
|
41
|
+
<!-- Repeat the schema above for each trend-derived axis -->
|
|
42
|
+
|
|
43
|
+
- axis_id: TRD-02
|
|
44
|
+
- axis_name: [axis name]
|
|
45
|
+
- layer: trend-derived
|
|
46
|
+
- origin: [source]
|
|
47
|
+
- intent: [measurement intent]
|
|
48
|
+
- why_it_matters: [impact]
|
|
49
|
+
- score_scale: 1-5
|
|
50
|
+
- score_anchors:
|
|
51
|
+
- low: [1 — poor]
|
|
52
|
+
- mid: [3 — acceptable]
|
|
53
|
+
- high: [5 — excellent]
|
|
54
|
+
- positive_signals:
|
|
55
|
+
- [signal]
|
|
56
|
+
- negative_signals:
|
|
57
|
+
- [signal]
|
|
58
|
+
- anti_patterns:
|
|
59
|
+
- [pattern]
|
|
60
|
+
- evidence_required: [evidence]
|
|
61
|
+
- weight: [weight]
|
|
62
|
+
- minimum_floor: [floor]
|
|
63
|
+
- source_refs:
|
|
64
|
+
- [ref]
|
|
65
|
+
- goal_refs:
|
|
66
|
+
- [ref]
|
|
67
|
+
- review_questions:
|
|
68
|
+
- [question]
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Evaluation Layer: Product-specific
|
|
2
|
+
|
|
3
|
+
## Layer Classification
|
|
4
|
+
|
|
5
|
+
- Layer: product-specific
|
|
6
|
+
- Source: Project domain requirements and constraints
|
|
7
|
+
|
|
8
|
+
## Axes
|
|
9
|
+
|
|
10
|
+
### Axis: [PRD-01]
|
|
11
|
+
|
|
12
|
+
- axis_id: PRD-01
|
|
13
|
+
- axis_name: [e.g., Domain Workflow Fit]
|
|
14
|
+
- layer: product-specific
|
|
15
|
+
- origin: [domain requirement / stakeholder input]
|
|
16
|
+
- intent: [what this axis measures]
|
|
17
|
+
- why_it_matters: [business/user impact]
|
|
18
|
+
- score_scale: 1-5
|
|
19
|
+
- score_anchors:
|
|
20
|
+
- low: [1 — description of poor performance]
|
|
21
|
+
- mid: [3 — description of acceptable performance]
|
|
22
|
+
- high: [5 — description of excellent performance]
|
|
23
|
+
- positive_signals:
|
|
24
|
+
- [signal that indicates good performance]
|
|
25
|
+
- negative_signals:
|
|
26
|
+
- [signal that indicates poor performance]
|
|
27
|
+
- anti_patterns:
|
|
28
|
+
- [anti-pattern to avoid]
|
|
29
|
+
- evidence_required: [what evidence must be gathered]
|
|
30
|
+
- weight: [e.g., 0.10]
|
|
31
|
+
- minimum_floor: [minimum acceptable score]
|
|
32
|
+
- source_refs:
|
|
33
|
+
- [domain requirement reference]
|
|
34
|
+
- goal_refs:
|
|
35
|
+
- [project goal this axis supports]
|
|
36
|
+
- review_questions:
|
|
37
|
+
- [question for reviewer]
|
|
38
|
+
|
|
39
|
+
### Axis: [PRD-02]
|
|
40
|
+
|
|
41
|
+
<!-- Repeat the schema above for each product-specific axis -->
|
|
42
|
+
|
|
43
|
+
- axis_id: PRD-02
|
|
44
|
+
- axis_name: [axis name]
|
|
45
|
+
- layer: product-specific
|
|
46
|
+
- origin: [source]
|
|
47
|
+
- intent: [measurement intent]
|
|
48
|
+
- why_it_matters: [impact]
|
|
49
|
+
- score_scale: 1-5
|
|
50
|
+
- score_anchors:
|
|
51
|
+
- low: [1 — poor]
|
|
52
|
+
- mid: [3 — acceptable]
|
|
53
|
+
- high: [5 — excellent]
|
|
54
|
+
- positive_signals:
|
|
55
|
+
- [signal]
|
|
56
|
+
- negative_signals:
|
|
57
|
+
- [signal]
|
|
58
|
+
- anti_patterns:
|
|
59
|
+
- [pattern]
|
|
60
|
+
- evidence_required: [evidence]
|
|
61
|
+
- weight: [weight]
|
|
62
|
+
- minimum_floor: [floor]
|
|
63
|
+
- source_refs:
|
|
64
|
+
- [ref]
|
|
65
|
+
- goal_refs:
|
|
66
|
+
- [ref]
|
|
67
|
+
- review_questions:
|
|
68
|
+
- [question]
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Evaluation Layer: Aggregate
|
|
2
|
+
|
|
3
|
+
## Layer Classification
|
|
4
|
+
|
|
5
|
+
- Layer: aggregate
|
|
6
|
+
- Source: Weighted composite of all layer scores
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
This file defines how scores from invariant, trend-derived, and product-specific layers are combined into a single aggregate score for option comparison and decision-making.
|
|
11
|
+
|
|
12
|
+
## Aggregate Scoring Rules
|
|
13
|
+
|
|
14
|
+
- total_score_formula: weighted_sum(invariant \* layer_weights.invariant, trend \* layer_weights.trend_derived, product \* layer_weights.product_specific)
|
|
15
|
+
- layer_weights:
|
|
16
|
+
- invariant: 0.60
|
|
17
|
+
- trend_derived: 0.25
|
|
18
|
+
- product_specific: 0.15
|
|
19
|
+
- accept_threshold: 3.5
|
|
20
|
+
- refine_band: 2.5-3.4
|
|
21
|
+
- pivot_band: < 2.5
|
|
22
|
+
- max_iterations: [maximum number of refine iterations before escalation]
|
|
23
|
+
- plateau_rule: [rule for detecting score plateau across iterations, e.g., "3 consecutive iterations with delta < 0.1"]
|
|
24
|
+
- missing_score_policy: [how to handle axes with no score, e.g., "exclude from weighted sum and note in review"]
|
|
25
|
+
- disagreement_rule: [how to resolve disagreement between reviewers, e.g., "average scores, escalate if delta > 1.0"]
|
|
26
|
+
|
|
27
|
+
## Scoring Guide
|
|
28
|
+
|
|
29
|
+
- 5: Aggregate score >= 4.5 (accept with confidence)
|
|
30
|
+
- 4: Aggregate score 3.5-4.4 (accept)
|
|
31
|
+
- 3: Aggregate score 2.5-3.4 (refine)
|
|
32
|
+
- 2: Aggregate score 1.5-2.4 (pivot recommended)
|
|
33
|
+
- 1: Aggregate score < 1.5 (reject)
|
|
34
|
+
|
|
35
|
+
## Cross-references
|
|
36
|
+
|
|
37
|
+
- Invariant axes: `20_design_eval_invariant.md`
|
|
38
|
+
- Trend-derived axes: `21_design_eval_trend_derived.md`
|
|
39
|
+
- Product-specific axes: `22_design_eval_product_specific.md`
|
|
40
|
+
- Dynamic overrides (optional): `24_design_eval_dynamic_overrides.md`
|
|
41
|
+
- Option comparison: `30_option_comparison.md`
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Dynamic Evaluation Overrides
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Project-specific overrides and extensions to the standard 3-layer evaluation model.
|
|
6
|
+
Used when default invariant/trend-derived/product-specific axes need adjustment for this project's unique context.
|
|
7
|
+
|
|
8
|
+
## Override Rules
|
|
9
|
+
|
|
10
|
+
| Override Type | Description | Approval Required |
|
|
11
|
+
| ----------------- | -------------------------------------------- | ----------------- |
|
|
12
|
+
| Weight adjustment | Change default layer weights | Yes |
|
|
13
|
+
| Axis suppression | Suppress a default axis (with justification) | Yes |
|
|
14
|
+
| Custom axis | Add a project-specific evaluation axis | No |
|
|
15
|
+
| Threshold change | Modify accept/refine/pivot thresholds | Yes |
|
|
16
|
+
|
|
17
|
+
## Active Overrides
|
|
18
|
+
|
|
19
|
+
<!-- List active overrides below. Each must include justification and approval reference. -->
|
|
20
|
+
|
|
21
|
+
| Axis / Rule | Override | Justification | Approved By |
|
|
22
|
+
| ----------- | -------- | ------------- | ----------- |
|
|
23
|
+
| (none) | — | — | — |
|
|
24
|
+
|
|
25
|
+
## Constraint
|
|
26
|
+
|
|
27
|
+
- Overrides must not remove invariant-layer axes without a Decision Record (DR).
|
|
28
|
+
- All overrides must be traceable to a specific project requirement or stakeholder decision.
|
package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/30_option_comparison.md
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Option Comparison
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Compare 2–3 design options against 3-layer scoring axes to support direction selection.
|
|
6
|
+
Selected anchor details are in `31_selected_anchor_screen.md`.
|
|
7
|
+
|
|
8
|
+
## Comparison Matrix
|
|
9
|
+
|
|
10
|
+
### Invariant Axes
|
|
11
|
+
|
|
12
|
+
| axis_id | axis_name | layer | Option A: [Name] | Option B: [Name] | rationale |
|
|
13
|
+
| ------- | --------- | --------- | ---------------- | ---------------- | ----------- |
|
|
14
|
+
| INV-01 | [name] | invariant | [score 1-5] | [score 1-5] | [rationale] |
|
|
15
|
+
| INV-02 | [name] | invariant | [score 1-5] | [score 1-5] | [rationale] |
|
|
16
|
+
|
|
17
|
+
### Trend-derived Axes
|
|
18
|
+
|
|
19
|
+
| axis_id | axis_name | layer | Option A: [Name] | Option B: [Name] | rationale |
|
|
20
|
+
| ------- | --------- | ------------- | ---------------- | ---------------- | ----------------- |
|
|
21
|
+
| TRD-01 | [name] | trend-derived | [score 1-5] | [score 1-5] | [source + reason] |
|
|
22
|
+
|
|
23
|
+
### Product-specific Axes
|
|
24
|
+
|
|
25
|
+
| axis_id | axis_name | layer | Option A: [Name] | Option B: [Name] | rationale |
|
|
26
|
+
| ------- | --------- | ---------------- | ---------------- | ---------------- | ----------- |
|
|
27
|
+
| PRD-01 | [name] | product-specific | [score 1-5] | [score 1-5] | [rationale] |
|
|
28
|
+
|
|
29
|
+
## Aggregate Scoring
|
|
30
|
+
|
|
31
|
+
| Option | Weights | Normalized Total | Threshold | Rank |
|
|
32
|
+
| -------- | ------------------------------------- | ---------------- | --------------------- | ------ |
|
|
33
|
+
| Option A | Invariant: 60%, Trend: 25%, Prod: 15% | [total] | [accept/refine/pivot] | [rank] |
|
|
34
|
+
| Option B | Invariant: 60%, Trend: 25%, Prod: 15% | [total] | [accept/refine/pivot] | [rank] |
|
|
35
|
+
|
|
36
|
+
## Per-Option Summary
|
|
37
|
+
|
|
38
|
+
### Option A: [Name]
|
|
39
|
+
|
|
40
|
+
- Strengths: [key strengths from scoring]
|
|
41
|
+
- Weaknesses: [key weaknesses from scoring]
|
|
42
|
+
- Risk: [key risks if selected]
|
|
43
|
+
- Defer reason: [why this option might be deferred, or N/A]
|
|
44
|
+
|
|
45
|
+
### Option B: [Name]
|
|
46
|
+
|
|
47
|
+
- Strengths: [key strengths from scoring]
|
|
48
|
+
- Weaknesses: [key weaknesses from scoring]
|
|
49
|
+
- Risk: [key risks if selected]
|
|
50
|
+
- Defer reason: [why this option might be deferred, or N/A]
|
|
51
|
+
|
|
52
|
+
## Cross-references
|
|
53
|
+
|
|
54
|
+
- 3-layer evaluation files: `20_design_eval_invariant.md`, `21_design_eval_trend_derived.md`, `22_design_eval_product_specific.md`, `23_design_eval_aggregate.md`
|
|
55
|
+
- 3-layer model & aggregate rules: `23_design_eval_aggregate.md` (Aggregate Scoring Rules section)
|
|
56
|
+
- Selected anchor & adoption rationale: `31_selected_anchor_screen.md`
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Selected Anchor Screen
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Document the selected design option, anchor screen, adoption rationale, and rejected/deferred options.
|
|
6
|
+
This file is the canonical record of the design direction decision.
|
|
7
|
+
|
|
8
|
+
## Selection
|
|
9
|
+
|
|
10
|
+
- selected_option: [Option X from 30_option_comparison.md]
|
|
11
|
+
- selected_anchor_screen: [Primary screen that anchors the design direction, e.g., Dashboard, Listing, Detail]
|
|
12
|
+
- why_selected: [Rationale for selection based on scores, constraints, and project context]
|
|
13
|
+
|
|
14
|
+
## Rejected or Deferred Options
|
|
15
|
+
|
|
16
|
+
### [Option Y]
|
|
17
|
+
|
|
18
|
+
- disposition: [rejected|deferred]
|
|
19
|
+
- reason: [Why this option was not selected]
|
|
20
|
+
- conditions_for_reconsideration: [Under what circumstances this option could be revisited, or N/A]
|
|
21
|
+
|
|
22
|
+
### [Option Z]
|
|
23
|
+
|
|
24
|
+
- disposition: [rejected|deferred]
|
|
25
|
+
- reason: [Why this option was not selected]
|
|
26
|
+
- conditions_for_reconsideration: [Under what circumstances this option could be revisited, or N/A]
|
|
27
|
+
|
|
28
|
+
## Implementation Guardrails
|
|
29
|
+
|
|
30
|
+
- [Guardrail 1: constraint or principle that must be maintained during implementation]
|
|
31
|
+
- [Guardrail 2: boundary condition or quality bar]
|
|
32
|
+
|
|
33
|
+
## Reviewer Focus
|
|
34
|
+
|
|
35
|
+
- [Key area 1 the reviewer should pay attention to]
|
|
36
|
+
- [Key area 2 the reviewer should verify against the scoring rationale]
|
|
37
|
+
|
|
38
|
+
## Cross-references
|
|
39
|
+
|
|
40
|
+
- Option comparison: `30_option_comparison.md`
|
|
41
|
+
- Strategy: `10_implementation_strategy.md`
|
|
42
|
+
- Screen contracts: `40_screen_contracts.md`
|
package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/40_screen_contracts.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Screen Contracts
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Draft interaction contracts for key screens using the strong screen contract schema (11 required fields).
|
|
6
|
+
|
|
7
|
+
### Screen: [Screen Name]
|
|
8
|
+
|
|
9
|
+
- screen_id: SCR-001
|
|
10
|
+
- route: /path-to-screen
|
|
11
|
+
- purpose: [what the user accomplishes on this screen]
|
|
12
|
+
- actor: [primary user role]
|
|
13
|
+
- primary_tasks:
|
|
14
|
+
- [task 1: trigger → success criteria]
|
|
15
|
+
- [task 2: trigger → success criteria]
|
|
16
|
+
- secondary_tasks:
|
|
17
|
+
- [secondary task 1: trigger → success criteria]
|
|
18
|
+
- [secondary task 2: trigger → success criteria]
|
|
19
|
+
- required_states:
|
|
20
|
+
- default: [default/empty state description]
|
|
21
|
+
- loading: [loading indicator description]
|
|
22
|
+
- empty: [empty state description]
|
|
23
|
+
- error: [error message + retry CTA description]
|
|
24
|
+
- transitions:
|
|
25
|
+
- empty → loading: [data fetch initiated]
|
|
26
|
+
- loading → default: [data received and primary content is ready]
|
|
27
|
+
- loading → error: [fetch failure]
|
|
28
|
+
- error → loading: [retry action]
|
|
29
|
+
- observable_outcomes:
|
|
30
|
+
- [expected user outcome → verification method]
|
|
31
|
+
- [expected system behavior → verification method]
|
|
32
|
+
- notes_for_verify: [notes for verification/testing]
|
|
33
|
+
- notes_for_reviewer: [any additional context for the reviewer]
|
|
34
|
+
|
|
35
|
+
<!-- Nested list format is canonical for primary_tasks, secondary_tasks, required_states, transitions, observable_outcomes. Inline CSV is accepted for backward compatibility. -->
|
|
36
|
+
|
|
37
|
+
> **Note:** `required_states` primary truth lives in this file. Each screen's state set is authoritative here.
|
|
38
|
+
> **Note:** `secondary_tasks` documents non-primary user workflows available on the screen.
|
|
39
|
+
> Layout specification is optional and should be added as notes only.
|
|
40
|
+
|
|
41
|
+
## Cross-references
|
|
42
|
+
|
|
43
|
+
- Selected anchor: `31_selected_anchor_screen.md`
|
|
44
|
+
- Option comparison: `30_option_comparison.md`
|
package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/50_review_input_bundle.md
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Review Input Bundle
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Consolidate all sidecar artifacts into a review-ready bundle for design reviewers.
|
|
6
|
+
|
|
7
|
+
## Bundle Contents
|
|
8
|
+
|
|
9
|
+
| Artifact | Path | Status |
|
|
10
|
+
| -------------------------- | ------------------------------------------ | ------------------------- |
|
|
11
|
+
| Strategy | `uiux/10_implementation_strategy.md` | [draft/reviewed/approved] |
|
|
12
|
+
| Taste interview | `uiux/11_design_taste_interview.md` | [draft/reviewed/approved] |
|
|
13
|
+
| Trend scan | `04_Sources.md#Trend Scan` | [draft/reviewed/approved] |
|
|
14
|
+
| Invariant layer | `uiux/20_design_eval_invariant.md` | [draft/reviewed/approved] |
|
|
15
|
+
| Trend-derived layer | `uiux/21_design_eval_trend_derived.md` | [draft/reviewed/approved] |
|
|
16
|
+
| Product-specific layer | `uiux/22_design_eval_product_specific.md` | [draft/reviewed/approved] |
|
|
17
|
+
| Aggregate layer | `uiux/23_design_eval_aggregate.md` | [draft/reviewed/approved] |
|
|
18
|
+
| Dynamic overrides | `uiux/24_design_eval_dynamic_overrides.md` | [optional] |
|
|
19
|
+
| Option comparison | `uiux/30_option_comparison.md` | [draft/reviewed/approved] |
|
|
20
|
+
| Selected anchor | `uiux/31_selected_anchor_screen.md` | [draft/reviewed/approved] |
|
|
21
|
+
| Screen contracts | `uiux/40_screen_contracts.md` | [draft/reviewed/approved] |
|
|
22
|
+
| Prototyping recommendation | `../prototyping.yaml` | [draft/reviewed/approved] |
|
|
23
|
+
|
|
24
|
+
## Trend-derived review focus
|
|
25
|
+
|
|
26
|
+
- Required trend categories are all present and complete.
|
|
27
|
+
- Stale / overused AI slop patterns are explicitly avoided.
|
|
28
|
+
- Trend research is translated into scoring, comparison, and selected anchor decisions.
|
|
29
|
+
|
|
30
|
+
## Review Checklist
|
|
31
|
+
|
|
32
|
+
- [ ] Strategy aligns with surface type and project constraints
|
|
33
|
+
- [ ] Trend categories are complete and translated into local design decisions
|
|
34
|
+
- [ ] Competitive references include adopted_points, rejected_points, and local_translation
|
|
35
|
+
- [ ] Selected anchor clearly documents rationale and downstream implications
|
|
36
|
+
- [ ] Screen contracts cover all required states
|