qfai 1.0.2 → 1.0.4

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 (39) hide show
  1. package/README.md +13 -12
  2. package/assets/init/.qfai/README.md +2 -7
  3. package/assets/init/.qfai/contracts/README.md +20 -0
  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/promptpack/commands/plan.md +1 -1
  11. package/assets/init/.qfai/promptpack/commands/review.md +1 -2
  12. package/assets/init/.qfai/promptpack/constitution.md +1 -1
  13. package/assets/init/.qfai/prompts/README.md +1 -3
  14. package/assets/init/.qfai/prompts/qfai-maintain-traceability.md +3 -3
  15. package/assets/init/.qfai/prompts/require-to-spec.md +1 -2
  16. package/assets/init/.qfai/specs/README.md +3 -4
  17. package/assets/init/.qfai/specs/spec-0001/delta.md +0 -5
  18. package/assets/init/.qfai/specs/spec-0001/scenario.feature +1 -1
  19. package/assets/init/.qfai/specs/spec-0001/spec.md +1 -1
  20. package/assets/init/root/qfai.config.yaml +0 -1
  21. package/dist/cli/index.cjs +596 -162
  22. package/dist/cli/index.cjs.map +1 -1
  23. package/dist/cli/index.mjs +598 -164
  24. package/dist/cli/index.mjs.map +1 -1
  25. package/dist/index.cjs +549 -114
  26. package/dist/index.cjs.map +1 -1
  27. package/dist/index.d.cts +3 -2
  28. package/dist/index.d.ts +3 -2
  29. package/dist/index.mjs +551 -116
  30. package/dist/index.mjs.map +1 -1
  31. package/package.json +1 -1
  32. package/assets/init/.qfai/promptpack/modes/change.md +0 -5
  33. package/assets/init/.qfai/promptpack/modes/compatibility.md +0 -6
  34. package/assets/init/.qfai/promptpack/steering/compatibility-vs-change.md +0 -42
  35. package/assets/init/.qfai/prompts/qfai-classify-change.md +0 -33
  36. package/assets/init/.qfai/rules/conventions.md +0 -27
  37. package/assets/init/.qfai/rules/pnpm.md +0 -29
  38. package/assets/init/.qfai/samples/analyze/analysis.md +0 -38
  39. package/assets/init/.qfai/samples/analyze/input_bundle.md +0 -54
package/README.md CHANGED
@@ -56,7 +56,7 @@ npx qfai report
56
56
 
57
57
  ## できること
58
58
 
59
- - `npx qfai init` によるテンプレート生成(specs/contracts に加え、`.qfai/require/README.md`、`.qfai/rules/pnpm.md`、`.qfai/prompts/**`、`.qfai/prompts.local/README.md`、`.qfai/prompts/analyze/**`、`.qfai/samples/**`、`.qfai/promptpack/` を含む)
59
+ - `npx qfai init` によるテンプレート生成(specs/contracts に加え、`.qfai/require/README.md`、`.qfai/prompts/**`、`.qfai/prompts.local/README.md`、`.qfai/prompts/analyze/**`、`.qfai/promptpack/` を含む)
60
60
  - `npx qfai validate` による `.qfai/` 内ドキュメントの整合性・トレーサビリティ検査
61
61
  - `npx qfai validate` による SC→Test 参照の検証(`validation.traceability.testFileGlobs` に一致するテストファイルから `QFAI:SC-xxxx` を抽出)
62
62
  - `npx qfai doctor` による設定/探索/パス/glob/validate.json の事前診断
@@ -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
  }
@@ -137,8 +137,7 @@ doctor の JSON 例:
137
137
  2. `npx qfai analyze --prompt spec_to_scenario` のようにプロンプトを出力し、AI に貼り付ける
138
138
  3. 推奨入力(Spec/Scenario/Test/Contract の抜粋 + validate/report 要約 + 差分)を揃えて検討する
139
139
 
140
- 入力の用意に迷う場合は、`npx qfai init` が同梱する `.qfai/samples/analyze/input_bundle.md`(完成例)をコピーして編集してください。
141
- 成果物を残す場合は `.qfai/samples/analyze/analysis.md`(テンプレ)を使う運用を推奨します。
140
+ 入力の用意に迷う場合は、PR テンプレの「検証/証跡」に validate/report の結果を貼る運用を推奨します。
142
141
 
