qfai 0.9.0 → 0.9.2
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 +19 -7
- package/assets/init/.qfai/README.md +4 -3
- package/assets/init/.qfai/prompts/README.md +3 -3
- package/assets/init/.qfai/prompts/analyze/README.md +8 -25
- package/assets/init/.qfai/prompts/analyze/scenario_test_consistency.md +5 -32
- package/assets/init/.qfai/prompts/analyze/scenario_to_test.md +56 -0
- package/assets/init/.qfai/prompts/analyze/spec_contract_consistency.md +5 -33
- package/assets/init/.qfai/prompts/analyze/spec_scenario_consistency.md +5 -32
- package/assets/init/.qfai/prompts/analyze/spec_to_contract.md +54 -0
- package/assets/init/.qfai/prompts/analyze/spec_to_scenario.md +56 -0
- package/assets/init/.qfai/samples/analyze/analysis.md +3 -3
- package/assets/init/.qfai/samples/analyze/input_bundle.md +54 -0
- package/dist/cli/index.cjs +415 -242
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.mjs +399 -226
- package/dist/cli/index.mjs.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.mjs +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
## インストール
|
|
25
25
|
|
|
26
26
|
```sh
|
|
27
|
-
npm install qfai
|
|
27
|
+
npm install -D qfai
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
または
|
|
@@ -33,6 +33,12 @@ npm install qfai
|
|
|
33
33
|
npx qfai init
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
+
pnpm の場合(推奨):
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
pnpm add -D qfai
|
|
40
|
+
```
|
|
41
|
+
|
|
36
42
|
**必要環境**: Node.js >= 18
|
|
37
43
|
|
|
38
44
|
## パッケージ
|
|
@@ -43,6 +49,7 @@ npx qfai init
|
|
|
43
49
|
|
|
44
50
|
```sh
|
|
45
51
|
npx qfai init
|
|
52
|
+
npx qfai doctor --fail-on error
|
|
46
53
|
npx qfai validate --fail-on error --format github
|
|
47
54
|
npx qfai report
|
|
48
55
|
```
|
|
@@ -125,21 +132,24 @@ doctor の JSON も非契約(内部形式。将来予告なく変更あり)
|
|
|
125
132
|
|
|
126
133
|
### 使い方(最短)
|
|
127
134
|
|
|
128
|
-
1.
|
|
129
|
-
2.
|
|
130
|
-
3.
|
|
135
|
+
1. `npx qfai analyze --list` でプロンプト一覧を確認する
|
|
136
|
+
2. `npx qfai analyze --prompt spec_to_scenario` のようにプロンプトを出力し、AI に貼り付ける
|
|
137
|
+
3. 推奨入力(Spec/Scenario/Test/Contract の抜粋 + validate/report 要約 + 差分)を揃えて検討する
|
|
131
138
|
|
|
132
|
-
|
|
139
|
+
入力の用意に迷う場合は、`npx qfai init` が同梱する `.qfai/samples/analyze/input_bundle.md`(完成例)をコピーして編集してください。
|
|
140
|
+
成果物を残す場合は `.qfai/samples/analyze/analysis.md`(テンプレ)を使う運用を推奨します。
|
|
133
141
|
|
|
134
142
|
### カスタマイズ(Overlay)
|
|
135
143
|
|
|
136
144
|
analyze も `.qfai/prompts.local/**` の overlay 運用に従います。
|
|
137
145
|
同じ相対パスのファイルがある場合は `.qfai/prompts.local` を優先して参照してください。
|
|
138
146
|
|
|
147
|
+
例: `.qfai/prompts.local/analyze/` に `spec_to_scenario.md` を置くと標準を上書きできます。
|
|
148
|
+
|
|
139
149
|
## 設定
|
|
140
150
|
|
|
141
151
|
設定はリポジトリ直下の `qfai.config.yaml` で行います。
|
|
142
|
-
命名規約は
|
|
152
|
+
命名規約は GitHub の[命名規約ドキュメント](https://github.com/aganesy/QFAI/blob/main/docs/rules/naming.md)を参照してください。
|
|
143
153
|
|
|
144
154
|
## 契約(Contracts)
|
|
145
155
|
|
|
@@ -210,7 +220,9 @@ jobs:
|
|
|
210
220
|
path: .qfai/out/report.md
|
|
211
221
|
```
|
|
212
222
|
|
|
213
|
-
validate.json のスキーマと例は
|
|
223
|
+
validate.json のスキーマと例は GitHub の
|
|
224
|
+
[schema](https://github.com/aganesy/QFAI/tree/main/docs/schema) /
|
|
225
|
+
[examples](https://github.com/aganesy/QFAI/tree/main/docs/examples) を参照してください。
|
|
214
226
|
PromptPack は非契約(互換保証なし)です。編集する場合はラップ運用を推奨します。
|
|
215
227
|
|
|
216
228
|
## 生成される構成(例)
|
|
@@ -46,10 +46,11 @@ npx qfai report
|
|
|
46
46
|
- `prompts/qfai-maintain-traceability.md`
|
|
47
47
|
- `prompts/qfai-maintain-contracts.md`
|
|
48
48
|
- `prompts/qfai-classify-change.md`
|
|
49
|
-
- `prompts/analyze/spec_scenario_consistency.md`
|
|
50
|
-
- `prompts/analyze/spec_contract_consistency.md`
|
|
51
|
-
- `prompts/analyze/scenario_test_consistency.md`
|
|
52
49
|
- `samples/analyze/analysis.md`
|
|
50
|
+
- `samples/analyze/input_bundle.md`
|
|
51
|
+
- `prompts/analyze/spec_to_scenario.md`
|
|
52
|
+
- `prompts/analyze/spec_to_contract.md`
|
|
53
|
+
- `prompts/analyze/scenario_to_test.md`
|
|
53
54
|
- `promptpack/constitution.md`
|
|
54
55
|
- `out/README.md`
|
|
55
56
|
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
- `qfai-maintain-contracts.md`: 契約 ID と参照の整合
|
|
30
30
|
- `qfai-classify-change.md`: Compatibility / Change 分類支援
|
|
31
31
|
- `analyze/README.md`: analyze の目的/入力/出力フォーマット
|
|
32
|
-
- `analyze/
|
|
33
|
-
- `analyze/
|
|
34
|
-
- `analyze/
|
|
32
|
+
- `analyze/spec_to_scenario.md`: Spec ↔ Scenario の意味整合
|
|
33
|
+
- `analyze/spec_to_contract.md`: Spec ↔ Contract の対応漏れ/参照不整合
|
|
34
|
+
- `analyze/scenario_to_test.md`: Scenario ↔ Test の網羅/抜け/誤差
|
|
35
35
|
|
|
36
36
|
## 使い分け表
|
|
37
37
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# analyze(手動利用)
|
|
2
2
|
|
|
3
|
-
このディレクトリは QFAI の `validate` が扱わない
|
|
3
|
+
このディレクトリは QFAI の `validate` が扱わない **意味レベル** の矛盾/抜け/リスクを、レビューのために洗い出すための **手動プロンプト集**です。
|
|
4
4
|
|
|
5
5
|
重要:
|
|
6
6
|
|
|
@@ -10,29 +10,12 @@
|
|
|
10
10
|
|
|
11
11
|
## 推奨入力(最小セット)
|
|
12
12
|
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
- `.qfai/specs/<spec-id>/scenario.md`
|
|
17
|
-
- `validate` の結果:
|
|
18
|
-
- `.qfai/out/report.md`(または `.qfai/out/validate.json` の要約)
|
|
19
|
-
- 変更差分:
|
|
20
|
-
- PR diff(または変更ファイル一覧)
|
|
13
|
+
- Project Context / Spec / Scenario / Test / Contract のうち、今回関係する箇所を **抜粋**で用意する
|
|
14
|
+
- `validate` / `report` の結果(必要なら要約)
|
|
15
|
+
- 変更差分(PR diff / 変更ファイル一覧)
|
|
21
16
|
|
|
22
|
-
|
|
17
|
+
## プロンプト一覧(v0.9.x)
|
|
23
18
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
- 種別: `Contradiction` / `Ambiguity` / `Missing Case` / `Risk` / `Suggestion`
|
|
29
|
-
- 影響範囲: `Spec` / `Scenario` / `Contract` / `Test` / `Docs`
|
|
30
|
-
- 根拠: 入力の該当箇所を短く引用
|
|
31
|
-
- 判断理由: なぜ矛盾/曖昧に見えるか
|
|
32
|
-
- 推奨アクション: 次に何を直す/議論するか(CIを止める結論は出さない)
|
|
33
|
-
|
|
34
|
-
## プロンプト一覧
|
|
35
|
-
|
|
36
|
-
- `spec_scenario_consistency.md`: Spec ↔ Scenario の意味整合
|
|
37
|
-
- `spec_contract_consistency.md`: Spec ↔ Contract の意味整合
|
|
38
|
-
- `scenario_test_consistency.md`: Scenario ↔ Test(SC参照)の表現妥当性
|
|
19
|
+
- `spec_to_scenario.md`: Spec ↔ Scenario の意味整合
|
|
20
|
+
- `spec_to_contract.md`: Spec ↔ Contract の参照整合(紐付け漏れ/根拠薄弱)
|
|
21
|
+
- `scenario_to_test.md`: Scenario ↔ Test の網羅性/ズレ
|
|
@@ -1,35 +1,8 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Deprecated
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
目的は Scenario の意図と、テスト(主に SC 参照)で表現している内容の **妥当性**(抜け/重複/過剰な固定)を候補として列挙することです。
|
|
3
|
+
このプロンプトは v0.9.1 で命名/雛形を整理しました。
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
- 代替: `.qfai/prompts/analyze/scenario_to_test.md`
|
|
6
|
+
- 理由: v0.9.1 の `qfai analyze --list` / `--prompt` が標準3本(spec_to_scenario/spec_to_contract/scenario_to_test)に揃えているため
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
- 出力は候補です。根拠(引用)を必ず添えてください。
|
|
10
|
-
- `validate` が扱う構造矛盾(SC 参照の欠落/未知IDなど)は対象外です。
|
|
11
|
-
|
|
12
|
-
## 入力
|
|
13
|
-
|
|
14
|
-
- Scenario: <貼り付け>
|
|
15
|
-
- テストコード抜粋(該当ファイル): <貼り付け>
|
|
16
|
-
- validate/report 要約: <貼り付け>
|
|
17
|
-
- 変更差分(任意): <貼り付け>
|
|
18
|
-
|
|
19
|
-
## 出力(厳守)
|
|
20
|
-
|
|
21
|
-
以下の形式で、見つかった分だけ列挙してください。最大 12 件まで。
|
|
22
|
-
|
|
23
|
-
- 種別: Contradiction | Ambiguity | Missing Case | Risk | Suggestion
|
|
24
|
-
- 影響範囲: Spec | Scenario | Contract | Test | Docs
|
|
25
|
-
- 根拠: "..."(短い引用を 1〜2 個)
|
|
26
|
-
- 判断理由: なぜ抜け/重複/過剰固定に見えるか
|
|
27
|
-
- 推奨アクション: 次に何を直す/議論するか
|
|
28
|
-
|
|
29
|
-
## 観点
|
|
30
|
-
|
|
31
|
-
- Scenario の受入条件に対してテストが不足している
|
|
32
|
-
- テストが Scenario にない要件を固定してしまっている(過剰な固定)
|
|
33
|
-
- 同じ意図のテストが重複している
|
|
34
|
-
- 境界値/例外系/権限/並行性など、事故りやすい論点が抜けている
|
|
35
|
-
- SC 参照はあるが、シナリオの主張を検証していない
|
|
8
|
+
以降は新しいプロンプトを利用してください。
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# analyze: Scenario ↔ Test 網羅性/ズレチェック
|
|
2
|
+
|
|
3
|
+
## 目的
|
|
4
|
+
|
|
5
|
+
- Scenario(受入条件)が Test で担保されているかを確認する
|
|
6
|
+
- Test が Scenario の意図を誤解していないかを確認する
|
|
7
|
+
|
|
8
|
+
## 入力の前提(貼り付けて埋める)
|
|
9
|
+
|
|
10
|
+
入力が多すぎる場合は「抜粋にする」「代表ケースだけに絞る」を優先してください。
|
|
11
|
+
|
|
12
|
+
### Project Context(任意)
|
|
13
|
+
|
|
14
|
+
- 対象機能:
|
|
15
|
+
- 前提/制約:
|
|
16
|
+
- 対象外(Non-goals):
|
|
17
|
+
|
|
18
|
+
### Scenario Excerpts
|
|
19
|
+
|
|
20
|
+
- ...
|
|
21
|
+
|
|
22
|
+
### Test Excerpts
|
|
23
|
+
|
|
24
|
+
- ...
|
|
25
|
+
|
|
26
|
+
### Spec Excerpts(任意)
|
|
27
|
+
|
|
28
|
+
- ...
|
|
29
|
+
|
|
30
|
+
### Contract / Trace Links(任意)
|
|
31
|
+
|
|
32
|
+
- (Scenario ID)→(Test名/ファイル など)
|
|
33
|
+
- ...
|
|
34
|
+
|
|
35
|
+
### Open Concerns(任意)
|
|
36
|
+
|
|
37
|
+
- ...
|
|
38
|
+
|
|
39
|
+
## チェック観点
|
|
40
|
+
|
|
41
|
+
- シナリオの各条件がテストに対応しているか(対応表を作る)
|
|
42
|
+
- 例外系・境界条件がテストされているか
|
|
43
|
+
- テスト名/説明がシナリオ用語と一致しているか
|
|
44
|
+
- テストが多すぎる/少なすぎることによるリスク
|
|
45
|
+
|
|
46
|
+
## 期待する出力形式
|
|
47
|
+
|
|
48
|
+
- 対応表(Scenario項目 → Test名/箇所)
|
|
49
|
+
- 漏れ(未テスト)とズレ(誤解)のリスト
|
|
50
|
+
- 優先度(高/中/低)を付ける
|
|
51
|
+
|
|
52
|
+
## 次アクション
|
|
53
|
+
|
|
54
|
+
- Test追加/修正案:
|
|
55
|
+
- Scenario追加/修正案:
|
|
56
|
+
- 追加で確認すべき質問:
|
|
@@ -1,36 +1,8 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Deprecated
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
目的は Spec と Contract の **意味整合**(期待する入出力/副作用/用語/エラーの扱い)を確認し、ズレを候補として列挙することです。
|
|
3
|
+
このプロンプトは v0.9.1 で命名/雛形を整理しました。
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
- 代替: `.qfai/prompts/analyze/spec_to_contract.md`
|
|
6
|
+
- 理由: v0.9.1 の `qfai analyze --list` / `--prompt` が標準3本(spec_to_scenario/spec_to_contract/scenario_to_test)に揃えているため
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
- 出力は候補です。根拠(引用)を必ず添えてください。
|
|
10
|
-
- `validate` が扱う構造矛盾(ID/参照/フォーマット)は対象外です。
|
|
11
|
-
|
|
12
|
-
## 入力
|
|
13
|
-
|
|
14
|
-
- Spec: <貼り付け>
|
|
15
|
-
- Contract: <貼り付け>
|
|
16
|
-
- validate/report 要約: <貼り付け>
|
|
17
|
-
- 変更差分(任意): <貼り付け>
|
|
18
|
-
|
|
19
|
-
## 出力(厳守)
|
|
20
|
-
|
|
21
|
-
以下の形式で、見つかった分だけ列挙してください。最大 12 件まで。
|
|
22
|
-
|
|
23
|
-
- 種別: Contradiction | Ambiguity | Missing Case | Risk | Suggestion
|
|
24
|
-
- 影響範囲: Spec | Scenario | Contract | Test | Docs
|
|
25
|
-
- 根拠: "..."(短い引用を 1〜2 個)
|
|
26
|
-
- 判断理由: なぜ矛盾/曖昧に見えるか
|
|
27
|
-
- 推奨アクション: 次に何を直す/議論するか
|
|
28
|
-
|
|
29
|
-
## 観点
|
|
30
|
-
|
|
31
|
-
- 用語/フィールド名/概念の不一致
|
|
32
|
-
- Spec の期待(入力/出力/状態遷移)と Contract の定義の不一致
|
|
33
|
-
- エラー/例外の扱い(HTTP status / error code / validation error の条件)
|
|
34
|
-
- 非機能(性能/レート制限/タイムアウト/整合性)への言及のズレ
|
|
35
|
-
- Contract が Spec の範囲を超えて規定している(過剰な固定)
|
|
36
|
-
- Spec が Contract の重要条件を説明していない(根拠不足)
|
|
8
|
+
以降は新しいプロンプトを利用してください。
|
|
@@ -1,35 +1,8 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Deprecated
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
目的は `validate` が扱わない **意味矛盾**(用語/前提/例外/受入条件の齟齬)を、レビューで判断できる形で列挙することです。
|
|
3
|
+
このプロンプトは v0.9.1 で命名/雛形を整理しました。
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
- 代替: `.qfai/prompts/analyze/spec_to_scenario.md`
|
|
6
|
+
- 理由: v0.9.1 の `qfai analyze --list` / `--prompt` が標準3本(spec_to_scenario/spec_to_contract/scenario_to_test)に揃えているため
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
- 出力は候補です。根拠(引用)を必ず添えてください。
|
|
10
|
-
- `validate` が扱う構造矛盾(参照/フォーマット/ID)は対象外です。
|
|
11
|
-
|
|
12
|
-
## 入力
|
|
13
|
-
|
|
14
|
-
- Spec: <貼り付け>
|
|
15
|
-
- Scenario: <貼り付け>
|
|
16
|
-
- validate/report 要約: <貼り付け>
|
|
17
|
-
- 変更差分(任意): <貼り付け>
|
|
18
|
-
|
|
19
|
-
## 出力(厳守)
|
|
20
|
-
|
|
21
|
-
以下の形式で、見つかった分だけ列挙してください。最大 12 件まで。重大度の推定は不要です。
|
|
22
|
-
|
|
23
|
-
- 種別: Contradiction | Ambiguity | Missing Case | Risk | Suggestion
|
|
24
|
-
- 影響範囲: Spec | Scenario | Contract | Test | Docs
|
|
25
|
-
- 根拠: "..."(短い引用を 1〜2 個)
|
|
26
|
-
- 判断理由: なぜ矛盾/曖昧に見えるか
|
|
27
|
-
- 推奨アクション: 次に何を直す/議論するか
|
|
28
|
-
|
|
29
|
-
## 観点
|
|
30
|
-
|
|
31
|
-
- 用語の不一致(同じ概念が別名、別概念が同名)
|
|
32
|
-
- 前提条件/制約の不一致(Spec にあるが Scenario にない、または逆)
|
|
33
|
-
- 例外系/エラー系の扱いの不一致
|
|
34
|
-
- Acceptance Criteria の抜け/過剰/言い回しのズレ
|
|
35
|
-
- Scenario の手順が Spec の要求を満たしていない/逆に余計な要求を足している
|
|
8
|
+
以降は新しいプロンプトを利用してください。
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# analyze: Spec ↔ Contract トレーサビリティチェック
|
|
2
|
+
|
|
3
|
+
## 目的
|
|
4
|
+
|
|
5
|
+
- Spec と Contract(参照関係)が噛み合っているかを確認する
|
|
6
|
+
- 紐付け漏れ・参照の根拠薄弱を抽出する
|
|
7
|
+
|
|
8
|
+
## 入力の前提(貼り付けて埋める)
|
|
9
|
+
|
|
10
|
+
入力が多すぎる場合は「抜粋にする」「代表ケースだけに絞る」を優先してください。
|
|
11
|
+
|
|
12
|
+
### Project Context
|
|
13
|
+
|
|
14
|
+
- 対象機能:
|
|
15
|
+
- 前提/制約:
|
|
16
|
+
- 対象外(Non-goals):
|
|
17
|
+
|
|
18
|
+
### Spec Excerpts
|
|
19
|
+
|
|
20
|
+
- ...
|
|
21
|
+
|
|
22
|
+
### Contract / Trace Links
|
|
23
|
+
|
|
24
|
+
- (Spec ID)→(Scenario ID / Test ID など)
|
|
25
|
+
- ...
|
|
26
|
+
|
|
27
|
+
### Scenario Excerpts(任意)
|
|
28
|
+
|
|
29
|
+
- ...
|
|
30
|
+
|
|
31
|
+
### Test Excerpts(任意)
|
|
32
|
+
|
|
33
|
+
- ...
|
|
34
|
+
|
|
35
|
+
### Open Concerns(任意)
|
|
36
|
+
|
|
37
|
+
- ...
|
|
38
|
+
|
|
39
|
+
## チェック観点
|
|
40
|
+
|
|
41
|
+
- Spec に対してリンクが存在しない箇所(紐付け漏れ)
|
|
42
|
+
- Contract で参照しているが、Spec 側に根拠が見当たらない箇所
|
|
43
|
+
- 参照の向きが不自然な箇所(誤ったID、転記ミスの疑い)
|
|
44
|
+
|
|
45
|
+
## 期待する出力形式
|
|
46
|
+
|
|
47
|
+
- 「紐付け漏れ」「根拠薄弱」「参照ミス疑い」に分類
|
|
48
|
+
- それぞれに修正案(Contract修正 / Spec補強 / Scenario追加)を付ける
|
|
49
|
+
|
|
50
|
+
## 次アクション
|
|
51
|
+
|
|
52
|
+
- Contract修正案:
|
|
53
|
+
- Spec補強案:
|
|
54
|
+
- 追加で確認すべき質問:
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# analyze: Spec ↔ Scenario 整合性チェック
|
|
2
|
+
|
|
3
|
+
## 目的
|
|
4
|
+
|
|
5
|
+
- Spec(仕様)の主張が Scenario(受入シナリオ)に反映されているかを確認する
|
|
6
|
+
- Scenario が Spec を逸脱していないかを確認する
|
|
7
|
+
|
|
8
|
+
## 入力の前提(貼り付けて埋める)
|
|
9
|
+
|
|
10
|
+
入力が多すぎる場合は「抜粋にする」「代表ケースだけに絞る」を優先してください。
|
|
11
|
+
|
|
12
|
+
### Project Context
|
|
13
|
+
|
|
14
|
+
- 対象機能:
|
|
15
|
+
- 前提/制約:
|
|
16
|
+
- 対象外(Non-goals):
|
|
17
|
+
|
|
18
|
+
### Spec Excerpts
|
|
19
|
+
|
|
20
|
+
- ...
|
|
21
|
+
|
|
22
|
+
### Scenario Excerpts
|
|
23
|
+
|
|
24
|
+
- ...
|
|
25
|
+
|
|
26
|
+
### Test Excerpts(任意)
|
|
27
|
+
|
|
28
|
+
- ...
|
|
29
|
+
|
|
30
|
+
### Contract / Trace Links(任意)
|
|
31
|
+
|
|
32
|
+
- (Spec ID)→(Scenario ID / Test ID など)
|
|
33
|
+
- ...
|
|
34
|
+
|
|
35
|
+
### Open Concerns(任意)
|
|
36
|
+
|
|
37
|
+
- ...
|
|
38
|
+
|
|
39
|
+
## チェック観点
|
|
40
|
+
|
|
41
|
+
- 用語定義の不一致(同じ言葉で別の意味)
|
|
42
|
+
- 例外条件/境界条件の不足
|
|
43
|
+
- 受入条件(Given/When/Then 等)が仕様の制約を満たすか
|
|
44
|
+
- 仕様にあるのにシナリオがない項目(漏れ)
|
|
45
|
+
- シナリオにあるのに仕様に根拠がない項目(逸脱)
|
|
46
|
+
|
|
47
|
+
## 期待する出力形式
|
|
48
|
+
|
|
49
|
+
- 矛盾 / 不明点 / 漏れ をそれぞれ箇条書き
|
|
50
|
+
- それぞれに「根拠(Spec/Scenario抜粋の引用)」と「提案(修正案)」を付ける
|
|
51
|
+
|
|
52
|
+
## 次アクション
|
|
53
|
+
|
|
54
|
+
- Spec修正案:
|
|
55
|
+
- Scenario追加/修正案:
|
|
56
|
+
- 追加で確認すべき質問:
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
|
|
20
20
|
## 実行したプロンプト
|
|
21
21
|
|
|
22
|
-
- `.qfai/prompts/analyze/
|
|
23
|
-
- `.qfai/prompts/analyze/
|
|
24
|
-
- `.qfai/prompts/analyze/
|
|
22
|
+
- `.qfai/prompts/analyze/spec_to_scenario.md`
|
|
23
|
+
- `.qfai/prompts/analyze/spec_to_contract.md`
|
|
24
|
+
- `.qfai/prompts/analyze/scenario_to_test.md`
|
|
25
25
|
|
|
26
26
|
## 結果(候補)
|
|
27
27
|
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# analyze 入力バンドル(サンプル)
|
|
2
|
+
|
|
3
|
+
> 目的: `analyze` 用の入力をブレなく用意するための完成例です。
|
|
4
|
+
> 本ファイルは架空の小規模機能を題材にしています。自プロジェクトではコピーして編集してください。
|
|
5
|
+
|
|
6
|
+
## Project Context
|
|
7
|
+
|
|
8
|
+
- 対象機能: パスワードリセット(メールでワンタイムリンクを送る)
|
|
9
|
+
- 前提/制約:
|
|
10
|
+
- リンクは 15 分で失効
|
|
11
|
+
- 送信頻度制限(IP + アカウント単位)
|
|
12
|
+
- 失効後は再送が必要
|
|
13
|
+
- 対象外(Non-goals):
|
|
14
|
+
- 多要素認証
|
|
15
|
+
- 端末認証
|
|
16
|
+
|
|
17
|
+
## Spec Excerpts
|
|
18
|
+
|
|
19
|
+
- ユーザーがメールアドレスを入力すると、登録済みならリセットリンクを送る
|
|
20
|
+
- 未登録メールでも挙動は同じに見せる(ユーザー列挙防止)
|
|
21
|
+
- リンクは 15 分で失効し、失効後はエラーを表示する
|
|
22
|
+
|
|
23
|
+
## Scenario Excerpts
|
|
24
|
+
|
|
25
|
+
- Given 登録済みユーザーがいる
|
|
26
|
+
When パスワードリセットを要求する
|
|
27
|
+
Then リセットメールが送信される
|
|
28
|
+
- Given 未登録のメールアドレス
|
|
29
|
+
When パスワードリセットを要求する
|
|
30
|
+
Then 同じメッセージが表示される(送信の有無は漏らさない)
|
|
31
|
+
- Given 期限切れのリセットリンク
|
|
32
|
+
When リセットリンクを開く
|
|
33
|
+
Then 期限切れとして扱われ、再送導線が提示される
|
|
34
|
+
|
|
35
|
+
## Test Excerpts
|
|
36
|
+
|
|
37
|
+
- unit: `requestPasswordReset` は常に成功レスポンスを返す(登録有無を分岐しない)
|
|
38
|
+
- unit: `verifyResetToken` は失効時に `TokenExpired` を返す
|
|
39
|
+
- integration: 送信頻度制限が発動した場合でも同じメッセージを返す
|
|
40
|
+
|
|
41
|
+
## Contract / Trace Links
|
|
42
|
+
|
|
43
|
+
- Spec: SPEC-RESET-001 → Scenario: SC-RESET-001, SC-RESET-002, SC-RESET-003
|
|
44
|
+
- Scenario: SC-RESET-003 → Test: tests/auth/reset.test.ts#expired
|
|
45
|
+
|
|
46
|
+
## Open Concerns
|
|
47
|
+
|
|
48
|
+
- 送信頻度制限のしきい値(運用で調整するか、固定か)
|
|
49
|
+
- 期限切れ時のUX(単に失敗か、再送導線を必須にするか)
|
|
50
|
+
|
|
51
|
+
## Non-goals
|
|
52
|
+
|
|
53
|
+
- メール配信基盤の冗長化
|
|
54
|
+
- 監査ログの永続化
|