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.
Files changed (142) hide show
  1. package/README.md +63 -85
  2. package/assets/init/.qfai/README.md +2 -2
  3. package/assets/init/.qfai/assistant/instructions/workflow.md +5 -5
  4. package/assets/init/.qfai/assistant/skills/qfai-sdd/SKILL.md +3 -0
  5. package/assets/init/.qfai/assistant/skills/qfai-verify/SKILL.md +2 -2
  6. package/dist/cli/index.cjs +7 -33
  7. package/dist/cli/index.cjs.map +1 -1
  8. package/dist/cli/index.mjs +7 -33
  9. package/dist/cli/index.mjs.map +1 -1
  10. package/dist/index.cjs +2 -2
  11. package/dist/index.mjs +2 -2
  12. package/package.json +1 -1
  13. package/assets/init/.qfai/assistant/skills/qfai-implement/SKILL.md +0 -223
  14. package/assets/init/.qfai/assistant/skills/qfai-pr/SKILL.md +0 -209
  15. package/assets/init/.qfai/assistant/skills/qfai-scenario-test/SKILL.md +0 -215
  16. package/assets/init/.qfai/assistant/skills/qfai-spec/SKILL.md +0 -166
  17. package/assets/init/.qfai/assistant/skills/qfai-unit-test/SKILL.md +0 -218
  18. package/assets/init/root/.claude/agents/README.md +0 -10
  19. package/assets/init/root/.claude/agents/architect-reviewer.md +0 -17
  20. package/assets/init/root/.claude/agents/architect.md +0 -17
  21. package/assets/init/root/.claude/agents/atdd-api-implementer.md +0 -17
  22. package/assets/init/root/.claude/agents/atdd-e2e-implementer.md +0 -17
  23. package/assets/init/root/.claude/agents/atdd-integration-implementer.md +0 -17
  24. package/assets/init/root/.claude/agents/backend-engineer.md +0 -17
  25. package/assets/init/root/.claude/agents/backend-reviewer.md +0 -17
  26. package/assets/init/root/.claude/agents/code-reviewer.md +0 -17
  27. package/assets/init/root/.claude/agents/contract-designer.md +0 -17
  28. package/assets/init/root/.claude/agents/coverage-planner.md +0 -17
  29. package/assets/init/root/.claude/agents/design-owner.md +0 -17
  30. package/assets/init/root/.claude/agents/design-review-lead.md +0 -17
  31. package/assets/init/root/.claude/agents/devops-ci-engineer.md +0 -17
  32. package/assets/init/root/.claude/agents/doc-steward.md +0 -17
  33. package/assets/init/root/.claude/agents/facilitator.md +0 -17
  34. package/assets/init/root/.claude/agents/frontend-engineer.md +0 -17
  35. package/assets/init/root/.claude/agents/frontend-reviewer.md +0 -17
  36. package/assets/init/root/.claude/agents/interviewer.md +0 -17
  37. package/assets/init/root/.claude/agents/option-explorer.md +0 -17
  38. package/assets/init/root/.claude/agents/option-reviewer.md +0 -17
  39. package/assets/init/root/.claude/agents/oq-harvester.md +0 -17
  40. package/assets/init/root/.claude/agents/oq-reviewer.md +0 -17
  41. package/assets/init/root/.claude/agents/orchestrator.md +0 -17
  42. package/assets/init/root/.claude/agents/planner.md +0 -17
  43. package/assets/init/root/.claude/agents/project-lead.md +0 -17
  44. package/assets/init/root/.claude/agents/qa-engineer.md +0 -17
  45. package/assets/init/root/.claude/agents/qa-gatekeeper.md +0 -17
  46. package/assets/init/root/.claude/agents/qa-lead.md +0 -17
  47. package/assets/init/root/.claude/agents/qa-reviewer.md +0 -17
  48. package/assets/init/root/.claude/agents/requirements-analyst.md +0 -17
  49. package/assets/init/root/.claude/agents/researcher.md +0 -17
  50. package/assets/init/root/.claude/agents/reviewer.md +0 -17
  51. package/assets/init/root/.claude/agents/runtime-gatekeeper.md +0 -17
  52. package/assets/init/root/.claude/agents/test-case-owner.md +0 -17
  53. package/assets/init/root/.claude/agents/test-engineer.md +0 -17
  54. package/assets/init/root/.claude/agents/test-volume-estimator.md +0 -17
  55. package/assets/init/root/.claude/agents/ui-ux-reviewer.md +0 -17
  56. package/assets/init/root/.claude/agents/unit-test-scope-enforcer.md +0 -17
  57. package/assets/init/root/.claude/skills/README.md +0 -11
  58. package/assets/init/root/.claude/skills/qfai-atdd/SKILL.md +0 -52
  59. package/assets/init/root/.claude/skills/qfai-configure/SKILL.md +0 -52
  60. package/assets/init/root/.claude/skills/qfai-discuss/SKILL.md +0 -52
  61. package/assets/init/root/.claude/skills/qfai-implement/SKILL.md +0 -52
  62. package/assets/init/root/.claude/skills/qfai-pr/SKILL.md +0 -52
  63. package/assets/init/root/.claude/skills/qfai-prototyping/SKILL.md +0 -52
  64. package/assets/init/root/.claude/skills/qfai-require/SKILL.md +0 -52
  65. package/assets/init/root/.claude/skills/qfai-scenario-test/SKILL.md +0 -52
  66. package/assets/init/root/.claude/skills/qfai-sdd/SKILL.md +0 -52
  67. package/assets/init/root/.claude/skills/qfai-spec/SKILL.md +0 -55
  68. package/assets/init/root/.claude/skills/qfai-tdd-green/SKILL.md +0 -52
  69. package/assets/init/root/.claude/skills/qfai-tdd-red/SKILL.md +0 -52
  70. package/assets/init/root/.claude/skills/qfai-tdd-refactor/SKILL.md +0 -52
  71. package/assets/init/root/.claude/skills/qfai-unit-test/SKILL.md +0 -52
  72. package/assets/init/root/.claude/skills/qfai-verify/SKILL.md +0 -52
  73. package/assets/init/root/.codex/README.md +0 -17
  74. package/assets/init/root/.codex/skills/qfai-atdd/SKILL.md +0 -52
  75. package/assets/init/root/.codex/skills/qfai-configure/SKILL.md +0 -52
  76. package/assets/init/root/.codex/skills/qfai-discuss/SKILL.md +0 -52
  77. package/assets/init/root/.codex/skills/qfai-implement/SKILL.md +0 -52
  78. package/assets/init/root/.codex/skills/qfai-pr/SKILL.md +0 -52
  79. package/assets/init/root/.codex/skills/qfai-prototyping/SKILL.md +0 -52
  80. package/assets/init/root/.codex/skills/qfai-require/SKILL.md +0 -52
  81. package/assets/init/root/.codex/skills/qfai-scenario-test/SKILL.md +0 -52
  82. package/assets/init/root/.codex/skills/qfai-sdd/SKILL.md +0 -52
  83. package/assets/init/root/.codex/skills/qfai-spec/SKILL.md +0 -55
  84. package/assets/init/root/.codex/skills/qfai-tdd-green/SKILL.md +0 -52
  85. package/assets/init/root/.codex/skills/qfai-tdd-red/SKILL.md +0 -52
  86. package/assets/init/root/.codex/skills/qfai-tdd-refactor/SKILL.md +0 -52
  87. package/assets/init/root/.codex/skills/qfai-unit-test/SKILL.md +0 -52
  88. package/assets/init/root/.codex/skills/qfai-verify/SKILL.md +0 -52
  89. package/assets/init/root/.github/PULL_REQUEST_TEMPLATE.md +0 -71
  90. package/assets/init/root/.github/agents/README.md +0 -10
  91. package/assets/init/root/.github/agents/architect-reviewer.agent.md +0 -17
  92. package/assets/init/root/.github/agents/architect.agent.md +0 -17
  93. package/assets/init/root/.github/agents/backend-engineer.agent.md +0 -17
  94. package/assets/init/root/.github/agents/backend-reviewer.agent.md +0 -17
  95. package/assets/init/root/.github/agents/code-reviewer.agent.md +0 -17
  96. package/assets/init/root/.github/agents/contract-designer.agent.md +0 -17
  97. package/assets/init/root/.github/agents/coverage-planner.agent.md +0 -17
  98. package/assets/init/root/.github/agents/design-owner.agent.md +0 -17
  99. package/assets/init/root/.github/agents/design-review-lead.agent.md +0 -17
  100. package/assets/init/root/.github/agents/devops-ci-engineer.agent.md +0 -17
  101. package/assets/init/root/.github/agents/facilitator.agent.md +0 -17
  102. package/assets/init/root/.github/agents/frontend-engineer.agent.md +0 -17
  103. package/assets/init/root/.github/agents/frontend-reviewer.agent.md +0 -17
  104. package/assets/init/root/.github/agents/interviewer.agent.md +0 -17
  105. package/assets/init/root/.github/agents/option-explorer.agent.md +0 -17
  106. package/assets/init/root/.github/agents/option-reviewer.agent.md +0 -17
  107. package/assets/init/root/.github/agents/oq-harvester.agent.md +0 -17
  108. package/assets/init/root/.github/agents/oq-reviewer.agent.md +0 -17
  109. package/assets/init/root/.github/agents/planner.agent.md +0 -17
  110. package/assets/init/root/.github/agents/project-lead.agent.md +0 -17
  111. package/assets/init/root/.github/agents/qa-engineer.agent.md +0 -17
  112. package/assets/init/root/.github/agents/qa-gatekeeper.agent.md +0 -17
  113. package/assets/init/root/.github/agents/qa-lead.agent.md +0 -17
  114. package/assets/init/root/.github/agents/qa-reviewer.agent.md +0 -17
  115. package/assets/init/root/.github/agents/requirements-analyst.agent.md +0 -17
  116. package/assets/init/root/.github/agents/runtime-gatekeeper.agent.md +0 -17
  117. package/assets/init/root/.github/agents/test-case-owner.agent.md +0 -17
  118. package/assets/init/root/.github/agents/test-engineer.agent.md +0 -17
  119. package/assets/init/root/.github/agents/ui-ux-reviewer.agent.md +0 -17
  120. package/assets/init/root/.github/agents/unit-test-scope-enforcer.agent.md +0 -17
  121. package/assets/init/root/.github/copilot-instructions.md +0 -15
  122. package/assets/init/root/.github/skills/README.md +0 -11
  123. package/assets/init/root/.github/skills/qfai-atdd/SKILL.md +0 -52
  124. package/assets/init/root/.github/skills/qfai-configure/SKILL.md +0 -52
  125. package/assets/init/root/.github/skills/qfai-discuss/SKILL.md +0 -52
  126. package/assets/init/root/.github/skills/qfai-implement/SKILL.md +0 -52
  127. package/assets/init/root/.github/skills/qfai-pr/SKILL.md +0 -52
  128. package/assets/init/root/.github/skills/qfai-prototyping/SKILL.md +0 -52
  129. package/assets/init/root/.github/skills/qfai-require/SKILL.md +0 -52
  130. package/assets/init/root/.github/skills/qfai-scenario-test/SKILL.md +0 -52
  131. package/assets/init/root/.github/skills/qfai-sdd/SKILL.md +0 -52
  132. package/assets/init/root/.github/skills/qfai-spec/SKILL.md +0 -55
  133. package/assets/init/root/.github/skills/qfai-tdd-green/SKILL.md +0 -52
  134. package/assets/init/root/.github/skills/qfai-tdd-red/SKILL.md +0 -52
  135. package/assets/init/root/.github/skills/qfai-tdd-refactor/SKILL.md +0 -52
  136. package/assets/init/root/.github/skills/qfai-unit-test/SKILL.md +0 -52
  137. package/assets/init/root/.github/skills/qfai-verify/SKILL.md +0 -52
  138. package/assets/init/root/.github/workflows/qfai.yml +0 -20
  139. package/assets/init/root/features/spec-0001.feature +0 -20
  140. /package/assets/init/.qfai/assistant/skills/{qfai-spec/templates/contracts/api-0001-sample.yaml → qfai-sdd/templates/contracts/api-contract.sample.yaml} +0 -0
  141. /package/assets/init/.qfai/assistant/skills/{qfai-spec/templates/contracts/db-0001-sample.sql → qfai-sdd/templates/contracts/db-contract.sample.sql} +0 -0
  142. /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 a default GitHub Actions workflow and `qfai.config.yaml`.
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 (for example, IDE/CLI skill wrappers that link to canonical QFAI skills).
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-spec**: Deprecated alias of `qfai-sdd` for backward compatibility.
62
- - **qfai-scenario-test**: Implement acceptance tests (ATDD) driven by specs/scenarios.
63
- - **qfai-unit-test**: Implement unit tests (TDD) driven by specs/scenarios.
64
- - **qfai-implement**: Implement the feature; iterate test→fix until all quality gates are green.
65
- - **qfai-verify**: Run/interpret the local quality gates and produce a PR-ready summary.
66
- - **qfai-pr**: Draft a PR description aligned with the repository’s PR template.
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-scenario-test
104
- AG->>Q: Read .qfai/assistant/skills/qfai-scenario-test/SKILL.md
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: Scenario tests ready
111
+ AG-->>U: ATDD tests ready
107
112
 
