qfai 1.8.7 → 1.8.8
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/skills/qfai-discussion/SKILL.md +3 -4
- package/assets/init/.qfai/assistant/skills/qfai-discussion/references/design-dna-intake.md +2 -3
- package/assets/init/.qfai/assistant/skills/qfai-discussion/references/discussion-artifact-rules.md +4 -4
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/prototyping.yaml +2 -3
- package/assets/init/.qfai/assistant/skills/qfai-implement/SKILL.md +5 -8
- package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/handoff.md +2 -3
- package/assets/init/.qfai/assistant/skills/qfai-prototyping/references/reviewer-prompt.md +0 -1
- package/assets/init/.qfai/assistant/skills/qfai-prototyping/templates/contracts/prototype-handoff.sample.yaml +3 -4
- package/assets/init/.qfai/assistant/skills/qfai-sdd/SKILL.md +122 -229
- 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 +15 -15
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/contracts/brand-design.sample.yaml +0 -1
- package/assets/init/.qfai/assistant/skills/qfai-sdd/templates/contracts/reference-pool.sample.yaml +0 -1
- 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 +2 -2
- 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 +1 -1
- package/assets/init/root/.github/workflows/qfai-validate.yml +1 -1
- package/assets/uix-rev/comparison-review.md +1 -1
- package/dist/cli/index.cjs +529 -103
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.mjs +529 -103
- package/dist/cli/index.mjs.map +1 -1
- package/dist/index.cjs +526 -98
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -12
- package/dist/index.d.ts +10 -12
- package/dist/index.mjs +526 -98
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -1
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
|
|
|
@@ -68,12 +68,11 @@ For UI-bearing targets, follow `references/design-dna-intake.md` while authoring
|
|
|
68
68
|
|
|
69
69
|
- `30_exploration_brief.md` must define product intent, brand signals, and differentiation targets.
|
|
70
70
|
- `31_reference_pool.md` must define exploration references with adopted points, rejected points, and copy risk — framed as **deviate-from** inputs (not imitate-this) for downstream `/qfai-prototyping` reviewer.
|
|
71
|
-
- `32_design_anti_goals.md` must contain explicit anti-goals; this also feeds the global anti-slop pattern list consulted by the
|
|
71
|
+
- `32_design_anti_goals.md` must contain explicit anti-goals; this also feeds the global anti-slop pattern list consulted by the prototyping reviewer.
|
|
72
72
|
- `50_review_input_bundle.md` must document review inputs for downstream skills.
|
|
73
73
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
`core/prototyping/iteration.ts#OrdinalScore`, ordinal 4-step scale).
|
|
74
|
+
Evaluation axes are global constants (4-step ordinal: weak / acceptable /
|
|
75
|
+
strong / exceptional) and are not authored as discussion sidecars.
|
|
77
76
|
|
|
78
77
|
## Completion Contract (Shared)
|
|
79
78
|
|
|
@@ -25,6 +25,5 @@ Use this reference only for UI-bearing discussion packs.
|
|
|
25
25
|
- Put all reference decisions in `31_reference_pool.md` (deviate-from input, not imitate).
|
|
26
26
|
- Put prohibited visual directions in `32_design_anti_goals.md` (also feeds reviewer anti-slop).
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
`core/prototyping/iteration.ts#OrdinalScore`.
|
|
28
|
+
Evaluation axes are global constants (4-step ordinal: weak / acceptable /
|
|
29
|
+
strong / exceptional) and are not authored as discussion sidecars.
|
package/assets/init/.qfai/assistant/skills/qfai-discussion/references/discussion-artifact-rules.md
CHANGED
|
@@ -50,13 +50,13 @@ Discussion is exploration-first and must not choose a single visual winner or fi
|
|
|
50
50
|
|
|
51
51
|
## `prototyping.yaml`
|
|
52
52
|
|
|
53
|
-
When `prototyping.yaml` is present, use the
|
|
53
|
+
When `prototyping.yaml` is present, use the single-thread schema:
|
|
54
54
|
|
|
55
55
|
```yaml
|
|
56
56
|
prototyping:
|
|
57
57
|
surface: web # web | mobile | desktop | mixed
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
Mode-tier fields (`recommended_mode` / `allowed_modes` / `mode_expectations`)
|
|
61
|
+
are not supported. The single-thread evolution loop fixes iteration count
|
|
62
|
+
globally to 15.
|
|
@@ -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
|
|
@@ -76,20 +76,17 @@ Execute the TDD micro-cycle for each pending item in `test-list.md`, transitioni
|
|
|
76
76
|
|
|
77
77
|
- Review rendered output, screenshot evidence, or HTML output before closing any UI-affecting item.
|
|
78
78
|
- Read spec + contract inputs first whenever implementation touches UI or critique-driven behavior.
|
|
79
|
-
- Read order
|
|
79
|
+
- Read order: `01_Spec.md` → `03_Acceptance-Criteria.md` → `05_Examples.md` →
|
|
80
80
|
`.qfai/contracts/design/exploration-brief.yaml` →
|
|
81
81
|
`.qfai/contracts/design/reference-pool.yaml` → `.qfai/contracts/design/brand-design.yaml` →
|
|
82
82
|
`.qfai/contracts/design/design-system.yaml` (extracted from final iter) →
|
|
83
83
|
`.qfai/contracts/design/prototype-handoff.yaml` → `.qfai/contracts/ui/*.yaml` →
|
|
84
84
|
canonical prototype evidence under `.qfai/evidence/prototyping/iter-NN/<screen>.{png,html}` →
|
|
85
85
|
`.qfai/prototypes/final/index.html`.
|
|
86
|
-
-
|
|
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.
|
|
86
|
+
- Do not read discussion-pack UI/UX sidecars or fallback mocks.
|
|
89
87
|
- Prototype HTML is analysis input, not production source. Reimplement with project-native
|
|
90
88
|
patterns while preserving the visual identity captured in `prototype-handoff.yaml`
|
|
91
|
-
`implementationNotes` (free-form prose)
|
|
92
|
-
three-category split is removed.
|
|
89
|
+
`implementationNotes` (free-form prose).
|
|
93
90
|
- UI-affecting items require product-surface-reviewer prototype parity review before `done`.
|
|
94
91
|
- If code intent and rendered output diverge, treat the rendered/HTML result as the blocking review input and reconcile before DONE.
|
|
95
92
|
|
|
@@ -299,7 +296,7 @@ Completion MUST NOT be declared when any of the following are true:
|
|
|
299
296
|
- Items with `todo`, `red`, `green`, or `refactor` status still exist (for spec-level completion)
|
|
300
297
|
- Parallel slices were used but integration verify has not been run post-merge
|
|
301
298
|
- 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
|
|
299
|
+
- `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
300
|
|
|
304
301
|
## Evidence (MANDATORY)
|
|
305
302
|
|
|
@@ -347,7 +344,7 @@ Each TDD item MUST have fresh evidence containing at minimum:
|
|
|
347
344
|
- [ ] No backward transitions occurred.
|
|
348
345
|
- [ ] Exception items have DR-IDs recorded.
|
|
349
346
|
- [ ] 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
|
|
347
|
+
- [ ] `qfai validate --profile tdd --fail-on error` passes with zero `QFAI-TEST-001` findings (no `it.todo` / `test.todo` / `describe.todo` stubs remain).
|
|
351
348
|
|
|
352
349
|
## Completion Checklist (MUST)
|
|
353
350
|
|
|
@@ -25,7 +25,6 @@ LLM assistance is allowed for naming (primary / surface / accent etc.).
|
|
|
25
25
|
### `.qfai/contracts/design/prototype-handoff.yaml`
|
|
26
26
|
|
|
27
27
|
```yaml
|
|
28
|
-
schemaVersion: "2.0"
|
|
29
28
|
finalIterIndex: <number>
|
|
30
29
|
finalArtifact: ".qfai/prototypes/final/index.html"
|
|
31
30
|
extractedDesignSystem: ".qfai/contracts/design/design-system.yaml"
|
|
@@ -34,8 +33,8 @@ implementationNotes: |
|
|
|
34
33
|
what makes this artifact distinct from generic AI defaults.
|
|
35
34
|
```
|
|
36
35
|
|
|
37
|
-
The
|
|
36
|
+
The artifact itself is the SSOT (no preserve / adapt / copy split).
|
|
38
37
|
|
|
39
38
|
## Cert
|
|
40
39
|
|
|
41
|
-
Run `qfai prototyping certify` to produce `.qfai/evidence/prototyping/completion-certificate.json
|
|
40
|
+
Run `qfai prototyping certify` to produce `.qfai/evidence/prototyping/completion-certificate.json`. Use `certify --check` to verify digests.
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
# prototype-handoff.yaml
|
|
1
|
+
# prototype-handoff.yaml.
|
|
2
2
|
# Produced by /qfai-prototyping post-loop. Consumed by /qfai-implement.
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
schemaVersion: "2.0"
|
|
3
|
+
# The final artifact itself is the SSOT; this handoff yaml is a thin
|
|
4
|
+
# pointer plus implementation notes.
|
|
6
5
|
finalIterIndex: 8
|
|
7
6
|
finalArtifact: ".qfai/prototypes/final/index.html"
|
|
8
7
|
extractedDesignSystem: ".qfai/contracts/design/design-system.yaml"
|