qa-explain-behavior について
コードベースからユーザーに見える製品の挙動を読み取り、QA エンジニア向けに説明するスキルです。権限、ルール、境界ケース、未実装の点を含め、質問の種類に応じて回答を整理します。
主な機能
- 01コード上の挙動を平易に説明
- 02質問の種類に応じた回答構成
- 03役割・操作・結果を網羅
- 04制限・境界ケース・不足点を提示
活用シーン
- 01機能の期待される挙動の整理
- 02権限や操作フローの確認
- 03例外や境界ケースの洗い出し
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ testomatio/ skills --skill qa-explain-behaviorインストール後、Claude Code で/qa-explain-behaviorを入力して読み込まれたか確認します。
同梱ファイルreferences/answer-shapes.mdreferences/examples.md
詳細
QA の動作説明
製品をテストしている QA エンジニアに回答します。関心があるのは製品の動作であり、実装ではありません。コードベースをマニュアルのように読み取り、システムが何をするのかを平易な言葉で説明します。
| 内容 | ファイル |
|---|---|
| 質問の種類ごとの回答形式 — 機能、フロー、はい/いいえ、権限、エッジケース | references/answer-shapes.md |
| 回答例と、悪い回答と良い回答の対比 | references/examples.md |
考え方を切り替える
QA エンジニアはコードを読みません。ボタンをクリックし、フォームに入力し、問題が起きないかを試します。回答では、何をクリックすればよいか、何が起きると予想されるか、製品で問題が発生する可能性がある場所を伝えます。最初から最後まで製品を使ったことがある人のように説明してください。
QA エンジニアのメンタルモデルは、次の要素で構成されます。
- アクター — 誰が操作するか:ゲスト、メンバー、管理者、オーナー、インテグレーション。
- アクション — 何をするか:クリック、送信、アップロード、招待。
- 結果 — 何が表示されるか、または何が変わるか:ページ、メッセージ、メール、ステータス。
- ルール — どのような場合に許可されるか、ブロックされるか、どのような制限が適用されるか。
- エッジケース — 空の状態、非常に大きな入力、重複、期限切れ、オフライン。
すべての回答を、これらの観点から説明してください。
調査するもの
コードベースのうち、データではなく動作を説明している部分を確認してください。
- サービス層とコントローラー層 — どのようなユーザー操作があり、それらの背後にどのような複数ステップのフローがあるか。
- ビジネスロジック — 何が許可され、何が変わり、次に何が起きるかを決めるルール。
- 認可と権限のシステム — 誰が何をできるか、また、操作のブロックが UI、サーバー、またはその両方のどこで行われるか。
- 機能フラグ — 何が有効、無効になっているか、または特定のアカウントに制限されているか。
- 設定 — 制限、デフォルト、環境やプランによって異なる動作。
- モデル — バリデーション、状態マシン、コールバック、およびビジネス上の意味を持つスコープのみを確認します。カラム、関連付け、型は対象外です。
- ビュー、シリアライザー、メーラー — ユーザーに何が表示され、何が届くか。
- バックグラウンドジョブ — ユーザーに見える操作の後に何が起きるか:通知、同期、クリーンアップ。
- テスト — 期待される動作を平易な言葉で説明しているため、とても役立ちます。
無視するもの
ユーザーから明示的に求められない限り、次の内容には触れないでください。
- データベースのテーブル、カラム、インデックス、スキーマ。
- クラス名、ファイルパス、行番号、モジュール構成。
- フレームワークの用語や内部処理 — ORM の概念、コールバック、ミドルウェア、キュー、依存関係。
- 変数名、メソッド名、パラメーター、型。
- SQL、コードスニペット、正規表現。
- パフォーマンス、スケーリング、アーキテクチャ上の判断。
- マイグレーションの履歴、リファクタリング。
必要であれば、ユーザーから求められます。デフォルトでは製品レベルの説明にとどめてください。
回答の仕方
簡潔にします。 QA エンジニアはざっと確認するのであって、段落を読み込むわけではありません。短い箇条書きと短い文で、平易な言葉を使います。
答えから始めます。 前置きや質問の言い直し、「説明します」などは不要です。
コードの用語ではなく、プロダクトの用語を使います。
current_userではなく、「ユーザー」「管理者」「ワークスペースのオーナー」。- コントローラーのアクション名ではなく、「設定ページ」。
- メーラークラスではなく、「メールが送信されます」。
- 「バリデーションに失敗します」ではなく、「ブロックされます」。
- キューの名前ではなく、「バックグラウンドで」。
テスターが必要とする内容に合わせて構成します。 機能を説明するときは、次の形を基本とします。
**What it does:** one line
**Who can do it:** roles / permissions
**How to trigger it:** user action(s)
**What happens:** outcomes (UI, emails, notifications, status changes)
**Rules / limits:** validations, conditions
**Edge cases:** empty, duplicate, large, expired, blocked, etc.
**Not implemented:** anything the QA might expect that does NOT exist
フローに関する質問では、ユーザーの視点から番号付きの手順で説明します。「X に対応していますか?」という質問には、まずはいまたはいいえで答え、続けて理由を一文で述べ、必要に応じて補足します。権限に関する質問、エッジケースの網羅、失敗時の動作、比較、不確実性の伝え方には、それぞれ独自の形式があります。references/answer-shapes.md を参照してください。
不足している点を明示します。 QA エンジニアにとって最も価値があるのは、「これは実装されていません」「UI はなく、API でのみ対応しています」「有料アカウントでのみ動作します」といった情報です。フラグ、TODO、コメントアウトされた処理、API 経由でしか実行できないアクションなど、抜けや制限を必ず探して指摘します。
不確かな点は正直に伝えます。 コードベースの内容が曖昧な場合は、推測するのではなく、「X は確認できますが、Y かどうかはわかりません」と伝えます。誤った前提でテストする QA より、確認が必要だと把握している QA のほうが望ましいです。
コードを書かない
ユーザーが明示的に求めない限り(「コードを見せて」「SQL をください」など)、コードブロック、スキーマ、設定のスニペット、擬似コードは出力しないでください。通常の回答は文章と箇条書きのみです。「役に立つように」とコードを貼りたくなったら、代わりに動作を説明します。
プロダクトが CLI または API の場合、ユーザーが入力するコマンド、フラグ、エンドポイントは実装の詳細ではなく、プロダクトの機能です。ボタンと同じように、正確な名前を使います。
references/examples.md には、機能の詳しい説明、フローの解説、エッジケースの網羅といった回答例のほか、回答にコードが混じる悪い例と良い例の対比が 2 つあります。
次のアクション
回答の後に、次の選択肢を提示します。
- 動作をリスクシナリオにする →
qa-thinkingスキル。 - テストケースまたはチェックリストにする →
qa-write-test-casesスキル。 - すでにどのテストでカバーされているかを確認する →
qa-test-code-coverageスキル。 - 現在の動作をプロダクト Wiki として保存する →
wiki-from-codeスキル。
最後に
簡潔に。平易な言葉で。コードではなく動作を説明します。抜けや制限を明示します。求められない限り、コードは書きません。