qfai 0.3.0 → 0.3.1

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 CHANGED
@@ -1,4 +1,4 @@
1
- # QFAI Toolkit (v0.3.0)
1
+ # QFAI Toolkit (v0.3.1)
2
2
 
3
3
  Single-package distribution for QFAI.
4
4
 
@@ -12,17 +12,15 @@ npm i -D qfai
12
12
 
13
13
  ```
14
14
  npx qfai init
15
- npx qfai validate --fail-on error --format github --json-path .qfai/out/validate.json
16
- npx qfai report --json-path .qfai/out/validate.json --out .qfai/out/report.md
15
+ npx qfai validate --fail-on error --format github
16
+ npx qfai report
17
17
  ```
18
18
 
19
19
  ## Usage
20
20
 
21
- `validate` は `--fail-on` / `--strict` によって CI ゲート化できます。
22
- JSON 出力は `--json-path` 指定、または `qfai.config.yaml` `output.format: json` で有効化できます。
23
- `report` は `validate.json` が必須で、未生成の場合は exit code 2 で次の手順を案内します。
24
- `report` の入力は `--json-path` が優先で、未指定の場合は `output.jsonPath` を使います。どちらも未設定の場合はレポートを生成できないため、いずれかを必ず指定してください。既定の出力は `.qfai/out/report.md`(`--format json` の場合は `.qfai/out/report.json`)です。
25
- `init --yes` は非対話でデフォルトを採用します(現状の init は非対話が既定のため挙動は同じです。将来対話が導入されても自動で承認されます)。既存ファイルがある場合は `--force` が必要です。
21
+ `validate` は `--fail-on` / `--strict` によって CI ゲート化できます。`validate` は常に `.qfai/out/validate.json`(`output.validateJsonPath`)へ JSON を出力し、`--format` は表示形式(text/github)のみを制御します。
22
+ `report` `.qfai/out/validate.json` を読み、既定で `.qfai/out/report.md` を出力します(`--format json` の場合は `.qfai/out/report.json`)。出力先は `--out` で変更できます。入力パスは固定です。
23
+ `init --yes` は予約フラグです(v0.3.1 init は非対話のため挙動差はありません)。既存ファイルがある場合は `--force` が必要です。
26
24
 
27
25
  設定はリポジトリ直下の `qfai.config.yaml` で行います。
28
26
  命名規約は `docs/rules/naming.md` を参照してください。
@@ -5,22 +5,23 @@
5
5
  ## 最短成功(init → validate → report)
6
6
 
7
7
  ```bash
8
- npx qfai validate --fail-on error --format github --json-path .qfai/out/validate.json
9
- npx qfai report --json-path .qfai/out/validate.json --out .qfai/out/report.md
8
+ npx qfai validate --fail-on error --format github
9
+ npx qfai report
10
10
  ```
11
11
 
12
12
  ## ディレクトリ概要
13
13
 
14
- - `spec/` : 仕様・シナリオ・ADR(意思決定)を置く場所
14
+ - `specs/` : Spec Pack(spec.md / delta.md / scenario.md)
15
15
  - `contracts/` : UI / API / DB 契約を置く場所
16
+ - `rules/` : 規約・運用ルール
16
17
  - `prompts/` : 生成プロンプト資産(自動読取はしない)
17
18
  - `out/` : `validate` / `report` の出力先(gitignore 推奨)
18
19
 
19
20
  詳細は各 README を参照してください。
20
21
 
21
- - `spec/README.md`
22
- - `spec/decisions/README.md`
22
+ - `specs/README.md`
23
23
  - `contracts/README.md`
24
+ - `rules/conventions.md`
24
25
  - `prompts/README.md`
25
26
  - `out/README.md`
26
27
 
