qfai 1.7.5 → 1.7.7
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 +10 -4
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/20_eval_axis_usability.md +5 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/21_eval_axis_consistency.md +5 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/22_eval_axis_accessibility.md +5 -0
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/23_eval_axis_delight.md +23 -1
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/30_comparison.md +20 -5
- package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/40_contracts.md +36 -15
- package/assets/uix-rev/comparison-review.md +13 -0
- package/assets/uix-rev/contracts-review.md +18 -0
- package/assets/uix-rev/migration-review.md +17 -0
- package/assets/uix-rev/oq-review.md +13 -0
- package/assets/uix-rev/scoring-review.md +14 -0
- package/assets/uix-rev/strategy-review.md +22 -0
- package/dist/cli/index.cjs +1809 -1146
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.mjs +1789 -1126
- package/dist/cli/index.mjs.map +1 -1
- package/dist/index.cjs +995 -384
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +107 -1
- package/dist/index.d.ts +107 -1
- package/dist/index.mjs +963 -357
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -15,6 +15,12 @@ QFAI addresses these failure modes by standardizing an end-to-end delivery loop
|
|
|
15
15
|
QFAI is designed for a skills-driven operating model: engineers select a prepared custom skill and provide only the task intent.
|
|
16
16
|
The agent reads the repository, produces the required artifacts, and iterates until the hard gates pass.
|
|
17
17
|
|
|
18
|
+
## Release status
|
|
19
|
+
|
|
20
|
+
- Current package version: `1.7.7`
|
|
21
|
+
- Release posture: v1.7.7 is the correction release that aligns the v1.7.6 remediation line before deeper prototyping work.
|
|
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
|
+
|
|
18
24
|
## Quick start
|
|
19
25
|
|
|
20
26
|
> **Windows users:** `qfai init` creates symlinks internally.
|
|
@@ -54,7 +60,7 @@ npx qfai report
|
|
|
54
60
|
Use `--autogen-only` to fail when generation fails (for CI gates).
|
|
55
61
|
Enable with `QFAI_PROTOTYPE_FIDELITY_AUTOGEN=1` as an alternative to `--autogen-ui-fidelity`.
|
|
56
62
|
|
|
57
|
-
## ATDD annotation hard gate
|
|
63
|
+
## ATDD annotation hard gate
|
|
58
64
|
|
|
59
65
|
`qfai validate` enforces spec-to-test traceability with directory-based rules.
|
|
60
66
|
|
|
@@ -64,7 +70,7 @@ npx qfai report
|
|
|
64
70
|
- `tests/api/**` and `tests/e2e/**` must not use `TC` annotations.
|
|
65
71
|
- `AC` annotations are not required in code; AC coverage is treated as indirect through full `TC` coverage.
|
|
66
72
|
|
|
67
|
-
## Prototyping uiFidelity autogen
|
|
73
|
+
## Prototyping uiFidelity autogen
|
|
68
74
|
|
|
69
75
|
`qfai prototyping --autogen-ui-fidelity` auto-generates `uiFidelity` evidence by:
|
|
70
76
|
|
|
@@ -251,7 +257,7 @@ flowchart LR
|
|
|
251
257
|
- Contracts SSOT: `.qfai/contracts/**`
|
|
252
258
|
- Report outputs (`.qfai/report/**`) are derived artifacts and not SSOT.
|
|
253
259
|
|
|
254
|
-
## Minimal tutorial (v1.
|
|
260
|
+
## Minimal tutorial (v1.7.7)
|
|
255
261
|
|
|
256
262
|
1. `npx qfai init`
|
|
257
263
|
2. Run `/qfai-discussion` to structure scope, open questions, and produce a discussion pack under `.qfai/discussion/discussion-<ts>/`.
|
|
@@ -277,7 +283,7 @@ Release gate behavior:
|
|
|
277
283
|
|
|
278
284
|
## Continuous integration
|
|
279
285
|
|
|
280
|
-
QFAI
|
|
286
|
+
QFAI generates integration wrappers under `.agents/**`, `.claude/**`,
|
|
281
287
|
`.github/**`, and `.codex/**`.
|
|
282
288
|
It does not generate GitHub Actions workflows.
|
|
283
289
|
Configure CI in your own platform and run:
|
package/assets/init/.qfai/assistant/skills/qfai-discussion/templates/uiux/23_eval_axis_delight.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Evaluation Axis: Delight
|
|
2
2
|
|
|
3
|
+
## Layer Classification
|
|
4
|
+
|
|
5
|
+
- Layer: invariant
|
|
6
|
+
- Source: User satisfaction and perceived quality
|
|
7
|
+
|
|
3
8
|
## Evaluation Criteria
|
|
4
9
|
|
|
5
10
|
| Criterion | Description | Weight |
|
|
@@ -25,10 +30,27 @@
|
|
|
25
30
|
- 2: Friction points noticed by users
|
|
26
31
|
- 1: Frustrating experience reported
|
|
27
32
|
|
|
33
|
+
## Trend-derived Axes
|
|
34
|
+
|
|
35
|
+
<!-- Add trend-derived axes below. Each requires source_translation from research findings. -->
|
|
36
|
+
|
|
37
|
+
| Criterion | Source Translation | Description | Weight |
|
|
38
|
+
| --------------- | ----------------------------------------- | ------------- | -------- |
|
|
39
|
+
| (trend-derived) | (research finding → evaluation criterion) | (description) | (weight) |
|
|
40
|
+
|
|
28
41
|
## Product-specific Axes
|
|
29
42
|
|
|
30
|
-
<!-- Add
|
|
43
|
+
<!-- Add product-specific axes below. These are unique to the project's domain. -->
|
|
31
44
|
|
|
32
45
|
| Criterion | Description | Weight |
|
|
33
46
|
| ------------------ | ------------- | -------- |
|
|
34
47
|
| (project-specific) | (description) | (weight) |
|
|
48
|
+
|
|
49
|
+
## Aggregate Scoring Rules
|
|
50
|
+
|
|
51
|
+
| Element | Value |
|
|
52
|
+
| ------------- | ------------------------------------------------ |
|
|
53
|
+
| Weights | Invariant: 60%, Trend-derived: 25%, Product: 15% |
|
|
54
|
+
| Normalization | Linear 1-5 scale per axis, weighted sum |
|
|
55
|
+
| Thresholds | Accept >= 3.5, Refine 2.5-3.4, Pivot < 2.5 |
|
|
56
|
+
| Stopping | Stop when all axes scored and aggregate computed |
|
|
@@ -6,6 +6,8 @@ Compare 2+ design options against scoring axes to support anchor screen selectio
|
|
|
6
6
|
|
|
7
7
|
## Comparison Matrix
|
|
8
8
|
|
|
9
|
+
### Invariant Axes
|
|
10
|
+
|
|
9
11
|
| Axis | Option A: [Name] | Option B: [Name] | Notes |
|
|
10
12
|
| ------------------ | ---------------- | ---------------- | ----------- |
|
|
11
13
|
| Usability (20) | [score 1-5] | [score 1-5] | [rationale] |
|
|
@@ -13,12 +15,24 @@ Compare 2+ design options against scoring axes to support anchor screen selectio
|
|
|
13
15
|
| Accessibility (22) | [score 1-5] | [score 1-5] | [rationale] |
|
|
14
16
|
| Delight (23) | [score 1-5] | [score 1-5] | [rationale] |
|
|
15
17
|
|
|
18
|
+
### Trend-derived Axes
|
|
19
|
+
|
|
20
|
+
| Axis | Option A: [Name] | Option B: [Name] | Source Translation |
|
|
21
|
+
| --------------- | ---------------- | ---------------- | ------------------ |
|
|
22
|
+
| (trend-derived) | [score 1-5] | [score 1-5] | [research source] |
|
|
23
|
+
|
|
24
|
+
### Product-specific Axes
|
|
25
|
+
|
|
26
|
+
| Axis | Option A: [Name] | Option B: [Name] | Notes |
|
|
27
|
+
| ------------------ | ---------------- | ---------------- | ----------- |
|
|
28
|
+
| (product-specific) | [score 1-5] | [score 1-5] | [rationale] |
|
|
29
|
+
|
|
16
30
|
## Aggregate Scoring
|
|
17
31
|
|
|
18
|
-
| Option |
|
|
19
|
-
| -------- |
|
|
20
|
-
| Option A | [total]
|
|
21
|
-
| Option B | [total]
|
|
32
|
+
| Option | Weights | Normalized Total | Threshold | Rank |
|
|
33
|
+
| -------- | ------------------------------------- | ---------------- | --------------------- | ------ |
|
|
34
|
+
| Option A | Invariant: 60%, Trend: 25%, Prod: 15% | [total] | [accept/refine/pivot] | [rank] |
|
|
35
|
+
| Option B | Invariant: 60%, Trend: 25%, Prod: 15% | [total] | [accept/refine/pivot] | [rank] |
|
|
22
36
|
|
|
23
37
|
## Recommendation
|
|
24
38
|
|
|
@@ -26,5 +40,6 @@ Selected: [Option X] — [rationale for selection based on scores and constraint
|
|
|
26
40
|
|
|
27
41
|
## Cross-references
|
|
28
42
|
|
|
29
|
-
-
|
|
43
|
+
- Invariant axes: `20_eval_axis_usability.md`, `21_eval_axis_consistency.md`, `22_eval_axis_accessibility.md`, `23_eval_axis_delight.md`
|
|
44
|
+
- 3-layer model & aggregate rules: `23_eval_axis_delight.md` (Aggregate Scoring Rules section)
|
|
30
45
|
- Anchor selection: `31_anchor.md`
|
|
@@ -8,21 +8,42 @@ Draft interaction contracts for the anchor screen and key screens.
|
|
|
8
8
|
|
|
9
9
|
### Screen: [Screen name]
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
|
25
|
-
|
|
|
11
|
+
- Route: [/path-to-screen]
|
|
12
|
+
- Actor: [primary user role]
|
|
13
|
+
- Purpose: [what the user accomplishes on this screen]
|
|
14
|
+
|
|
15
|
+
#### Primary Tasks
|
|
16
|
+
|
|
17
|
+
| Task | Trigger | Success Criteria |
|
|
18
|
+
| ---------------- | ------------- | -------------------- |
|
|
19
|
+
| [primary task] | [user action] | [observable outcome] |
|
|
20
|
+
| [secondary task] | [user action] | [observable outcome] |
|
|
21
|
+
|
|
22
|
+
#### Required States
|
|
23
|
+
|
|
24
|
+
| State | Trigger | Display |
|
|
25
|
+
| --------- | ---------------------- | --------------------------- |
|
|
26
|
+
| empty | Initial load, no data | [empty state description] |
|
|
27
|
+
| loading | Data fetch in progress | [loading indicator] |
|
|
28
|
+
| error | Fetch failure | [error message + retry CTA] |
|
|
29
|
+
| populated | Data available | [primary content layout] |
|
|
30
|
+
|
|
31
|
+
#### Transitions
|
|
32
|
+
|
|
33
|
+
| From | To | Trigger |
|
|
34
|
+
| --------- | --------- | -------------------- |
|
|
35
|
+
| empty | loading | Data fetch initiated |
|
|
36
|
+
| loading | populated | Data received |
|
|
37
|
+
| loading | error | Fetch failure |
|
|
38
|
+
| error | loading | Retry action |
|
|
39
|
+
| populated | empty | Clear action |
|
|
40
|
+
|
|
41
|
+
#### Observable Outcomes
|
|
42
|
+
|
|
43
|
+
| Outcome | Verification Method |
|
|
44
|
+
| -------------------------- | ------------------- |
|
|
45
|
+
| [expected user outcome] | [how to verify] |
|
|
46
|
+
| [expected system behavior] | [how to verify] |
|
|
26
47
|
|
|
27
48
|
## Cross-references
|
|
28
49
|
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# UIX-REV: Comparison Review
|
|
2
|
+
|
|
3
|
+
Review option comparison and anchor selection.
|
|
4
|
+
|
|
5
|
+
## Comparison (30_comparison.md)
|
|
6
|
+
|
|
7
|
+
- Must contain at least 2 options
|
|
8
|
+
- Each option should have structured evaluation
|
|
9
|
+
|
|
10
|
+
## Anchor (31_anchor.md)
|
|
11
|
+
|
|
12
|
+
- Must declare selected_anchor or chosen field
|
|
13
|
+
- Anchor must reference one of the compared options
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# UIX-REV: Screen Contracts Review
|
|
2
|
+
|
|
3
|
+
Review screen contracts for completeness.
|
|
4
|
+
|
|
5
|
+
## Required Fields per Screen
|
|
6
|
+
|
|
7
|
+
- route
|
|
8
|
+
- actor
|
|
9
|
+
- purpose
|
|
10
|
+
- primary_tasks
|
|
11
|
+
- required_states
|
|
12
|
+
- transitions
|
|
13
|
+
- observable_outcomes
|
|
14
|
+
|
|
15
|
+
## Quality Criteria
|
|
16
|
+
|
|
17
|
+
- Each screen contract must be independently verifiable
|
|
18
|
+
- Routes must be unique across all contracts
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# UIX-REV: Migration Review
|
|
2
|
+
|
|
3
|
+
Review migration status of UI-bearing specs.
|
|
4
|
+
|
|
5
|
+
## Sidecar Presence
|
|
6
|
+
|
|
7
|
+
- UI-bearing specs must have uiux/ directory
|
|
8
|
+
- Default: warning; strict mode: error
|
|
9
|
+
|
|
10
|
+
## Version Check
|
|
11
|
+
|
|
12
|
+
- .sidecar-version must match current template version
|
|
13
|
+
- Stale versions emit warning with upgrade steps
|
|
14
|
+
|
|
15
|
+
## Configuration
|
|
16
|
+
|
|
17
|
+
- uiux.migration.strict: boolean (default false)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# UIX-REV: Open Questions Review
|
|
2
|
+
|
|
3
|
+
Review OQ Register for blocking items.
|
|
4
|
+
|
|
5
|
+
## Blocking Criteria
|
|
6
|
+
|
|
7
|
+
- Status: open
|
|
8
|
+
- Severity: critical or blocking
|
|
9
|
+
|
|
10
|
+
## Resolution
|
|
11
|
+
|
|
12
|
+
- Each blocking OQ must be resolved or downgraded before validation passes
|
|
13
|
+
- Include OQ-ID in all related issue descriptions
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# UIX-REV: Scoring Review
|
|
2
|
+
|
|
3
|
+
Review evaluation axes and aggregate scoring rules.
|
|
4
|
+
|
|
5
|
+
## Evaluation Axes
|
|
6
|
+
|
|
7
|
+
- Each trend-derived row must include source_translation
|
|
8
|
+
- Axes must be measurable and verifiable
|
|
9
|
+
|
|
10
|
+
## Aggregate Scoring
|
|
11
|
+
|
|
12
|
+
- weights: defined for all axes
|
|
13
|
+
- normalization: method specified
|
|
14
|
+
- threshold: pass/fail boundary defined
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# UIX-REV: Strategy Review
|
|
2
|
+
|
|
3
|
+
Review the UI/UX strategy document for completeness and quality.
|
|
4
|
+
|
|
5
|
+
## Required Fields
|
|
6
|
+
|
|
7
|
+
- selection_required
|
|
8
|
+
- candidate_options
|
|
9
|
+
- chosen_option
|
|
10
|
+
- verification_expectations
|
|
11
|
+
- none_as_legitimate_outcome
|
|
12
|
+
|
|
13
|
+
## Depth Check
|
|
14
|
+
|
|
15
|
+
- rationale: minimum 20 characters
|
|
16
|
+
- approach: minimum 20 characters
|
|
17
|
+
|
|
18
|
+
## Verdict
|
|
19
|
+
|
|
20
|
+
- **accept**: All fields present and meet depth requirements
|
|
21
|
+
- **refine**: Fields present but insufficient depth
|
|
22
|
+
- **pivot**: Missing required fields — fundamental rework needed
|