qfai 1.0.4 → 1.0.6
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 +58 -67
- package/assets/init/.qfai/README.md +17 -76
- package/assets/init/.qfai/assistant/README.md +9 -0
- package/assets/init/.qfai/assistant/agents/README.md +36 -0
- package/assets/init/.qfai/assistant/agents/architect.md +73 -0
- package/assets/init/.qfai/assistant/agents/backend-engineer.md +73 -0
- package/assets/init/.qfai/assistant/agents/code-reviewer.md +73 -0
- package/assets/init/.qfai/assistant/agents/contract-designer.md +73 -0
- package/assets/init/.qfai/assistant/agents/devops-ci-engineer.md +73 -0
- package/assets/init/.qfai/assistant/agents/facilitator.md +74 -0
- package/assets/init/.qfai/assistant/agents/frontend-engineer.md +73 -0
- package/assets/init/.qfai/assistant/agents/interviewer.md +72 -0
- package/assets/init/.qfai/assistant/agents/planner.md +73 -0
- package/assets/init/.qfai/assistant/agents/qa-engineer.md +73 -0
- package/assets/init/.qfai/assistant/agents/requirements-analyst.md +73 -0
- package/assets/init/.qfai/assistant/agents/test-engineer.md +73 -0
- package/assets/init/.qfai/assistant/instructions/README.md +10 -0
- package/assets/init/.qfai/assistant/instructions/agent-selection.md +28 -0
- package/assets/init/.qfai/assistant/instructions/communication.md +27 -0
- package/assets/init/.qfai/assistant/instructions/constitution.md +131 -0
- package/assets/init/.qfai/assistant/instructions/quality.md +27 -0
- package/assets/init/.qfai/assistant/instructions/thinking.md +29 -0
- package/assets/init/.qfai/assistant/instructions/workflow.md +75 -0
- package/assets/init/.qfai/assistant/prompts/README.md +19 -0
- package/assets/init/.qfai/assistant/prompts/qfai-discuss.md +173 -0
- package/assets/init/.qfai/assistant/prompts/qfai-implement.md +230 -0
- package/assets/init/.qfai/assistant/prompts/qfai-pr.md +209 -0
- package/assets/init/.qfai/assistant/prompts/qfai-require.md +264 -0
- package/assets/init/.qfai/assistant/prompts/qfai-scenario-test.md +220 -0
- package/assets/init/.qfai/assistant/prompts/qfai-spec.md +291 -0
- package/assets/init/.qfai/assistant/prompts/qfai-unit-test.md +193 -0
- package/assets/init/.qfai/assistant/prompts/qfai-verify.md +222 -0
- package/assets/init/.qfai/assistant/prompts.local/README.md +8 -0
- package/assets/init/.qfai/assistant/steering/README.md +40 -0
- package/assets/init/.qfai/assistant/steering/product.md +32 -0
- package/assets/init/.qfai/assistant/steering/structure.md +34 -0
- package/assets/init/.qfai/assistant/steering/tech.md +37 -0
- package/assets/init/.qfai/contracts/README.md +7 -87
- package/assets/init/.qfai/contracts/api/README.md +8 -0
- package/assets/init/.qfai/contracts/db/README.md +25 -0
- package/assets/init/.qfai/contracts/ui/README.md +8 -0
- package/assets/init/.qfai/report/README.md +13 -0
- package/assets/init/.qfai/require/README.md +4 -26
- package/assets/init/.qfai/require/require.md +74 -0
- package/assets/init/.qfai/specs/README.md +7 -55
- package/assets/init/root/.github/workflows/qfai.yml +1 -1
- package/assets/init/root/qfai.config.yaml +3 -3
- package/dist/cli/index.cjs +306 -423
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.mjs +288 -405
- package/dist/cli/index.mjs.map +1 -1
- package/dist/index.cjs +29 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +29 -14
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/assets/init/.qfai/contracts/api/api-0001-sample.yaml +0 -15
- package/assets/init/.qfai/contracts/db/db-0001-sample.sql +0 -7
- package/assets/init/.qfai/contracts/ui/assets/thema-001-facebook-like/assets.yaml +0 -6
- package/assets/init/.qfai/contracts/ui/assets/thema-001-facebook-like/palette.png +0 -0
- package/assets/init/.qfai/contracts/ui/assets/ui-0001-sample/assets.yaml +0 -6
- package/assets/init/.qfai/contracts/ui/assets/ui-0001-sample/snapshots/login__desktop__light__default.png +0 -0
- package/assets/init/.qfai/contracts/ui/thema-001-facebook-like.yml +0 -13
- package/assets/init/.qfai/contracts/ui/ui-0001-sample.yaml +0 -17
- package/assets/init/.qfai/out/README.md +0 -17
- package/assets/init/.qfai/promptpack/commands/implement.md +0 -8
- package/assets/init/.qfai/promptpack/commands/plan.md +0 -11
- package/assets/init/.qfai/promptpack/commands/release.md +0 -6
- package/assets/init/.qfai/promptpack/commands/review.md +0 -6
- package/assets/init/.qfai/promptpack/constitution.md +0 -15
- package/assets/init/.qfai/promptpack/roles/qa.md +0 -4
- package/assets/init/.qfai/promptpack/roles/spec.md +0 -4
- package/assets/init/.qfai/promptpack/roles/test.md +0 -4
- package/assets/init/.qfai/promptpack/steering/naming.md +0 -7
- package/assets/init/.qfai/promptpack/steering/traceability.md +0 -25
- package/assets/init/.qfai/prompts/README.md +0 -68
- package/assets/init/.qfai/prompts/analyze/README.md +0 -21
- package/assets/init/.qfai/prompts/analyze/scenario_test_consistency.md +0 -8
- package/assets/init/.qfai/prompts/analyze/scenario_to_test.md +0 -56
- package/assets/init/.qfai/prompts/analyze/spec_contract_consistency.md +0 -8
- package/assets/init/.qfai/prompts/analyze/spec_scenario_consistency.md +0 -8
- package/assets/init/.qfai/prompts/analyze/spec_to_contract.md +0 -54
- package/assets/init/.qfai/prompts/analyze/spec_to_scenario.md +0 -56
- package/assets/init/.qfai/prompts/makeBusinessFlow.md +0 -34
- package/assets/init/.qfai/prompts/makeOverview.md +0 -27
- package/assets/init/.qfai/prompts/qfai-generate-test-globs.md +0 -29
- package/assets/init/.qfai/prompts/qfai-maintain-contracts.md +0 -35
- package/assets/init/.qfai/prompts/qfai-maintain-traceability.md +0 -36
- package/assets/init/.qfai/prompts/require-to-spec.md +0 -40
- package/assets/init/.qfai/prompts.local/README.md +0 -31
- package/assets/init/.qfai/specs/spec-0001/delta.md +0 -25
- package/assets/init/.qfai/specs/spec-0001/scenario.feature +0 -11
- package/assets/init/.qfai/specs/spec-0001/spec.md +0 -40
- package/assets/init/root/tests/qfai-traceability.sample.test.ts +0 -2
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# prompts.local/
|
|
2
|
+
|
|
3
|
+
Optional per-project overrides.
|
|
4
|
+
|
|
5
|
+
If a file with the same name exists here (e.g., `qfai-spec.md`), a tool wrapper may prefer it to customize behavior for this repo.
|
|
6
|
+
Keep overrides minimal; prefer updating steering/instructions instead.
|
|
7
|
+
|
|
8
|
+
Note: After `qfai init`, this folder contains only this README. Place an override file here only when you intentionally diverge from the SSOT prompt bodies.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# steering/
|
|
2
|
+
|
|
3
|
+
Project context for the AI. Keep these files up to date.
|
|
4
|
+
|
|
5
|
+
These are intentionally short and practical:
|
|
6
|
+
|
|
7
|
+
- `product.md` : what we are building and why
|
|
8
|
+
- `tech.md` : stack, versions, constraints
|
|
9
|
+
- `structure.md` : repo structure, key directories, how to run gates
|
|
10
|
+
|
|
11
|
+
QFAI prompts are expected to read these before producing deliverables.
|
|
12
|
+
|
|
13
|
+
## AI-managed policy (recommended)
|
|
14
|
+
|
|
15
|
+
These steering files are intended to be **filled and refreshed by the AI** (via QFAI custom prompts).
|
|
16
|
+
Humans may edit them, but the default workflow is:
|
|
17
|
+
|
|
18
|
+
- run a QFAI command (e.g., /qfai-require, /qfai-spec, /qfai-implement)
|
|
19
|
+
- the agent analyzes the repository and updates steering if placeholders exist
|
|
20
|
+
|
|
21
|
+
Guideline:
|
|
22
|
+
|
|
23
|
+
- do not invent facts; if unknown, write `TBD` with missing evidence
|
|
24
|
+
|
|
25
|
+
## Evidence-first writing (recommended)
|
|
26
|
+
|
|
27
|
+
Steering MUST be grounded in repo evidence. When possible, include:
|
|
28
|
+
|
|
29
|
+
- file paths (e.g., `package.json`, `.github/workflows/ci.yml`)
|
|
30
|
+
- commands (e.g., `pnpm -C packages/qfai test`)
|
|
31
|
+
- directory anchors (e.g., `packages/qfai/src/cli`)
|
|
32
|
+
|
|
33
|
+
If a fact cannot be verified, mark it as `TBD` and record what evidence is missing.
|
|
34
|
+
|
|
35
|
+
### Default AI-managed flow (recommended)
|
|
36
|
+
|
|
37
|
+
1. Run a QFAI command (e.g., `/qfai-require`, `/qfai-spec`, `/qfai-implement`).
|
|
38
|
+
2. The agent loads `steering/*` and fills missing placeholders from **repo evidence**.
|
|
39
|
+
3. If evidence is missing, write `TBD` and add an Open Question (what evidence is required).
|
|
40
|
+
4. Optionally, review changes via PR if your team requires human approval.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Product Steering
|
|
2
|
+
|
|
3
|
+
## What are we building?
|
|
4
|
+
|
|
5
|
+
- Summary:
|
|
6
|
+
- Evidence: (e.g., README, docs, issue links)
|
|
7
|
+
|
|
8
|
+
## Who is the user?
|
|
9
|
+
|
|
10
|
+
- Personas / roles:
|
|
11
|
+
- Evidence:
|
|
12
|
+
|
|
13
|
+
## What is “success”?
|
|
14
|
+
|
|
15
|
+
- Success metrics / acceptance definition:
|
|
16
|
+
- Evidence:
|
|
17
|
+
|
|
18
|
+
## Non-goals
|
|
19
|
+
|
|
20
|
+
-
|
|
21
|
+
- Evidence:
|
|
22
|
+
|
|
23
|
+
## Release posture
|
|
24
|
+
|
|
25
|
+
- Compatibility policy:
|
|
26
|
+
- Breaking change policy:
|
|
27
|
+
- Evidence:
|
|
28
|
+
|
|
29
|
+
## Open questions
|
|
30
|
+
|
|
31
|
+
- Blocking:
|
|
32
|
+
- Non-blocking:
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Structure Steering
|
|
2
|
+
|
|
3
|
+
## Repo layout (high level)
|
|
4
|
+
|
|
5
|
+
- Top-level directories:
|
|
6
|
+
- Evidence:
|
|
7
|
+
|
|
8
|
+
## Key packages / entrypoints
|
|
9
|
+
|
|
10
|
+
- Package(s) of interest:
|
|
11
|
+
- CLI entry:
|
|
12
|
+
- Core modules:
|
|
13
|
+
- Evidence:
|
|
14
|
+
|
|
15
|
+
## Architecture constraints
|
|
16
|
+
|
|
17
|
+
- Boundaries (what must not depend on what):
|
|
18
|
+
- Conventions (naming, file layout):
|
|
19
|
+
- Evidence:
|
|
20
|
+
|
|
21
|
+
## Quality gates (SSOT)
|
|
22
|
+
|
|
23
|
+
- format:
|
|
24
|
+
- lint:
|
|
25
|
+
- typecheck:
|
|
26
|
+
- test:
|
|
27
|
+
- verify-pack / pack:
|
|
28
|
+
- Evidence:
|
|
29
|
+
|
|
30
|
+
## How to run locally
|
|
31
|
+
|
|
32
|
+
Provide copy-paste commands and expected outputs.
|
|
33
|
+
|
|
34
|
+
- Evidence:
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Tech Steering
|
|
2
|
+
|
|
3
|
+
## Runtime / platform
|
|
4
|
+
|
|
5
|
+
- Node:
|
|
6
|
+
- Evidence:
|
|
7
|
+
- OS assumptions:
|
|
8
|
+
- Evidence:
|
|
9
|
+
- CI environment:
|
|
10
|
+
- Evidence:
|
|
11
|
+
|
|
12
|
+
## Package manager
|
|
13
|
+
|
|
14
|
+
- pnpm / npm / yarn:
|
|
15
|
+
- Evidence:
|
|
16
|
+
|
|
17
|
+
## Language / framework
|
|
18
|
+
|
|
19
|
+
- TypeScript:
|
|
20
|
+
- Build tool:
|
|
21
|
+
- Test runner:
|
|
22
|
+
- Lint / format:
|
|
23
|
+
- Evidence:
|
|
24
|
+
|
|
25
|
+
## Constraints
|
|
26
|
+
|
|
27
|
+
-
|
|
28
|
+
- Evidence:
|
|
29
|
+
|
|
30
|
+
## Standard commands (copy-paste)
|
|
31
|
+
|
|
32
|
+
- Install:
|
|
33
|
+
- Test:
|
|
34
|
+
- Lint:
|
|
35
|
+
- Typecheck:
|
|
36
|
+
- Pack/verify:
|
|
37
|
+
- Evidence:
|
|
@@ -1,91 +1,11 @@
|
|
|
1
|
-
#
|
|
1
|
+
# contracts/
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Contracts define stable interfaces and are referenced by specs/scenarios/tests.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Subfolders:
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
- DB: `db/db-0001-<slug>.sql`(ID は `DB-xxxx`)
|
|
11
|
-
- assets: `ui/assets/<contract-id>/assets.yaml`(参照整合のみ検証)
|
|
7
|
+
- `ui/` : UI contracts (YAML)
|
|
8
|
+
- `api/`: API contracts (YAML)
|
|
9
|
+
- `db/` : DB contracts (SQL / .sql)
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
- 1ファイル = 1ID
|
|
16
|
-
- 契約IDの正は契約ファイル側(`QFAI-CONTRACT-ID` が SSOT)
|
|
17
|
-
- ファイル内に `QFAI-CONTRACT-ID: <ID>` をコメント行で宣言する
|
|
18
|
-
- 例: `# QFAI-CONTRACT-ID: API-0001` / `// QFAI-CONTRACT-ID: UI-0001` / `-- QFAI-CONTRACT-ID: DB-0001`
|
|
19
|
-
|
|
20
|
-
## 最小例(UI)
|
|
21
|
-
|
|
22
|
-
```yaml
|
|
23
|
-
# QFAI-CONTRACT-ID: UI-0001
|
|
24
|
-
id: UI-0001
|
|
25
|
-
name: 受注登録画面
|
|
26
|
-
refs:
|
|
27
|
-
- BR-0001
|
|
28
|
-
themaRef: THEMA-001
|
|
29
|
-
assets:
|
|
30
|
-
pack: assets/ui-0001-sample
|
|
31
|
-
use:
|
|
32
|
-
- UI-0001.desktop.light.default
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
## 最小例(THEMA)
|
|
36
|
-
|
|
37
|
-
```yaml
|
|
38
|
-
# QFAI-CONTRACT-ID: THEMA-001
|
|
39
|
-
id: THEMA-001
|
|
40
|
-
name: facebook-like
|
|
41
|
-
tokens:
|
|
42
|
-
color:
|
|
43
|
-
background: "#FFFFFF"
|
|
44
|
-
textPrimary: "#111111"
|
|
45
|
-
accent: "#1877F2"
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## 最小例(API)
|
|
49
|
-
|
|
50
|
-
```yaml
|
|
51
|
-
# QFAI-CONTRACT-ID: API-0001
|
|
52
|
-
openapi: 3.0.0
|
|
53
|
-
info:
|
|
54
|
-
title: Sample API
|
|
55
|
-
version: 0.1.0
|
|
56
|
-
paths:
|
|
57
|
-
/health:
|
|
58
|
-
get:
|
|
59
|
-
operationId: API-0001
|
|
60
|
-
responses:
|
|
61
|
-
"200":
|
|
62
|
-
description: OK
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## 最小例(DB)
|
|
66
|
-
|
|
67
|
-
```sql
|
|
68
|
-
-- QFAI-CONTRACT-ID: DB-0001
|
|
69
|
-
CREATE TABLE sample_table (
|
|
70
|
-
id INTEGER PRIMARY KEY
|
|
71
|
-
);
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
## CI でチェックされること(抜粋)
|
|
75
|
-
|
|
76
|
-
- 契約宣言: `QFAI-CONTRACT-ID` の未記載/複数宣言/重複IDは error
|
|
77
|
-
- 契約ID: 配置ディレクトリ(ui/api/db)と prefix(UI/API/DB)の不整合は error
|
|
78
|
-
- UI/API: パース失敗は error
|
|
79
|
-
- API: OpenAPI 定義があること(`openapi`)
|
|
80
|
-
- DB: 危険 SQL(DROP/TRUNCATE 等)の警告
|
|
81
|
-
- 共通: ID 形式(`PREFIX-0001`)、ID の重複検知
|
|
82
|
-
|
|
83
|
-
## 依存関係
|
|
84
|
-
|
|
85
|
-
- Spec → Contracts(spec.md に `QFAI-CONTRACT-REF` を必ず1行以上宣言、0件は `none`。この行が SSOT)
|
|
86
|
-
- Scenario → Contracts(scenario.feature に `# QFAI-CONTRACT-REF` を必ず1行以上宣言、0件は `none`)
|
|
87
|
-
|
|
88
|
-
## 良い例 / 悪い例
|
|
89
|
-
|
|
90
|
-
- 良い例: Spec で契約を参照し、必要に応じて Scenario でも参照している
|
|
91
|
-
- 悪い例: Spec が契約を参照しておらず orphan contract が発生する(allowOrphanContracts=false で error)
|
|
11
|
+
Create contracts only when needed by the spec (keep minimal).
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# contracts/db/
|
|
2
|
+
|
|
3
|
+
Place **DB contracts** here as **SQL DDL files** (`.sql`).
|
|
4
|
+
|
|
5
|
+
## File naming
|
|
6
|
+
|
|
7
|
+
- `db-0001-<slug>.sql`
|
|
8
|
+
- Contract ID: `DB-0001` (4-digit fixed)
|
|
9
|
+
|
|
10
|
+
## Required header
|
|
11
|
+
|
|
12
|
+
Include the contract ID in the SQL header comments so QFAI can discover/index it:
|
|
13
|
+
|
|
14
|
+
```sql
|
|
15
|
+
-- QFAI-CONTRACT-ID: DB-0001
|
|
16
|
+
-- DB-0001 (short description)
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Guidelines
|
|
20
|
+
|
|
21
|
+
- Keep DB contracts minimal and spec-driven (only what scenarios/tests need).
|
|
22
|
+
- This directory is for the **contract/schema snapshot**, not migrations history.
|
|
23
|
+
- If your project uses an ORM schema (Prisma, etc.), decide one:
|
|
24
|
+
- (Recommended for v1.0.6) Keep a minimal `.sql` contract snapshot here, and link to the real schema in the spec.
|
|
25
|
+
- (Future) Add support for other schema formats via config (out of scope for v1.0.6).
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# report/
|
|
2
|
+
|
|
3
|
+
This directory is reserved for generated outputs.
|
|
4
|
+
|
|
5
|
+
Examples:
|
|
6
|
+
|
|
7
|
+
- `qfai report` output
|
|
8
|
+
- generated traceability reports
|
|
9
|
+
- diagnostic artifacts you choose to store
|
|
10
|
+
|
|
11
|
+
Recommended:
|
|
12
|
+
|
|
13
|
+
- commit policy is project-dependent (often: do NOT commit large generated files)
|
|
@@ -1,28 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# require/
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
QFAI は `.qfai/require/` を **入力(上流)** として扱い、ここに置かれた内容を根拠に Spec を作成します。
|
|
3
|
+
This folder contains the Requirements SSOT.
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
- `.qfai/require/req-0001-<slug>.md`
|
|
9
|
-
- `.qfai/require/links.md`(外部ドキュメントへのリンク集)
|
|
10
|
-
- `.qfai/require/raw/`(PDFや画像などの原本)
|
|
11
|
-
|
|
12
|
-
> 形式は限定しません。内容が参照可能であることを優先してください。
|
|
13
|
-
|
|
14
|
-
## 参照ルール(重要)
|
|
15
|
-
|
|
16
|
-
- `.qfai/require/` は **上流のSSOT** です。
|
|
17
|
-
- `.qfai/specs` や `contracts` は **.qfai/require を参照してよい**。
|
|
18
|
-
- `.qfai/require` 側から `.qfai/specs` や `contracts` を参照するのは **禁止**(循環参照防止)。
|
|
19
|
-
|
|
20
|
-
## AI プロンプトの利用
|
|
21
|
-
|
|
22
|
-
- `.qfai/prompts/require-to-spec.md` を使用し、要件から Spec を作成します。
|
|
23
|
-
- 生成後は必ず人間がレビューし、Spec/Scenario/Contracts の整合を確認してください。
|
|
24
|
-
|
|
25
|
-
## 注意
|
|
26
|
-
|
|
27
|
-
- `.qfai/require/` の内容は QFAI の validate 対象外です。
|
|
28
|
-
- 機密情報の取り扱いは各プロジェクトのルールに従ってください。
|
|
5
|
+
- `require.md` is the single-file requirements artifact.
|
|
6
|
+
- Keep requirements **testable** (EARS) and avoid implementation detail.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Requirements
|
|
2
|
+
|
|
3
|
+
> Fill this in using `/qfai-require`.
|
|
4
|
+
|
|
5
|
+
## 1. Overview
|
|
6
|
+
|
|
7
|
+
- Problem / opportunity:
|
|
8
|
+
- Target users:
|
|
9
|
+
- Success definition:
|
|
10
|
+
|
|
11
|
+
## 2. Scope
|
|
12
|
+
|
|
13
|
+
### In scope
|
|
14
|
+
|
|
15
|
+
-
|
|
16
|
+
|
|
17
|
+
### Out of scope
|
|
18
|
+
|
|
19
|
+
-
|
|
20
|
+
|
|
21
|
+
## 3. Constraints & Assumptions
|
|
22
|
+
|
|
23
|
+
### Constraints
|
|
24
|
+
|
|
25
|
+
-
|
|
26
|
+
|
|
27
|
+
### Assumptions
|
|
28
|
+
|
|
29
|
+
-
|
|
30
|
+
|
|
31
|
+
## 4. Glossary
|
|
32
|
+
|
|
33
|
+
-
|
|
34
|
+
|
|
35
|
+
## 5. Functional Requirements (EARS)
|
|
36
|
+
|
|
37
|
+
### REQ-FUNC-001: <title>
|
|
38
|
+
|
|
39
|
+
- Statement (EARS):
|
|
40
|
+
- Rationale:
|
|
41
|
+
- Acceptance criteria:
|
|
42
|
+
- Notes / edge cases:
|
|
43
|
+
|
|
44
|
+
## 6. Non‑Functional Requirements
|
|
45
|
+
|
|
46
|
+
### Security
|
|
47
|
+
|
|
48
|
+
-
|
|
49
|
+
|
|
50
|
+
### Performance
|
|
51
|
+
|
|
52
|
+
-
|
|
53
|
+
|
|
54
|
+
### Reliability / Availability
|
|
55
|
+
|
|
56
|
+
-
|
|
57
|
+
|
|
58
|
+
### Observability
|
|
59
|
+
|
|
60
|
+
-
|
|
61
|
+
|
|
62
|
+
## 7. Acceptance Criteria (summary)
|
|
63
|
+
|
|
64
|
+
-
|
|
65
|
+
|
|
66
|
+
## 8. Open Questions
|
|
67
|
+
|
|
68
|
+
### Blocking
|
|
69
|
+
|
|
70
|
+
-
|
|
71
|
+
|
|
72
|
+
### Non‑blocking
|
|
73
|
+
|
|
74
|
+
-
|
|
@@ -1,59 +1,11 @@
|
|
|
1
|
-
#
|
|
1
|
+
# specs/
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A **spec pack** lives under `specs/spec-XXXX/` and contains:
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
- `spec.md` : SDD spec (source of truth for behavior)
|
|
6
|
+
- `delta.md` : impact / migration / verification plan
|
|
7
|
+
- `scenario.feature` : Gherkin scenarios (ATDD skeleton)
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
- `spec-0001/delta.md`(必須)
|
|
9
|
-
- `spec-0001/scenario.feature`(必須・Gherkin)
|
|
9
|
+
Create/update spec packs with `/qfai-spec`.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
## Spec(spec.md)最小例
|
|
14
|
-
|
|
15
|
-
```md
|
|
16
|
-
# SPEC-0001: 注文登録の最小要件
|
|
17
|
-
|
|
18
|
-
QFAI-CONTRACT-REF: UI-0001, API-0001, DB-0001, THEMA-001
|
|
19
|
-
|
|
20
|
-
## 背景
|
|
21
|
-
|
|
22
|
-
- 例: 受注の登録ルールを明文化し、手戻りを減らすため
|
|
23
|
-
|
|
24
|
-
## 業務ルール
|
|
25
|
-
|
|
26
|
-
- [BR-0001][P2] 受注は承認者が承認するまで確定しない
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
### BR の書き方
|
|
30
|
-
|
|
31
|
-
- **1ルール = 1 BR** を守る
|
|
32
|
-
- Priority は **P0/P1/P2/P3** のいずれかを必ず付与
|
|
33
|
-
- BR 定義は **`## 業務ルール` セクション内のみ**(他セクションは参照扱い)
|
|
34
|
-
|
|
35
|
-
### Contract 参照の書き方
|
|
36
|
-
|
|
37
|
-
- `QFAI-CONTRACT-REF:` 行で契約IDを宣言する(複数行可)
|
|
38
|
-
- 参照不要な場合は `QFAI-CONTRACT-REF: none`
|
|
39
|
-
|
|
40
|
-
## Delta(delta.md)
|
|
41
|
-
|
|
42
|
-
- 変更の要約・根拠・影響範囲・受入観点を明記する
|
|
43
|
-
|
|
44
|
-
## Scenario(scenario.feature)最小要件
|
|
45
|
-
|
|
46
|
-
- **Gherkin 記法**(Given/When/Then)
|
|
47
|
-
- **1ファイル = 1 Scenario**(Scenario Outline 含む)
|
|
48
|
-
- `# QFAI-CONTRACT-REF: ...` をコメント行で **必須宣言**(参照なしは `none`)
|
|
49
|
-
- `@SPEC-xxxx` は Feature レベルに **ちょうど1つ**必要
|
|
50
|
-
- Scenario / Scenario Outline には `@SC-xxxx` が **ちょうど1つ**必要
|
|
51
|
-
- Scenario / Scenario Outline には `@BR-xxxx` が **1つ以上**必要
|
|
52
|
-
|
|
53
|
-
## CI でチェックされること(抜粋)
|
|
54
|
-
|
|
55
|
-
- Spec: 必須セクション、SPEC/BR ID、BR Priority、ID 形式、Contract 参照の実在性、Contract 参照の必須宣言
|
|
56
|
-
- Delta: delta.md の存在
|
|
57
|
-
- Scenario: Feature/Scenario の存在、タグ要件、Given/When/Then、契約参照の宣言/形式
|
|
58
|
-
- Traceability: BR→SC、Spec→Contract、SC→Test の接続、BR の所属 SPEC 整合
|
|
59
|
-
- IDs: 定義 ID の重複検知(Spec/Scenario/Contracts)
|
|
11
|
+
Note: After `qfai init`, this folder contains only this README. Spec packs (`spec-XXXX/`) are created by running `/qfai-spec`.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
paths:
|
|
2
2
|
specsDir: .qfai/specs
|
|
3
3
|
contractsDir: .qfai/contracts
|
|
4
|
-
outDir: .qfai/
|
|
5
|
-
promptsDir: .qfai/prompts
|
|
4
|
+
outDir: .qfai/report
|
|
5
|
+
promptsDir: .qfai/assistant/prompts
|
|
6
6
|
srcDir: src
|
|
7
7
|
testsDir: tests
|
|
8
8
|
validation:
|
|
@@ -29,4 +29,4 @@ validation:
|
|
|
29
29
|
orphanContractsPolicy: error
|
|
30
30
|
unknownContractIdSeverity: error
|
|
31
31
|
output:
|
|
32
|
-
validateJsonPath: .qfai/
|
|
32
|
+
validateJsonPath: .qfai/report/validate.json
|