@einja/dev-cli 0.1.6
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 +179 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +49 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +243 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +2 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +23 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/sync.d.ts +7 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +294 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/sync.test.d.ts +2 -0
- package/dist/commands/sync.test.d.ts.map +1 -0
- package/dist/commands/sync.test.js +593 -0
- package/dist/commands/sync.test.js.map +1 -0
- package/dist/commands/task-loop.d.ts +11 -0
- package/dist/commands/task-loop.d.ts.map +1 -0
- package/dist/commands/task-loop.js +81 -0
- package/dist/commands/task-loop.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/file-system.d.ts +39 -0
- package/dist/lib/file-system.d.ts.map +1 -0
- package/dist/lib/file-system.js +79 -0
- package/dist/lib/file-system.js.map +1 -0
- package/dist/lib/mcp-config.d.ts +43 -0
- package/dist/lib/mcp-config.d.ts.map +1 -0
- package/dist/lib/mcp-config.js +109 -0
- package/dist/lib/mcp-config.js.map +1 -0
- package/dist/lib/mcp-config.test.d.ts +2 -0
- package/dist/lib/mcp-config.test.d.ts.map +1 -0
- package/dist/lib/mcp-config.test.js +285 -0
- package/dist/lib/mcp-config.test.js.map +1 -0
- package/dist/lib/merger.d.ts +41 -0
- package/dist/lib/merger.d.ts.map +1 -0
- package/dist/lib/merger.js +164 -0
- package/dist/lib/merger.js.map +1 -0
- package/dist/lib/preset-update/cli-repo-detector.d.ts +35 -0
- package/dist/lib/preset-update/cli-repo-detector.d.ts.map +1 -0
- package/dist/lib/preset-update/cli-repo-detector.js +83 -0
- package/dist/lib/preset-update/cli-repo-detector.js.map +1 -0
- package/dist/lib/preset-update/cli-repo-detector.test.d.ts +2 -0
- package/dist/lib/preset-update/cli-repo-detector.test.d.ts.map +1 -0
- package/dist/lib/preset-update/cli-repo-detector.test.js +120 -0
- package/dist/lib/preset-update/cli-repo-detector.test.js.map +1 -0
- package/dist/lib/preset-update/file-copier.d.ts +59 -0
- package/dist/lib/preset-update/file-copier.d.ts.map +1 -0
- package/dist/lib/preset-update/file-copier.js +220 -0
- package/dist/lib/preset-update/file-copier.js.map +1 -0
- package/dist/lib/preset-update/file-copier.test.d.ts +2 -0
- package/dist/lib/preset-update/file-copier.test.d.ts.map +1 -0
- package/dist/lib/preset-update/file-copier.test.js +297 -0
- package/dist/lib/preset-update/file-copier.test.js.map +1 -0
- package/dist/lib/preset-update/preset-finder.d.ts +39 -0
- package/dist/lib/preset-update/preset-finder.d.ts.map +1 -0
- package/dist/lib/preset-update/preset-finder.js +92 -0
- package/dist/lib/preset-update/preset-finder.js.map +1 -0
- package/dist/lib/preset-update/preset-finder.test.d.ts +2 -0
- package/dist/lib/preset-update/preset-finder.test.d.ts.map +1 -0
- package/dist/lib/preset-update/preset-finder.test.js +128 -0
- package/dist/lib/preset-update/preset-finder.test.js.map +1 -0
- package/dist/lib/preset.d.ts +14 -0
- package/dist/lib/preset.d.ts.map +1 -0
- package/dist/lib/preset.js +52 -0
- package/dist/lib/preset.js.map +1 -0
- package/dist/lib/sync/backup-manager.d.ts +50 -0
- package/dist/lib/sync/backup-manager.d.ts.map +1 -0
- package/dist/lib/sync/backup-manager.js +117 -0
- package/dist/lib/sync/backup-manager.js.map +1 -0
- package/dist/lib/sync/backup-manager.test.d.ts +2 -0
- package/dist/lib/sync/backup-manager.test.d.ts.map +1 -0
- package/dist/lib/sync/backup-manager.test.js +155 -0
- package/dist/lib/sync/backup-manager.test.js.map +1 -0
- package/dist/lib/sync/batch-processor.d.ts +27 -0
- package/dist/lib/sync/batch-processor.d.ts.map +1 -0
- package/dist/lib/sync/batch-processor.js +46 -0
- package/dist/lib/sync/batch-processor.js.map +1 -0
- package/dist/lib/sync/batch-processor.test.d.ts +2 -0
- package/dist/lib/sync/batch-processor.test.d.ts.map +1 -0
- package/dist/lib/sync/batch-processor.test.js +110 -0
- package/dist/lib/sync/batch-processor.test.js.map +1 -0
- package/dist/lib/sync/category-validator.d.ts +36 -0
- package/dist/lib/sync/category-validator.d.ts.map +1 -0
- package/dist/lib/sync/category-validator.js +46 -0
- package/dist/lib/sync/category-validator.js.map +1 -0
- package/dist/lib/sync/category-validator.test.d.ts +2 -0
- package/dist/lib/sync/category-validator.test.d.ts.map +1 -0
- package/dist/lib/sync/category-validator.test.js +89 -0
- package/dist/lib/sync/category-validator.test.js.map +1 -0
- package/dist/lib/sync/conflict-reporter.d.ts +57 -0
- package/dist/lib/sync/conflict-reporter.d.ts.map +1 -0
- package/dist/lib/sync/conflict-reporter.js +81 -0
- package/dist/lib/sync/conflict-reporter.js.map +1 -0
- package/dist/lib/sync/conflict-reporter.test.d.ts +2 -0
- package/dist/lib/sync/conflict-reporter.test.d.ts.map +1 -0
- package/dist/lib/sync/conflict-reporter.test.js +132 -0
- package/dist/lib/sync/conflict-reporter.test.js.map +1 -0
- package/dist/lib/sync/diff-engine.d.ts +28 -0
- package/dist/lib/sync/diff-engine.d.ts.map +1 -0
- package/dist/lib/sync/diff-engine.js +118 -0
- package/dist/lib/sync/diff-engine.js.map +1 -0
- package/dist/lib/sync/diff-engine.test.d.ts +2 -0
- package/dist/lib/sync/diff-engine.test.d.ts.map +1 -0
- package/dist/lib/sync/diff-engine.test.js +133 -0
- package/dist/lib/sync/diff-engine.test.js.map +1 -0
- package/dist/lib/sync/file-filter.d.ts +40 -0
- package/dist/lib/sync/file-filter.d.ts.map +1 -0
- package/dist/lib/sync/file-filter.js +171 -0
- package/dist/lib/sync/file-filter.js.map +1 -0
- package/dist/lib/sync/file-filter.test.d.ts +2 -0
- package/dist/lib/sync/file-filter.test.d.ts.map +1 -0
- package/dist/lib/sync/file-filter.test.js +179 -0
- package/dist/lib/sync/file-filter.test.js.map +1 -0
- package/dist/lib/sync/hash-cache.d.ts +34 -0
- package/dist/lib/sync/hash-cache.d.ts.map +1 -0
- package/dist/lib/sync/hash-cache.js +51 -0
- package/dist/lib/sync/hash-cache.js.map +1 -0
- package/dist/lib/sync/hash-cache.test.d.ts +2 -0
- package/dist/lib/sync/hash-cache.test.d.ts.map +1 -0
- package/dist/lib/sync/hash-cache.test.js +110 -0
- package/dist/lib/sync/hash-cache.test.js.map +1 -0
- package/dist/lib/sync/integration.test.d.ts +2 -0
- package/dist/lib/sync/integration.test.d.ts.map +1 -0
- package/dist/lib/sync/integration.test.js +317 -0
- package/dist/lib/sync/integration.test.js.map +1 -0
- package/dist/lib/sync/marker-processor.d.ts +54 -0
- package/dist/lib/sync/marker-processor.d.ts.map +1 -0
- package/dist/lib/sync/marker-processor.js +208 -0
- package/dist/lib/sync/marker-processor.js.map +1 -0
- package/dist/lib/sync/marker-processor.test.d.ts +2 -0
- package/dist/lib/sync/marker-processor.test.d.ts.map +1 -0
- package/dist/lib/sync/marker-processor.test.js +245 -0
- package/dist/lib/sync/marker-processor.test.js.map +1 -0
- package/dist/lib/sync/metadata-manager.d.ts +46 -0
- package/dist/lib/sync/metadata-manager.d.ts.map +1 -0
- package/dist/lib/sync/metadata-manager.js +129 -0
- package/dist/lib/sync/metadata-manager.js.map +1 -0
- package/dist/lib/sync/metadata-manager.test.d.ts +2 -0
- package/dist/lib/sync/metadata-manager.test.d.ts.map +1 -0
- package/dist/lib/sync/metadata-manager.test.js +137 -0
- package/dist/lib/sync/metadata-manager.test.js.map +1 -0
- package/dist/lib/sync/performance.test.d.ts +2 -0
- package/dist/lib/sync/performance.test.d.ts.map +1 -0
- package/dist/lib/sync/performance.test.js +126 -0
- package/dist/lib/sync/performance.test.js.map +1 -0
- package/dist/types/index.d.ts +59 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/preset-update.d.ts +106 -0
- package/dist/types/preset-update.d.ts.map +1 -0
- package/dist/types/preset-update.js +5 -0
- package/dist/types/preset-update.js.map +1 -0
- package/dist/types/sync.d.ts +169 -0
- package/dist/types/sync.d.ts.map +1 -0
- package/dist/types/sync.js +19 -0
- package/dist/types/sync.js.map +1 -0
- package/package.json +72 -0
- package/presets/minimal/.claude/agents/einja/docs/docs-updater.md +161 -0
- package/presets/minimal/.claude/agents/einja/frontend/design-engineer.md +685 -0
- package/presets/minimal/.claude/agents/einja/frontend/frontend-architect.md +747 -0
- package/presets/minimal/.claude/agents/einja/frontend/frontend-coder.md +441 -0
- package/presets/minimal/.claude/agents/einja/git/conflict-resolver.md +148 -0
- package/presets/minimal/.claude/agents/einja/specs/spec-design-generator.md +462 -0
- package/presets/minimal/.claude/agents/einja/specs/spec-qa-generator.md +466 -0
- package/presets/minimal/.claude/agents/einja/specs/spec-requirements-generator.md +416 -0
- package/presets/minimal/.claude/agents/einja/specs/spec-tasks-generator.md +608 -0
- package/presets/minimal/.claude/agents/einja/task/task-committer.md +82 -0
- package/presets/minimal/.claude/agents/einja/task/task-executer.md +352 -0
- package/presets/minimal/.claude/agents/einja/task/task-modification-analyzer.md +369 -0
- package/presets/minimal/.claude/agents/einja/task/task-qa.md +74 -0
- package/presets/minimal/.claude/agents/einja/task/task-reviewer.md +169 -0
- package/presets/minimal/.claude/commands/einja/frontend-implement.md +322 -0
- package/presets/minimal/.claude/commands/einja/spec-create.md +254 -0
- package/presets/minimal/.claude/commands/einja/start-dev.md +98 -0
- package/presets/minimal/.claude/commands/einja/sync-cursor-commands.md +203 -0
- package/presets/minimal/.claude/commands/einja/task-exec.md +390 -0
- package/presets/minimal/.claude/commands/einja/update-docs-by-task-specs.md +448 -0
- package/presets/minimal/.claude/hooks/einja/biome-format.sh +49 -0
- package/presets/minimal/.claude/hooks/einja/design-doc-check.sh +61 -0
- package/presets/minimal/.claude/hooks/einja/detect-secrets.sh +62 -0
- package/presets/minimal/.claude/hooks/einja/large-file-warning.sh +42 -0
- package/presets/minimal/.claude/hooks/einja/playwright-resize.sh +36 -0
- package/presets/minimal/.claude/hooks/einja/typecheck.sh +37 -0
- package/presets/minimal/.claude/hooks/einja/unset-volta-recursion.sh +32 -0
- package/presets/minimal/.claude/hooks/einja/validate-git-commit.sh +239 -0
- package/presets/minimal/.claude/hooks/einja/warn-index-ts.sh +34 -0
- package/presets/minimal/.claude/hooks/einja/warn-relative-import.sh +48 -0
- package/presets/minimal/.claude/settings.json +174 -0
- package/presets/minimal/.claude/skills/einja/api-development/SKILL.md +14 -0
- package/presets/minimal/.claude/skills/einja/backend-architecture/SKILL.md +14 -0
- package/presets/minimal/.claude/skills/einja/coding-standards/SKILL.md +120 -0
- package/presets/minimal/.claude/skills/einja/coding-standards/reference/naming-conventions.md +107 -0
- package/presets/minimal/.claude/skills/einja/coding-standards/reference/prohibited-patterns.md +169 -0
- package/presets/minimal/.claude/skills/einja/coding-standards/reference/typescript-rules.md +247 -0
- package/presets/minimal/.claude/skills/einja/component-design/SKILL.md +109 -0
- package/presets/minimal/.claude/skills/einja/component-design/reference/directory-structure.md +117 -0
- package/presets/minimal/.claude/skills/einja/component-design/reference/props-patterns.md +159 -0
- package/presets/minimal/.claude/skills/einja/component-design/reference/styling-guide.md +200 -0
- package/presets/minimal/.claude/skills/einja/conflict-resolver/SKILL.md +190 -0
- package/presets/minimal/.claude/skills/einja/frontend-development/SKILL.md +14 -0
- package/presets/minimal/.claude/skills/einja/general-context-loader/SKILL.md +254 -0
- package/presets/minimal/.claude/skills/einja/output-format/SKILL.md +137 -0
- package/presets/minimal/.claude/skills/einja/spec-context-loader/SKILL.md +177 -0
- package/presets/minimal/.claude/skills/einja/task-commit/SKILL.md +269 -0
- package/presets/minimal/.claude/skills/einja/task-qa/SKILL.md +306 -0
- package/presets/minimal/.claude/skills/einja/task-qa/reference/failure-patterns.md +69 -0
- package/presets/minimal/.claude/skills/einja/task-qa/reference/troubleshooting.md +65 -0
- package/presets/minimal/.claude/skills/einja/task-qa/reference/usage-patterns.md +52 -0
- package/presets/minimal/.claude/skills/einja/task-qa/templates/qa-test-template.md +128 -0
- package/presets/minimal/preset.yaml +111 -0
- package/presets/minimal/symlinks.json +45 -0
- package/scaffolds/.mcp.json +45 -0
- package/scaffolds/CLAUDE.md.template +318 -0
- package/scaffolds/steering/README.md +170 -0
- package/scaffolds/steering/acceptance-criteria-and-qa-guide.md +415 -0
- package/scaffolds/steering/architecture.md +481 -0
- package/scaffolds/steering/branch-strategy.md +362 -0
- package/scaffolds/steering/commit-rules.md +217 -0
- package/scaffolds/steering/db-schema-design.md +609 -0
- package/scaffolds/steering/development/api-development.md +783 -0
- package/scaffolds/steering/development/backend-architecture.md +731 -0
- package/scaffolds/steering/development/frontend-development.md +1537 -0
- package/scaffolds/steering/development/review-guidelines.md +365 -0
- package/scaffolds/steering/development/testing-strategy.md +819 -0
- package/scaffolds/steering/development-workflow.md +429 -0
- package/scaffolds/steering/infrastructure/deployment.md +277 -0
- package/scaffolds/steering/infrastructure/environment-variables.md +298 -0
- package/scaffolds/steering/product.md +540 -0
- package/scaffolds/steering/task-management.md +367 -0
- package/templates/README.md +159 -0
- package/templates/design-simple.md.template +172 -0
- package/templates/design.md.template +327 -0
- package/templates/qa-test.md.template +125 -0
- package/templates/requirements.md.template +254 -0
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task-qa
|
|
3
|
+
description: "タスクの品質保証を実行するSkill。必須自動テスト、AC検証、動作確認を実施し、qa-tests/に結果を記録します"
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Task
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Edit
|
|
9
|
+
- Bash
|
|
10
|
+
- Grep
|
|
11
|
+
- Glob
|
|
12
|
+
- mcp__playwright__*
|
|
13
|
+
- mcp__serena__*
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# task-qa Skill: QA実行エンジン
|
|
17
|
+
|
|
18
|
+
あなたはQAエンジニアリングのスペシャリストで、テスト自動化と品質保証に12年以上の経験を持つエキスパートです。Playwright、Selenium、Jest、Cypressなどのテストツールに精通し、E2Eテストからユニットテストまで幅広いテスト戦略を立案・実行できます。
|
|
19
|
+
|
|
20
|
+
## 中核的な責務
|
|
21
|
+
|
|
22
|
+
実装された機能が受け入れ条件を満たしていることを確認します。修正内容に応じて最適なテスト手法を選択し、徹底的な動作確認を実施します。
|
|
23
|
+
|
|
24
|
+
**重要**: 単体テストではカバーできない**統合確認**を行うことが目的です:
|
|
25
|
+
- **単体テスト(開発者が実装)**: コンポーネント、関数、Hook等の個別動作確認
|
|
26
|
+
- **QAテスト(あなたが実施)**: 画面フロー、API連携、データ永続化等の統合動作確認
|
|
27
|
+
|
|
28
|
+
**必須参照ドキュメント**:
|
|
29
|
+
- `reference/failure-patterns.md` - 失敗原因分類の実践例(10パターン)
|
|
30
|
+
- `reference/usage-patterns.md` - 利用パターン(5パターン)
|
|
31
|
+
- `reference/troubleshooting.md` - トラブルシューティング(6ケース)
|
|
32
|
+
- `docs/einja/steering/acceptance-criteria-and-qa-guide.md` - 価値あるテストの判定基準
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 実行手順(8ステップ)
|
|
37
|
+
|
|
38
|
+
### ステップ0: 引数の解析と初期化
|
|
39
|
+
|
|
40
|
+
**入力形式**: `{spec_dir} [--task-group-id {task_group_id}]`
|
|
41
|
+
|
|
42
|
+
**例**: `docs/specs/tasks/user-auth/ --task-group-id 1.1`
|
|
43
|
+
|
|
44
|
+
**TODOリストの作成**: TodoWriteツールで8ステップのTODOを作成してください。
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
### ステップ1: 仕様書の読み込み
|
|
49
|
+
|
|
50
|
+
1. `{spec_dir}/requirements.md` の存在を確認
|
|
51
|
+
2. requirements.md を読み込み、AC(受け入れ条件)を抽出
|
|
52
|
+
3. 各ACから「検証レベル」(Unit/Integration/E2E)を識別
|
|
53
|
+
|
|
54
|
+
**パース目標**: AC番号、タイトル、前提条件、操作、期待結果、**検証レベル**
|
|
55
|
+
|
|
56
|
+
**エラー時**: requirements.md不在は失敗分類B(要件未定義)
|
|
57
|
+
|
|
58
|
+
#### 受け入れ基準の解釈確認
|
|
59
|
+
|
|
60
|
+
テスト準備時に受け入れ基準の解釈に疑問がある場合、AskUserQuestionで明確化します。
|
|
61
|
+
|
|
62
|
+
```yaml
|
|
63
|
+
AskUserQuestion:
|
|
64
|
+
question: "受け入れ基準の解釈を確認させてください"
|
|
65
|
+
header: "基準確認"
|
|
66
|
+
options:
|
|
67
|
+
- label: "厳密に解釈(推奨)"
|
|
68
|
+
description: "推奨理由: 仕様書の文言通りに検証し品質を保証。メリット: 仕様との齟齬が少なく、見逃しを防げる。デメリット: テスト時間が増加する可能性"
|
|
69
|
+
- label: "柔軟に解釈"
|
|
70
|
+
description: "仕様書の意図を汲み取り、合理的な範囲で検証。メリット: 効率的に進められる。デメリット: 仕様との齟齬が発生する可能性"
|
|
71
|
+
- label: "追加確認が必要"
|
|
72
|
+
description: "仕様書だけでは判断できない。追加情報を要求。メリット: 確実な検証が可能。デメリット: 確認待ちで進行が遅延"
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
### ステップ2: 必須自動テストの実行
|
|
78
|
+
|
|
79
|
+
**⚠️ 超重要**: 以下5項目は**すべて成功が必須**。1つでも失敗したら即座に**FAILURE**判定。
|
|
80
|
+
|
|
81
|
+
| 項目 | コマンド | 失敗時の分類 |
|
|
82
|
+
|-----|---------|------------|
|
|
83
|
+
| ユニットテスト | `pnpm test` | A(実装ミス) |
|
|
84
|
+
| E2Eテスト | `pnpm test:e2e` | A(実装ミス) |
|
|
85
|
+
| Lintチェック | `pnpm lint` | A(実装ミス) |
|
|
86
|
+
| ビルド | `pnpm build` | A(実装ミス) |
|
|
87
|
+
| 型チェック | `pnpm typecheck` | A(実装ミス) |
|
|
88
|
+
|
|
89
|
+
**重要**: いずれか1つでも失敗した場合、手動確認は実施せず即座にFAILURE判定。PARTIAL判定は禁止。
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
### ステップ3: 既存テスト仕様の読み込み
|
|
94
|
+
|
|
95
|
+
**前提**: テスト仕様は `spec-qa-generator` が作成済み。task-qaは**実行のみ**を担当。
|
|
96
|
+
|
|
97
|
+
1. **テスト仕様ファイルの特定**: タスクグループID "1.1" → `qa-tests/phase1/1-1.md`
|
|
98
|
+
2. **シナリオテストの確認**: `qa-tests/scenarios.md` で該当タスクの実施タイミングを確認
|
|
99
|
+
3. **テスト仕様の読み込み**: テストシナリオ、確認項目、期待値を把握
|
|
100
|
+
|
|
101
|
+
**エラー時**: テスト仕様が存在しない場合は失敗分類B(要件齟齬)→ spec-qa-generatorで作成が必要
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
### ステップ3.5: テスト方針の確認
|
|
106
|
+
|
|
107
|
+
修正種別に応じたテスト方法を確認します。
|
|
108
|
+
|
|
109
|
+
#### 画面修正の場合
|
|
110
|
+
|
|
111
|
+
AskUserQuestionで確認:
|
|
112
|
+
|
|
113
|
+
```yaml
|
|
114
|
+
AskUserQuestion:
|
|
115
|
+
question: "画面テストの範囲を選択してください"
|
|
116
|
+
header: "画面テスト"
|
|
117
|
+
options:
|
|
118
|
+
- label: "画面フロー全体をテスト(推奨)"
|
|
119
|
+
description: "推奨理由: 修正の影響範囲を網羅的に確認。メリット: 想定外の副作用や回帰を早期発見できる。デメリット: テスト時間がやや長くなる"
|
|
120
|
+
- label: "特定機能のみテスト"
|
|
121
|
+
description: "修正箇所が限定的で影響範囲が明確な場合。メリット: テスト時間を短縮できる。デメリット: 想定外の副作用や回帰を見逃す可能性"
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
#### API修正の場合
|
|
125
|
+
|
|
126
|
+
AskUserQuestionで確認:
|
|
127
|
+
|
|
128
|
+
```yaml
|
|
129
|
+
AskUserQuestion:
|
|
130
|
+
question: "APIテストの範囲を選択してください"
|
|
131
|
+
header: "APIテスト"
|
|
132
|
+
options:
|
|
133
|
+
- label: "関連エンドポイント全体(推奨)"
|
|
134
|
+
description: "推奨理由: 依存関係のある機能も含めて確認。メリット: データ連携や認証の問題を早期発見できる。デメリット: テスト時間がやや長くなる"
|
|
135
|
+
- label: "単一エンドポイントのみ"
|
|
136
|
+
description: "修正が独立しており、他への影響がない場合。メリット: 迅速に確認可能。デメリット: 依存関係のある機能の問題を見逃す可能性"
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
#### エッジケーステスト
|
|
140
|
+
|
|
141
|
+
AskUserQuestionで確認:
|
|
142
|
+
|
|
143
|
+
```yaml
|
|
144
|
+
AskUserQuestion:
|
|
145
|
+
question: "エッジケーステストの深度を選択してください"
|
|
146
|
+
header: "エッジケース"
|
|
147
|
+
multiSelect: true
|
|
148
|
+
options:
|
|
149
|
+
- label: "境界値テスト(推奨)"
|
|
150
|
+
description: "推奨理由: 入力値の上限・下限を確認し予期しない挙動を発見。メリット: エッジケースを網羅できる。デメリット: テストケース数が増加し時間がかかる"
|
|
151
|
+
- label: "異常系テスト(推奨)"
|
|
152
|
+
description: "推奨理由: エラーハンドリングを確認し本番の安定性を保証。メリット: 本番環境でのエラー対処能力を検証できる。デメリット: 正常系テストより準備に時間がかかる"
|
|
153
|
+
- label: "並行処理テスト"
|
|
154
|
+
description: "複数リクエストの同時実行を確認。メリット: 競合状態やデータ不整合を検出できる。デメリット: 再現性の確保が難しく環境構築が複雑になる"
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
### ステップ4: テスト仕様に従った動作確認の実施
|
|
160
|
+
|
|
161
|
+
**ステップ3で読み込んだテスト仕様に従って**、各テストシナリオを実行します。
|
|
162
|
+
|
|
163
|
+
| 修正種別 | テスト方法 | 成功条件 |
|
|
164
|
+
|---------|----------|---------|
|
|
165
|
+
| 画面修正 | ブラウザテスト(Playwright MCP) | 期待する要素が表示される |
|
|
166
|
+
| API修正 | API打鍵テスト(curl) | HTTPステータス200、期待レスポンス |
|
|
167
|
+
| スクリプト | 直接実行 | 正常終了、期待出力 |
|
|
168
|
+
| ライブラリ | ユニットテスト | すべてPASS |
|
|
169
|
+
|
|
170
|
+
詳細は `docs/einja/steering/acceptance-criteria-and-qa-guide.md` のセクション9を参照。
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
### ステップ5: 失敗原因の分類
|
|
175
|
+
|
|
176
|
+
失敗時は4分類(A/B/C/D)のいずれかに分類します。詳細は `docs/einja/steering/acceptance-criteria-and-qa-guide.md` のセクション8を参照。
|
|
177
|
+
|
|
178
|
+
**分類フローチャート(簡易版)**:
|
|
179
|
+
1. 環境・インフラ問題? → **D** → qa再実行
|
|
180
|
+
2. requirements.md不正確? → **B** → requirements修正 → task-executer
|
|
181
|
+
3. design.md設計問題? → **C** → design修正 → task-executer
|
|
182
|
+
4. それ以外 → **A**(実装ミス) → task-executer
|
|
183
|
+
|
|
184
|
+
#### 不具合原因の調査方針
|
|
185
|
+
|
|
186
|
+
不具合発見時に原因が複数考えられる場合、AskUserQuestionで対応方針を確認します。
|
|
187
|
+
|
|
188
|
+
```yaml
|
|
189
|
+
AskUserQuestion:
|
|
190
|
+
question: "不具合の原因として複数の可能性があります。どのように対応しますか?"
|
|
191
|
+
header: "不具合対応"
|
|
192
|
+
options:
|
|
193
|
+
- label: "発生確率の高い原因から調査(推奨)"
|
|
194
|
+
description: "推奨理由: 効率的に原因特定できる可能性が高い。メリット: 短時間で原因を特定できる可能性。デメリット: 推測が外れると時間を浪費"
|
|
195
|
+
- label: "修正が容易な原因から調査"
|
|
196
|
+
description: "早期に進捗を出したい場合に有効。メリット: 早期に進捗を示せる。デメリット: 根本原因の特定が遅れる可能性"
|
|
197
|
+
- label: "両方の原因を並行調査"
|
|
198
|
+
description: "時間はかかるが確実に原因を特定。メリット: 確実に原因を特定できる。デメリット: 調査時間が長くなる"
|
|
199
|
+
- label: "task-executerに差し戻し"
|
|
200
|
+
description: "実装に問題がある可能性が高い場合。メリット: 実装者による正確な修正が期待できる。デメリット: 往復で時間がかかる可能性"
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
### ステップ6: テスト結果の記録
|
|
206
|
+
|
|
207
|
+
既存のテスト仕様ファイルに実施結果を記録します。
|
|
208
|
+
|
|
209
|
+
1. **結果欄の更新**: 各テストシナリオの「結果」列を ✅/❌/⚠️ で更新
|
|
210
|
+
2. **エビデンス保存**: `qa-tests/phase{N}/evidence/` にスクリーンショット、ログを保存
|
|
211
|
+
3. **実行ログの記載**: scenarios.md の該当シナリオに実行ログを追記
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
### ステップ7: 結果の返却
|
|
216
|
+
|
|
217
|
+
**JSON形式で返却**:
|
|
218
|
+
|
|
219
|
+
```json
|
|
220
|
+
{
|
|
221
|
+
"status": "SUCCESS" | "FAILURE" | "PARTIAL",
|
|
222
|
+
"failureCategory": "A" | "B" | "C" | "D" | null,
|
|
223
|
+
"nextAction": "finisher" | "executer" | "qa-retry",
|
|
224
|
+
"qaTestFile": "qa-tests/phase1/1-1.md",
|
|
225
|
+
"testSummary": {
|
|
226
|
+
"total": 17,
|
|
227
|
+
"passed": 12,
|
|
228
|
+
"failed": 3,
|
|
229
|
+
"partial": 2,
|
|
230
|
+
"passRate": "70%"
|
|
231
|
+
},
|
|
232
|
+
"requiredTests": {
|
|
233
|
+
"unitTest": { "status": "PASS", "note": "" },
|
|
234
|
+
"e2eTest": { "status": "PASS", "note": "" },
|
|
235
|
+
"lint": { "status": "FAIL", "note": "10 errors found" },
|
|
236
|
+
"build": { "status": "PASS", "note": "" },
|
|
237
|
+
"typecheck": { "status": "PASS", "note": "" }
|
|
238
|
+
},
|
|
239
|
+
"findings": [
|
|
240
|
+
{
|
|
241
|
+
"severity": "critical",
|
|
242
|
+
"description": "Lintエラー10件が検出されました",
|
|
243
|
+
"recommendation": "Biomeでコードを修正してください"
|
|
244
|
+
}
|
|
245
|
+
]
|
|
246
|
+
}
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## qa-tests/ディレクトリ構造
|
|
252
|
+
|
|
253
|
+
```
|
|
254
|
+
{spec_dir}/
|
|
255
|
+
└── qa-tests/
|
|
256
|
+
├── phase1/
|
|
257
|
+
│ ├── 1-1.md
|
|
258
|
+
│ ├── 1-2.md
|
|
259
|
+
│ └── evidence/
|
|
260
|
+
├── phase2/
|
|
261
|
+
│ └── ...
|
|
262
|
+
└── phase3/
|
|
263
|
+
└── ...
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
**パス規則**: タスクグループID "2.3" → `qa-tests/phase2/2-3.md`
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## 品質基準
|
|
271
|
+
|
|
272
|
+
- ✅ すべての受け入れ条件をカバー
|
|
273
|
+
- ✅ 再現可能なテスト手順
|
|
274
|
+
- ✅ エビデンスの保存
|
|
275
|
+
- ✅ 明確な合否判定
|
|
276
|
+
- ✅ 失敗原因の正確な分類(A/B/C/D)
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## 実行制約
|
|
281
|
+
|
|
282
|
+
**task-execからの呼び出し**: task-qa.md(ラッパー)経由、完了報告はtask-qa.mdが生成
|
|
283
|
+
|
|
284
|
+
**独立使用**: トリガーワードで自律起動、完了報告は本Skillが生成
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
## 連携
|
|
289
|
+
|
|
290
|
+
- **前提**: `task-reviewer` - 実装内容のレビュー
|
|
291
|
+
- **後続**: なし(コマンド終了)
|
|
292
|
+
- **差し戻し先**: `task-executer` - テスト失敗時
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
## 参考資料
|
|
297
|
+
|
|
298
|
+
- `docs/einja/steering/acceptance-criteria-and-qa-guide.md` - QAテストの目的、失敗分類詳細、動作確認ツール使用法
|
|
299
|
+
- `templates/qa-test-template.md` - QAテストファイルテンプレート
|
|
300
|
+
- `reference/failure-patterns.md` - 失敗分類の実践例(10パターン)
|
|
301
|
+
- `reference/usage-patterns.md` - 利用パターン(5パターン)
|
|
302
|
+
- `reference/troubleshooting.md` - トラブルシューティング(6ケース)
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
**最終更新**: 2025-12-20
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# 失敗分類の実践例(10パターン)
|
|
2
|
+
|
|
3
|
+
QAテスト失敗時の分類判断に迷った場合の参考事例集。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## A: 実装ミス
|
|
8
|
+
|
|
9
|
+
### 例1: トークン検証エラー
|
|
10
|
+
**症状**: `TypeError: Cannot read property 'token' of undefined`
|
|
11
|
+
**判定**: **A: 実装ミス**(nullチェック漏れ)
|
|
12
|
+
**戻し先**: task-executer
|
|
13
|
+
|
|
14
|
+
### 例5: ユニットテスト失敗
|
|
15
|
+
**症状**: `pnpm test` で5件失敗
|
|
16
|
+
**判定**: **A: 実装ミス**
|
|
17
|
+
**戻し先**: task-executer
|
|
18
|
+
|
|
19
|
+
### 例6: Lintエラー
|
|
20
|
+
**症状**: `pnpm lint` でBiomeエラー10件
|
|
21
|
+
**判定**: **A: 実装ミス**(コーディング規約違反)
|
|
22
|
+
**戻し先**: task-executer
|
|
23
|
+
|
|
24
|
+
### 例8: ビルドエラー
|
|
25
|
+
**症状**: `pnpm build` でTypeScriptエラー
|
|
26
|
+
**判定**: **A: 実装ミス**(型エラー)
|
|
27
|
+
**戻し先**: task-executer
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## B: 要件齟齬
|
|
32
|
+
|
|
33
|
+
### 例2: バリデーションエラーメッセージ不一致
|
|
34
|
+
**症状**: requirements.md「400エラー」、実装「422エラー」
|
|
35
|
+
**判定**: **B: 要件齟齬**(ステータスコード不明確)
|
|
36
|
+
**戻し先**: requirements.md修正 → task-executer
|
|
37
|
+
|
|
38
|
+
### 例9: AC間の矛盾
|
|
39
|
+
**症状**: AC1.2「即座削除」vs AC1.3「バッチ削除」
|
|
40
|
+
**判定**: **B: 要件齟齬**(AC間矛盾)
|
|
41
|
+
**戻し先**: requirements.md修正 → task-executer
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## C: 設計不備
|
|
46
|
+
|
|
47
|
+
### 例3: トランザクション未実装
|
|
48
|
+
**症状**: 競合状態で整合性が保証されない
|
|
49
|
+
**判定**: **C: 設計不備**(トランザクション設計欠如)
|
|
50
|
+
**戻し先**: design.md修正 → task-executer
|
|
51
|
+
|
|
52
|
+
### 例10: DBスキーマ設計ミス
|
|
53
|
+
**症状**: インデックス不適切でパフォーマンス劣化
|
|
54
|
+
**判定**: **C: 設計不備**(スキーマ設計ミス)
|
|
55
|
+
**戻し先**: design.md修正 → task-executer
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## D: 環境問題
|
|
60
|
+
|
|
61
|
+
### 例4: PostgreSQL接続エラー
|
|
62
|
+
**症状**: `Error: connect ECONNREFUSED 127.0.0.1:5432`
|
|
63
|
+
**判定**: **D: 環境問題**(コンテナ未起動)
|
|
64
|
+
**戻し先**: qa再実行(環境修復後)
|
|
65
|
+
|
|
66
|
+
### 例7: Playwright MCPタイムアウト
|
|
67
|
+
**症状**: `Timeout 30000ms exceeded`(ネットワーク遅延)
|
|
68
|
+
**判定**: **D: 環境問題**
|
|
69
|
+
**戻し先**: qa再実行
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# トラブルシューティング(6ケース)
|
|
2
|
+
|
|
3
|
+
QA実行時によくある問題と対処法。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 5.1 Playwright MCP 接続失敗
|
|
8
|
+
|
|
9
|
+
**症状**: `Error: Failed to connect to Playwright MCP server`
|
|
10
|
+
|
|
11
|
+
**対処法**:
|
|
12
|
+
1. `claude mcp status` でステータス確認
|
|
13
|
+
2. `claude mcp restart playwright` で再起動
|
|
14
|
+
3. ポート確認: `lsof -i :3000`
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 5.2 requirements.md 不在
|
|
19
|
+
|
|
20
|
+
**症状**: `Error: requirements.md not found`
|
|
21
|
+
|
|
22
|
+
**対処法**:
|
|
23
|
+
1. 仕様書ディレクトリパスを確認
|
|
24
|
+
2. 不在の場合はspec-requirements-generatorで作成
|
|
25
|
+
|
|
26
|
+
**失敗分類**: D(環境問題)またはB(要件未定義)
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 5.3 qa-tests/ 書き込み権限エラー
|
|
31
|
+
|
|
32
|
+
**症状**: `Error: EACCES: permission denied`
|
|
33
|
+
|
|
34
|
+
**対処法**:
|
|
35
|
+
1. `ls -la {spec_dir}/qa-tests/` で権限確認
|
|
36
|
+
2. `chmod -R u+w {spec_dir}/qa-tests/` で権限変更
|
|
37
|
+
3. 不在時は `mkdir -p {spec_dir}/qa-tests/phase{N}/evidence/`
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 5.4 必須自動テストの失敗
|
|
42
|
+
|
|
43
|
+
**判定**: **必ずFAILURE**(PARTIAL禁止)
|
|
44
|
+
|
|
45
|
+
**対処法**: 失敗原因を分類(A/B/C/D)し適切な戻し先に差し戻し
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 5.5 タイムアウト問題
|
|
50
|
+
|
|
51
|
+
**症状**: `Timeout 30000ms exceeded`
|
|
52
|
+
|
|
53
|
+
**対処法**: Playwrightタイムアウトを60秒に延長
|
|
54
|
+
|
|
55
|
+
**失敗分類**: D(一時的遅延)またはC(パフォーマンス設計ミス)
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## 5.6 AC抽出エラー
|
|
60
|
+
|
|
61
|
+
**症状**: `Warning: No Integration or E2E acceptance criteria found`
|
|
62
|
+
|
|
63
|
+
**対処法**:
|
|
64
|
+
1. requirements.mdで「検証レベル: Integration/E2E」の記載を確認
|
|
65
|
+
2. 必要な場合はB(要件齟齬)として差し戻し
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# 利用パターン(5パターン)
|
|
2
|
+
|
|
3
|
+
task-qa Skillの利用方法パターン集。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## パターン1: task-execからの呼び出し(標準ワークフロー)
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
ユーザー: task-exec #123 1.1
|
|
11
|
+
→ starter → executer → reviewer → qa
|
|
12
|
+
↓
|
|
13
|
+
task-qa.md(ラッパー)→ SKILL.md
|
|
14
|
+
↓
|
|
15
|
+
結果JSON返却 → task-qa.md完了報告生成
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**重要**: 既存フォーマット(`## 🧪 品質保証フェーズ完了`)を維持
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## パターン2: 独立使用(Model-Invoked)
|
|
23
|
+
|
|
24
|
+
**トリガーワード**: "QAを実行"、"品質保証を実施"、"テストを確認"
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
ユーザー: "docs/specs/tasks/user-auth/ のQAを実行して"
|
|
28
|
+
→ Skill自動起動 → QA実行 → 結果報告
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## パターン3: CLI明示的呼び出し(将来機能)
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
claude skill task-qa --spec-dir docs/specs/tasks/user-auth/
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## パターン4: CI/CD統合
|
|
42
|
+
|
|
43
|
+
GitHub Actionsで自動QA実行(将来実装)
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## パターン5: 手動QAレビュー
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
ユーザー: "タスク1.1のQA結果を見せて"
|
|
51
|
+
→ qa-tests/phase1/1-1.md読み込み → 結果サマリー表示
|
|
52
|
+
```
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Phase {phase_num}-{group_num}: {task_name} QAテスト結果
|
|
2
|
+
|
|
3
|
+
## テスト対象タスク
|
|
4
|
+
- **タスクID**: {開始タスクID}~{終了タスクID}
|
|
5
|
+
- **タスク名**: {task_name}
|
|
6
|
+
- **実装日**: {date}
|
|
7
|
+
- **テスター**: {tester}
|
|
8
|
+
- **最終更新**: {date}
|
|
9
|
+
|
|
10
|
+
## テストサマリー
|
|
11
|
+
| ステータス | 件数 |
|
|
12
|
+
|----------|-----|
|
|
13
|
+
| ✅ PASS | 0 |
|
|
14
|
+
| ❌ FAIL | 0 |
|
|
15
|
+
| ⚠️ PARTIAL | 0 |
|
|
16
|
+
| 🔄 未実施 | 0 |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 必須自動テスト結果
|
|
21
|
+
|
|
22
|
+
### 実行コマンド
|
|
23
|
+
```bash
|
|
24
|
+
# 1. ユニットテスト
|
|
25
|
+
pnpm test
|
|
26
|
+
|
|
27
|
+
# 2. E2Eテスト(該当する場合)
|
|
28
|
+
pnpm test:e2e
|
|
29
|
+
|
|
30
|
+
# 3. Lintチェック
|
|
31
|
+
pnpm lint
|
|
32
|
+
|
|
33
|
+
# 4. ビルドチェック
|
|
34
|
+
pnpm build
|
|
35
|
+
|
|
36
|
+
# 5. 型チェック(TypeScript)
|
|
37
|
+
pnpm typecheck
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 結果
|
|
41
|
+
| テスト項目 | ステータス | 備考 |
|
|
42
|
+
|----------|----------|------|
|
|
43
|
+
| ユニットテスト | 🔄 | - |
|
|
44
|
+
| E2Eテスト | 🔄 | - |
|
|
45
|
+
| Lintチェック | 🔄 | - |
|
|
46
|
+
| ビルドチェック | 🔄 | - |
|
|
47
|
+
| 型チェック | 🔄 | - |
|
|
48
|
+
|
|
49
|
+
**重要**: 上記のいずれか1つでも失敗した場合、全体ステータスは**❌ FAIL**となります。
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## タスク {task_id}: {task_name}
|
|
54
|
+
|
|
55
|
+
### 受け入れ条件
|
|
56
|
+
<!-- requirements.md から該当ACの受け入れ条件を転記 -->
|
|
57
|
+
- AC{N}.{M}: {Given-When-Then形式の基準}
|
|
58
|
+
|
|
59
|
+
### テストシナリオ
|
|
60
|
+
|
|
61
|
+
#### {test_category_name}
|
|
62
|
+
|
|
63
|
+
| No | 手順 | 確認項目 | 期待値 | 結果 | 備考 |
|
|
64
|
+
|----|------|---------|--------|------|------|
|
|
65
|
+
| 1 | {step_description} | {check_item} | {expected_value} | - | - |
|
|
66
|
+
| 2 | {step_description} | {check_item} | {expected_value} | - | - |
|
|
67
|
+
|
|
68
|
+
**重要**:
|
|
69
|
+
- 手順は自然言語で簡潔に記述(例: 「ログイン画面に移動」「メールアドレス入力: test@example.com」)
|
|
70
|
+
- 「-」は手順のみで確認項目がない場合に使用
|
|
71
|
+
- 備考欄はテストの区切りや注意事項を記載
|
|
72
|
+
|
|
73
|
+
### 全体ステータス: - (未実施)
|
|
74
|
+
|
|
75
|
+
#### 主な問題点
|
|
76
|
+
- (実施後に記載)
|
|
77
|
+
|
|
78
|
+
#### 対応策
|
|
79
|
+
- (実施後に記載)
|
|
80
|
+
|
|
81
|
+
#### エビデンス
|
|
82
|
+
- ログファイル: `qa-tests/phase{phase_num}/evidence/{task_id}-{evidence_id}.log`
|
|
83
|
+
- スクリーンショット: `qa-tests/phase{phase_num}/evidence/{task_id}-{evidence_id}.png`
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
<!-- 追加のタスクがある場合は上記セクションを繰り返す -->
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## 統合テスト結果サマリー
|
|
92
|
+
|
|
93
|
+
### フェーズ{phase_num}-{group_num}全体結果
|
|
94
|
+
- **全体ステータス**: - (未実施)
|
|
95
|
+
- **完了タスク**: 0/{total_tasks}
|
|
96
|
+
- **テスト合格率**: 0% (0/0)
|
|
97
|
+
|
|
98
|
+
### 修正が必要な項目
|
|
99
|
+
- (実施後に記載)
|
|
100
|
+
|
|
101
|
+
### 次フェーズへの引き継ぎ事項
|
|
102
|
+
- (実施後に記載)
|
|
103
|
+
|
|
104
|
+
### 改善提案
|
|
105
|
+
- (実施後に記載)
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 報告と対応
|
|
110
|
+
|
|
111
|
+
### 失敗原因分類
|
|
112
|
+
<!-- 該当する分類にチェック -->
|
|
113
|
+
- [ ] **A: 実装ミス** → task-executerへ差し戻し
|
|
114
|
+
- [ ] **B: 要件齟齬** → requirements.md修正 → task-executerへ差し戻し
|
|
115
|
+
- [ ] **C: 設計不備** → design.md修正 → task-executerへ差し戻し
|
|
116
|
+
- [ ] **D: 環境問題** → qa再実行
|
|
117
|
+
|
|
118
|
+
### task-executerへの差し戻し(該当する場合)
|
|
119
|
+
以下の項目について修正が必要:
|
|
120
|
+
- (実施後に記載)
|
|
121
|
+
|
|
122
|
+
### 修正優先度
|
|
123
|
+
- **即座対応**: (実施後に記載)
|
|
124
|
+
- **1週間以内**: (実施後に記載)
|
|
125
|
+
- **2週間以内**: (実施後に記載)
|
|
126
|
+
|
|
127
|
+
### 回避策(該当する場合)
|
|
128
|
+
- (実施後に記載)
|