143
142
  ### カスタマイズ(Overlay)
144
143
 
@@ -157,6 +156,8 @@ analyze も `.qfai/prompts.local/**` の overlay 運用に従います。
157
156
  Spec では `QFAI-CONTRACT-REF:` 行で参照する契約IDを宣言します(`none` 可)。Spec の先頭 H1 に `SPEC-xxxx` が必須です。
158
157
  Scenario では `# QFAI-CONTRACT-REF:` のコメント行で契約参照を宣言します(`none` 可)。
159
158
  契約ファイルは `QFAI-CONTRACT-ID: <ID>` を **1ファイル1ID** で宣言します。
159
+ 契約IDは UI/API/DB/THEMA(THEMA は 3 桁)です。UI 契約は `themaRef` / `themeOverrides` / `assets` を追加できます。
160
+ `assets.pack` は `ui/` 配下の相対パス、`assets.use` は `assets.yaml` の `items[].id` を参照します。
160
161
  `validate.json` / `report` の file path は root 相対で出力します(absolute は出力しません)。
161
162
 
162
163
  ## Monorepo / サブディレクトリ
@@ -240,13 +241,9 @@ qfai.config.yaml
240
241
  spec.md
241
242
  delta.md
242
243
  scenario.feature
243
- rules/
244
- conventions.md
245
- pnpm.md
246
244
  promptpack/
247
245
  constitution.md
248
246
  steering/
249
- compatibility-vs-change.md
250
247
  traceability.md
251
248
  naming.md
252
249
  commands/
@@ -258,9 +255,6 @@ qfai.config.yaml
258
255
  qa.md
259
256
  spec.md
260
257
  test.md
261
- modes/
262
- compatibility.md
263
- change.md
264
258
  prompts/
265
259
  README.md
266
260
  makeOverview.md
@@ -269,7 +263,6 @@ qfai.config.yaml
269
263
  qfai-generate-test-globs.md
270
264
  qfai-maintain-traceability.md
271
265
  qfai-maintain-contracts.md
272
- qfai-classify-change.md
273
266
  prompts.local/
274
267
  README.md
275
268
  contracts/
@@ -278,6 +271,14 @@ qfai.config.yaml
278
271
  api-0001-sample.yaml
279
272
  ui/
280
273
  ui-0001-sample.yaml
274
+ thema-001-facebook-like.yml
275
+ assets/
276
+ ui-0001-sample/
277
+ assets.yaml
278
+ snapshots/login__desktop__light__default.png
279
+ thema-001-facebook-like/
280
+ assets.yaml
281
+ palette.png
281
282
  db/
282
283
  db-0001-sample.sql
283
284
  out/
@@ -24,20 +24,18 @@ npx qfai report
24
24
  - `specs/` : Spec Pack(spec.md / delta.md / scenario.feature)
25
25
  - `contracts/` : UI / API / DB 契約を置く場所
26
26
  - `require/` : 既存要件の集約(validate 対象外)
27
- - `rules/` : 規約・運用ルール
28
27
  - `prompts/` : QFAI 標準のプロンプト資産(自動読取はしない。更新や再 init で上書きされ得る)
29
- - `samples/` : analyze 等の手動運用で使う成果物テンプレ(create-only)
30
28
  - `prompts.local/` : 利用者カスタムのプロンプト資産(存在する場合は overlay でこちらを優先して読む運用)
31
29
  - `promptpack/` : PromptPack(SSOT、運用ルール/観点の正本)
32
30
  - `out/` : `validate` / `report` の出力先(gitignore 推奨)
33
31
 
34
32
  詳細は各 README を参照してください。
35
33
 
34
+ - analyze の入力束に迷う場合は、PR テンプレの「検証/証跡」に validate/report の結果を貼る運用を推奨します。
35
+
36
36
  - `specs/README.md`
37
37
  - `contracts/README.md`
38
38
  - `require/README.md`
39
- - `rules/conventions.md`
40
- - `rules/pnpm.md`
41
39
  - `prompts/README.md`
42
40
  - `prompts/analyze/README.md`
43
41
  - `prompts.local/README.md`
@@ -45,9 +43,6 @@ npx qfai report
45
43
  - `prompts/qfai-generate-test-globs.md`
46
44
  - `prompts/qfai-maintain-traceability.md`
