qfai 1.7.13 → 1.7.14
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 +7 -5
- 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/agents/product-surface-reviewer.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/SKILL.md +44 -18
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/01_Context.md +9 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/03_Story-Workshop.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/04_Sources.md +6 -6
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/14_Review-Request.md +7 -7
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/review/Rxx_reviewer.md +2 -2
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/review/review_request.md +2 -2
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/10_implementation_strategy.md +31 -13
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/20_trend_scan.md +41 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/23_design_eval_aggregate.md +12 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/40_screen_contracts.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/50_review_input_bundle.md +2 -0
- package/assets/init/.qfai/assistant/skills/qfai-implement/SKILL.md +6 -2
- package/assets/init/.qfai/assistant/skills/qfai-prototyping/SKILL.md +264 -34
- package/assets/init/.qfai/assistant/steering/agent-catalog.yml +1 -1
- package/assets/init/.qfai/assistant/steering/agent-routing.yml +1 -1
- package/assets/init/.qfai/assistant/steering/manifest.md +4 -7
- package/assets/init/.qfai/assistant/steering/product.md +6 -6
- package/assets/init/.qfai/assistant/steering/review-profiles.yml +3 -0
- package/assets/init/.qfai/assistant/steering/ui-definition-protocol.md +2 -2
- package/assets/init/.qfai/contracts/ui/README.md +2 -2
- package/assets/init/.qfai/discussion/README.md +14 -22
- package/assets/init/.qfai/evidence/README.md +21 -12
- package/assets/uix-rev/comparison-review.md +3 -15
- package/assets/uix-rev/contracts-review.md +5 -2
- package/assets/uix-rev/scoring-review.md +10 -2
- package/assets/uix-rev/strategy-review.md +11 -7
- package/dist/cli/index.cjs +1993 -1279
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.mjs +1930 -1216
- package/dist/cli/index.mjs.map +1 -1
- package/dist/index.cjs +1989 -1269
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +75 -62
- package/dist/index.d.ts +75 -62
- package/dist/index.mjs +1926 -1207
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/assets/uix-rev/migration-review.md +0 -17
package/README.md
CHANGED
|
@@ -17,8 +17,8 @@ The agent reads the repository, produces the required artifacts, and iterates un
|
|
|
17
17
|
|
|
18
18
|
## Release status
|
|
19
19
|
|
|
20
|
-
- Current package version: `1.7.
|
|
21
|
-
- Release posture: v1.7.
|
|
20
|
+
- Current package version: `1.7.14`
|
|
21
|
+
- Release posture: v1.7.14 converges init assets, validators, and docs on the canonical sidecar model.
|
|
22
22
|
- Current repo note: some repo-wide `qfai validate --fail-on error` blockers still come from historical review/evidence/ATDD/TDD artifacts and are being cleaned incrementally.
|
|
23
23
|
|
|
24
24
|
## Quick start
|
|
@@ -85,7 +85,9 @@ QFAI includes a small set of custom skills (stored under `.qfai/assistant/skills
|
|
|
85
85
|
- **qfai-configure**: Analyze the repository (language, frameworks, test layout, directory structure)
|
|
86
86
|
and tailor `qfai.config.yaml` accordingly (especially `testFileGlobs`).
|
|
87
87
|
Run this once right after `npx qfai init`, and re-run it when the repository structure changes.
|
|
88
|
-
- **qfai-discussion**: Run a unified structured discussion that produces and maintains the latest discussion pack
|
|
88
|
+
- **qfai-discussion**: Run a unified structured discussion that produces and maintains the latest discussion pack
|
|
89
|
+
as 15 required markdown files under `.qfai/discussion/discussion-<ts>/`.
|
|
90
|
+
UI-bearing discussion packs require `prototyping.yaml`; non-ui discussion packs do not.
|
|
89
91
|
- **qfai-sdd**: Unified SDD entrypoint with discussion-pack preflight guard (missing/incomplete/blocking OQ causes stop + next action guidance).
|
|
90
92
|
- **qfai-prototyping**: Build a contract-aligned implementation skeleton with static-first evidence by default, and escalate to full-harness only when explicitly justified.
|
|
91
93
|
- **qfai-atdd**: Implement acceptance tests driven by specs/scenarios.
|
|
@@ -190,7 +192,7 @@ Notes.
|
|
|
190
192
|
- `validate.json`, `report.json`, `doctor.json`, and `run-*` JSON logs are internal exports and are not a stable external contract; prefer `report.md` for integrations that must survive tool upgrades.
|
|
191
193
|
- Scenario files are expected to use the Gherkin extension `*.feature` (not `*.md`).
|
|
192
194
|
- `prototyping.calibration` in `qfai.config.yaml` connects full-harness scoring thresholds to the report and validator.
|
|
193
|
-
- Observability modules (`src/core/observability/`) exist as foundation code but are **not integrated into blocking validation** in v1.7.
|
|
195
|
+
- Observability modules (`src/core/observability/`) exist as foundation code but are **not integrated into blocking validation** in v1.7.14. They are reserved for future operational instrumentation.
|
|
194
196
|
|
|
195
197
|
## Specifications and contracts (SDD)
|
|
196
198
|
|
|
@@ -266,7 +268,7 @@ Recommended baseline.
|
|
|
266
268
|
|
|
267
269
|
Waiver policy.
|
|
268
270
|
|
|
269
|
-
- Use waivers only for `warning` / `info` findings (false positives
|
|
271
|
+
- Use waivers only for `warning` / `info` findings (false positives).
|
|
270
272
|
- Waivers that target `error` findings are invalid and fail validation (`QFAI-WAIVER-002`).
|
|
271
273
|
- Expired waivers are reported as warnings (`QFAI-WAIVER-003`) and must be renewed or removed with evidence.
|
|
272
274
|
- Suppressed findings remain visible in reports as `suppressed=true`; waivers do not erase findings.
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
## Mission
|
|
4
4
|
|
|
5
|
-
- Implement frontend behavior aligned with selected
|
|
5
|
+
- Implement frontend behavior aligned with selected anchor, strategy, screen contracts, and product experience decisions.
|
|
6
6
|
|
|
7
7
|
## Domain Responsibilities
|
|
8
8
|
|
|
9
9
|
- Build UI components, states, interactions, and user-facing flows.
|
|
10
|
-
- Respect selected
|
|
10
|
+
- Respect selected anchor, strategy, screen contracts, optional design tokens, optional fallback HTML/CSS mock, and screen flow constraints.
|
|
11
11
|
- Coordinate with backend changes without breaking surface contracts.
|
|
12
12
|
- Implement with KISS and YAGNI: prefer the simplest component/state structure that satisfies the current contract, and do not add speculative hooks, props, flags, or abstraction layers.
|
|
13
13
|
- Keep UI code cohesive and readable: isolate concerns, minimize hidden coupling, avoid duplication, and use existing patterns/utilities before inventing new ones.
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
- Define UX direction, user journeys, interaction patterns, and accessibility expectations.
|
|
10
10
|
- Define visual design direction, tokens, typography, color, and layout hierarchy.
|
|
11
11
|
- Design navigation structures, IA, and screen transition logic.
|
|
12
|
-
- Integrate selected
|
|
12
|
+
- Integrate selected anchor, strategy, screen contracts, evaluation sidecars, and Mermaid flow consistency.
|
|
13
13
|
- Resolve conflicts between specialist design perspectives as a unified product experience decision.
|
|
14
14
|
- Apply KISS and YAGNI to product-surface design: only add screens, controls, states, and branching flows that are justified by the current user goal.
|
|
15
15
|
- Keep product experience decisions cohesive and unsurprising across copy, IA, navigation, transitions, and visual hierarchy.
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
- .github/instructions/principles.instructions.md
|
|
25
25
|
- .instruction/00_universal/development-principles-checklist.md
|
|
26
26
|
- .instruction/01_specialties/design.md
|
|
27
|
-
- Selected
|
|
27
|
+
- Selected anchor, strategy, screen contracts, evaluation sidecars, optional tokens, optional fallback HTML/CSS mock, and Mermaid flows
|
|
28
28
|
- Runtime screenshots or rendered evidence when available
|
|
29
29
|
|
|
30
30
|
## Deliverables
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
- Audit frontend changes for correctness and user-facing risk.
|
|
10
10
|
- Audit layout sanity, interaction usability, and accessibility guardrails.
|
|
11
11
|
- Audit visual design, token alignment, and service-level UX coherence.
|
|
12
|
-
- Reconcile sidecar artifacts (selected
|
|
12
|
+
- Reconcile sidecar artifacts (selected anchor, strategy, screen contracts), design tokens, mermaid flows, and rendered output consistency.
|
|
13
13
|
HTML mock is optional fallback evidence only. Design tokens are supporting input.
|
|
14
14
|
- Review UI changes for KISS and YAGNI at the surface layer: avoid needless states, controls, flows, animations, and configuration that are not justified by the product goal.
|
|
15
15
|
- Check naming, structure, and responsibility split of UI components for clarity, cohesion, and minimal surprise.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: qfai-discussion
|
|
3
3
|
title: QFAI Discussion (Unified Discuss + Require)
|
|
4
|
-
description: "Run structured discussion that merges discuss and require into a single 15-file discussion pack with
|
|
4
|
+
description: "Run structured discussion that merges discuss and require into a single 15-file discussion pack with classification-aware prototyping.yaml requiredness and OQ-driven exit."
|
|
5
5
|
argument-hint: "<idea-or-problem> [--auto]"
|
|
6
6
|
allowed-tools: [Read, Glob, Write, TodoWrite, Task, Bash]
|
|
7
7
|
roles:
|
|
@@ -134,17 +134,24 @@ Every major artifact in this stage MUST include this table schema:
|
|
|
134
134
|
- `uiux/11_design_taste_interview.md` — design taste interview (10 sections)
|
|
135
135
|
- `04_Sources.md#Trend Scan` — trend scan with required category coverage and per-entry completeness
|
|
136
136
|
- `uiux/20-24` — 3-layer evaluation family (invariant, trend-derived, product-specific, aggregate, dynamic overrides)
|
|
137
|
+
- **Score Scope**: 3-layer evaluation scores measure **design direction quality**
|
|
138
|
+
(which option best satisfies evaluation criteria).
|
|
139
|
+
These scores are NOT implementation quality scores.
|
|
140
|
+
When prototyping.yaml recommends `full-harness`,
|
|
141
|
+
the prototyping skill will independently evaluate **implementation fidelity**
|
|
142
|
+
using different scoring criteria.
|
|
143
|
+
Do not reuse 3-layer aggregate scores as prototyping iteration scores.
|
|
137
144
|
- `uiux/30_option_comparison.md` — option comparison
|
|
138
|
-
- `uiux/31_selected_anchor_screen.md` — selected anchor screen (
|
|
145
|
+
- `uiux/31_selected_anchor_screen.md` — selected anchor screen (selected anchor single source of truth)
|
|
139
146
|
- `uiux/40_screen_contracts.md` — screen contracts (strong schema)
|
|
140
147
|
- `uiux/50_review_input_bundle.md` — review input bundle
|
|
141
|
-
- `04_Sources.md` `## Trend Scan` must include all required categories, and each entry must include: `reference`, `observation`, `
|
|
148
|
+
- `04_Sources.md` `## Trend Scan` must include all required categories, and each entry must include: `reference`, `observation`, `decision_connection`, `evaluation_connection`, `local_implication`
|
|
142
149
|
- `04_Sources.md` `## Competitive Reference Registry` entries must include:
|
|
143
150
|
- `adopted_points`: what was adopted and why
|
|
144
151
|
- `rejected_points`: what was not adopted and why
|
|
145
152
|
- `local_translation`: how adopted points were adapted
|
|
146
153
|
- Placeholder-like values (TBD, N/A, TODO, empty) are treated as missing
|
|
147
|
-
- `14_Review-Request.md` must review selected
|
|
154
|
+
- `14_Review-Request.md` must review selected anchor from `uiux/31_selected_anchor_screen.md` and strategy alignment from `uiux/10_implementation_strategy.md`.
|
|
148
155
|
- `99_delta.md` must include a `## Rejected Visual Directions` section with rationale and recurrence prevention.
|
|
149
156
|
- `04_Sources.md` must include a `## Trend Scan` section where each required category has at least one complete entry.
|
|
150
157
|
- `04_Sources.md` must include a `## Competitive Reference Registry` where each entry has: `adopted_points`, `rejected_points`, `local_translation` fields populated.
|
|
@@ -166,12 +173,18 @@ Every major artifact in this stage MUST include this table schema:
|
|
|
166
173
|
Classify the project's surface type to determine whether UI/UX sidecar artifacts are required.
|
|
167
174
|
Classification is based on **surface type only**, not interaction complexity (DR-0057).
|
|
168
175
|
|
|
176
|
+
Classification surfaces: `web | mobile | desktop | cli | mixed | non-ui`
|
|
177
|
+
Prototyping surfaces (subset): `web | mobile | desktop | cli | mixed`
|
|
178
|
+
|
|
179
|
+
`non-ui` is a classification-only value used in `01_Context.md` when `ui_bearing: false`.
|
|
180
|
+
It is not a prototyping surface and does not appear in `prototyping.yaml`.
|
|
181
|
+
|
|
169
182
|
| Surface Type | UI-bearing | Sidecar Generation | Example |
|
|
170
183
|
| ------------ | ---------- | ---------------------------------------- | ---------------------------------------- |
|
|
171
184
|
| web | Yes | Full 11-file uiux/ sidecar | Web application with user-facing screens |
|
|
172
185
|
| mobile | Yes | Full 11-file uiux/ sidecar | Mobile app with touch interactions |
|
|
173
186
|
| desktop | Yes | Full 11-file uiux/ sidecar | Desktop application with GUI |
|
|
174
|
-
| cli |
|
|
187
|
+
| cli | Yes | Full 11-file uiux/ sidecar | CLI tool, terminal application |
|
|
175
188
|
| mixed | Yes | Full 11-file uiux/ sidecar | Cross-platform with UI components |
|
|
176
189
|
| non-ui | No | No uiux/ directory, no sidecar generated | API service, library |
|
|
177
190
|
|
|
@@ -189,10 +202,10 @@ When UI-bearing is detected:
|
|
|
189
202
|
2. Apply UX intent cross-references to core templates
|
|
190
203
|
3. Add UI-bearing completion conditions
|
|
191
204
|
|
|
192
|
-
When non-ui is detected:
|
|
205
|
+
When non-ui is detected (`classification.ui_bearing: false`):
|
|
193
206
|
|
|
194
207
|
- Skip uiux/ sidecar generation entirely — no uiux/ directory, no errors
|
|
195
|
-
- Core 15-file pack
|
|
208
|
+
- Core 15-file pack is generated; `prototyping.yaml` is not required
|
|
196
209
|
- No additional UI/UX completion conditions apply
|
|
197
210
|
|
|
198
211
|
### UI-bearing Completion Conditions
|
|
@@ -209,18 +222,19 @@ For UI-bearing projects, the following conditions must ALL be satisfied before d
|
|
|
209
222
|
have invariant, trend-derived, and product-specific evaluation criteria
|
|
210
223
|
4. **Dynamic overrides documented**: `uiux/24_design_eval_dynamic_overrides.md` lists any override rules
|
|
211
224
|
5. **Comparison completed**: `uiux/30_option_comparison.md` documents option comparison against scoring axes
|
|
212
|
-
6. **Anchor screen selected**: `uiux/31_selected_anchor_screen.md` documents the selected
|
|
225
|
+
6. **Anchor screen selected**: `uiux/31_selected_anchor_screen.md` documents the selected anchor and anchor screen
|
|
213
226
|
7. **Contracts drafted**: `uiux/40_screen_contracts.md` contains screen interaction contracts
|
|
214
227
|
|
|
215
228
|
Completion is blocked until all 7 conditions are met. Skipping any condition prevents the discussion from being marked as complete.
|
|
216
229
|
|
|
217
230
|
### Non-UI Completion
|
|
218
231
|
|
|
219
|
-
For non-
|
|
232
|
+
For non-UI projects (`classification.ui_bearing: false`), no UI/UX completion conditions apply and no sidecar artifacts are required. `prototyping.yaml` is not required for non-UI packs.
|
|
220
233
|
|
|
221
234
|
## Goal
|
|
222
235
|
|
|
223
|
-
Produce a unified 15-file discussion pack
|
|
236
|
+
Produce a unified 15-file discussion pack with explicit decisions, requirements, OQ states, and rationale so `/qfai-sdd` starts without unresolved blockers.
|
|
237
|
+
The latest discussion pack must include `prototyping.yaml` when `ui_bearing: true`, and must not require it when `ui_bearing: false`.
|
|
224
238
|
|
|
225
239
|
## Non-goals
|
|
226
240
|
|
|
@@ -246,7 +260,7 @@ Produce a unified 15-file discussion pack plus required prototyping.yaml with ex
|
|
|
246
260
|
- `.qfai/discussion/discussion-*/14_Review-Request.md`
|
|
247
261
|
- `.qfai/discussion/discussion-*/99_delta.md`
|
|
248
262
|
- review artifacts under `.qfai/review/review-YYYYMMDDhhmmssSSS/`
|
|
249
|
-
- `.qfai/discussion/discussion-*/prototyping.yaml`
|
|
263
|
+
- `.qfai/discussion/discussion-*/prototyping.yaml` when the latest discussion pack is `ui_bearing: true`
|
|
250
264
|
- Evidence file: `.qfai/evidence/discussion-YYYYMMDDhhmmssSSS.md`
|
|
251
265
|
- Reviewer notes (`PASS` or `REVISE`)
|
|
252
266
|
|
|
@@ -254,7 +268,7 @@ Produce a unified 15-file discussion pack plus required prototyping.yaml with ex
|
|
|
254
268
|
|
|
255
269
|
1. Run the core interview for product concept, scope, stakeholders, and constraints (`01_Context.md`).
|
|
256
270
|
2. Run Inception Deck (10 questions) for ambiguity removal and project alignment, and include at least one Mermaid diagram (`02_Inception-Deck.md`).
|
|
257
|
-
3. Run Story Workshop to capture user stories, user flows, and at least one Mermaid diagram; HTML+CSS visual mock is optional fallback only when it materially clarifies the selected
|
|
271
|
+
3. Run Story Workshop to capture user stories, user flows, and at least one Mermaid diagram; HTML+CSS visual mock is optional fallback only when it materially clarifies the selected anchor (`03_Story-Workshop.md`).
|
|
258
272
|
4. Register source traceability in `04_Sources.md` with stable `SRC-XXXX` identifiers.
|
|
259
273
|
5. Define scope boundaries and success criteria in `05_Scope.md`.
|
|
260
274
|
6. Capture functional requirements in `06_REQ.md` with `REQ-0001` format.
|
|
@@ -267,15 +281,27 @@ Produce a unified 15-file discussion pack plus required prototyping.yaml with ex
|
|
|
267
281
|
13. Run OQ resolution hearing repeatedly until open count is zero.
|
|
268
282
|
14. Move deferred items to `13_Deferred.md` with all mandatory metadata columns.
|
|
269
283
|
15. Update `12_OQ-Resolution-Log.md`, `14_Review-Request.md`, and `99_delta.md`.
|
|
270
|
-
16. Generate `prototyping.yaml` at the discussion pack top level for downstream prototyping recommendation
|
|
284
|
+
16. Generate `prototyping.yaml` at the discussion pack top level for downstream prototyping recommendation only when the latest discussion pack is `ui_bearing: true`.
|
|
271
285
|
- MUST use the **namespaced canonical schema** with `prototyping.recommended_mode` (not top-level `recommended_mode`).
|
|
272
|
-
- Top-level `recommended_mode` is legacy compatibility only and MUST NOT be emitted in new artifacts.
|
|
273
286
|
- All fields (`recommended_mode`, `rationale`, `allowed_modes`, `surface`) are required under the `prototyping:` key.
|
|
287
|
+
- Top-level recommendation keys are not supported; only the namespaced `prototyping:` block is accepted.
|
|
288
|
+
- Coexistence of top-level recommendation keys with the namespaced block is invalid and will be rejected by validation and execution.
|
|
274
289
|
17. Choose `recommended_mode` with these defaults:
|
|
275
|
-
|
|
276
|
-
- `
|
|
277
|
-
- `
|
|
278
|
-
|
|
290
|
+
- `low-cost`: rough draft or strong cost priority
|
|
291
|
+
- `standard`: normal customer-presentable path
|
|
292
|
+
- `full-harness`: only when the premium runtime loop is justified
|
|
293
|
+
|
|
294
|
+
When `recommended_mode: full-harness`, add an `iteration_expectations` block to `prototyping.yaml`:
|
|
295
|
+
|
|
296
|
+
```yaml
|
|
297
|
+
prototyping:
|
|
298
|
+
recommended_mode: full-harness
|
|
299
|
+
iteration_expectations:
|
|
300
|
+
min_iterations: 5
|
|
301
|
+
evaluation_axes_source: "uiux/20-23 (3-layer evaluation family)"
|
|
302
|
+
score_scope: "implementation_fidelity"
|
|
303
|
+
note: "Discussion 3-layer scores measure design-direction quality. Prototyping scores measure implementation fidelity. Do not copy."
|
|
304
|
+
```
|
|
279
305
|
|
|
280
306
|
18. Request review and record Reviewer result.
|
|
281
307
|
|
|
@@ -4,12 +4,21 @@
|
|
|
4
4
|
|
|
5
5
|
## UI-bearing Classification
|
|
6
6
|
|
|
7
|
+
Classification determines whether UI/UX sidecar artifacts are required.
|
|
8
|
+
|
|
7
9
|
- ui_bearing: [true|false]
|
|
8
10
|
- primary_surface: [web|mobile|desktop|cli|mixed|non-ui]
|
|
9
11
|
- secondary_surfaces:
|
|
10
12
|
- [optional]
|
|
11
13
|
- classification_rationale: [Why this classification was chosen]
|
|
12
14
|
|
|
15
|
+
Notes:
|
|
16
|
+
|
|
17
|
+
- `primary_surface` is a classification field. Valid values: `web|mobile|desktop|cli|mixed|non-ui`.
|
|
18
|
+
- `non-ui` is only valid when `ui_bearing: false`. It is a classification value, not a prototyping surface.
|
|
19
|
+
- `cli` is a UI-bearing surface. When classified as `cli`, set `ui_bearing: true`.
|
|
20
|
+
- Prototyping surfaces (used in `prototyping.yaml`) are a subset: `web|mobile|desktop|cli|mixed`.
|
|
21
|
+
|
|
13
22
|
## Metadata
|
|
14
23
|
|
|
15
24
|
| Key | Value |
|
|
@@ -73,7 +73,7 @@ Screen-level contract details are finalized in `uiux/40_screen_contracts.md`. Pr
|
|
|
73
73
|
## Appendix: Screen Mock — Optional Fallback (HTML+CSS)
|
|
74
74
|
|
|
75
75
|
<!-- Optional fallback only — do not use as the primary UI definition artifact.
|
|
76
|
-
Include only when it materially clarifies the selected
|
|
76
|
+
Include only when it materially clarifies the selected anchor.
|
|
77
77
|
Behavior Obligations and sidecar artifacts (uiux/) are the primary UI definitions.
|
|
78
78
|
The required state SSOT is uiux/40_screen_contracts.md (`default/loading/empty/error`). -->
|
|
79
79
|
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
- observation: [What visual tone signal was observed]
|
|
23
23
|
- freshness_date: YYYY-MM-DD
|
|
24
24
|
- confidence: [high|medium|low]
|
|
25
|
-
-
|
|
25
|
+
- decision_connection: [How the signal translates into this project]
|
|
26
26
|
- local_implication: [What should change locally]
|
|
27
27
|
|
|
28
28
|
### Layout / Composition Trends
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
- observation: [What layout or composition signal was observed]
|
|
34
34
|
- freshness_date: YYYY-MM-DD
|
|
35
35
|
- confidence: [high|medium|low]
|
|
36
|
-
-
|
|
36
|
+
- decision_connection: [How the signal translates into this project]
|
|
37
37
|
- local_implication: [What should change locally]
|
|
38
38
|
|
|
39
39
|
### Density / Hierarchy Trends
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
- observation: [What density or hierarchy signal was observed]
|
|
45
45
|
- freshness_date: YYYY-MM-DD
|
|
46
46
|
- confidence: [high|medium|low]
|
|
47
|
-
-
|
|
47
|
+
- decision_connection: [How the signal translates into this project]
|
|
48
48
|
- local_implication: [What should change locally]
|
|
49
49
|
|
|
50
50
|
### Interaction / Motion Trends
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
- observation: [What interaction or motion signal was observed]
|
|
56
56
|
- freshness_date: YYYY-MM-DD
|
|
57
57
|
- confidence: [high|medium|low]
|
|
58
|
-
-
|
|
58
|
+
- decision_connection: [How the signal translates into this project]
|
|
59
59
|
- local_implication: [What should change locally]
|
|
60
60
|
|
|
61
61
|
### Component Styling Trends
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
- observation: [What component styling signal was observed]
|
|
67
67
|
- freshness_date: YYYY-MM-DD
|
|
68
68
|
- confidence: [high|medium|low]
|
|
69
|
-
-
|
|
69
|
+
- decision_connection: [How the signal translates into this project]
|
|
70
70
|
- local_implication: [What should change locally]
|
|
71
71
|
|
|
72
72
|
### Stale / Overused AI Slop Patterns
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
- observation: [What stale pattern should be avoided]
|
|
78
78
|
- freshness_date: YYYY-MM-DD
|
|
79
79
|
- confidence: [high|medium|low]
|
|
80
|
-
-
|
|
80
|
+
- decision_connection: [Why this stale pattern is relevant to avoid here]
|
|
81
81
|
- local_implication: [What should be explicitly avoided locally]
|
|
82
82
|
|
|
83
83
|
## Competitive Reference Registry
|
|
@@ -37,22 +37,22 @@
|
|
|
37
37
|
- Mermaid diagrams use ` ```mermaid ` fences only
|
|
38
38
|
- Strategy alignment and chosen_option consistency (when UI-bearing)
|
|
39
39
|
- Taste reflection completeness and clarity (when UI-bearing)
|
|
40
|
-
- Trend scan freshness and
|
|
40
|
+
- Trend scan freshness and evidence traceability (when UI-bearing)
|
|
41
41
|
- 3-layer axes evaluation quality and traceability (when UI-bearing)
|
|
42
42
|
- Option comparison integrity (when UI-bearing)
|
|
43
|
-
- Selected anchor screen clarity and
|
|
43
|
+
- Selected anchor screen clarity and anchor justification (when UI-bearing)
|
|
44
44
|
- Screen contract sufficiency and strong schema completeness (when UI-bearing)
|
|
45
45
|
- Generic fallback risk — ensure no unreviewed generic/placeholder UI remains (when UI-bearing)
|
|
46
46
|
- OQ register exit condition (open count = 0)
|
|
47
47
|
- Deferred items have full metadata
|
|
48
48
|
|
|
49
|
-
## Selected
|
|
49
|
+
## Selected Anchor Consistency
|
|
50
50
|
|
|
51
51
|
<!-- Required for UI-bearing packs. Verifies sidecar-family alignment. -->
|
|
52
52
|
|
|
53
|
-
- Selected
|
|
54
|
-
- Strategy alignment: verify `uiux/10_implementation_strategy.md` aligns with the selected
|
|
55
|
-
- Evaluation traceability: verify selected
|
|
53
|
+
- Selected anchor: verify `uiux/31_selected_anchor_screen.md` selected anchor 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 anchor in `uiux/31_selected_anchor_screen.md`
|
|
55
|
+
- Evaluation traceability: verify selected anchor rationale aligns with 3-layer evaluation family (20/21/22/23 + optional 24)
|
|
56
56
|
|
|
57
57
|
## Sidecar Artifact Review Scope
|
|
58
58
|
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
- Verify uiux/10_implementation_strategy.md strict canonical schema is complete
|
|
63
63
|
- Verify scoring axes have evaluation criteria and measurement approaches
|
|
64
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`
|
|
65
|
+
- Verify `uiux/31_selected_anchor_screen.md` selected anchor references a compared option
|
|
66
66
|
- Verify `uiux/24_design_eval_dynamic_overrides.md` has documented override rules
|
|
67
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
|
|
68
68
|
|
|
@@ -14,9 +14,9 @@
|
|
|
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
|
|
17
|
+
- [ ] Trend freshness and evidence traceability (when UI-bearing)
|
|
18
18
|
- [ ] 3-layer evaluation quality and traceability (when UI-bearing)
|
|
19
|
-
- [ ] Option comparison integrity and selected
|
|
19
|
+
- [ ] Option comparison integrity and selected anchor clarity (when UI-bearing)
|
|
20
20
|
- [ ] Strong screen contract completeness (when UI-bearing)
|
|
21
21
|
- [ ] OQ register exit condition (open count = 0)
|
|
22
22
|
- [ ] Deferred items have full metadata
|
package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/review/review_request.md
CHANGED
|
@@ -23,9 +23,9 @@
|
|
|
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
25
|
- Taste interview completeness and clarity (when UI-bearing)
|
|
26
|
-
- Trend freshness and
|
|
26
|
+
- Trend freshness and evidence traceability (when UI-bearing)
|
|
27
27
|
- 3-layer evaluation quality and traceability (when UI-bearing)
|
|
28
|
-
- Option comparison integrity and selected
|
|
28
|
+
- Option comparison integrity and selected anchor clarity (when UI-bearing)
|
|
29
29
|
- Strong screen contract completeness (when UI-bearing)
|
|
30
30
|
- OQ register exit condition (open count = 0)
|
|
31
31
|
- Deferred items have full metadata in `13_Deferred.md`
|
|
@@ -1,20 +1,38 @@
|
|
|
1
1
|
# Implementation Strategy
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## Surface
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
- surface: web
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## Selection Requirement
|
|
8
8
|
|
|
9
|
-
-
|
|
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]
|
|
9
|
+
- selection_required: true
|
|
15
10
|
|
|
16
|
-
##
|
|
11
|
+
## Decision
|
|
17
12
|
|
|
18
|
-
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
- decision: component-library
|
|
14
|
+
|
|
15
|
+
## Candidate Options
|
|
16
|
+
|
|
17
|
+
- candidate_options:
|
|
18
|
+
- component-library
|
|
19
|
+
- bespoke
|
|
20
|
+
|
|
21
|
+
## Chosen Option
|
|
22
|
+
|
|
23
|
+
- chosen_option: component-library
|
|
24
|
+
|
|
25
|
+
## Rationale
|
|
26
|
+
|
|
27
|
+
- rationale:
|
|
28
|
+
- Existing design-system alignment is more valuable than bespoke variance.
|
|
29
|
+
|
|
30
|
+
## Verification Expectations
|
|
31
|
+
|
|
32
|
+
- verification_expectations:
|
|
33
|
+
- Primary tasks remain obvious without generic dashboard drift.
|
|
34
|
+
|
|
35
|
+
## Notes for Reviewer
|
|
36
|
+
|
|
37
|
+
- notes_for_reviewer:
|
|
38
|
+
- Check that the selected anchor stays aligned with the anchor screen and screen contracts.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Trend Scan
|
|
2
|
+
|
|
3
|
+
## user expectation / market norm
|
|
4
|
+
|
|
5
|
+
### Entry 1
|
|
6
|
+
|
|
7
|
+
- reference: https://example.com/user-expectation
|
|
8
|
+
- observation: Users expect the primary workflow to be immediately legible without tutorial debt.
|
|
9
|
+
- decision_connection: Favors the option that exposes the primary task in the first viewport.
|
|
10
|
+
- evaluation_connection: Becomes a scoring lens for first-run clarity and task discoverability.
|
|
11
|
+
- local_implication: Keep the anchor screen focused on the primary job-to-be-done.
|
|
12
|
+
|
|
13
|
+
## product neighbor / comparable flow
|
|
14
|
+
|
|
15
|
+
### Entry 1
|
|
16
|
+
|
|
17
|
+
- reference: https://example.com/product-neighbor
|
|
18
|
+
- observation: Comparable flows reduce ambiguity by keeping one dominant action above the fold.
|
|
19
|
+
- decision_connection: Pushes against multi-primary-action layouts.
|
|
20
|
+
- evaluation_connection: Adds a comparison criterion for action hierarchy quality.
|
|
21
|
+
- local_implication: Treat scattered entry points as a regression.
|
|
22
|
+
|
|
23
|
+
## platform convention
|
|
24
|
+
|
|
25
|
+
### Entry 1
|
|
26
|
+
|
|
27
|
+
- reference: https://example.com/platform-convention
|
|
28
|
+
- observation: The target platform uses predictable navigation and standard control placement.
|
|
29
|
+
- decision_connection: Prefers familiar component placement over novelty.
|
|
30
|
+
- evaluation_connection: Scores adherence to platform conventions and navigation predictability.
|
|
31
|
+
- local_implication: Reuse established navigation patterns before inventing new ones.
|
|
32
|
+
|
|
33
|
+
## accessibility / compliance relevant signal
|
|
34
|
+
|
|
35
|
+
### Entry 1
|
|
36
|
+
|
|
37
|
+
- reference: https://example.com/accessibility
|
|
38
|
+
- observation: Accessible naming, focus order, and contrast remain non-negotiable quality floors.
|
|
39
|
+
- decision_connection: Rejects any option that depends on hidden or ambiguous affordances.
|
|
40
|
+
- evaluation_connection: Creates explicit checks for accessibility compliance and interaction clarity.
|
|
41
|
+
- local_implication: Bake accessibility review points into contracts and Browser QA expectations.
|
|
@@ -39,3 +39,15 @@ This file defines how scores from invariant, trend-derived, and product-specific
|
|
|
39
39
|
- Product-specific axes: `22_design_eval_product_specific.md`
|
|
40
40
|
- Dynamic overrides (optional): `24_design_eval_dynamic_overrides.md`
|
|
41
41
|
- Option comparison: `30_option_comparison.md`
|
|
42
|
+
|
|
43
|
+
## Score Scope Limitation
|
|
44
|
+
|
|
45
|
+
**IMPORTANT**: Scores produced by this aggregate evaluation measure **design direction quality** — i.e., how well each design option satisfies the evaluation criteria for option comparison and selection.
|
|
46
|
+
|
|
47
|
+
These scores are **NOT** implementation quality scores. When the selected design direction proceeds to `/qfai-prototyping` in full-harness mode:
|
|
48
|
+
|
|
49
|
+
- Prototyping evaluates **implementation fidelity** against the selected anchor.
|
|
50
|
+
- Prototyping uses its own scoring criteria (calibration baselines, dimension weights).
|
|
51
|
+
- Discussion aggregate scores MUST NOT be copied into `fullHarness.scoringTrace`.
|
|
52
|
+
|
|
53
|
+
The boundary is: discussion scores inform the **what** (which direction); prototyping scores measure the **how well** (implementation quality).
|
package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/40_screen_contracts.md
CHANGED
|
@@ -32,7 +32,7 @@ Draft interaction contracts for key screens using the strong screen contract sch
|
|
|
32
32
|
- notes_for_verify: [notes for verification/testing]
|
|
33
33
|
- notes_for_reviewer: [any additional context for the reviewer]
|
|
34
34
|
|
|
35
|
-
<!-- Nested list format is canonical for primary_tasks, secondary_tasks, required_states, transitions, observable_outcomes.
|
|
35
|
+
<!-- Nested list format is canonical for primary_tasks, secondary_tasks, required_states, transitions, observable_outcomes. -->
|
|
36
36
|
|
|
37
37
|
> **Note:** `required_states` primary truth lives in this file. Each screen's state set is authoritative here.
|
|
38
38
|
> **Note:** `secondary_tasks` documents non-primary user workflows available on the screen.
|
package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/50_review_input_bundle.md
CHANGED
|
@@ -26,11 +26,13 @@ Consolidate all sidecar artifacts into a review-ready bundle for design reviewer
|
|
|
26
26
|
- Required trend categories are all present and complete.
|
|
27
27
|
- Stale / overused AI slop patterns are explicitly avoided.
|
|
28
28
|
- Trend research is translated into scoring, comparison, and selected anchor decisions.
|
|
29
|
+
- Scoring-ready axes use canonical fields: `origin`, `layer`, `source_refs`, `goal_refs`, `evidence_required`, `review_questions`.
|
|
29
30
|
|
|
30
31
|
## Review Checklist
|
|
31
32
|
|
|
32
33
|
- [ ] Strategy aligns with surface type and project constraints
|
|
33
34
|
- [ ] Trend categories are complete and translated into local design decisions
|
|
34
35
|
- [ ] Competitive references include adopted_points, rejected_points, and local_translation
|
|
36
|
+
- [ ] Scoring-ready axes expose canonical fields including origin/source_refs/goal_refs/evidence_required/review_questions
|
|
35
37
|
- [ ] Selected anchor clearly documents rationale and downstream implications
|
|
36
38
|
- [ ] Screen contracts cover all required states
|
|
@@ -77,8 +77,12 @@ Execute the TDD micro-cycle for each pending item in `test-list.md`, transitioni
|
|
|
77
77
|
## Visual Review Guard
|
|
78
78
|
|
|
79
79
|
- Review rendered output, screenshot evidence, or HTML output before closing any UI-affecting item.
|
|
80
|
-
- Read the sidecar family first (selected
|
|
81
|
-
- Read order: option comparison (30_option_comparison.md) → selected anchor screen (31_selected_anchor_screen.md) →
|
|
80
|
+
- Read the sidecar family first (selected anchor, strategy, screen contracts) whenever implementation touches UI or critique-driven behavior.
|
|
81
|
+
- Read order: option comparison (30_option_comparison.md) → selected anchor screen (31_selected_anchor_screen.md) →
|
|
82
|
+
strategy (10_implementation_strategy.md) → taste interview (11_design_taste_interview.md) →
|
|
83
|
+
trend scan (uiux/20_trend_scan.md) → 3-layer evaluation family (20/21/22/23 + optional 24) →
|
|
84
|
+
screen contracts (40_screen_contracts.md) → review input bundle (50_review_input_bundle.md) →
|
|
85
|
+
optional design tokens → optional fallback mock → mermaid flows.
|
|
82
86
|
- If code intent and rendered output diverge, treat the rendered/HTML result as the blocking review input and reconcile before DONE.
|
|
83
87
|
|
|
84
88
|
## Non-goals
|