qfai 1.4.6 → 1.4.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 +63 -85
- package/assets/init/.qfai/README.md +2 -2
- package/assets/init/.qfai/assistant/instructions/workflow.md +5 -5
- package/assets/init/.qfai/assistant/skills/qfai-sdd/SKILL.md +3 -0
- package/assets/init/.qfai/assistant/skills/qfai-verify/SKILL.md +2 -2
- package/dist/cli/index.cjs +7 -33
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.mjs +7 -33
- package/dist/cli/index.mjs.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/package.json +1 -1
- package/assets/init/.qfai/assistant/skills/qfai-implement/SKILL.md +0 -223
- package/assets/init/.qfai/assistant/skills/qfai-pr/SKILL.md +0 -209
- package/assets/init/.qfai/assistant/skills/qfai-scenario-test/SKILL.md +0 -215
- package/assets/init/.qfai/assistant/skills/qfai-spec/SKILL.md +0 -166
- package/assets/init/.qfai/assistant/skills/qfai-unit-test/SKILL.md +0 -218
- package/assets/init/root/.claude/agents/README.md +0 -10
- package/assets/init/root/.claude/agents/architect-reviewer.md +0 -17
- package/assets/init/root/.claude/agents/architect.md +0 -17
- package/assets/init/root/.claude/agents/atdd-api-implementer.md +0 -17
- package/assets/init/root/.claude/agents/atdd-e2e-implementer.md +0 -17
- package/assets/init/root/.claude/agents/atdd-integration-implementer.md +0 -17
- package/assets/init/root/.claude/agents/backend-engineer.md +0 -17
- package/assets/init/root/.claude/agents/backend-reviewer.md +0 -17
- package/assets/init/root/.claude/agents/code-reviewer.md +0 -17
- package/assets/init/root/.claude/agents/contract-designer.md +0 -17
- package/assets/init/root/.claude/agents/coverage-planner.md +0 -17
- package/assets/init/root/.claude/agents/design-owner.md +0 -17
- package/assets/init/root/.claude/agents/design-review-lead.md +0 -17
- package/assets/init/root/.claude/agents/devops-ci-engineer.md +0 -17
- package/assets/init/root/.claude/agents/doc-steward.md +0 -17
- package/assets/init/root/.claude/agents/facilitator.md +0 -17
- package/assets/init/root/.claude/agents/frontend-engineer.md +0 -17
- package/assets/init/root/.claude/agents/frontend-reviewer.md +0 -17
- package/assets/init/root/.claude/agents/interviewer.md +0 -17
- package/assets/init/root/.claude/agents/option-explorer.md +0 -17
- package/assets/init/root/.claude/agents/option-reviewer.md +0 -17
- package/assets/init/root/.claude/agents/oq-harvester.md +0 -17
- package/assets/init/root/.claude/agents/oq-reviewer.md +0 -17
- package/assets/init/root/.claude/agents/orchestrator.md +0 -17
- package/assets/init/root/.claude/agents/planner.md +0 -17
- package/assets/init/root/.claude/agents/project-lead.md +0 -17
- package/assets/init/root/.claude/agents/qa-engineer.md +0 -17
- package/assets/init/root/.claude/agents/qa-gatekeeper.md +0 -17
- package/assets/init/root/.claude/agents/qa-lead.md +0 -17
- package/assets/init/root/.claude/agents/qa-reviewer.md +0 -17
- package/assets/init/root/.claude/agents/requirements-analyst.md +0 -17
- package/assets/init/root/.claude/agents/researcher.md +0 -17
- package/assets/init/root/.claude/agents/reviewer.md +0 -17
- package/assets/init/root/.claude/agents/runtime-gatekeeper.md +0 -17
- package/assets/init/root/.claude/agents/test-case-owner.md +0 -17
- package/assets/init/root/.claude/agents/test-engineer.md +0 -17
- package/assets/init/root/.claude/agents/test-volume-estimator.md +0 -17
- package/assets/init/root/.claude/agents/ui-ux-reviewer.md +0 -17
- package/assets/init/root/.claude/agents/unit-test-scope-enforcer.md +0 -17
- package/assets/init/root/.claude/skills/README.md +0 -11
- package/assets/init/root/.claude/skills/qfai-atdd/SKILL.md +0 -52
- package/assets/init/root/.claude/skills/qfai-configure/SKILL.md +0 -52
- package/assets/init/root/.claude/skills/qfai-discuss/SKILL.md +0 -52
- package/assets/init/root/.claude/skills/qfai-implement/SKILL.md +0 -52
- package/assets/init/root/.claude/skills/qfai-pr/SKILL.md +0 -52
- package/assets/init/root/.claude/skills/qfai-prototyping/SKILL.md +0 -52
- package/assets/init/root/.claude/skills/qfai-require/SKILL.md +0 -52
- package/assets/init/root/.claude/skills/qfai-scenario-test/SKILL.md +0 -52
- package/assets/init/root/.claude/skills/qfai-sdd/SKILL.md +0 -52
- package/assets/init/root/.claude/skills/qfai-spec/SKILL.md +0 -55
- package/assets/init/root/.claude/skills/qfai-tdd-green/SKILL.md +0 -52
- package/assets/init/root/.claude/skills/qfai-tdd-red/SKILL.md +0 -52
- package/assets/init/root/.claude/skills/qfai-tdd-refactor/SKILL.md +0 -52
- package/assets/init/root/.claude/skills/qfai-unit-test/SKILL.md +0 -52
- package/assets/init/root/.claude/skills/qfai-verify/SKILL.md +0 -52
- package/assets/init/root/.codex/README.md +0 -17
- package/assets/init/root/.codex/skills/qfai-atdd/SKILL.md +0 -52
- package/assets/init/root/.codex/skills/qfai-configure/SKILL.md +0 -52
- package/assets/init/root/.codex/skills/qfai-discuss/SKILL.md +0 -52
- package/assets/init/root/.codex/skills/qfai-implement/SKILL.md +0 -52
- package/assets/init/root/.codex/skills/qfai-pr/SKILL.md +0 -52
- package/assets/init/root/.codex/skills/qfai-prototyping/SKILL.md +0 -52
- package/assets/init/root/.codex/skills/qfai-require/SKILL.md +0 -52
- package/assets/init/root/.codex/skills/qfai-scenario-test/SKILL.md +0 -52
- package/assets/init/root/.codex/skills/qfai-sdd/SKILL.md +0 -52
- package/assets/init/root/.codex/skills/qfai-spec/SKILL.md +0 -55
- package/assets/init/root/.codex/skills/qfai-tdd-green/SKILL.md +0 -52
- package/assets/init/root/.codex/skills/qfai-tdd-red/SKILL.md +0 -52
- package/assets/init/root/.codex/skills/qfai-tdd-refactor/SKILL.md +0 -52
- package/assets/init/root/.codex/skills/qfai-unit-test/SKILL.md +0 -52
- package/assets/init/root/.codex/skills/qfai-verify/SKILL.md +0 -52
- package/assets/init/root/.github/PULL_REQUEST_TEMPLATE.md +0 -71
- package/assets/init/root/.github/agents/README.md +0 -10
- package/assets/init/root/.github/agents/architect-reviewer.agent.md +0 -17
- package/assets/init/root/.github/agents/architect.agent.md +0 -17
- package/assets/init/root/.github/agents/backend-engineer.agent.md +0 -17
- package/assets/init/root/.github/agents/backend-reviewer.agent.md +0 -17
- package/assets/init/root/.github/agents/code-reviewer.agent.md +0 -17
- package/assets/init/root/.github/agents/contract-designer.agent.md +0 -17
- package/assets/init/root/.github/agents/coverage-planner.agent.md +0 -17
- package/assets/init/root/.github/agents/design-owner.agent.md +0 -17
- package/assets/init/root/.github/agents/design-review-lead.agent.md +0 -17
- package/assets/init/root/.github/agents/devops-ci-engineer.agent.md +0 -17
- package/assets/init/root/.github/agents/facilitator.agent.md +0 -17
- package/assets/init/root/.github/agents/frontend-engineer.agent.md +0 -17
- package/assets/init/root/.github/agents/frontend-reviewer.agent.md +0 -17
- package/assets/init/root/.github/agents/interviewer.agent.md +0 -17
- package/assets/init/root/.github/agents/option-explorer.agent.md +0 -17
- package/assets/init/root/.github/agents/option-reviewer.agent.md +0 -17
- package/assets/init/root/.github/agents/oq-harvester.agent.md +0 -17
- package/assets/init/root/.github/agents/oq-reviewer.agent.md +0 -17
- package/assets/init/root/.github/agents/planner.agent.md +0 -17
- package/assets/init/root/.github/agents/project-lead.agent.md +0 -17
- package/assets/init/root/.github/agents/qa-engineer.agent.md +0 -17
- package/assets/init/root/.github/agents/qa-gatekeeper.agent.md +0 -17
- package/assets/init/root/.github/agents/qa-lead.agent.md +0 -17
- package/assets/init/root/.github/agents/qa-reviewer.agent.md +0 -17
- package/assets/init/root/.github/agents/requirements-analyst.agent.md +0 -17
- package/assets/init/root/.github/agents/runtime-gatekeeper.agent.md +0 -17
- package/assets/init/root/.github/agents/test-case-owner.agent.md +0 -17
- package/assets/init/root/.github/agents/test-engineer.agent.md +0 -17
- package/assets/init/root/.github/agents/ui-ux-reviewer.agent.md +0 -17
- package/assets/init/root/.github/agents/unit-test-scope-enforcer.agent.md +0 -17
- package/assets/init/root/.github/copilot-instructions.md +0 -15
- package/assets/init/root/.github/skills/README.md +0 -11
- package/assets/init/root/.github/skills/qfai-atdd/SKILL.md +0 -52
- package/assets/init/root/.github/skills/qfai-configure/SKILL.md +0 -52
- package/assets/init/root/.github/skills/qfai-discuss/SKILL.md +0 -52
- package/assets/init/root/.github/skills/qfai-implement/SKILL.md +0 -52
- package/assets/init/root/.github/skills/qfai-pr/SKILL.md +0 -52
- package/assets/init/root/.github/skills/qfai-prototyping/SKILL.md +0 -52
- package/assets/init/root/.github/skills/qfai-require/SKILL.md +0 -52
- package/assets/init/root/.github/skills/qfai-scenario-test/SKILL.md +0 -52
- package/assets/init/root/.github/skills/qfai-sdd/SKILL.md +0 -52
- package/assets/init/root/.github/skills/qfai-spec/SKILL.md +0 -55
- package/assets/init/root/.github/skills/qfai-tdd-green/SKILL.md +0 -52
- package/assets/init/root/.github/skills/qfai-tdd-red/SKILL.md +0 -52
- package/assets/init/root/.github/skills/qfai-tdd-refactor/SKILL.md +0 -52
- package/assets/init/root/.github/skills/qfai-unit-test/SKILL.md +0 -52
- package/assets/init/root/.github/skills/qfai-verify/SKILL.md +0 -52
- package/assets/init/root/.github/workflows/qfai.yml +0 -20
- package/assets/init/root/features/spec-0001.feature +0 -20
- /package/assets/init/.qfai/assistant/skills/{qfai-spec/templates/contracts/api-0001-sample.yaml → qfai-sdd/templates/contracts/api-contract.sample.yaml} +0 -0
- /package/assets/init/.qfai/assistant/skills/{qfai-spec/templates/contracts/db-0001-sample.sql → qfai-sdd/templates/contracts/db-contract.sample.sql} +0 -0
- /package/assets/init/.qfai/assistant/skills/{qfai-spec/templates/contracts/ui-0001-sample.yaml → qfai-sdd/templates/contracts/ui-contract.sample.yaml} +0 -0
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@ npx qfai report
|
|
|
31
31
|
## What you can do (CLI commands)
|
|
32
32
|
|
|
33
33
|
- `npx qfai init`
|
|
34
|
-
- Creates the QFAI workspace under `.qfai/` (requirements/specs/contracts/report) and installs the AI assistant kit (`assistant/` with skills, instructions, agents, and steering templates), plus
|
|
34
|
+
- Creates the QFAI workspace under `.qfai/` (requirements/specs/contracts/report) and installs the AI assistant kit (`assistant/` with skills, instructions, agents, and steering templates), plus `qfai.config.yaml`.
|
|
35
35
|
- `npx qfai validate`
|
|
36
36
|
- Validates specs/contracts/scenarios/traceability and writes `.qfai/report/validate.json`; use `--fail-on error` (or `--fail-on warning`) to turn it into a CI gate, and `--format github` to emit GitHub-friendly annotations. Use `--phase refinement` only for local refinement checks; CI should use default/full validation.
|
|
37
37
|
- `npx qfai report`
|
|
@@ -42,7 +42,7 @@ npx qfai report
|
|
|
42
42
|
## Operating model (skills-driven workflow)
|
|
43
43
|
|
|
44
44
|
QFAI assumes you operate the project primarily via prepared custom skills.
|
|
45
|
-
A custom skill is a reusable task instruction set for your AI coding agent
|
|
45
|
+
A custom skill is a reusable task instruction set for your AI coding agent.
|
|
46
46
|
The agent reads QFAI assets under `.qfai/assistant/` and produces or updates SDD/ATDD/TDD artifacts and code.
|
|
47
47
|
|
|
48
48
|
### Where the skills live
|
|
@@ -58,12 +58,12 @@ QFAI includes a small set of custom skills (stored under `.qfai/assistant/skills
|
|
|
58
58
|
- **qfai-discuss**: Turn an idea into clear requirements by discussing scope, constraints, risks, and open questions.
|
|
59
59
|
- **qfai-require**: Produce `.qfai/require/REQUIRE-XXXX/*` from your idea or discussion output.
|
|
60
60
|
- **qfai-sdd**: Produce/update the full spec pack (`01_Spec.md` to `18_delta.md`) in one workflow (Outline -> Slice -> Plan finalize -> Delta).
|
|
61
|
-
- **qfai-
|
|
62
|
-
- **qfai-
|
|
63
|
-
- **qfai-
|
|
64
|
-
- **qfai-
|
|
65
|
-
- **qfai-
|
|
66
|
-
- **qfai-
|
|
61
|
+
- **qfai-prototyping**: Build a contract-aligned skeleton implementation before deep coding.
|
|
62
|
+
- **qfai-atdd**: Implement acceptance tests driven by specs/scenarios.
|
|
63
|
+
- **qfai-tdd-red**: Add failing unit/component tests from the approved acceptance scenarios.
|
|
64
|
+
- **qfai-tdd-green**: Implement production code to satisfy failing tests.
|
|
65
|
+
- **qfai-tdd-refactor**: Refactor while keeping all tests green.
|
|
66
|
+
- **qfai-verify**: Run/interpret the local quality gates and produce a release-ready summary.
|
|
67
67
|
|
|
68
68
|
### Workflow sequence (example)
|
|
69
69
|
|
|
@@ -100,24 +100,39 @@ AG->>Q: Read .qfai/assistant/skills/qfai-sdd/SKILL.md
|
|
|
100
100
|
AG->>R: Create/refine spec pack (01..18) + contracts + 17_Plan.md
|
|
101
101
|
AG-->>U: SDD artifacts ready
|
|
102
102
|
|
|
103
|
-
U->>AG: Run /qfai-
|
|
104
|
-
AG->>Q: Read .qfai/assistant/skills/qfai-
|
|
103
|
+
U->>AG: Run /qfai-prototyping
|
|
104
|
+
AG->>Q: Read .qfai/assistant/skills/qfai-prototyping/SKILL.md
|
|
105
|
+
AG->>R: Build contract-aligned implementation skeleton
|
|
106
|
+
AG-->>U: Prototype ready
|
|
107
|
+
|
|
108
|
+
U->>AG: Run /qfai-atdd
|
|
109
|
+
AG->>Q: Read .qfai/assistant/skills/qfai-atdd/SKILL.md
|
|
105
110
|
AG->>R: Implement acceptance tests
|
|
106
|
-
AG-->>U:
|
|
111
|
+
AG-->>U: ATDD tests ready
|
|
107
112
|
|
|
108
|
-
U->>AG: Run /qfai-
|
|
109
|
-
AG->>Q: Read .qfai/assistant/skills/qfai-
|
|
110
|
-
AG->>R:
|
|
111
|
-
AG-->>U:
|
|
113
|
+
U->>AG: Run /qfai-tdd-red
|
|
114
|
+
AG->>Q: Read .qfai/assistant/skills/qfai-tdd-red/SKILL.md
|
|
115
|
+
AG->>R: Add failing unit/component tests
|
|
116
|
+
AG-->>U: RED state ready
|
|
112
117
|
|
|
113
|
-
U->>AG: Run /qfai-
|
|
114
|
-
AG->>Q: Read .qfai/assistant/skills/qfai-
|
|
118
|
+
U->>AG: Run /qfai-tdd-green
|
|
119
|
+
AG->>Q: Read .qfai/assistant/skills/qfai-tdd-green/SKILL.md
|
|
115
120
|
loop Implement and fix until green
|
|
116
121
|
AG->>R: Implement code changes
|
|
117
122
|
AG->>R: Run project tests locally
|
|
118
123
|
end
|
|
119
124
|
AG-->>U: Working implementation (quality gates passing)
|
|
120
125
|
|
|
126
|
+
U->>AG: Run /qfai-tdd-refactor
|
|
127
|
+
AG->>Q: Read .qfai/assistant/skills/qfai-tdd-refactor/SKILL.md
|
|
128
|
+
AG->>R: Refactor with tests green
|
|
129
|
+
AG-->>U: Refactor complete
|
|
130
|
+
|
|
131
|
+
U->>AG: Run /qfai-verify
|
|
132
|
+
AG->>Q: Read .qfai/assistant/skills/qfai-verify/SKILL.md
|
|
133
|
+
AG->>R: Run quality gates and summarize evidence
|
|
134
|
+
AG-->>U: Verification summary ready
|
|
135
|
+
|
|
121
136
|
U->>R: Run npx qfai validate
|
|
122
137
|
U->>R: Run npx qfai report
|
|
123
138
|
R-->>U: Traceability checks and report artifacts
|
|
@@ -192,7 +207,7 @@ flowchart LR
|
|
|
192
207
|
- Contracts SSOT: `.qfai/contracts/**`
|
|
193
208
|
- Report outputs (`.qfai/report/**`) are derived artifacts and not SSOT.
|
|
194
209
|
|
|
195
|
-
## Minimal tutorial (v1.4.
|
|
210
|
+
## Minimal tutorial (v1.4.8)
|
|
196
211
|
|
|
197
212
|
1. `npx qfai init`
|
|
198
213
|
2. Run `/qfai-discuss` to structure scope and open questions.
|
|
@@ -216,17 +231,22 @@ Release gate behavior:
|
|
|
216
231
|
- Q: release_candidate validation fails due open questions.
|
|
217
232
|
- A: In `15_Open-questions.md`, change `status: open` to `resolved` or `deferred` and keep evidence.
|
|
218
233
|
|
|
219
|
-
## Continuous integration
|
|
234
|
+
## Continuous integration
|
|
220
235
|
|
|
221
|
-
|
|
236
|
+
QFAI v1.4.8 no longer generates `.github/**` assets.
|
|
237
|
+
Configure CI in your own platform and run:
|
|
222
238
|
|
|
223
|
-
|
|
239
|
+
```bash
|
|
240
|
+
pnpm ci:local
|
|
241
|
+
# or, minimum gate only:
|
|
242
|
+
npx qfai validate --fail-on error
|
|
243
|
+
```
|
|
224
244
|
|
|
225
|
-
|
|
245
|
+
Recommended baseline.
|
|
226
246
|
|
|
227
|
-
- The generated workflow is npm-oriented (`npm ci`); if your repository uses pnpm/yarn/bun, replace the install/cache steps accordingly.
|
|
228
|
-
- The default validate gate fails only on `error`; use `--fail-on warning` or `--strict` if you want a stricter gate.
|
|
229
247
|
- Keep CI on default/full validation (`qfai validate --fail-on error`); do not use `--phase refinement` in CI.
|
|
248
|
+
- Add a report step (`npx qfai report`) when you need a human-readable artifact.
|
|
249
|
+
- Tune traceability globs in `qfai.config.yaml` to match your test layout.
|
|
230
250
|
|
|
231
251
|
Waiver policy.
|
|
232
252
|
|
|
@@ -237,9 +257,8 @@ Waiver policy.
|
|
|
237
257
|
|
|
238
258
|
Typical customizations.
|
|
239
259
|
|
|
240
|
-
- Add a second job to generate `report.md` from the uploaded `validate.json`.
|
|
241
260
|
- Add a `doctor` step before validate if you want to fail fast on path/glob/config issues.
|
|
242
|
-
-
|
|
261
|
+
- Publish `.qfai/report/validate.json` and `report.md` as CI artifacts.
|
|
243
262
|
|
|
244
263
|
## Generated structure
|
|
245
264
|
|
|
@@ -247,50 +266,6 @@ Typical customizations.
|
|
|
247
266
|
|
|
248
267
|
```text
|
|
249
268
|
.
|
|
250
|
-
├── .claude
|
|
251
|
-
│ └── skills
|
|
252
|
-
│ ├── qfai-configure
|
|
253
|
-
│ │ └── SKILL.md
|
|
254
|
-
│ ├── qfai-discuss
|
|
255
|
-
│ │ └── SKILL.md
|
|
256
|
-
│ ├── qfai-require
|
|
257
|
-
│ │ └── SKILL.md
|
|
258
|
-
│ └── ...
|
|
259
|
-
├── .codex
|
|
260
|
-
│ └── skills
|
|
261
|
-
│ ├── qfai-configure
|
|
262
|
-
│ │ └── SKILL.md
|
|
263
|
-
│ ├── qfai-discuss
|
|
264
|
-
│ │ └── SKILL.md
|
|
265
|
-
│ ├── qfai-implement
|
|
266
|
-
│ │ └── SKILL.md
|
|
267
|
-
│ ├── qfai-pr
|
|
268
|
-
│ │ └── SKILL.md
|
|
269
|
-
│ ├── qfai-require
|
|
270
|
-
│ │ └── SKILL.md
|
|
271
|
-
│ ├── qfai-scenario-test
|
|
272
|
-
│ │ └── SKILL.md
|
|
273
|
-
│ ├── qfai-sdd
|
|
274
|
-
│ │ └── SKILL.md
|
|
275
|
-
│ ├── qfai-spec
|
|
276
|
-
│ │ └── SKILL.md
|
|
277
|
-
│ ├── qfai-unit-test
|
|
278
|
-
│ │ └── SKILL.md
|
|
279
|
-
│ └── qfai-verify
|
|
280
|
-
│ └── SKILL.md
|
|
281
|
-
├── .github
|
|
282
|
-
│ ├── skills
|
|
283
|
-
│ │ ├── qfai-configure
|
|
284
|
-
│ │ │ └── SKILL.md
|
|
285
|
-
│ │ ├── qfai-discuss
|
|
286
|
-
│ │ │ └── SKILL.md
|
|
287
|
-
│ │ ├── qfai-require
|
|
288
|
-
│ │ │ └── SKILL.md
|
|
289
|
-
│ │ └── ...
|
|
290
|
-
│ ├── workflows
|
|
291
|
-
│ │ └── qfai.yml
|
|
292
|
-
│ ├── copilot-instructions.md
|
|
293
|
-
│ └── PULL_REQUEST_TEMPLATE.md
|
|
294
269
|
├── .qfai
|
|
295
270
|
│ ├── assistant
|
|
296
271
|
│ │ ├── agents
|
|
@@ -320,9 +295,22 @@ Typical customizations.
|
|
|
320
295
|
│ │ │ │ └── SKILL.md
|
|
321
296
|
│ │ │ ├── qfai-discuss
|
|
322
297
|
│ │ │ │ └── SKILL.md
|
|
298
|
+
│ │ │ ├── qfai-prototyping
|
|
299
|
+
│ │ │ │ └── SKILL.md
|
|
323
300
|
│ │ │ ├── qfai-require
|
|
324
301
|
│ │ │ │ └── SKILL.md
|
|
325
|
-
│ │ │
|
|
302
|
+
│ │ │ ├── qfai-sdd
|
|
303
|
+
│ │ │ │ └── SKILL.md
|
|
304
|
+
│ │ │ ├── qfai-atdd
|
|
305
|
+
│ │ │ │ └── SKILL.md
|
|
306
|
+
│ │ │ ├── qfai-tdd-red
|
|
307
|
+
│ │ │ │ └── SKILL.md
|
|
308
|
+
│ │ │ ├── qfai-tdd-green
|
|
309
|
+
│ │ │ │ └── SKILL.md
|
|
310
|
+
│ │ │ ├── qfai-tdd-refactor
|
|
311
|
+
│ │ │ │ └── SKILL.md
|
|
312
|
+
│ │ │ └── qfai-verify
|
|
313
|
+
│ │ │ └── SKILL.md
|
|
326
314
|
│ │ ├── skills.local
|
|
327
315
|
│ │ │ └── README.md
|
|
328
316
|
│ │ ├── steering
|
|
@@ -353,27 +341,17 @@ Typical customizations.
|
|
|
353
341
|
│ │ │ ├── 00_Summary.md
|
|
354
342
|
│ │ │ ├── ...
|
|
355
343
|
│ │ │ └── 07_Open-questions.md
|
|
356
|
-
│ │
|
|
357
|
-
│ │ ├── actors.md # legacy compatibility
|
|
358
|
-
│ │ ├── business-flows.md # legacy compatibility
|
|
359
|
-
│ │ ├── require.md # legacy compatibility
|
|
360
|
-
│ │ └── open-questions.md # legacy compatibility
|
|
344
|
+
│ │ └── README.md
|
|
361
345
|
│ ├── specs
|
|
362
346
|
│ │ └── README.md
|
|
363
347
|
│ └── README.md
|
|
364
348
|
└── qfai.config.yaml
|
|
365
349
|
```
|
|
366
350
|
|
|
367
|
-
## Agent integrations
|
|
368
|
-
|
|
369
|
-
`npx qfai init` also installs lightweight integration stubs so your AI coding agent can invoke QFAI custom skills directly.
|
|
370
|
-
|
|
371
|
-
- **GitHub Copilot Agent skills**: `.github/skills/*/SKILL.md`.
|
|
372
|
-
- **GitHub Copilot repository instructions**: `.github/copilot-instructions.md` (baseline behavior guidance for Copilot in this repo).
|
|
373
|
-
- **Claude Code skills**: `.claude/skills/*/SKILL.md`.
|
|
374
|
-
- **OpenAI Codex skills**: `.codex/skills/*/SKILL.md` (invoke as Codex skills; each skill points to the canonical QFAI skill doc).
|
|
351
|
+
## Agent integrations
|
|
375
352
|
|
|
376
|
-
|
|
353
|
+
`npx qfai init` installs only canonical skills under `.qfai/assistant/skills/**`.
|
|
354
|
+
If your toolchain needs wrapper files, manage them in your own repository convention and keep `.qfai/assistant/skills/**` as SSOT.
|
|
377
355
|
|
|
378
356
|
## Contributing (for QFAI maintainers)
|
|
379
357
|
|
|
@@ -88,12 +88,12 @@ It is useful for local review but should not pollute version control.
|
|
|
88
88
|
### R5. init is an empty scaffold
|
|
89
89
|
|
|
90
90
|
- `qfai init` creates README-centric directories for `discuss`, `require`, `contracts`, and `specs`.
|
|
91
|
-
- Sample artifacts are provided under skill templates (for example, `assistant/skills/qfai-
|
|
91
|
+
- Sample artifacts are provided under skill templates (for example, `assistant/skills/qfai-sdd/templates/contracts/`).
|
|
92
92
|
|
|
93
93
|
## Skills (SSOT)
|
|
94
94
|
|
|
95
95
|
`assistant/skills/**` is the canonical source.
|
|
96
|
-
|
|
96
|
+
Invoke canonical skills from this tree directly.
|
|
97
97
|
|
|
98
98
|
## Where to look next
|
|
99
99
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
QFAI standardizes work into a fixed pipeline:
|
|
4
4
|
|
|
5
|
-
**SDD → ATDD → TDD →
|
|
5
|
+
**SDD → ATDD → TDD → Verification**
|
|
6
6
|
|
|
7
7
|
This file defines the canonical stages and delegation expectations.
|
|
8
8
|
|
|
@@ -50,14 +50,14 @@ Do not proceed without a declared Change Type.
|
|
|
50
50
|
1. Discussion (optional): clarify idea → requirement seed
|
|
51
51
|
2. Requirements: requirements document in `.qfai/require/`
|
|
52
52
|
3. Specification (SDD): `.qfai/specs/spec-XXXX/`
|
|
53
|
-
4.
|
|
54
|
-
5.
|
|
55
|
-
6.
|
|
53
|
+
4. Prototyping (optional): contract-aligned implementation skeleton
|
|
54
|
+
5. Scenario tests (ATDD): runnable scenario tests derived from `scenario.feature`
|
|
55
|
+
6. TDD: red/green/refactor loop enforcing spec + tests
|
|
56
56
|
7. Verify: run quality gates and provide evidence
|
|
57
57
|
|
|
58
58
|
### Stage 0 — Steering refresh contract (mandatory)
|
|
59
59
|
|
|
60
|
-
At the beginning of each stage (`qfai-discuss`, `qfai-require`, `qfai-sdd`, `qfai-
|
|
60
|
+
At the beginning of each stage (`qfai-discuss`, `qfai-require`, `qfai-sdd`, `qfai-prototyping`, `qfai-atdd`, `qfai-tdd-*`, `qfai-verify`):
|
|
61
61
|
|
|
62
62
|
1. Check these steering files:
|
|
63
63
|
- `.qfai/assistant/steering/manifest.md`
|
|
@@ -161,6 +161,7 @@ Rules:
|
|
|
161
161
|
- This is the unified SDD skill. Do not split work into deprecated refinement/planning skills.
|
|
162
162
|
- Use only skill-local templates:
|
|
163
163
|
- `.qfai/assistant/skills/qfai-sdd/templates/spec-pack/`
|
|
164
|
+
- `.qfai/assistant/skills/qfai-sdd/templates/contracts/`
|
|
164
165
|
- Scenario specification in `09_Examples.feature` is strict:
|
|
165
166
|
- exactly one `Feature:`
|
|
166
167
|
- one or more tagged `Scenario:`
|
|
@@ -347,5 +348,7 @@ When this skill is complete, provide a final user-facing completion message and
|
|
|
347
348
|
Action: build contract-aligned skeleton implementation before deeper coding.
|
|
348
349
|
- Test-first path: `/qfai-atdd`.
|
|
349
350
|
Action: implement acceptance tests from the finalized spec pack.
|
|
351
|
+
- Want to add contracts:
|
|
352
|
+
Action: create files under `.qfai/contracts/(api|db|ui)/` from `templates/contracts/*` and declare `QFAI-CONTRACT-ID`.
|
|
350
353
|
- Spec pack needs correction: rerun `/qfai-sdd`.
|
|
351
354
|
Action: fix `01..18` consistency and decision records, then regenerate evidence.
|
|
@@ -524,8 +524,8 @@ When you declare DONE, include:
|
|
|
524
524
|
|
|
525
525
|
When this skill is complete, provide a final user-facing completion message and enumerate all actionable next steps.
|
|
526
526
|
|
|
527
|
-
- Proceed (recommended):
|
|
528
|
-
Action:
|
|
527
|
+
- Proceed (recommended): Create a PR on your hosting platform.
|
|
528
|
+
Action: use the verified evidence to write the PR description.
|
|
529
529
|
- Any gate failed:
|
|
530
530
|
Action: return to the owning skill, fix the issue, then rerun `/qfai-verify`.
|
|
531
531
|
- Need a report artifact:
|
package/dist/cli/index.cjs
CHANGED
|
@@ -1218,8 +1218,8 @@ var import_promises7 = require("fs/promises");
|
|
|
1218
1218
|
var import_node_path8 = __toESM(require("path"), 1);
|
|
1219
1219
|
var import_node_url2 = require("url");
|
|
1220
1220
|
async function resolveToolVersion() {
|
|
1221
|
-
if ("1.4.
|
|
1222
|
-
return "1.4.
|
|
1221
|
+
if ("1.4.8".length > 0) {
|
|
1222
|
+
return "1.4.8";
|
|
1223
1223
|
}
|
|
1224
1224
|
try {
|
|
1225
1225
|
const packagePath = resolvePackageJsonPath();
|
|
@@ -2404,14 +2404,13 @@ async function runInit(options) {
|
|
|
2404
2404
|
const destQfai = import_node_path14.default.join(destRoot, ".qfai");
|
|
2405
2405
|
if (options.force) {
|
|
2406
2406
|
info(
|
|
2407
|
-
"NOTE: --force \u306F .qfai/assistant/skills/** \
|
|
2407
|
+
"NOTE: --force \u306F .qfai/assistant/skills/** \u3092\u4E0A\u66F8\u304D\u3057\u3001legacy 10_workflow.md \u3092\u524A\u9664\u3057\u307E\u3059\uFF08skills.local \u306F\u4FDD\u8B77\u3055\u308C\u3001specs/contracts \u7B49\u306F\u4E0A\u66F8\u304D\u3057\u307E\u305B\u3093\uFF09\u3002"
|
|
2408
2408
|
);
|
|
2409
2409
|
}
|
|
2410
2410
|
const rootResult = await copyTemplateTree(rootAssets, destRoot, {
|
|
2411
2411
|
force: false,
|
|
2412
2412
|
dryRun: options.dryRun,
|
|
2413
|
-
conflictPolicy: "skip"
|
|
2414
|
-
exclude: [".claude/skills", ".github/skills", ".codex/skills"]
|
|
2413
|
+
conflictPolicy: "skip"
|
|
2415
2414
|
});
|
|
2416
2415
|
const qfaiResult = await copyTemplateTree(qfaiAssets, destQfai, {
|
|
2417
2416
|
force: false,
|
|
@@ -2431,30 +2430,10 @@ async function runInit(options) {
|
|
|
2431
2430
|
protect: ["assistant/skills.local"]
|
|
2432
2431
|
}
|
|
2433
2432
|
);
|
|
2434
|
-
const publishedSkillsResult = await copyTemplatePaths(
|
|
2435
|
-
rootAssets,
|
|
2436
|
-
destRoot,
|
|
2437
|
-
[".claude/skills", ".github/skills", ".codex/skills"],
|
|
2438
|
-
{
|
|
2439
|
-
force: options.force,
|
|
2440
|
-
dryRun: options.dryRun,
|
|
2441
|
-
conflictPolicy: "skip"
|
|
2442
|
-
}
|
|
2443
|
-
);
|
|
2444
2433
|
const removedLegacySkills = options.force ? await pruneLegacySkillFiles(destRoot, options.dryRun) : [];
|
|
2445
2434
|
report(
|
|
2446
|
-
[
|
|
2447
|
-
|
|
2448
|
-
...qfaiResult.copied,
|
|
2449
|
-
...skillsResult.copied,
|
|
2450
|
-
...publishedSkillsResult.copied
|
|
2451
|
-
],
|
|
2452
|
-
[
|
|
2453
|
-
...rootResult.skipped,
|
|
2454
|
-
...qfaiResult.skipped,
|
|
2455
|
-
...skillsResult.skipped,
|
|
2456
|
-
...publishedSkillsResult.skipped
|
|
2457
|
-
],
|
|
2435
|
+
[...rootResult.copied, ...qfaiResult.copied, ...skillsResult.copied],
|
|
2436
|
+
[...rootResult.skipped, ...qfaiResult.skipped, ...skillsResult.skipped],
|
|
2458
2437
|
removedLegacySkills,
|
|
2459
2438
|
options.dryRun,
|
|
2460
2439
|
"init",
|
|
@@ -2486,12 +2465,7 @@ function report(copied, skipped, removed, dryRun, label, baseDir) {
|
|
|
2486
2465
|
}
|
|
2487
2466
|
}
|
|
2488
2467
|
async function pruneLegacySkillFiles(destRoot, dryRun) {
|
|
2489
|
-
const roots = [
|
|
2490
|
-
import_node_path14.default.join(destRoot, ".qfai", "assistant", "skills"),
|
|
2491
|
-
import_node_path14.default.join(destRoot, ".claude", "skills"),
|
|
2492
|
-
import_node_path14.default.join(destRoot, ".github", "skills"),
|
|
2493
|
-
import_node_path14.default.join(destRoot, ".codex", "skills")
|
|
2494
|
-
];
|
|
2468
|
+
const roots = [import_node_path14.default.join(destRoot, ".qfai", "assistant", "skills")];
|
|
2495
2469
|
const legacyFiles = [];
|
|
2496
2470
|
for (const root of roots) {
|
|
2497
2471
|
const found = await collectLegacyWorkflowFiles(root);
|