47
45
  - `prompts/qfai-maintain-contracts.md`
48
- - `prompts/qfai-classify-change.md`
49
- - `samples/analyze/analysis.md`
50
- - `samples/analyze/input_bundle.md`
51
46
  - `prompts/analyze/spec_to_scenario.md`
52
47
  - `prompts/analyze/spec_to_contract.md`
53
48
  - `prompts/analyze/scenario_to_test.md`
@@ -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)
@@ -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
@@ -8,4 +8,4 @@
8
8
  - テスト方針
9
9
  - リスクと確認点
10
10
  - testFileGlobs が未整備なら `prompts/qfai-generate-test-globs.md` を使う
11
- - Compatibility/Change が不明なら `prompts/qfai-classify-change.md` で整理する
11
+ - 受入観点が曖昧なら QA 観点で整理する
@@ -1,7 +1,6 @@
1
1
  # Review
2
2
 
3
3
  - Spec/Scenario/Contracts と実装の整合
4
- - 互換維持/変更の区分が delta.md に記録されているか
5
- - 区分が曖昧なら `prompts/qfai-classify-change.md` で再整理する
4
+ - delta.md に変更内容/受入観点が記録されているか
6
5
  - 影響範囲とテスト結果の妥当性
7
6
  - セキュリティ/運用上の懸念がないか
@@ -5,7 +5,7 @@ PromptPack はプロジェクト内の SSOT(Single Source of Truth)として
5
5
  ## 基本原則
6
6
 
7
7
  - spec/scenario/delta/BR/SC を最優先で読む
8
- - 変更は delta.md に記録し、互換維持/変更の区分を明示する
8
+ - 変更は delta.md に記録し、受入観点と影響範囲を明示する
9
9
  - validate を通すことを必須とする(通らないなら仕様/運用が破綻している)
10
10
  - 不確実性(仮説/未確定/TODO)は残し方針を統一する
11
11
 
@@ -8,7 +8,7 @@
8
8
  ## 目的
9
9
 
10
10
  - Spec から overview / Business Flow を生成するための素材
11
- - トレーサビリティ/契約/変更区分の運用支援(CIで止めない領域)
11
+ - トレーサビリティ/契約の運用支援(CIで止めない領域)
12
12
  - 意味矛盾(解釈/前提/用語/受入条件の齟齬)のレビュー補助(analyze)
13
13
  - 将来の CLI 連携に備えた配布物(現時点では手動利用のみ)
14
14
 
@@ -27,7 +27,6 @@
27
27
  - `qfai-generate-test-globs.md`: テストファイル glob の生成支援(`qfai.config.yaml` 更新)
28
28
  - `qfai-maintain-traceability.md`: 参照切れの修復(Spec/Scenario/Test)
29
29
  - `qfai-maintain-contracts.md`: 契約 ID と参照の整合
30
- - `qfai-classify-change.md`: Compatibility / Change 分類支援
31
30
  - `analyze/README.md`: analyze の目的/入力/出力フォーマット
32
31
  - `analyze/spec_to_scenario.md`: Spec ↔ Scenario の意味整合
33
32
  - `analyze/spec_to_contract.md`: Spec ↔ Contract の対応漏れ/参照不整合
@@ -39,7 +38,6 @@
39
38
  | ------------------------------- | ---------------- | --------------------------------------------- | ------------------------------ | ------------------- |
40
39
  | `qfai-maintain-traceability.md` | 参照切れの修復 | spec/delta/scenario + validate/report + tests | 修正方針 + diff + 再実行手順 | ID形式崩し/SSOT無視 |
41
40
  | `qfai-maintain-contracts.md` | 契約と参照の整合 | contracts + spec + report | 採番案 + 参照更新案 + diff | ID変更の無断実施 |
42
- | `qfai-classify-change.md` | 変更区分の判断 | delta.md + 変更差分 | 分類 + 根拠 + 影響範囲 | 根拠なし分類 |
43
41
  | `qfai-generate-test-globs.md` | テストglob生成 | package.json/設定/テスト配置 | glob案 + 更新案 + サンプル確認 | glob過剰/不足 |
44
42
  | `makeOverview.md` | Spec一覧生成 | spec.md | 一覧テーブル/サマリ | spec未読 |
