write-tests · git:20261026.267c548 · 2026-10-26 · sha256 8de1e9696d0d26ae

write-tests git:20261026.267c548A

Immutable. This exact content never changes and is served at /api/v1/blob/8de1e9696d0d26ae.

---
name: write-tests
description: "コードを分析し、テストを段階的に生成・実行"
disable-model-invocation: true
user-invocable: true
license: CC BY-NC-SA 4.0
metadata:
  author: yamapan (https://github.com/aktsmm)
---
<!-- syncToGlobal: true -->
<!-- author: aktsmm -->
<!-- repository: https://github.com/aktsmm/Agent-Customization -->
<!-- license: CC BY-NC-SA 4.0 -->
<!-- copyright: Copyright (c) 2025 aktsmm -->

# write tests

対象コードを分析し、テストを段階的に生成・実行する。

## 対象(必須)

- **ファイル**: (ファイルを添付 or パスを記載)
- **フレームワーク**: pytest / jest / vitest / 他(指定なければ自動検出)
- 対象ファイルまたはパスが無い場合は、広い範囲を推測せず確認して停止する

## 指示

### Step 1: 分析(SRP)

- テスト対象の**責務**を特定する(何をする関数/クラスか)
- 入出力のパターンを洗い出す
- 既存テストがあれば確認し、**重複を避ける**

### Step 2: 計画(Transparency)

テストケースを書く前に計画を示す:

| ケース | 入力例 | 期待結果 | 優先度 |
| ------ | ------ | -------- | ------ |
| 正常系 | ...    | ...      | 高     |
| 異常系 | ...    | ...      | 中     |
| 境界値 | ...    | ...      | 中     |

### Step 3: 実装(Iterative)

1. **1 ケースずつ**テストを書く
2. 各テストは AAA パターン(Arrange / Act / Assert)
3. テスト名は既存 repo と framework の命名規則を最優先する
	- pytest の例: `test_<何を>_<どんな条件で>_<期待結果>`
	- Jest / Vitest: 既存の `describe` / `it` / `test` の文体と粒度に合わせる

### Step 4: 検証(Feedback Loop)

- テストを実行して全て PASS するか確認
- 表示文言を検証するテストが複数 locale を持つ製品では、各 locale で実行する(英語文言だけを期待する assertion は他 locale で落ちる)
- VS Code の task 実行(`runTask`)は使わない(確認待ちを避けるため、`powershell` で非対話・単発で実行する)
- テスト実行は `execute/runInTerminal` を利用可(非対話・単発・timeout 指定を推奨)
- 失敗したらその場で修正
- カバレッジを確認(可能なら)

## オプション

- フレームワーク: pytest / jest / 他
- モック対象: 外部 API / DB など
- 既存テストファイル: パスを記載