qfai 0.5.0 → 0.6.0
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 +6 -2
- package/assets/init/.qfai/README.md +6 -0
- package/assets/init/.qfai/contracts/README.md +2 -2
- package/assets/init/.qfai/promptpack/steering/traceability.md +2 -1
- package/assets/init/.qfai/prompts/qfai-maintain-contracts.md +1 -1
- package/assets/init/.qfai/specs/README.md +3 -1
- package/assets/init/.qfai/specs/spec-0001/scenario.md +2 -1
- package/assets/init/root/qfai.config.yaml +1 -1
- package/dist/cli/index.cjs +1263 -704
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.mjs +1246 -687
- package/dist/cli/index.mjs.map +1 -1
- package/dist/index.cjs +343 -151
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +15 -3
- package/dist/index.d.ts +15 -3
- package/dist/index.mjs +347 -156
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -21,13 +21,16 @@ npx qfai report
|
|
|
21
21
|
- `npx qfai init` によるテンプレート生成(specs/contracts に加え、`.qfai/require/README.md`、`.qfai/rules/pnpm.md`、`.qfai/prompts/require-to-spec.md`、`.qfai/prompts/qfai-generate-test-globs.md`、`.qfai/prompts/qfai-maintain-traceability.md`、`.qfai/prompts/qfai-maintain-contracts.md`、`.qfai/prompts/qfai-classify-change.md`、`.qfai/promptpack/` を含む)
|
|
22
22
|
- `npx qfai validate` による `.qfai/` 内ドキュメントの整合性・トレーサビリティ検査
|
|
23
23
|
- `npx qfai validate` による SC→Test 参照の検証(`validation.traceability.testFileGlobs` に一致するテストファイルから `QFAI:SC-xxxx` を抽出)
|
|
24
|
+
- `npx qfai doctor` による設定/探索/パス/glob/validate.json の事前診断
|
|
24
25
|
- `npx qfai report` によるレポート出力
|
|
25
26
|
|
|
26
27
|
## Usage
|
|
27
28
|
|
|
28
29
|
`validate` は `--fail-on` / `--strict` によって CI ゲート化できます。`validate` は常に `.qfai/out/validate.json`(`output.validateJsonPath`)へ JSON を出力し、`--format` は表示形式(text/github)のみを制御します。
|
|
29
30
|
`report` は `.qfai/out/validate.json` を読み、既定で `.qfai/out/report.md` を出力します(`--format json` の場合は `.qfai/out/report.json`)。出力先は `--out` で変更できます。入力パスは固定です。
|
|
31
|
+
`doctor` は validate/report の前段で設定/探索/パス/glob/validate.json を診断します。`--format text|json`、`--out` をサポートします。
|
|
30
32
|
`init --yes` は予約フラグです(現行の init は非対話のため挙動差はありません)。既存ファイルがある場合は `--force` が必要です。
|
|
33
|
+
`report.json` は experimental(互換保証なし)として扱います。`reportFormatVersion` を含み、破壊的変更時のみ増分します。
|
|
31
34
|
|
|
32
35
|
設定はリポジトリ直下の `qfai.config.yaml` で行います。
|
|
33
36
|
命名規約は `docs/rules/naming.md` を参照してください。
|
|
@@ -35,15 +38,16 @@ npx qfai report
|
|
|
35
38
|
## Contracts
|
|
36
39
|
|
|
37
40
|
Spec では `QFAI-CONTRACT-REF:` 行で参照する契約IDを宣言します(`none` 可、宣言行は必須)。
|
|
41
|
+
Scenario では `# QFAI-CONTRACT-REF:` のコメント行で契約参照を宣言します(`none` 可、宣言行は必須)。
|
|
38
42
|
契約ファイルは `QFAI-CONTRACT-ID: <ID>` を **1ファイル1ID** で宣言します。
|
|
39
43
|
Contract ID prefix は `UI-0001` / `API-0001` / `DB-0001` です。
|
|
40
44
|
宣言では大文字(`UI-0001`)、ファイル名は小文字(`ui-0001-...`)を使用します。
|
|
41
45
|
|
|
42
46
|
契約関連の検証は `validation.traceability` で制御します。
|
|
43
47
|
|
|
44
|
-
- `validation.traceability.
|
|
48
|
+
- `validation.traceability.orphanContractsPolicy`: Spec から参照されない契約の扱い(default: `error`、`error` / `warning` / `allow`)
|
|
45
49
|
- `validation.traceability.unknownContractIdSeverity`: Scenario が参照した契約 ID が存在しない場合の severity(default: `error`、`error` / `warning` のみ)
|
|
46
|
-
- Spec の `QFAI-CONTRACT-REF` が未知 ID を参照した場合は常に error(`QFAI-TRACE-
|
|
50
|
+
- Spec の `QFAI-CONTRACT-REF` が未知 ID を参照した場合は常に error(`QFAI-TRACE-024`)
|
|
47
51
|
- `unknownContractIdSeverity` は Scenario 側(`QFAI-TRACE-008`)のみを制御
|
|
48
52
|
|
|
49
53
|
`npx qfai init` は `.qfai/contracts/` 配下に UI/API/DB のサンプルを生成します。
|
|
@@ -9,10 +9,14 @@ npx qfai validate --fail-on error --format github
|
|
|
9
9
|
npx qfai report
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
+
`validate.json` が無い場合は `npx qfai report --run-validate` を使うか、
|
|
13
|
+
`--in <path>` で入力ファイルを指定してください。
|
|
14
|
+
|
|
12
15
|
## トレーサビリティ(SC→Test)
|
|
13
16
|
|
|
14
17
|
- `validation.traceability.testFileGlobs` に一致するテストコードで `QFAI:SC-xxxx` を参照する(コメント可)
|
|
15
18
|
- Spec→Contract は `spec.md` の `QFAI-CONTRACT-REF` 行で宣言する
|
|
19
|
+
- Scenario→Contract は `scenario.md` の `# QFAI-CONTRACT-REF` で宣言する(none 可)
|
|
16
20
|
|
|
17
21
|
## ディレクトリ概要
|
|
18
22
|
|
|
@@ -44,6 +48,7 @@ npx qfai report
|
|
|
44
48
|
|
|
45
49
|
- 設定ファイル: `qfai.config.yaml`(リポジトリ直下)
|
|
46
50
|
- CI テンプレ: `.github/workflows/qfai.yml`
|
|
51
|
+
- monorepo では `paths.outDir` をパッケージ単位に分けて衝突を避ける
|
|
47
52
|
|
|
48
53
|
## Prompts の使い方(重要)
|
|
49
54
|
|
|
@@ -63,3 +68,4 @@ npx qfai report
|
|
|
63
68
|
|
|
64
69
|
- 入口: `promptpack/constitution.md`
|
|
65
70
|
- 手動配置の例: Copilot/Claude/Codex 向けの指示ファイル
|
|
71
|
+
- PromptPack は非契約です(互換保証なし)。編集する場合はラップ運用や差分管理を推奨します。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Contracts (UI / API / DB)
|
|
2
2
|
|
|
3
|
-
契約は「システム外部との約束」を明文化する場所です。Spec(spec.md)の `QFAI-CONTRACT-REF` による参照が必須で、これが Spec→Contract 対応の SSOT になります。Scenario
|
|
3
|
+
契約は「システム外部との約束」を明文化する場所です。Spec(spec.md)の `QFAI-CONTRACT-REF` による参照が必須で、これが Spec→Contract 対応の SSOT になります。Scenario は `# QFAI-CONTRACT-REF` で契約参照を宣言します(none 可)。
|
|
4
4
|
|
|
5
5
|
## 置くべきファイル
|
|
6
6
|
|
|
@@ -63,7 +63,7 @@ CREATE TABLE sample_table (
|
|
|
63
63
|
## 依存関係
|
|
64
64
|
|
|
65
65
|
- Spec → Contracts(spec.md に `QFAI-CONTRACT-REF` を必ず1行以上宣言、0件は `none`。この行が SSOT)
|
|
66
|
-
- Scenario → Contracts(
|
|
66
|
+
- Scenario → Contracts(scenario.md に `# QFAI-CONTRACT-REF` を必ず1行以上宣言、0件は `none`)
|
|
67
67
|
|
|
68
68
|
## 良い例 / 悪い例
|
|
69
69
|
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
- 「Hard Gate」: `--fail-on error` で CI を止める領域
|
|
9
9
|
|
|
10
10
|
- Spec は QFAI-CONTRACT-REF で契約IDを宣言する(none可、宣言行は必須)
|
|
11
|
-
- Scenario は @SPEC-xxxx / @SC-xxxx / @BR-xxxx
|
|
11
|
+
- Scenario は @SPEC-xxxx / @SC-xxxx / @BR-xxxx を持つ
|
|
12
|
+
- Scenario は `# QFAI-CONTRACT-REF` で契約参照を宣言する(none 可、宣言行は必須)
|
|
12
13
|
- テスト/コードは QFAI:SC-xxxx で SC を参照する
|
|
13
14
|
- Spec はテスト/実装(src/tests)を参照しない
|
|
14
15
|
|
|
@@ -45,6 +45,8 @@ QFAI-CONTRACT-REF: UI-0001, API-0001, DB-0001
|
|
|
45
45
|
## Scenario(scenario.md)最小要件
|
|
46
46
|
|
|
47
47
|
- **Gherkin 記法**(Given/When/Then)
|
|
48
|
+
- **1ファイル = 1 Scenario**(Scenario Outline 含む)
|
|
49
|
+
- `# QFAI-CONTRACT-REF: ...` をコメント行で **必須宣言**(参照なしは `none`)
|
|
48
50
|
- `@SPEC-xxxx` は Feature レベルに **ちょうど1つ**必要
|
|
49
51
|
- Scenario / Scenario Outline には `@SC-xxxx` が **ちょうど1つ**必要
|
|
50
52
|
- Scenario / Scenario Outline には `@BR-xxxx` が **1つ以上**必要
|
|
@@ -53,6 +55,6 @@ QFAI-CONTRACT-REF: UI-0001, API-0001, DB-0001
|
|
|
53
55
|
|
|
54
56
|
- Spec: 必須セクション、SPEC/BR ID、BR Priority、ID 形式、Contract 参照の実在性、Contract 参照の必須宣言
|
|
55
57
|
- Delta: 変更区分(互換/変更)のチェック状態
|
|
56
|
-
- Scenario: Feature/Scenario の存在、タグ要件、Given/When/Then
|
|
58
|
+
- Scenario: Feature/Scenario の存在、タグ要件、Given/When/Then、契約参照の宣言/形式
|
|
57
59
|
- Traceability: BR→SC、Spec→Contract、SC→Test の接続、BR の所属 SPEC 整合
|
|
58
60
|
- IDs: 定義 ID の重複検知(Spec/Scenario/Contracts)
|