qfai 1.6.5 → 1.7.1
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/assets/init/.qfai/assistant/skills/qfai-discussion/SKILL.md +18 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/03_Story-Workshop.md +45 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/04_Sources.md +10 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/14_Review-Request.md +8 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/99_delta.md +8 -0
- package/assets/init/.qfai/assistant/skills/qfai-implement/SKILL.md +7 -0
- package/assets/init/.qfai/assistant/skills/qfai-prototyping/SKILL.md +7 -0
- package/assets/init/.qfai/evidence/README.md +30 -0
- package/dist/cli/index.cjs +943 -124
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.mjs +933 -114
- package/dist/cli/index.mjs.map +1 -1
- package/dist/index.cjs +754 -80
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.mjs +755 -81
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -108,6 +108,24 @@ Every major artifact in this stage MUST include this table schema:
|
|
|
108
108
|
- `02_Inception-Deck.md` MUST contain at least one Mermaid diagram in ` ```mermaid ` fences.
|
|
109
109
|
- `03_Story-Workshop.md` MUST contain at least one Mermaid diagram in ` ```mermaid ` fences.
|
|
110
110
|
- If UI requirements exist, include an HTML+CSS visual mock in `03_Story-Workshop.md`.
|
|
111
|
+
- **UI-bearing Authoring Requirements**:
|
|
112
|
+
- A pack is UI-bearing if `03_Story-Workshop.md` contains HTML tags (`<style>`, `<div>`, etc.) or Mermaid screen flow diagrams.
|
|
113
|
+
- UI-bearing packs MUST include a `## Design Direction Summary` section in `03_Story-Workshop.md` with all 6 subsections:
|
|
114
|
+
1. `### Option Comparison` — 2+ distinct design options (QFAI-DDP-020)
|
|
115
|
+
2. `### Anchor Screen Selection` — explicit selection referencing a compared option (QFAI-DDP-021)
|
|
116
|
+
3. `### Competitive References` — summary referencing 04_Sources.md (QFAI-DDP-022 validates 04_Sources.md fields)
|
|
117
|
+
4. `### CTA Hierarchy` — must define at least a primary CTA (QFAI-DDP-023)
|
|
118
|
+
5. `### State Coverage` — must define empty, loading, error, populated states (QFAI-DDP-024)
|
|
119
|
+
6. `### Design Anti-goals` — 1+ patterns to intentionally avoid (QFAI-DDP-025)
|
|
120
|
+
- `04_Sources.md` must include a `## Competitive Reference Registry` with entries containing:
|
|
121
|
+
- `adopted_points`: what was adopted and why
|
|
122
|
+
- `rejected_points`: what was not adopted and why
|
|
123
|
+
- `local_translation`: how adopted points were adapted
|
|
124
|
+
- Placeholder values (TBD, N/A, TODO, empty) are treated as missing (QFAI-DDP-022)
|
|
125
|
+
- `14_Review-Request.md` must include a `## Design Direction Decisions` section with anchor, rejections, and adopted refs.
|
|
126
|
+
- `99_delta.md` must include a `## Rejected Visual Directions` section with rationale and recurrence prevention.
|
|
127
|
+
- All 7 validators (QFAI-DDP-019..025) emit `severity: error` — violations block validation.
|
|
128
|
+
- Non-UI packs are exempt from all DDS validators (zero new issues).
|
|
111
129
|
- Review roster is fixed by `.qfai/assistant/steering/review-roster.yml` and must be executed in full.
|
|
112
130
|
- RCP wording must be sourced from `.qfai/assistant/skills/qfai-discussion/references/rcp_footer.md`.
|
|
113
131
|
- Discussion artifacts are logs/rationale and must not duplicate spec SSOT.
|
|
@@ -65,3 +65,48 @@ flowchart TD
|
|
|
65
65
|
border-radius: 12px;
|
|
66
66
|
}
|
|
67
67
|
```
|
|
68
|
+
|
|
69
|
+
## Design Direction Summary
|
|
70
|
+
|
|
71
|
+
<!-- Required for UI-bearing packs. Validated by QFAI-DDP-019..025. -->
|
|
72
|
+
|
|
73
|
+
### Option Comparison
|
|
74
|
+
|
|
75
|
+
<!-- List 2+ design options. Each must be a separate entry. (QFAI-DDP-020) -->
|
|
76
|
+
|
|
77
|
+
- **Option A**: [Name and description]
|
|
78
|
+
- **Option B**: [Name and description]
|
|
79
|
+
|
|
80
|
+
### Anchor Screen Selection
|
|
81
|
+
|
|
82
|
+
<!-- Select one of the compared options as the anchor. (QFAI-DDP-021) -->
|
|
83
|
+
|
|
84
|
+
Selected: [Option X] — [Reason for selection]
|
|
85
|
+
|
|
86
|
+
### Competitive References
|
|
87
|
+
|
|
88
|
+
<!-- Summarize competitive references from 04_Sources.md. (QFAI-DDP-022) -->
|
|
89
|
+
|
|
90
|
+
See 04_Sources.md for full competitive reference registry.
|
|
91
|
+
|
|
92
|
+
### CTA Hierarchy
|
|
93
|
+
|
|
94
|
+
<!-- Define CTA hierarchy with at least a primary CTA. (QFAI-DDP-023) -->
|
|
95
|
+
|
|
96
|
+
- Primary: [CTA label and placement]
|
|
97
|
+
- Secondary: [CTA label and placement]
|
|
98
|
+
|
|
99
|
+
### State Coverage
|
|
100
|
+
|
|
101
|
+
<!-- Define all 4 required states. (QFAI-DDP-024) -->
|
|
102
|
+
|
|
103
|
+
- empty: [Empty state display]
|
|
104
|
+
- loading: [Loading state display]
|
|
105
|
+
- error: [Error state display]
|
|
106
|
+
- populated: [Populated state display]
|
|
107
|
+
|
|
108
|
+
### Design Anti-goals
|
|
109
|
+
|
|
110
|
+
<!-- List 1+ design patterns to intentionally avoid. (QFAI-DDP-025) -->
|
|
111
|
+
|
|
112
|
+
- Anti-goal: [Pattern to avoid and reason]
|
|
@@ -12,6 +12,16 @@
|
|
|
12
12
|
- `secondary`: Derived information (summaries, analyses).
|
|
13
13
|
- `external`: Third-party references (specs, RFCs, vendor docs).
|
|
14
14
|
|
|
15
|
+
## Competitive Reference Registry
|
|
16
|
+
|
|
17
|
+
<!-- Required for UI-bearing packs. Each entry must have all 3 fields populated. (QFAI-DDP-022) -->
|
|
18
|
+
|
|
19
|
+
### Reference: [Product/Service Name]
|
|
20
|
+
|
|
21
|
+
- adopted_points: [What was adopted from this reference and why]
|
|
22
|
+
- rejected_points: [What was not adopted and why]
|
|
23
|
+
- local_translation: [How adopted points were adapted for this project]
|
|
24
|
+
|
|
15
25
|
## Traceability
|
|
16
26
|
|
|
17
27
|
- Each REQ/NFR should reference at least one SRC-ID.
|
|
@@ -40,6 +40,14 @@
|
|
|
40
40
|
- OQ register exit condition (open count = 0)
|
|
41
41
|
- Deferred items have full metadata
|
|
42
42
|
|
|
43
|
+
## Design Direction Decisions
|
|
44
|
+
|
|
45
|
+
<!-- Required for UI-bearing packs. Populated from DDS in 03_Story-Workshop.md. -->
|
|
46
|
+
|
|
47
|
+
- Anchor screen: [Selected option reference]
|
|
48
|
+
- Rejection rationale: [Why other options were not selected]
|
|
49
|
+
- Adopted competitive references: [Key references adopted from 04_Sources.md]
|
|
50
|
+
|
|
43
51
|
## Required Reviewers
|
|
44
52
|
|
|
45
53
|
- Load all reviewers from `.qfai/assistant/steering/review-roster.yml`.
|
|
@@ -19,6 +19,14 @@
|
|
|
19
19
|
| ---------- | ------- | --------------- | ------ | --------------------- |
|
|
20
20
|
| YYYY-MM-DD | OQ-0001 | Option B | TBD | TBD |
|
|
21
21
|
|
|
22
|
+
## Rejected Visual Directions
|
|
23
|
+
|
|
24
|
+
<!-- Required for UI-bearing packs when visual directions are rejected. -->
|
|
25
|
+
|
|
26
|
+
| Date | Direction | Rationale | Recurrence Prevention |
|
|
27
|
+
| ---------- | -------------- | --------- | --------------------- |
|
|
28
|
+
| YYYY-MM-DD | [Option/Style] | [Why] | [How to prevent] |
|
|
29
|
+
|
|
22
30
|
## Drift Events
|
|
23
31
|
|
|
24
32
|
| Date | Trigger | Impact Assessment | Files Updated |
|
|
@@ -45,6 +45,13 @@ QFAI Skill Body (SSOT)
|
|
|
45
45
|
|
|
46
46
|
Execute the TDD micro-cycle for each pending item in `test-list.md`, transitioning each through Red -> Green -> Refactor -> Done, producing tested production code aligned with the spec.
|
|
47
47
|
|
|
48
|
+
## Visual Review Guard
|
|
49
|
+
|
|
50
|
+
- Review rendered output, screenshot evidence, or HTML output before closing any UI-affecting item.
|
|
51
|
+
- Read the DDP (Design Direction Pack) first whenever implementation touches UI or critique-driven behavior.
|
|
52
|
+
- Read order: DDP -> Design Token -> UI Contract -> HTML Mock -> Flow.
|
|
53
|
+
- If code intent and rendered output diverge, treat the rendered/HTML result as the blocking review input and reconcile before DONE.
|
|
54
|
+
|
|
48
55
|
## Non-goals
|
|
49
56
|
|
|
50
57
|
- Writing spec artifacts (use `/qfai-sdd`).
|
|
@@ -49,6 +49,13 @@ This stage is complete only when all specs pass the minimum runtime contract:
|
|
|
49
49
|
- DB objects needed for runtime are present (real DB or documented in-memory substitute).
|
|
50
50
|
- Evidence is captured and validate can enforce it.
|
|
51
51
|
|
|
52
|
+
## Visual Review Guard
|
|
53
|
+
|
|
54
|
+
- Review rendered output, screenshot captures, or generated HTML for every UI-affecting slice; code-only inspection is insufficient.
|
|
55
|
+
- Read the DDP (Design Direction Pack) first before comparing visuals or wiring critique outcomes into implementation.
|
|
56
|
+
- Read order: DDP -> Design Token -> UI Contract -> HTML Mock -> Flow.
|
|
57
|
+
- If rendered/HTML evidence disagrees with code intent, fix the rendered result before declaring completion.
|
|
58
|
+
|
|
52
59
|
## Definition of Done by fidelity level (Mandatory)
|
|
53
60
|
|
|
54
61
|
- L1 (`skeleton`):
|
|
@@ -49,6 +49,36 @@ Recommended approach:
|
|
|
49
49
|
|
|
50
50
|
When `uiFidelity` is present, keep all minimum fields above.
|
|
51
51
|
|
|
52
|
+
### Render evidence bundle conventions
|
|
53
|
+
|
|
54
|
+
When render capture is enabled, keep render metadata path-only and store artifacts on disk:
|
|
55
|
+
|
|
56
|
+
- default bundle path: `.qfai/evidence/render.json`
|
|
57
|
+
- default viewports: `desktop`, `mobile`
|
|
58
|
+
- `uiFidelity.screens[].renders[]` is the normalized in-band source for validator/report use
|
|
59
|
+
- captured entries require `imagePath` and `htmlPath`
|
|
60
|
+
- skipped entries require `skippedReason`
|
|
61
|
+
- failed entries require `error`
|
|
62
|
+
|
|
63
|
+
Degraded mode is allowed:
|
|
64
|
+
|
|
65
|
+
- if renderer setup is unavailable, record `status: "skipped"` with a concrete reason
|
|
66
|
+
- do not inline screenshot bytes or HTML bodies into JSON
|
|
67
|
+
- keep `prototyping.json` and `render.json` aligned by file path only
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"renderEvidence": {
|
|
72
|
+
"status": "skipped",
|
|
73
|
+
"requested": true,
|
|
74
|
+
"autogenEnabled": false,
|
|
75
|
+
"viewports": ["desktop", "mobile"],
|
|
76
|
+
"outputPath": ".qfai/evidence/render.json",
|
|
77
|
+
"reason": "render requested without autogen-ui-fidelity"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
52
82
|
Good example references:
|
|
53
83
|
|
|
54
84
|
- Repository docs sample: `docs/examples/prototyping-ui-fidelity.good.json`
|