qfai 1.0.1 → 1.0.3
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 +13 -3
- package/assets/init/.qfai/README.md +2 -2
- package/assets/init/.qfai/contracts/README.md +21 -1
- package/assets/init/.qfai/contracts/ui/assets/thema-001-facebook-like/assets.yaml +6 -0
- 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 +6 -0
- 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 +13 -0
- package/assets/init/.qfai/contracts/ui/ui-0001-sample.yaml +9 -0
- package/assets/init/.qfai/prompts/makeBusinessFlow.md +1 -1
- package/assets/init/.qfai/prompts/makeOverview.md +1 -1
- package/assets/init/.qfai/prompts/qfai-maintain-traceability.md +1 -1
- package/assets/init/.qfai/prompts/require-to-spec.md +2 -2
- package/assets/init/.qfai/samples/analyze/analysis.md +1 -1
- package/assets/init/.qfai/specs/README.md +3 -3
- package/assets/init/.qfai/specs/spec-0001/delta.md +1 -1
- package/assets/init/.qfai/specs/spec-0001/{scenario.md → scenario.feature} +1 -1
- package/assets/init/.qfai/specs/spec-0001/spec.md +1 -1
- package/dist/cli/index.cjs +589 -114
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.mjs +591 -116
- package/dist/cli/index.mjs.map +1 -1
- package/dist/index.cjs +542 -67
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.mjs +544 -69
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -79,7 +79,7 @@ QFAI が提供するプロンプト資産は次の 2 つに分離します。
|
|
|
79
79
|
|
|
80
80
|
同じ相対パスのファイルがある場合は `.qfai/prompts.local` を優先して参照する運用とします。
|
|
81
81
|
|
|
82
|
-
`report.json` / `doctor.json` は内部表現で互換非保証です。外部連携は `report.md` など Markdown
|
|
82
|
+
`report.json` / `doctor.json` は内部表現で互換非保証です。外部連携は `report.md` など Markdown 出力を推奨します。破壊的変更は原則 SemVer で管理しますが、プロジェクト方針により例外的に minor/patch で破壊的変更を行う場合があります(CHANGELOG に明記)。JSON schema を固定する約束はしません。短い例:
|
|
83
83
|
|
|
84
84
|
```json
|
|
85
85
|
{
|
|
@@ -87,7 +87,7 @@ QFAI が提供するプロンプト資産は次の 2 つに分離します。
|
|
|
87
87
|
"summary": {
|
|
88
88
|
"specs": 1,
|
|
89
89
|
"scenarios": 1,
|
|
90
|
-
"contracts": { "api": 0, "ui": 1, "db": 0 },
|
|
90
|
+
"contracts": { "api": 0, "ui": 1, "db": 0, "thema": 0 },
|
|
91
91
|
"counts": { "info": 0, "warning": 0, "error": 0 }
|
|
92
92
|
}
|
|
93
93
|
}
|
|
@@ -157,6 +157,8 @@ analyze も `.qfai/prompts.local/**` の overlay 運用に従います。
|
|
|
157
157
|
Spec では `QFAI-CONTRACT-REF:` 行で参照する契約IDを宣言します(`none` 可)。Spec の先頭 H1 に `SPEC-xxxx` が必須です。
|
|
158
158
|
Scenario では `# QFAI-CONTRACT-REF:` のコメント行で契約参照を宣言します(`none` 可)。
|
|
159
159
|
契約ファイルは `QFAI-CONTRACT-ID: <ID>` を **1ファイル1ID** で宣言します。
|
|
160
|
+
契約IDは UI/API/DB/THEMA(THEMA は 3 桁)です。UI 契約は `themaRef` / `themeOverrides` / `assets` を追加できます。
|
|
161
|
+
`assets.pack` は `ui/` 配下の相対パス、`assets.use` は `assets.yaml` の `items[].id` を参照します。
|
|
160
162
|
`validate.json` / `report` の file path は root 相対で出力します(absolute は出力しません)。
|
|
161
163
|
|
|
162
164
|
## Monorepo / サブディレクトリ
|
|
@@ -239,7 +241,7 @@ qfai.config.yaml
|
|
|
239
241
|
spec-0001/
|
|
240
242
|
spec.md
|
|
241
243
|
delta.md
|
|
242
|
-
scenario.
|
|
244
|
+
scenario.feature
|
|
243
245
|
rules/
|
|
244
246
|
conventions.md
|
|
245
247
|
pnpm.md
|
|
@@ -278,6 +280,14 @@ qfai.config.yaml
|
|
|
278
280
|
api-0001-sample.yaml
|
|
279
281
|
ui/
|
|
280
282
|
ui-0001-sample.yaml
|
|
283
|
+
thema-001-facebook-like.yml
|
|
284
|
+
assets/
|
|
285
|
+
ui-0001-sample/
|
|
286
|
+
assets.yaml
|
|
287
|
+
snapshots/login__desktop__light__default.png
|
|
288
|
+
thema-001-facebook-like/
|
|
289
|
+
assets.yaml
|
|
290
|
+
palette.png
|
|
281
291
|
db/
|
|
282
292
|
db-0001-sample.sql
|
|
283
293
|
out/
|
|
@@ -17,11 +17,11 @@ npx qfai report
|
|
|
17
17
|
|
|
18
18
|
- `validation.traceability.testFileGlobs` に一致するテストコードで `QFAI:SC-xxxx` を参照する(コメント可)
|
|
19
19
|
- Spec→Contract は `spec.md` の `QFAI-CONTRACT-REF` 行で宣言する
|
|
20
|
-
- Scenario→Contract は `scenario.
|
|
20
|
+
- Scenario→Contract は `scenario.feature` の `# QFAI-CONTRACT-REF` で宣言する(none 可)
|
|
21
21
|
|
|
22
22
|
## ディレクトリ概要
|
|
23
23
|
|
|
24
|
-
- `specs/` : Spec Pack(spec.md / delta.md / scenario.
|
|
24
|
+
- `specs/` : Spec Pack(spec.md / delta.md / scenario.feature)
|
|
25
25
|
- `contracts/` : UI / API / DB 契約を置く場所
|
|
26
26
|
- `require/` : 既存要件の集約(validate 対象外)
|
|
27
27
|
- `rules/` : 規約・運用ルール
|
|
@@ -5,8 +5,10 @@
|
|
|
5
5
|
## 置くべきファイル
|
|
6
6
|
|
|
7
7
|
- UI: `ui/ui-0001-<slug>.yaml` または `.yml`
|
|
8
|
+
- THEMA: `ui/thema-001-<slug>.yml`(3桁)
|
|
8
9
|
- API: `api/api-0001-<slug>.yaml` / `.yml` / `.json`(OpenAPI)
|
|
9
10
|
- DB: `db/db-0001-<slug>.sql`(ID は `DB-xxxx`)
|
|
11
|
+
- assets: `ui/assets/<contract-id>/assets.yaml`(参照整合のみ検証)
|
|
10
12
|
|
|
11
13
|
## 契約ID宣言(必須)
|
|
12
14
|
|
|
@@ -23,6 +25,24 @@ id: UI-0001
|
|
|
23
25
|
name: 受注登録画面
|
|
24
26
|
refs:
|
|
25
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"
|
|
26
46
|
```
|
|
27
47
|
|
|
28
48
|
## 最小例(API)
|
|
@@ -63,7 +83,7 @@ CREATE TABLE sample_table (
|
|
|
63
83
|
## 依存関係
|
|
64
84
|
|
|
65
85
|
- Spec → Contracts(spec.md に `QFAI-CONTRACT-REF` を必ず1行以上宣言、0件は `none`。この行が SSOT)
|
|
66
|
-
- Scenario → Contracts(scenario.
|
|
86
|
+
- Scenario → Contracts(scenario.feature に `# QFAI-CONTRACT-REF` を必ず1行以上宣言、0件は `none`)
|
|
67
87
|
|
|
68
88
|
## 良い例 / 悪い例
|
|
69
89
|
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# QFAI-CONTRACT-ID: THEMA-001
|
|
2
|
+
id: THEMA-001
|
|
3
|
+
name: facebook-like
|
|
4
|
+
tokens:
|
|
5
|
+
color:
|
|
6
|
+
background: "#FFFFFF"
|
|
7
|
+
textPrimary: "#111111"
|
|
8
|
+
accent: "#1877F2"
|
|
9
|
+
components:
|
|
10
|
+
Button:
|
|
11
|
+
primary:
|
|
12
|
+
backgroundToken: "color.accent"
|
|
13
|
+
textToken: "color.background"
|
|
@@ -5,7 +5,7 @@ Spec群を読み、Specに明示されている情報のみを根拠として、
|
|
|
5
5
|
|
|
6
6
|
## Inputs
|
|
7
7
|
|
|
8
|
-
- 対象: `.qfai/specs/spec-*/spec.md` 形式のファイル(Spec Pack の `spec.md`。必要に応じて `scenario.
|
|
8
|
+
- 対象: `.qfai/specs/spec-*/spec.md` 形式のファイル(Spec Pack の `spec.md`。必要に応じて `scenario.feature` / `delta.md` も補助参照)
|
|
9
9
|
|
|
10
10
|
## Output (Option)
|
|
11
11
|
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
## 必須入力
|
|
11
11
|
|
|
12
|
-
- `.qfai/specs/**/spec.md` / `scenario.
|
|
12
|
+
- `.qfai/specs/**/spec.md` / `scenario.feature` / `delta.md`
|
|
13
13
|
- `.qfai/out/validate.json`(あれば)
|
|
14
14
|
- `.qfai/out/report.md`(あれば)
|
|
15
15
|
- テストコード(`validation.traceability.testFileGlobs` に一致する範囲)
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
- `.qfai/specs/spec-0001/spec.md`
|
|
13
13
|
- `.qfai/specs/spec-0001/delta.md`
|
|
14
|
-
- `.qfai/specs/spec-0001/scenario.
|
|
14
|
+
- `.qfai/specs/spec-0001/scenario.feature`
|
|
15
15
|
- 必要に応じて `.qfai/contracts/{ui,api,db}` 配下
|
|
16
16
|
|
|
17
17
|
> Spec は `spec-0001` から開始し、必要なら連番で増やすこと。
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
- `spec.md` の必須セクションは `qfai.config.yaml` の設定に従う。
|
|
24
24
|
- BR は `## 業務ルール` にのみ定義し、`- [BR-0001][P1] ...` 形式で書く。
|
|
25
25
|
- `spec.md` に `QFAI-CONTRACT-REF:` を必ず記載する(不要なら `none`)。
|
|
26
|
-
- `scenario.
|
|
26
|
+
- `scenario.feature` は Gherkin で書き、Feature に `@SPEC-xxxx` を付与する。
|
|
27
27
|
- 各 Scenario は `@SC-xxxx` を **ちょうど1つ**、`@BR-xxxx` を **1つ以上**持つこと。
|
|
28
28
|
- 契約ファイルには `QFAI-CONTRACT-ID: <ID>` を宣言する。
|
|
29
29
|
- 契約 ID(UI/API/DB)を Scenario で参照する場合はタグまたは本文に明示する。
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
- `spec-0001/spec.md`(必須)
|
|
8
8
|
- `spec-0001/delta.md`(必須)
|
|
9
|
-
- `spec-0001/scenario.
|
|
9
|
+
- `spec-0001/scenario.feature`(必須・Gherkin)
|
|
10
10
|
|
|
11
11
|
> `spec-0001` は **4桁連番**。Spec ID も **4桁(SPEC-0001)** です。
|
|
12
12
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
```md
|
|
16
16
|
# SPEC-0001: 注文登録の最小要件
|
|
17
17
|
|
|
18
|
-
QFAI-CONTRACT-REF: UI-0001, API-0001, DB-0001
|
|
18
|
+
QFAI-CONTRACT-REF: UI-0001, API-0001, DB-0001, THEMA-001
|
|
19
19
|
|
|
20
20
|
## 背景
|
|
21
21
|
|
|
@@ -42,7 +42,7 @@ QFAI-CONTRACT-REF: UI-0001, API-0001, DB-0001
|
|
|
42
42
|
- 互換維持 / 仕様変更の **どちらか1つ**に必ずチェックする
|
|
43
43
|
- 根拠と影響範囲を明記する
|
|
44
44
|
|
|
45
|
-
## Scenario(scenario.
|
|
45
|
+
## Scenario(scenario.feature)最小要件
|
|
46
46
|
|
|
47
47
|
- **Gherkin 記法**(Given/When/Then)
|
|
48
48
|
- **1ファイル = 1 Scenario**(Scenario Outline 含む)
|