108
- U->>AG: Run /qfai-unit-test
109
- AG->>Q: Read .qfai/assistant/skills/qfai-unit-test/SKILL.md
110
- AG->>R: Implement unit tests
111
- AG-->>U: Unit tests ready
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-implement
114
- AG->>Q: Read .qfai/assistant/skills/qfai-implement/SKILL.md
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.6)
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 (GitHub Actions)
234
+ ## Continuous integration
220
235
 
221
- (GitHub Actions)
236
+ QFAI v1.4.8 no longer generates `.github/**` assets.
237
+ Configure CI in your own platform and run:
222
238
 
223
- `npx qfai init` generates `.github/workflows/qfai.yml` which runs `npx qfai validate --fail-on error` on pull requests and on pushes to `main`, and uploads `.qfai/report/validate.json` as an artifact.
239
+ ```bash
240
+ pnpm ci:local
241
+ # or, minimum gate only:
242
+ npx qfai validate --fail-on error
243
+ ```
224
244
 
225
- What works out-of-the-box.
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
- - Tune traceability globs in `qfai.config.yaml` to match your test layout.
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
- │ │ ├── glossary.md # legacy compatibility
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 (Copilot / Claude Code / Codex)
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
- Each of these files is intentionally thin and forwards to the canonical source of truth under `.qfai/assistant/skills/**`.
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-spec/templates/contracts/`).
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
- Tool-specific wrappers (`.claude/skills`, `.github/skills`, `.codex/skills`) should point to this tree.
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 → Implementation → Verification**
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. Scenario tests (ATDD): runnable scenario tests derived from `scenario.feature`
54
- 5. Unit tests (TDD): runnable unit tests enforcing the spec
55
- 6. Implementation: implement to satisfy spec + tests
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-atdd`, `qfai-tdd-*`, `qfai-implement`, `qfai-verify`):
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): `/qfai-pr`.
528
- Action: draft the PR description with verified evidence.
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:
@@ -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.6".length > 0) {
1222
- return "1.4.6";
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/** \u3068 publish \u5148\uFF08.claude/.github/.codex \u306E skills\uFF09\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"
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
- ...rootResult.copied,
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);