@@ -0,0 +1,21 @@
1
+ # 互換維持 / 仕様変更の分類ルール
2
+
3
+ 本ドキュメントは `delta.md` の「変更区分」を一貫させるための規約です。
4
+
5
+ ## Compatibility(互換維持)
6
+
7
+ - 既存の仕様と整合しており、期待値の変更がない
8
+ - 既存の受入テスト/シナリオがそのまま成立する
9
+ - 互換性の維持を前提とした改善・整理に留まる
10
+
11
+ ## Change/Improvement(改善/仕様変更)
12
+
13
+ - 期待値や振る舞いが変更される、または明確に追加される
14
+ - 既存の受入テスト/シナリオの修正が必要になる
15
+ - 互換性の破壊または新しい制約が生じる
16
+
17
+ ## 運用ルール
18
+
19
+ - `delta.md` では **必ずどちらか1つにチェック**する
20
+ - 両方ON/両方OFFは無効(エラー)
21
+ - 迷った場合は「影響範囲」「受入観点」を追記して明文化する
@@ -0,0 +1,51 @@
1
+ # Specs (Spec Pack)
2
+
3
+ このディレクトリは「Spec / Delta / Scenario」を **1セット(Spec Pack)** として管理するための入口です。
4
+
5
+ ## 置くべきファイル
6
+
7
+ - `spec-001/spec.md`(必須)
8
+ - `spec-001/delta.md`(必須)
9
+ - `spec-001/scenario.md`(必須・Gherkin)
10
+
11
+ > `spec-001` は **3桁連番**。Spec ID は **4桁(SPEC-0001)** を継続します。
12
+
13
+ ## Spec(spec.md)最小例
14
+
15
+ ```md
16
+ # SPEC-0001: 注文登録の最小要件
17
+
18
+ ## 背景
19
+
20
+ - 例: 受注の登録ルールを明文化し、手戻りを減らすため
21
+
22
+ ## 業務ルール
23
+
24
+ - [BR-0001][P2] 受注は承認者が承認するまで確定しない
25
+ ```
26
+
27
+ ### BR の書き方
28
+
29
+ - **1ルール = 1 BR** を守る
30
+ - Priority は **P0/P1/P2/P3** のいずれかを必ず付与
31
+ - BR 定義は **`## 業務ルール` セクション内のみ**(他セクションは参照扱い)
32
+
33
+ ## Delta(delta.md)
34
+
35
+ - 互換維持 / 仕様変更の **どちらか1つ**に必ずチェックする
36
+ - 根拠と影響範囲を明記する
37
+
38
+ ## Scenario(scenario.md)最小要件
39
+
40
+ - **Gherkin 記法**(Given/When/Then)
41
+ - `@SPEC-xxxx` は Feature レベルに置ける(Feature/Scenario のいずれかで必須)
42
+ - Scenario / Scenario Outline には `@SC-xxxx` が **ちょうど1つ**必要
43
+ - Scenario / Scenario Outline には `@BR-xxxx` が **1つ以上**必要
44
+
45
+ ## CI でチェックされること(抜粋)
46
+
47
+ - Spec: 必須セクション、SPEC/BR ID、BR Priority、ID 形式、Contract 参照の実在性
48
+ - Delta: 変更区分(互換/変更)のチェック状態
49
+ - Scenario: Feature/Scenario の存在、タグ要件、Given/When/Then
50
+ - Traceability: BR→SC、SC→契約(UI/API/DATA)の接続、BR の所属 SPEC 整合
51
+ - IDs: 定義 ID の重複検知(Spec/Scenario/Contracts)
@@ -0,0 +1,30 @@
1
+ # Delta: SPEC-0001
2
+
3
+ ## 変更区分
4
+
5
+ - [x] Compatibility(互換維持: 既存仕様と整合)
6
+ - [ ] Change/Improvement(改善/仕様変更: 期待値の変更を含む)
7
+
8
+ ## 変更の要約(What)
9
+
10
+ - ...
11
+
12
+ ## 根拠(Why)
13
+
14
+ - ...
15
+
16
+ ## 影響範囲(Impact)
17
+
18
+ - 仕様(spec.md):
19
+ - シナリオ(scenario.md):
20
+ - 契約(contracts):
21
+ - 実装(src):
22
+ - テスト(tests):
23
+
24
+ ## 受入観点(ATDD/QA)
25
+
26
+ - ...
27
+
28
+ ## 移行メモ(任意)
29
+
30
+ - ...
@@ -0,0 +1,10 @@
1
+ @SPEC-0001
2
+ Feature: 注文登録
3
+
4
+ Rule: 承認者が存在する
5
+
6
+ @SC-0001 @BR-0001 @UI-0001 @API-0001 @DATA-0001
7
+ Scenario: 承認者が承認するまで注文は確定しない
8
+ Given ...
9
+ When ...
10
+ Then ...
@@ -28,10 +28,11 @@
28
28
 
29
29
  ## 業務ルール
30
30
 
31
- - [BR-0001] (P2) 受注は承認者が承認するまで確定しない
31
+ - [BR-0001][P2] 受注は承認者が承認するまで確定しない
32
32
 
33
33
  ### 書き方メモ
34
34
 
35
35
  - BR は **原子ルール** として採番する(`BR-0001.1` は使わない)
36
- - BR には **Priority(P0〜P3)** を付与する
36
+ - BR には **Priority(P0〜P3)** を必ず付与する
37
+ - BR 定義は `## 業務ルール` セクション内に置く
37
38
  - Spec では **SC ID** を参照しない
@@ -15,7 +15,7 @@ jobs:
15
15
  node-version: 20
16
16
  cache: npm
17
17
  - run: npm ci
18
- - run: npx qfai validate --fail-on error --format github --json-path .qfai/out/validate.json
18
+ - run: npx qfai validate --fail-on error --format github
19
19
  - uses: actions/upload-artifact@v4
20
20
  with:
21
21
  name: qfai-validation
@@ -1,11 +1,9 @@
1
1
  paths:
2
- specDir: .qfai/spec
3
- decisionsDir: .qfai/spec/decisions
4
- scenariosDir: .qfai/spec/scenarios
2
+ specsDir: .qfai/specs
5
3
  contractsDir: .qfai/contracts
6
- uiContractsDir: .qfai/contracts/ui
7
- apiContractsDir: .qfai/contracts/api
8
- dataContractsDir: .qfai/contracts/db
4
+ rulesDir: .qfai/rules
5
+ outDir: .qfai/out
6
+ promptsDir: .qfai/prompts
9
7
  srcDir: src
10
8
  testsDir: tests
11
9
  validation:
@@ -25,5 +23,4 @@ validation:
25
23
  allowOrphanContracts: false
26
24
  unknownContractIdSeverity: error
27
25
  output:
28
- format: text
29
- jsonPath: .qfai/out/validate.json
26
+ validateJsonPath: .qfai/out/validate.json