qfai 1.8.7 → 1.8.9
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 +33 -14
- package/assets/init/.qfai/assistant/agents/product-experience-architect.md +3 -2
- package/assets/init/.qfai/assistant/skills/qfai-discussion/SKILL.md +20 -32
- package/assets/init/.qfai/assistant/skills/qfai-discussion/references/design-dna-intake.md +45 -16
- package/assets/init/.qfai/assistant/skills/qfai-discussion/references/discussion-artifact-rules.md +6 -8
- package/assets/init/.qfai/assistant/skills/qfai-discussion/references/ui-bearing-playbook.md +5 -10
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/14_Review-Request.md +9 -13
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/prototyping.yaml +2 -3
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/00_index.md +16 -13
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/50_review_input_bundle.md +8 -12
- package/assets/init/.qfai/assistant/skills/qfai-implement/SKILL.md +10 -29
- package/assets/init/.qfai/assistant/skills/qfai-prototyping/SKILL.md +69 -48
- package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/design-md-spec.md +114 -0
- package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/generator-prompt.md +77 -19
- package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/handoff.md +51 -15
- package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/iteration-loop.md +38 -14
- package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/reviewer-prompt.md +96 -44
- package/assets/init/.qfai/assistant/skills/qfai-prototyping/templates/DESIGN.md.sample +74 -0
- package/assets/init/.qfai/assistant/skills/qfai-prototyping/templates/contracts/prototype-handoff.sample.yaml +7 -5
- package/assets/init/.qfai/assistant/skills/qfai-sdd/SKILL.md +150 -225
- package/assets/init/.qfai/assistant/skills/qfai-sdd/references/contract-artifact-rules.md +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-sdd/references/sdd-execution-playbook.md +31 -7
- package/assets/init/.qfai/assistant/skills/qfai-sdd/references/sdd-phase-checklists.md +16 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/references/sdd-quality-gate.md +11 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/references/sdd-triage.md +137 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/references/ui-design-contract-normalization.md +66 -29
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/contracts/design-md-lock.sample.yaml +23 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/_policies/10_delta.md +17 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/_policies/11_Slice-Policy.md +116 -19
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/spec/01_Spec.md +6 -0
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/specs/spec/09_delta.md +12 -0
- package/assets/init/.qfai/assistant/skills/qfai-verify/SKILL.md +4 -11
- package/assets/init/.qfai/assistant/skills/web-research/SKILL.md +2 -3
- package/assets/init/.qfai/assistant/steering/agent-routing.yml +3 -4
- package/assets/init/.qfai/assistant/steering/cli-ux-guidelines.md +1 -1
- package/assets/init/.qfai/assistant/steering/manifest.md +28 -40
- package/assets/init/.qfai/assistant/steering/product.md +24 -49
- package/assets/init/.qfai/assistant/steering/research-first-protocol.md +3 -3
- package/assets/init/.qfai/assistant/steering/structure.md +21 -28
- package/assets/init/.qfai/assistant/steering/tech.md +21 -33
- package/assets/init/.qfai/assistant/steering/ui-definition-protocol.md +6 -11
- package/assets/init/root/.github/workflows/qfai-validate.yml +1 -1
- package/assets/init/root/DESIGN.md +83 -0
- package/assets/uix-rev/comparison-review.md +2 -2
- package/assets/uix-rev/contracts-review.md +1 -1
- package/assets/uix-rev/scoring-review.md +15 -13
- package/assets/uix-rev/strategy-review.md +7 -9
- package/assets/validators/layoutAntiPatterns.json +42 -0
- package/dist/cli/index.cjs +3810 -1339
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.mjs +3825 -1354
- package/dist/cli/index.mjs.map +1 -1
- package/dist/index.cjs +2251 -877
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +84 -13
- package/dist/index.d.ts +84 -13
- package/dist/index.mjs +2240 -874
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/30_exploration_brief.md +0 -29
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/31_reference_pool.md +0 -13
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/32_design_anti_goals.md +0 -10
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/contracts/brand-design.sample.yaml +0 -20
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/contracts/exploration-brief.sample.yaml +0 -19
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/contracts/reference-pool.sample.yaml +0 -15
- package/assets/validators/designSlopPatterns.json +0 -56
package/README.md
CHANGED
|
@@ -18,10 +18,9 @@ The agent reads the repository, produces the required artifacts, and iterates un
|
|
|
18
18
|
## Release status
|
|
19
19
|
|
|
20
20
|
- Release posture: runtime truthfulness is enforced.
|
|
21
|
-
- Prototyping is UI-only
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
machinery are removed.
|
|
21
|
+
- Prototyping is UI-only and runs a single-thread evolution loop driven by
|
|
22
|
+
`qfai prototyping iterate --cycle <n>`, with deterministic stop conditions
|
|
23
|
+
(exit codes 0 continue / 64 convergence / 65 max-iterations / 2 input error).
|
|
25
24
|
- Runtime observation is observed-only (no synthetic 200 / API / DB prototyping coverage).
|
|
26
25
|
- Per-iter evidence is `screenshot.png` + `index.html` per declared screen plus a single `review.json` (4-axis ordinal, prose critique, anti-slop detection, pivot directive).
|
|
27
26
|
- Calibration SSOT is the calibration pack referenced by `calibrationRef.packPath`.
|
|
@@ -62,15 +61,15 @@ npx qfai report
|
|
|
62
61
|
primary spec, UI contracts, design contract readiness, active agent-wrapper
|
|
63
62
|
integrations, shipped role-input readiness, Playwright CLI launcher
|
|
64
63
|
resolution/probing, and target URL reachability.
|
|
65
|
-
Note: prototyping evidence (`.qfai/evidence/prototyping/prototyping.json`
|
|
66
|
-
(`/qfai-prototyping`
|
|
64
|
+
Note: prototyping evidence (`.qfai/evidence/prototyping/prototyping.json`) is produced by the AI workflow
|
|
65
|
+
(`/qfai-prototyping`), not by a general-purpose end-user CLI flow.
|
|
67
66
|
Use `npx qfai prototyping preflight --target-url <url>` for a focused
|
|
68
67
|
prototyping preflight before the skill starts; it surfaces blocking
|
|
69
68
|
`QFAI-DCON-*` design-contract issues alongside runtime assumptions and resolves a runnable Playwright CLI launcher.
|
|
70
|
-
Use `npx qfai prototyping iterate --cycle <n> --target-url <url>` to drive each cycle of the
|
|
69
|
+
Use `npx qfai prototyping iterate --cycle <n> --target-url <url>` to drive each cycle of the single-thread
|
|
71
70
|
evolution loop. Exit codes: 0 (continue), 64 (convergence), 65 (max-iterations), 2 (input error).
|
|
72
71
|
Traceability refs inside prototyping evidence must use repo-root-relative concrete artifact refs
|
|
73
|
-
(for example `.qfai/specs/spec-
|
|
72
|
+
(for example `.qfai/specs/spec-0001/01_Spec.md#L3` or `.qfai/evidence/prototyping/iter-03/home.png`).
|
|
74
73
|
Absolute paths are invalid. The same strict ref grammar is enforced for top-level and leaf evidence-bearing fields, including
|
|
75
74
|
`runtimeGate.evidenceRefs`, `runtimeGate.ui[].declaredRef`, `runtimeGate.ui[].renderEvidenceRefs[]`,
|
|
76
75
|
`runtimeGate.ui[].browserQaEvidenceRefs[]`, `specs[].coverageRefs[].declaredRef`, `specs[].coverageRefs[].observedRefs[]`,
|
|
@@ -121,12 +120,22 @@ QFAI includes a small set of custom skills (stored under `.qfai/assistant/skills
|
|
|
121
120
|
- **qfai-discussion**: Run a unified structured discussion that produces and maintains the latest discussion pack
|
|
122
121
|
as 15 required markdown files under `.qfai/discussion/discussion-<ts>/`.
|
|
123
122
|
UI-bearing discussion packs may include `prototyping.yaml` as an optional recommendation artifact; non-ui discussion packs typically omit it.
|
|
124
|
-
- **qfai-sdd**: Unified SDD entrypoint with discussion-pack preflight guard
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
123
|
+
- **qfai-sdd**: Unified SDD entrypoint with discussion-pack preflight guard
|
|
124
|
+
(missing/incomplete/blocking OQ causes stop + next action guidance).
|
|
125
|
+
After preflight, the skill runs a mandatory **Stage 1 Triage** that classifies
|
|
126
|
+
every incoming requirement into one of 8 first-class operations
|
|
127
|
+
(CREATE / UPDATE:APPEND / UPDATE:MODIFY / UPDATE:REMOVE / DELETE / SPLIT /
|
|
128
|
+
MERGE / SUPERSEDE) with an **append-first** bias: existing active specs
|
|
129
|
+
absorb the change unless there is zero subject-token overlap.
|
|
130
|
+
CREATE / DELETE / SPLIT / MERGE / SUPERSEDE / UPDATE:REMOVE require explicit
|
|
131
|
+
`AskUserQuestion` approval, and CREATE rows must register a new `CAP-NNNN`
|
|
132
|
+
in `.qfai/specs/_policies/03_Capabilities.md` before the row is accepted
|
|
133
|
+
(`QFAI-TRIAGE-006`). Every `01_Spec.md` declares a lifecycle
|
|
134
|
+
`Status: active | superseded | deprecated | removed` (`QFAI-STATUS-001..006`).
|
|
135
|
+
- **qfai-prototyping**: Single-thread design evolution loop. One prototype iterated through up to
|
|
136
|
+
15 cycles of generate -> capture -> review with a 4-axis ordinal rubric, anti-slop detection,
|
|
137
|
+
prose critique, and explicit pivot permission. Stops deterministically when all four axes hit
|
|
138
|
+
`exceptional` (exit 64) or the iteration budget is exhausted (exit 65).
|
|
130
139
|
- **qfai-atdd**: Implement acceptance tests driven by specs/scenarios.
|
|
131
140
|
- **qfai-implement**: Unified TDD micro-cycle (Red/Green/Refactor) one test at a time using `test-list.md` as the execution ledger, including ledger status updates and exception closure.
|
|
132
141
|
- **qfai-verify**: Run full-scan local quality gates (`validate --fail-on error`, `report`, repo gates) and produce reviewer-approved evidence under `.qfai/evidence/`.
|
|
@@ -283,6 +292,16 @@ Release gate behavior:
|
|
|
283
292
|
- A: Include all required sections (`Change Summary`, `Rationale`, `Candidates Considered`, `Adopted`, `Rejected`, `Impact`, `Follow-ups`) and include both `DO NOT` and `Temptation` in `Rejected`.
|
|
284
293
|
- Q: release_candidate validation fails due open questions.
|
|
285
294
|
- A: Keep specs definition-only, use `.qfai/report/run-*` as execution logs, and convert open OQ to `resolved` or `deferred` with evidence.
|
|
295
|
+
- Q: `qfai validate` reports `QFAI-STATUS-001` ("Status bullet が見つかりません") on every spec.
|
|
296
|
+
- A: Each `01_Spec.md` must declare `- Status: active | superseded | deprecated | removed` (introduced in 1.8.8).
|
|
297
|
+
Add `Status: active` for currently-authoritative specs; superseded specs need a `- Superseded-by: spec-NNNN` companion bullet,
|
|
298
|
+
and deprecated/removed specs need `- Deprecated-at: YYYY-MM-DD`. The previous `QFAI-STATUS-001` (status-leak guard) was renamed to `QFAI-STATUSLEAK-001` to free the namespace.
|
|
299
|
+
- Q: `/qfai-sdd` is asking for `AskUserQuestion` approval that earlier versions never asked for.
|
|
300
|
+
- A: Stage 1 Triage classifies each requirement into one of 8 first-class operations and gates approval-required ops
|
|
301
|
+
(CREATE / DELETE / SPLIT / MERGE / SUPERSEDE / UPDATE:REMOVE) on explicit user confirmation. Append-first means UPDATE:APPEND on an existing active spec is the default;
|
|
302
|
+
CREATE additionally requires a new `CAP-NNNN` row in `.qfai/specs/_policies/03_Capabilities.md` before the row is accepted (`QFAI-TRIAGE-006`).
|
|
303
|
+
- Q: `delta.md` validation reports `QFAI-TRIAGE-001` ("Change Summary はあるが Triage がありません") as a warning.
|
|
304
|
+
- A: 1.8.8 introduced a `## Triage` section requirement. Existing operational deltas without it currently fail soft (warning); future minor versions will promote this to an error after operational backfill.
|
|
286
305
|
|
|
287
306
|
## Continuous integration
|
|
288
307
|
|
|
@@ -28,8 +28,9 @@ tools: [Read, Write, Edit, Glob, Grep, Bash]
|
|
|
28
28
|
- .qfai/specs/spec-\*/09_delta.md
|
|
29
29
|
- .qfai/specs/spec-\*/01_Spec.md
|
|
30
30
|
- .github/instructions/principles.instructions.md
|
|
31
|
-
-
|
|
32
|
-
|
|
31
|
+
- Root `DESIGN.md` (brand SSOT: front-matter tokens plus `# Brand Philosophy` body)
|
|
32
|
+
- Reference pool framed as deviate-from inputs, screen contracts (`uiux/40_screen_contracts.md`), optional tokens, optional fallback HTML/CSS mock, and Mermaid flows
|
|
33
|
+
- Evaluator axes are fixed in `core/prototyping/evaluatorReview.ts#ORDINAL_AXES` (information architecture / navigation flow / usability / functionality) and no longer authored as sidecar files
|
|
33
34
|
- Runtime screenshots or rendered evidence when available
|
|
34
35
|
|
|
35
36
|
## Deliverables
|
|
@@ -32,48 +32,41 @@ Produce a unified 15-file discussion pack plus exploration-first UI sidecars so
|
|
|
32
32
|
## CRITICAL CONSTRAINTS (Read First)
|
|
33
33
|
|
|
34
34
|
- Output path is fixed: `.qfai/discussion/discussion-YYYYMMDDhhmmssSSS/`.
|
|
35
|
-
-
|
|
35
|
+
- All 15 mandatory fixed files remain unchanged.
|
|
36
36
|
- UI-bearing discussion packs may include `prototyping.yaml` as an optional recommendation artifact; non-ui discussion packs typically omit it.
|
|
37
|
-
-
|
|
37
|
+
- Completion requires `Disposition: open` count to be zero in `11_OQ-Register.md`.
|
|
38
38
|
- If UI requirements exist, behavior obligations are primary and HTML+CSS mock is optional fallback only.
|
|
39
39
|
- Discussion is planner-first: do not select a single visual winner and do not finalize the design system here.
|
|
40
40
|
- Use artifact files, not conversational summaries, as the downstream handoff.
|
|
41
41
|
|
|
42
42
|
## UI-bearing Canonical Sidecar Family
|
|
43
43
|
|
|
44
|
-
UI-bearing packs must produce
|
|
44
|
+
UI-bearing packs must produce, as primary truth: `uiux/40_screen_contracts.md`, `uiux/50_review_input_bundle.md`. They MUST also emit a draft brand SSOT at the **consuming-project root**:
|
|
45
45
|
|
|
46
|
-
- `
|
|
47
|
-
- `uiux/31_reference_pool.md`
|
|
48
|
-
- `uiux/32_design_anti_goals.md`
|
|
49
|
-
- `uiux/40_screen_contracts.md`
|
|
50
|
-
- `uiux/50_review_input_bundle.md`
|
|
46
|
+
- `<consuming-project-root>/DESIGN.md` — brand SSOT consumed by `/qfai-sdd` (freezes its sha256 in `.qfai/contracts/design/DESIGN.md.lock.yaml`) and by `/qfai-prototyping` (iterates against locked tokens). Brand intent (product intent, brand signals, anti-goals, reference pool framed as deviate-from inputs) lives in front-matter + `# Brand Philosophy` body — no separate per-aspect sidecar.
|
|
51
47
|
|
|
52
48
|
## Required Process
|
|
53
49
|
|
|
54
50
|
1. Run the core interview for concept, scope, stakeholders, and constraints.
|
|
55
51
|
2. Run Inception Deck and include at least one Mermaid diagram.
|
|
56
|
-
3. Run Story Workshop, capture user stories and user flows
|
|
52
|
+
3. Run Story Workshop, capture user stories and user flows; HTML+CSS mock is optional fallback only.
|
|
57
53
|
4. Register source traceability and reference research in `04_Sources.md`.
|
|
58
54
|
5. Capture scope, REQ, NFR, glossary, constraints, and policies.
|
|
59
55
|
6. Run Example Mapping and capture `Example Seeds`.
|
|
60
56
|
7. Update `11_OQ-Register.md`, resolve OQs until open count is zero, and move deferred items to `13_Deferred.md`.
|
|
61
57
|
8. Generate the exploration-first sidecar family for UI-bearing targets.
|
|
62
|
-
9.
|
|
63
|
-
10.
|
|
58
|
+
9. **Emit root `DESIGN.md` draft** for UI-bearing targets per `references/design-dna-intake.md`. Required when UI-bearing; skip otherwise.
|
|
59
|
+
10. Generate `prototyping.yaml` only when the latest discussion pack is UI-bearing and an explicit prototyping recommendation is useful.
|
|
60
|
+
11. Request review and record the Reviewer result.
|
|
64
61
|
|
|
65
62
|
For UI-bearing targets, follow `references/design-dna-intake.md` while authoring the UI/UX sidecars. Keep this `SKILL.md` compact; put detailed interview prompts and examples in the reference file.
|
|
66
63
|
|
|
67
64
|
## UI-bearing Authoring Requirements
|
|
68
65
|
|
|
69
|
-
- `
|
|
70
|
-
-
|
|
71
|
-
- `
|
|
72
|
-
-
|
|
73
|
-
|
|
74
|
-
v1.x sidecars `33_exploration_rubric.md` and `34_evaluator_calibration.md`
|
|
75
|
-
are removed in spec-0017 P4 (axes are global constants in
|
|
76
|
-
`core/prototyping/iteration.ts#OrdinalScore`, ordinal 4-step scale).
|
|
66
|
+
- Root `DESIGN.md` front-matter must define `brand` (name, archetype, voice), `audience` (emotion, do_not_look_like), and the full `visual.*` token tree (colors, typography, spacing, radius, shadow).
|
|
67
|
+
- `# Brand Philosophy` body documents do/don't, brand signals, and exploration references framed as **deviate-from** inputs (not imitate-this) for the downstream `/qfai-prototyping` reviewer.
|
|
68
|
+
- `40_screen_contracts.md` defines each screen contract per the template schema; `50_review_input_bundle.md` documents review inputs for downstream skills.
|
|
69
|
+
- Evaluation axes are global constants (4-step ordinal: weak / acceptable / strong / exceptional) and are not authored as discussion sidecars.
|
|
77
70
|
|
|
78
71
|
## Completion Contract (Shared)
|
|
79
72
|
|
|
@@ -85,7 +78,7 @@ Before declaring completion, you MUST:
|
|
|
85
78
|
- ensure `Disposition: open` count is zero in `11_OQ-Register.md`;
|
|
86
79
|
- ensure every deferred item has full metadata in `13_Deferred.md`;
|
|
87
80
|
- ensure `02_Inception-Deck.md` and `03_Story-Workshop.md` include Mermaid diagrams;
|
|
88
|
-
- ensure the UI-bearing sidecar family is complete;
|
|
81
|
+
- ensure the UI-bearing sidecar family is complete and the root `DESIGN.md` draft exists at the consuming-project root and parses as valid front-matter;
|
|
89
82
|
- run `qfai validate --profile discussion --fail-on error` and fix discussion-owned findings;
|
|
90
83
|
- avoid selecting a single visual winner in discussion artifacts.
|
|
91
84
|
|
|
@@ -93,15 +86,12 @@ Before declaring completion, you MUST:
|
|
|
93
86
|
|
|
94
87
|
Reviewer checks must confirm:
|
|
95
88
|
|
|
96
|
-
- the 15-file discussion pack is complete
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
-
|
|
100
|
-
-
|
|
101
|
-
- review
|
|
102
|
-
- planning and coverage heuristics are signals, not gates
|
|
103
|
-
- review findings end with `Status (PASS/REVISE)`
|
|
104
|
-
- Reviewer result is explicit as `PASS` or `REVISE`
|
|
89
|
+
- the 15-file discussion pack is complete; `Disposition: open` count is zero in `11_OQ-Register.md`;
|
|
90
|
+
- the UI-bearing sidecar family is complete when the pack is UI-bearing;
|
|
91
|
+
- discussion stayed planner-first and did not choose a single visual winner;
|
|
92
|
+
- Drift Protocol is enforced; review policy is checked against `.qfai/assistant/steering/test-layers.md`;
|
|
93
|
+
- planning and coverage heuristics are signals, not gates;
|
|
94
|
+
- review findings end with `Status (PASS/REVISE)` and Reviewer result is explicit as `PASS` or `REVISE`.
|
|
105
95
|
|
|
106
96
|
## Sub-agent Delegation (MANDATORY)
|
|
107
97
|
|
|
@@ -109,9 +99,7 @@ Follow `.qfai/assistant/instructions/shared-skill-delegation-baseline.md`.
|
|
|
109
99
|
|
|
110
100
|
### Orchestrator Protocol (MUST)
|
|
111
101
|
|
|
112
|
-
- do not self-approve
|
|
113
|
-
- use artifact files as the handoff surface
|
|
114
|
-
- integrate delegated outputs only after checking pack completeness
|
|
102
|
+
- do not self-approve; use artifact files as the handoff surface; integrate delegated outputs only after checking pack completeness.
|
|
115
103
|
|
|
116
104
|
### Capability Probe (MUST)
|
|
117
105
|
|
|
@@ -6,25 +6,54 @@ Use this reference only for UI-bearing discussion packs.
|
|
|
6
6
|
|
|
7
7
|
- Brand personality: list 3-5 traits the product should express.
|
|
8
8
|
- Audience emotion: define what users should feel after the primary task.
|
|
9
|
-
- Category conventions: name the expected layout and interaction
|
|
10
|
-
|
|
11
|
-
-
|
|
12
|
-
|
|
9
|
+
- Category conventions: name the expected layout and interaction
|
|
10
|
+
patterns for this market.
|
|
11
|
+
- Differentiation targets: state what must feel unlike generic SaaS or
|
|
12
|
+
direct competitors.
|
|
13
|
+
- Anti-template constraints: name default visual patterns that must
|
|
14
|
+
not survive into prototyping.
|
|
15
|
+
- Reference strategy: collect competitor, adjacent, aspirational,
|
|
16
|
+
template-seed, and anti-pattern references.
|
|
13
17
|
|
|
14
18
|
## Reference Rules
|
|
15
19
|
|
|
16
20
|
- Treat templates as seeds, not winners.
|
|
17
21
|
- Capture both adopted and rejected points for every reference.
|
|
18
|
-
- Translate references into local product rules instead of copying
|
|
22
|
+
- Translate references into local product rules instead of copying
|
|
23
|
+
visual surfaces.
|
|
19
24
|
- Record copy risk as `low`, `medium`, or `high`.
|
|
20
|
-
- Record template usage policy as `none`, `reference-only`, or
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
`
|
|
25
|
+
- Record template usage policy as `none`, `reference-only`, or
|
|
26
|
+
`implementation-seed`.
|
|
27
|
+
|
|
28
|
+
## Output Mapping (new SSOT path)
|
|
29
|
+
|
|
30
|
+
The interview produces **one root `DESIGN.md`** at
|
|
31
|
+
`<consuming-project-root>/DESIGN.md`. This file is the brand SSOT
|
|
32
|
+
consumed by `/qfai-sdd` (which freezes its sha256) and by
|
|
33
|
+
`/qfai-prototyping` (which iterates under its tokens).
|
|
34
|
+
|
|
35
|
+
Map the interview answers into `DESIGN.md` as follows:
|
|
36
|
+
|
|
37
|
+
- Brand personality → `brand.voice` (1..N short trait words) and the
|
|
38
|
+
`# Brand Philosophy` body.
|
|
39
|
+
- Brand archetype → `brand.archetype`. Allowed values are the
|
|
40
|
+
8-archetype catalog in `design-md-brand-catalog.md`
|
|
41
|
+
(`minimal | bold | corporate | playful | organic | tech | elegant |
|
|
42
|
+
casual`). Use `aesthetic_properties` from the catalog as defaults.
|
|
43
|
+
- Audience emotion → `audience.emotion`.
|
|
44
|
+
- Anti-template constraints + rejected references →
|
|
45
|
+
`audience.do_not_look_like` and the **Don't** subsection of the
|
|
46
|
+
`# Brand Philosophy` body.
|
|
47
|
+
- Visual decisions (color, typography, radius, shadow) → the
|
|
48
|
+
`visual.*` token tree. Schema and validation rules live in
|
|
49
|
+
`.qfai/assistant/skills/qfai-prototyping/references/design-md-spec.md`.
|
|
50
|
+
- Adopted reference points → the **Do** subsection of
|
|
51
|
+
`# Brand Philosophy`.
|
|
52
|
+
|
|
53
|
+
For the schema (12 colors, 3 fonts, 4 radii, 3 shadows, 8 archetypes),
|
|
54
|
+
read `qfai-prototyping/references/design-md-spec.md` and use the
|
|
55
|
+
sample at `qfai-prototyping/templates/DESIGN.md.sample` as a starting
|
|
56
|
+
shape.
|
|
57
|
+
|
|
58
|
+
Evaluation axes are global constants (4-step ordinal: weak / acceptable
|
|
59
|
+
/ strong / exceptional) and are not authored as discussion sidecars.
|
package/assets/init/.qfai/assistant/skills/qfai-discussion/references/discussion-artifact-rules.md
CHANGED
|
@@ -41,22 +41,20 @@ UI-bearing discussion packs may include `prototyping.yaml` as an optional recomm
|
|
|
41
41
|
For UI-bearing packs, use:
|
|
42
42
|
|
|
43
43
|
- `04_Sources.md` for trend translation and competitive reference registry
|
|
44
|
-
- `
|
|
45
|
-
- `uiux/31_reference_pool.md`
|
|
46
|
-
- `uiux/32_design_anti_goals.md`
|
|
44
|
+
- `DESIGN.md` (root) — brand SSOT draft (front-matter + `# Brand Philosophy` body); `/qfai-sdd` Phase 0 freezes it into `.qfai/contracts/design/DESIGN.md.lock.yaml`
|
|
47
45
|
- `uiux/40_screen_contracts.md`
|
|
48
46
|
|
|
49
|
-
Discussion is exploration-first and must not choose a single visual winner or final design system.
|
|
47
|
+
Discussion is exploration-first and must not choose a single visual winner or final design system. The brand decision is captured once in root `DESIGN.md`; downstream prototyping consumes the frozen tokens.
|
|
50
48
|
|
|
51
49
|
## `prototyping.yaml`
|
|
52
50
|
|
|
53
|
-
When `prototyping.yaml` is present, use the
|
|
51
|
+
When `prototyping.yaml` is present, use the single-thread schema:
|
|
54
52
|
|
|
55
53
|
```yaml
|
|
56
54
|
prototyping:
|
|
57
55
|
surface: web # web | mobile | desktop | mixed
|
|
58
56
|
```
|
|
59
57
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
58
|
+
Mode-tier fields (`recommended_mode` / `allowed_modes` / `mode_expectations`)
|
|
59
|
+
are not supported. The single-thread evolution loop fixes iteration count
|
|
60
|
+
globally to 15.
|
package/assets/init/.qfai/assistant/skills/qfai-discussion/references/ui-bearing-playbook.md
CHANGED
|
@@ -26,17 +26,12 @@ Use this file when `/qfai-discussion` needs the full UI-bearing decision logic.
|
|
|
26
26
|
|
|
27
27
|
## Sidecar Family SSOT
|
|
28
28
|
|
|
29
|
+
For UI-bearing packs the brand SSOT is root `DESIGN.md` (drafted by
|
|
30
|
+
`/qfai-discussion` and frozen by `/qfai-sdd` Phase 0 into
|
|
31
|
+
`.qfai/contracts/design/DESIGN.md.lock.yaml`). The remaining sidecars are
|
|
32
|
+
the screen-level UX inputs:
|
|
33
|
+
|
|
29
34
|
- `uiux/00_index.md`
|
|
30
|
-
- `uiux/10_implementation_strategy.md`
|
|
31
|
-
- `uiux/11_design_taste_interview.md`
|
|
32
|
-
- `uiux/12_design_system.md`
|
|
33
|
-
- `uiux/20_design_eval_invariant.md`
|
|
34
|
-
- `uiux/21_design_eval_trend_derived.md`
|
|
35
|
-
- `uiux/22_design_eval_product_specific.md`
|
|
36
|
-
- `uiux/23_design_eval_aggregate.md`
|
|
37
|
-
- `uiux/24_design_eval_dynamic_overrides.md`
|
|
38
|
-
- `uiux/30_option_comparison.md`
|
|
39
|
-
- `uiux/31_selected_anchor_screen.md`
|
|
40
35
|
- `uiux/40_screen_contracts.md`
|
|
41
36
|
- `uiux/50_review_input_bundle.md`
|
|
42
37
|
|
|
@@ -35,10 +35,10 @@
|
|
|
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
|
-
- Reference pool freshness and translation quality (when UI-bearing)
|
|
40
|
-
-
|
|
41
|
-
- Evaluator
|
|
38
|
+
- Root `DESIGN.md` completeness and differentiation clarity (when UI-bearing)
|
|
39
|
+
- Reference pool freshness and translation quality into `DESIGN.md` (when UI-bearing)
|
|
40
|
+
- Evaluator scoring covers all four canonical UX axes — information architecture / navigation flow / usability / functionality, fixed in `core/prototyping/evaluatorReview.ts#ORDINAL_AXES` (when UI-bearing)
|
|
41
|
+
- Evaluator critique skepticism and blandness rejection quality applied against the four axes (when UI-bearing)
|
|
42
42
|
- Best-of-history handling and winner selection consistency (when UI-bearing)
|
|
43
43
|
- Screen contract sufficiency and strong schema completeness (when UI-bearing)
|
|
44
44
|
- Generic fallback risk — ensure no unreviewed generic/placeholder UI remains (when UI-bearing)
|
|
@@ -47,21 +47,17 @@
|
|
|
47
47
|
|
|
48
48
|
## Exploration Direction Consistency
|
|
49
49
|
|
|
50
|
-
<!-- Required for UI-bearing packs. Verifies sidecar
|
|
50
|
+
<!-- Required for UI-bearing packs. Verifies brand SSOT and sidecar alignment. -->
|
|
51
51
|
|
|
52
|
-
-
|
|
53
|
-
-
|
|
52
|
+
- Brand SSOT: verify root `DESIGN.md` defines `brand`, `audience`, and `visual.*` tokens, and that `# Brand Philosophy` body documents product intent, must-preserve interactions, brand signals, and differentiation targets
|
|
53
|
+
- Evaluator axes: confirm reviewers will score against the four canonical UX axes (information architecture / navigation flow / usability / functionality) — these are fixed in `core/prototyping/evaluatorReview.ts#ORDINAL_AXES` and no longer authored as sidecar files
|
|
54
54
|
- History handling: verify `uiux/50_review_input_bundle.md` documents best-of-history comparison instead of latest-only preference
|
|
55
55
|
|
|
56
56
|
## Sidecar Artifact Review Scope
|
|
57
57
|
|
|
58
|
-
<!-- Required for UI-bearing packs. Reviews uiux/ sidecar artifacts. -->
|
|
58
|
+
<!-- Required for UI-bearing packs. Reviews root DESIGN.md + uiux/ sidecar artifacts. -->
|
|
59
59
|
|
|
60
|
-
- Verify
|
|
61
|
-
- Verify `uiux/30_exploration_brief.md` is specific enough to support divergent exploration
|
|
62
|
-
- Verify `uiux/31_reference_pool.md` documents adopted, rejected, and locally translated references
|
|
63
|
-
- Verify `uiux/33_exploration_rubric.md` weights design quality and originality explicitly
|
|
64
|
-
- Verify `uiux/34_evaluator_calibration.md` contains good-critique / too-lenient / blandness-fail / originality-fail examples
|
|
60
|
+
- Verify root `DESIGN.md` is specific enough to support divergent exploration (front-matter populated, `# Brand Philosophy` body written, do/don't and reference notes framed as deviate-from inputs)
|
|
65
61
|
- Verify `uiux/50_review_input_bundle.md` preserves best-of-history handling
|
|
66
62
|
- 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
|
|
67
63
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
prototyping:
|
|
2
|
-
#
|
|
3
|
-
#
|
|
4
|
-
# `core/prototyping/iteration.ts#MAX_ITERATIONS`.
|
|
2
|
+
# Single-thread evolution loop. Iteration count is fixed at 15 globally
|
|
3
|
+
# (no per-mode override).
|
|
5
4
|
# Replace `web` with one of the prototyping-supported surfaces if needed:
|
|
6
5
|
# web | mobile | desktop | mixed
|
|
7
6
|
# (discussion classification also allows `cli` and `non-ui`, but those are
|
|
@@ -6,27 +6,30 @@ Manifest of all UI/UX sidecar artifacts produced during a UI-bearing discussion.
|
|
|
6
6
|
|
|
7
7
|
## File Inventory
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
| 40_screen_contracts.md
|
|
18
|
-
| 50_review_input_bundle.md
|
|
9
|
+
Brand-level intent (product intent, brand signals, anti-goals,
|
|
10
|
+
reference pool framed as deviate-from inputs) lives in root
|
|
11
|
+
`DESIGN.md` (front-matter + `# Brand Philosophy` body), not in this
|
|
12
|
+
sidecar family.
|
|
13
|
+
|
|
14
|
+
| File | Purpose | Required |
|
|
15
|
+
| ------------------------- | ---------------------------------------- | -------- |
|
|
16
|
+
| 00_index.md | This manifest | Yes |
|
|
17
|
+
| 40_screen_contracts.md | Screen interaction contracts (11 fields) | Yes |
|
|
18
|
+
| 50_review_input_bundle.md | Review input bundle | Yes |
|
|
19
19
|
|
|
20
20
|
## Completeness Rule
|
|
21
21
|
|
|
22
|
-
All required files
|
|
22
|
+
All required files MUST be present for a UI-bearing pack alongside root
|
|
23
|
+
`DESIGN.md`. Partial generation is not permitted.
|
|
23
24
|
|
|
24
25
|
## Forbidden Legacy Files
|
|
25
26
|
|
|
26
27
|
The following files are NOT part of the canonical family and must NOT be created in new packs:
|
|
27
28
|
|
|
28
|
-
- `30_option_comparison.md` — replaced by `
|
|
29
|
-
- `31_selected_anchor_screen.md` — replaced by `
|
|
29
|
+
- `30_option_comparison.md` — replaced by root `DESIGN.md`
|
|
30
|
+
- `31_selected_anchor_screen.md` — replaced by root `DESIGN.md`
|
|
31
|
+
- `33_exploration_rubric.md` — replaced by `core/prototyping/evaluatorReview.ts#ORDINAL_AXES`
|
|
32
|
+
- `34_evaluator_calibration.md` — replaced by `core/prototyping/evaluatorReview.ts#ORDINAL_AXES`
|
|
30
33
|
- `40_contracts.md` — replaced by `40_screen_contracts.md`
|
|
31
34
|
- `50_review_bundle.md` — replaced by `50_review_input_bundle.md`
|
|
32
35
|
- `60_critique_loop.md` — removed (critique integrated into review bundle)
|
package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/50_review_input_bundle.md
CHANGED
|
@@ -6,27 +6,23 @@ Consolidate all sidecar artifacts into a review-ready bundle for design reviewer
|
|
|
6
6
|
|
|
7
7
|
## Bundle Contents
|
|
8
8
|
|
|
9
|
-
| Artifact | Path
|
|
10
|
-
| -------------------------- |
|
|
11
|
-
|
|
|
12
|
-
|
|
|
13
|
-
|
|
|
14
|
-
| Exploration rubric | `uiux/33_exploration_rubric.md` | [draft/reviewed/approved] |
|
|
15
|
-
| Evaluator calibration | `uiux/34_evaluator_calibration.md` | [draft/reviewed/approved] |
|
|
16
|
-
| Screen contracts | `uiux/40_screen_contracts.md` | [draft/reviewed/approved] |
|
|
17
|
-
| Prototyping recommendation | `../prototyping.yaml` | [draft/reviewed/approved] |
|
|
9
|
+
| Artifact | Path | Status |
|
|
10
|
+
| -------------------------- | ----------------------------- | ------------------------- |
|
|
11
|
+
| Brand SSOT (root) | `DESIGN.md` | [draft/reviewed/approved] |
|
|
12
|
+
| Screen contracts | `uiux/40_screen_contracts.md` | [draft/reviewed/approved] |
|
|
13
|
+
| Prototyping recommendation | `../prototyping.yaml` | [draft/reviewed/approved] |
|
|
18
14
|
|
|
19
15
|
## Trend-derived review focus
|
|
20
16
|
|
|
21
17
|
- Required references are all present and complete.
|
|
22
18
|
- Stale / overused AI slop patterns are explicitly avoided.
|
|
23
|
-
- Reference research is translated into
|
|
19
|
+
- Reference research is translated into local design decisions on root `DESIGN.md` and screen contracts.
|
|
24
20
|
- Later iterations are not automatically preferred over stronger middle iterations.
|
|
25
21
|
|
|
26
22
|
## Review Checklist
|
|
27
23
|
|
|
28
|
-
- [ ]
|
|
24
|
+
- [ ] Root `DESIGN.md` aligns with surface type and project constraints
|
|
29
25
|
- [ ] Reference pool is complete and translated into local design decisions
|
|
30
|
-
- [ ] Evaluator
|
|
26
|
+
- [ ] Evaluator scoring covers all four canonical UX axes (information architecture / navigation flow / usability / functionality) — fixed in `core/prototyping/evaluatorReview.ts#ORDINAL_AXES`
|
|
31
27
|
- [ ] Best-of-history handling is explicit
|
|
32
28
|
- [ ] Screen contracts cover all required states
|
|
@@ -33,19 +33,13 @@ QFAI Skill Body (SSOT)
|
|
|
33
33
|
|
|
34
34
|
## Spec Auto-Discovery Protocol
|
|
35
35
|
|
|
36
|
-
When no explicit argument is given, detect the candidate spec and constrain execution to one spec only.
|
|
37
|
-
|
|
38
|
-
### One-Spec-at-a-Time Guarantee
|
|
39
|
-
|
|
40
|
-
- Auto-discovery selects at most one spec for this run.
|
|
41
|
-
- This protocol does NOT enable multi-spec parallel execution.
|
|
42
|
-
- If multiple candidate specs are detected, do not start implementation until the user selects exactly one spec.
|
|
36
|
+
When no explicit argument is given, detect the candidate spec and constrain execution to one spec only. Auto-discovery selects at most one spec; this protocol does NOT enable multi-spec parallel execution.
|
|
43
37
|
|
|
44
38
|
### User Selection Flow
|
|
45
39
|
|
|
46
|
-
- Single spec
|
|
47
|
-
- Multiple specs
|
|
48
|
-
- Zero specs
|
|
40
|
+
- Single spec: announce the detected spec; ask for confirmation when scope is ambiguous.
|
|
41
|
+
- Multiple specs: display the candidates and require the user to choose one spec.
|
|
42
|
+
- Zero specs: stop and ask the user to provide the target spec explicitly.
|
|
49
43
|
|
|
50
44
|
## User Questions (AskUserQuestion Protocol)
|
|
51
45
|
|
|
@@ -75,23 +69,10 @@ Execute the TDD micro-cycle for each pending item in `test-list.md`, transitioni
|
|
|
75
69
|
## Visual Review Guard
|
|
76
70
|
|
|
77
71
|
- Review rendered output, screenshot evidence, or HTML output before closing any UI-affecting item.
|
|
78
|
-
- Read spec + contract inputs first whenever implementation touches UI or critique-driven behavior.
|
|
79
|
-
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
`.qfai/contracts/design/design-system.yaml` (extracted from final iter) →
|
|
83
|
-
`.qfai/contracts/design/prototype-handoff.yaml` → `.qfai/contracts/ui/*.yaml` →
|
|
84
|
-
canonical prototype evidence under `.qfai/evidence/prototyping/iter-NN/<screen>.{png,html}` →
|
|
85
|
-
`.qfai/prototypes/final/index.html`.
|
|
86
|
-
- The v1.x evaluation-rubric / evaluator-calibration / selected-direction contracts and
|
|
87
|
-
`prototypes/winner/index.html` were removed in spec-0017 P4/P8.
|
|
88
|
-
- Do not read discussion-pack UI/UX sidecars, fallback mocks, or legacy design aliases.
|
|
89
|
-
- Prototype HTML is analysis input, not production source. Reimplement with project-native
|
|
90
|
-
patterns while preserving the visual identity captured in `prototype-handoff.yaml`
|
|
91
|
-
`implementationNotes` (free-form prose); the v1.x mustPreserve / mayAdapt / mustNotCopy
|
|
92
|
-
three-category split is removed.
|
|
93
|
-
- UI-affecting items require product-surface-reviewer prototype parity review before `done`.
|
|
94
|
-
- If code intent and rendered output diverge, treat the rendered/HTML result as the blocking review input and reconcile before DONE.
|
|
72
|
+
- Read spec + contract inputs first whenever implementation touches UI or critique-driven behavior. Read order: `01_Spec.md` → `03_Acceptance-Criteria.md` → `05_Examples.md` → root `DESIGN.md` → `.qfai/contracts/design/DESIGN.md.lock.yaml` → `.qfai/contracts/design/design-system.yaml` (post-loop token mirror) → `.qfai/contracts/design/prototype-handoff.yaml` → `.qfai/contracts/ui/*.yaml` → `.qfai/evidence/prototyping/iter-NN/<screen>.{png,html}` → `.qfai/prototypes/final/index.html`.
|
|
73
|
+
- Do not read discussion-pack UI/UX sidecars or fallback mocks.
|
|
74
|
+
- Prototype HTML is analysis input, not production source. Reimplement with project-native patterns while preserving the visual identity captured in `prototype-handoff.yaml` `implementationNotes` (free-form prose).
|
|
75
|
+
- UI-affecting items require product-surface-reviewer prototype parity review before `done`. If code intent and rendered output diverge, treat the rendered/HTML result as the blocking review input and reconcile before DONE.
|
|
95
76
|
|
|
96
77
|
## Non-goals
|
|
97
78
|
|
|
@@ -299,7 +280,7 @@ Completion MUST NOT be declared when any of the following are true:
|
|
|
299
280
|
- Items with `todo`, `red`, `green`, or `refactor` status still exist (for spec-level completion)
|
|
300
281
|
- Parallel slices were used but integration verify has not been run post-merge
|
|
301
282
|
- Checkpoint boundary was reached but verification was not executed
|
|
302
|
-
- `it.todo(...)` / `test.todo(...)` / `describe.todo(...)` stubs remain in any file covered by `validation.traceability.testFileGlobs` (`QFAI-TEST-001
|
|
283
|
+
- `it.todo(...)` / `test.todo(...)` / `describe.todo(...)` stubs remain in any file covered by `validation.traceability.testFileGlobs` (`QFAI-TEST-001`). Implement the body or delete the stub — an opt-out via `validation.testStrategy.forbidTestTodoStubs: false` is permitted only with an accompanying waiver DR-ID.
|
|
303
284
|
|
|
304
285
|
## Evidence (MANDATORY)
|
|
305
286
|
|
|
@@ -347,7 +328,7 @@ Each TDD item MUST have fresh evidence containing at minimum:
|
|
|
347
328
|
- [ ] No backward transitions occurred.
|
|
348
329
|
- [ ] Exception items have DR-IDs recorded.
|
|
349
330
|
- [ ] All tests pass.
|
|
350
|
-
- [ ] `qfai validate --profile tdd --fail-on error` passes with zero `QFAI-TEST-001` findings (no `it.todo` / `test.todo` / `describe.todo` stubs remain
|
|
331
|
+
- [ ] `qfai validate --profile tdd --fail-on error` passes with zero `QFAI-TEST-001` findings (no `it.todo` / `test.todo` / `describe.todo` stubs remain).
|
|
351
332
|
|
|
352
333
|
## Completion Checklist (MUST)
|
|
353
334
|
|