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.
Files changed (29) hide show
  1. package/README.md +13 -3
  2. package/assets/init/.qfai/README.md +2 -2
  3. package/assets/init/.qfai/contracts/README.md +21 -1
  4. package/assets/init/.qfai/contracts/ui/assets/thema-001-facebook-like/assets.yaml +6 -0
  5. package/assets/init/.qfai/contracts/ui/assets/thema-001-facebook-like/palette.png +0 -0
  6. package/assets/init/.qfai/contracts/ui/assets/ui-0001-sample/assets.yaml +6 -0
  7. package/assets/init/.qfai/contracts/ui/assets/ui-0001-sample/snapshots/login__desktop__light__default.png +0 -0
  8. package/assets/init/.qfai/contracts/ui/thema-001-facebook-like.yml +13 -0
  9. package/assets/init/.qfai/contracts/ui/ui-0001-sample.yaml +9 -0
  10. package/assets/init/.qfai/prompts/makeBusinessFlow.md +1 -1
  11. package/assets/init/.qfai/prompts/makeOverview.md +1 -1
  12. package/assets/init/.qfai/prompts/qfai-maintain-traceability.md +1 -1
  13. package/assets/init/.qfai/prompts/require-to-spec.md +2 -2
  14. package/assets/init/.qfai/samples/analyze/analysis.md +1 -1
  15. package/assets/init/.qfai/specs/README.md +3 -3
  16. package/assets/init/.qfai/specs/spec-0001/delta.md +1 -1
  17. package/assets/init/.qfai/specs/spec-0001/{scenario.md → scenario.feature} +1 -1
  18. package/assets/init/.qfai/specs/spec-0001/spec.md +1 -1
  19. package/dist/cli/index.cjs +589 -114
  20. package/dist/cli/index.cjs.map +1 -1
  21. package/dist/cli/index.mjs +591 -116
  22. package/dist/cli/index.mjs.map +1 -1
  23. package/dist/index.cjs +542 -67
  24. package/dist/index.cjs.map +1 -1
  25. package/dist/index.d.cts +3 -1
  26. package/dist/index.d.ts +3 -1
  27. package/dist/index.mjs +544 -69
  28. package/dist/index.mjs.map +1 -1
  29. 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 出力を推奨します。破壊的変更は SemVer で管理しますが、JSON schema を固定する約束はしません。短い例:
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.md
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.md` の `# QFAI-CONTRACT-REF` で宣言する(none 可)
20
+ - Scenario→Contract は `scenario.feature` の `# QFAI-CONTRACT-REF` で宣言する(none 可)
21
21
 
22
22
  ## ディレクトリ概要
23
23
 
24
- - `specs/` : Spec Pack(spec.md / delta.md / scenario.md
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.md に `# QFAI-CONTRACT-REF` を必ず1行以上宣言、0件は `none`)
86
+ - Scenario → Contracts(scenario.feature に `# QFAI-CONTRACT-REF` を必ず1行以上宣言、0件は `none`)
67
87
 
68
88
  ## 良い例 / 悪い例
69
89
 
@@ -0,0 +1,6 @@
1
+ packId: THEMA-001
2
+ type: thema
3
+ items:
4
+ - id: THEMA-001.palette.default
5
+ kind: snapshot
6
+ path: palette.png
@@ -0,0 +1,6 @@
1
+ packId: UI-0001
2
+ type: ui
3
+ items:
4
+ - id: UI-0001.desktop.light.default
5
+ kind: snapshot
6
+ path: snapshots/login__desktop__light__default.png
@@ -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"
@@ -6,3 +6,12 @@ id: UI-0001
6
6
  name: Order Registration
7
7
  refs:
8
8
  - BR-0001
9
+ themaRef: THEMA-001
10
+ themeOverrides:
11
+ Button:
12
+ primary:
13
+ backgroundToken: "color.accent"
14
+ assets:
15
+ pack: assets/ui-0001-sample
16
+ use:
17
+ - UI-0001.desktop.light.default
@@ -5,7 +5,7 @@ Spec群を読み、Specに明示されている情報のみを根拠として、
5
5
 
6
6
  ## Inputs
7
7
 
8
- - 対象: `.qfai/specs/spec-*/spec.md` 形式のファイル(Spec Pack の `spec.md`。必要に応じて `scenario.md` / `delta.md` も補助参照)
8
+ - 対象: `.qfai/specs/spec-*/spec.md` 形式のファイル(Spec Pack の `spec.md`。必要に応じて `scenario.feature` / `delta.md` も補助参照)
9
9
 
10
10
  ## Output (Option)
11
11
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## Inputs
6
6
 
7
- - 対象: `.qfai/specs/spec-*/spec.md` 形式のファイル(Spec Pack の `spec.md`。必要に応じて `scenario.md` / `delta.md` も補助参照)
7
+ - 対象: `.qfai/specs/spec-*/spec.md` 形式のファイル(Spec Pack の `spec.md`。必要に応じて `scenario.feature` / `delta.md` も補助参照)
8
8
 
9
9
  ## Output
10
10
 
@@ -9,7 +9,7 @@
9
9
 
10
10
  ## 必須入力
11
11
 
12
- - `.qfai/specs/**/spec.md` / `scenario.md` / `delta.md`
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.md`
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.md` は Gherkin で書き、Feature に `@SPEC-xxxx` を付与する。
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 で参照する場合はタグまたは本文に明示する。
@@ -12,7 +12,7 @@
12
12
  ## 入力(貼り付けたもの)
13
13
 
14
14
  - Spec: <spec.md / delta.md の該当範囲>
15
- - Scenario: <scenario.md の該当範囲>
15
+ - Scenario: <scenario.feature の該当範囲>
16
16
  - Contract(任意): <該当契約>
17
17
  - validate/report 要約: <report.md または validate.json の要約>
18
18
  - 差分: <PR diff / 変更ファイル一覧>
@@ -6,7 +6,7 @@
6
6
 
7
7
  - `spec-0001/spec.md`(必須)
8
8
  - `spec-0001/delta.md`(必須)
9
- - `spec-0001/scenario.md`(必須・Gherkin)
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.md)最小要件
45
+ ## Scenario(scenario.feature)最小要件
46
46
 
47
47
  - **Gherkin 記法**(Given/When/Then)
48
48
  - **1ファイル = 1 Scenario**(Scenario Outline 含む)
@@ -16,7 +16,7 @@
16
16
  ## 影響範囲(Impact)
17
17
 
18
18
  - 仕様(spec.md):
19
- - シナリオ(scenario.md):
19
+ - シナリオ(scenario.feature):
20
20
  - 契約(contracts):
21
21
  - 実装(src):
22
22
  - テスト(tests):
@@ -3,7 +3,7 @@ Feature: 注文登録
3
3
 
4
4
  Rule: 承認者が存在する
5
5
 
6
- # QFAI-CONTRACT-REF: UI-0001, API-0001, DB-0001
6
+ # QFAI-CONTRACT-REF: UI-0001, API-0001, DB-0001, THEMA-001
7
7
  @SC-0001 @BR-0001
8
8
  Scenario: 承認者が承認するまで注文は確定しない
9
9
  Given ...
@@ -1,6 +1,6 @@
1
1
  # SPEC-0001: 注文登録の最小仕様(サンプル)
2
2
 
3
- QFAI-CONTRACT-REF: API-0001, UI-0001, DB-0001
3
+ QFAI-CONTRACT-REF: API-0001, UI-0001, DB-0001, THEMA-001
4
4
 
5
5
  > このテンプレは **最小例** です。実際の仕様に合わせて書き換えてください。
6
6