45
43
  | `makeBusinessFlow.md` | 業務フロー整理 | spec.md/要件 | フロー手順/根拠 | 要件の飛ばし |
@@ -5,7 +5,7 @@
5
5
  ## 目的
6
6
 
7
7
  - Spec/Scenario/Test の ID 参照が壊れた箇所を特定し、整合させる
8
- - 互換維持/変更(Compatibility/Change)の区分を明確にする
8
+ - 修正の影響と受入観点を整理する
9
9
 
10
10
  ## 必須入力
11
11
 
@@ -18,7 +18,7 @@
18
18
 
19
19
  1. validate/report の結果から、壊れている参照(Spec/BR/SC/Contract/Test)を列挙する。
20
20
  2. Spec Pack(spec/delta/scenario)を読み、ID と参照の意図を把握する。
21
- 3. 修正が Compatibility か Change かを判断し、根拠を整理する。
21
+ 3. 修正の影響と受入観点を整理する。
22
22
  4. 参照切れを解消する最小修正案(Spec/Scenario/Test)を作る。
23
23
  5. 変更後の validate / report 手順を示す。
24
24
 
@@ -30,7 +30,7 @@
30
30
 
31
31
  ## 出力フォーマット
32
32
 
33
- - 変更区分(Compatibility / Change)と根拠
33
+ - 変更内容と受入観点
34
34
  - 修正対象一覧(ファイル/ID/理由)
35
35
  - 提案 diff(またはパッチ単位)
36
36
  - 再実行コマンド(`qfai validate` / `qfai report` / テスト)
@@ -27,8 +27,7 @@
27
27
  - 各 Scenario は `@SC-xxxx` を **ちょうど1つ**、`@BR-xxxx` を **1つ以上**持つこと。
28
28
  - 契約ファイルには `QFAI-CONTRACT-ID: <ID>` を宣言する。
29
29
  - 契約 ID(UI/API/DB)を Scenario で参照する場合はタグまたは本文に明示する。
30
- - `delta.md` の「変更区分」は **Compatibility / Change/Improvement のいずれか1つにチェック**する。
31
- - 判断できない場合は `Compatibility` を選び、`TBD` を理由欄に記載する。
30
+ - `delta.md` に変更内容/受入観点/影響範囲を記載する。
32
31
 
33
32
  ## Output Format
34
33
 
@@ -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
 
@@ -39,8 +39,7 @@ QFAI-CONTRACT-REF: UI-0001, API-0001, DB-0001
39
39
 
40
40
  ## Delta(delta.md)
41
41
 
42
- - 互換維持 / 仕様変更の **どちらか1つ**に必ずチェックする
43
- - 根拠と影響範囲を明記する
42
+ - 変更の要約・根拠・影響範囲・受入観点を明記する
44
43
 
45
44
  ## Scenario(scenario.feature)最小要件
46
45
 
@@ -54,7 +53,7 @@ QFAI-CONTRACT-REF: UI-0001, API-0001, DB-0001
54
53
  ## CI でチェックされること(抜粋)
55
54
 
56
55
  - Spec: 必須セクション、SPEC/BR ID、BR Priority、ID 形式、Contract 参照の実在性、Contract 参照の必須宣言
57
- - Delta: 変更区分(互換/変更)のチェック状態
56
+ - Delta: delta.md の存在
58
57
  - Scenario: Feature/Scenario の存在、タグ要件、Given/When/Then、契約参照の宣言/形式
59
58
  - Traceability: BR→SC、Spec→Contract、SC→Test の接続、BR の所属 SPEC 整合
60
59
  - IDs: 定義 ID の重複検知(Spec/Scenario/Contracts)
@@ -1,10 +1,5 @@
1
1
  # Delta: SPEC-0001
2
2
 
3
- ## 変更区分
4
-
5
- - [x] Compatibility(互換維持: 既存仕様と整合)
6
- - [ ] Change/Improvement(改善/仕様変更: 期待値の変更を含む)
7
-
8
3
  ## 変更の要約(What)
9
4
 
10
5
  - ...
@@ -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
 
@@ -1,7 +1,6 @@
1
1
  paths:
2
2
  specsDir: .qfai/specs
3
3
  contractsDir: .qfai/contracts
4
- rulesDir: .qfai/rules
5
4
  outDir: .qfai/out
6
5
  promptsDir: .qfai/prompts
7
6
  srcDir: src