qa-automation について
qa-automationは、自動化スクリプトの作成・更新を行うスキルです。automation_change_set.jsonで範囲、変更、検証、レビュー状況を管理し、既存のテスト規約と承認ゲートに従って、未承認のリモート操作やその他のQA作業を制限します。
主な機能
- 01変更セットで計画と適用内容を記録
- 02プランナー、実行シグナル、Notion、Planeの入力に対応
- 03既存リポジトリのフレームワークと規約を順守
- 04ルールに沿ったスクリプトの作成・更新
- 05可能な軽量検証の実行と結果記録
- 06スクリプトレビューと昇格の承認ゲート
活用シーン
- 01承認済みテストケースから自動化スクリプトを作成
- 02原因が明確な自動化失敗の修正
- 03変更、検証、レビュー状況の追跡
- 04ポリシーに沿ったNotionとPlaneの状態同期
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ fikyanggra/ skills --skill qa-automationインストール後、Claude Code で/qa-automationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlexamples/automation-change-set.example.jsonexecutor-automation-signal.jsonnotion-automation-source.example.jsonnotion-plane-bridge.example.jsonnotion-status-update.example.jsonoutput-automation-review.example.mdplane-automation-comment.example.mdplane-automation-work-item.example.jsonplanner-automation-contract.jsonreferences/branch-policy.mdlocator-policy.mdnotion-mcp.mdnotion-plane-bridge.mdplane-mcp.mdplaywright-typescript.mdschemas/automation-change-set.schema.jsonautomation-review.schema.jsonautomation-status-update.schema.jsonnotion-sync-record.schema.jsonplane-sync-record.schema.jsonvalidation-result.schema.jsontemplates/automation-change-set.jsonautomation-review.mdnotion-automation-comment.mdnotion-automation-page.mdnotion-plane-bridge.jsonnotion-sync-record.jsonpatch-summary.mdplane-automation-comment.md詳細
QA Automation
このスキルを使用して、管理された変更セットのワークフローを通じて自動化スクリプトを作成または更新します。スコープ、マッピング、計画済みの変更、適用済みの変更、検証、レビューゲート、昇格の準備状況、Notion 同期、Plane 同期、ブリッジ同期、ギャップ、後続のステータス更新については、automation_change_set.jsonを信頼できる唯一の情報源として扱います。
基本ルール
自動化作業のみを行います。生の要件からテストケースを作成したり、手動 QA の実行担当になったり、最終 QA レポートを作成したり、イシューを登録したり、セレクター/エンドポイント/認証情報/テストデータを独自に考案したり、ギャップに対する後続アイテムを自動作成したり、ユーザーから明示的な依頼と承認がない状態でリモートブランチをプッシュ/マージしたりしてはいけません。
依頼内容と書き込みポリシーが明確な場合に限り、Notion または Plane のオブジェクトを作成/更新します。Notion または Plane のオブジェクトの削除/アーカイブは、対象を確認して影響を要約した後、ユーザーから明示的な承認を得た場合に限り行います。
入力
6 種類の入力パスを受け付けます。
プランナーの契約:
create_scripts、update_scripts、manual_only、自動化ステータス、優先度フィルター、自動化のギャップ、承認済みテストケース、期待される結果を読み込みます。To Be Automateはスクリプトの作成に対応付けます。Already Automateはスクリプトの更新または検証に対応付けます。- 人間が明示的にステータスを変更しない限り、
Manual Onlyはスキップします。
エグゼキューターのシグナル:
- 自動化関連ケースの失敗、技術的な不安定さによる失敗、セレクターの不足、API の不足、データの不足、更新候補を読み込みます。
- 根本原因が明確な場合に限り、待機処理、アサーション、分離、ロケーターを改善します。
- アサーションを弱めたり、ビジネス上の失敗を回避するためにテストを変更したりしてはいけません。
手動の依頼:
- テストケースのテキスト/表、スクリプトの更新依頼、リポジトリのパス、既存スクリプトのパス、フレームワークに関する注記、ブランチポリシー、検証コマンドを受け付けます。
- リポジトリが存在する場合は、そのリポジトリのフレームワーク、スタイル、パッケージマネージャー、フォルダーの命名規則、フィクスチャー、ヘルパーのパターンに従います。
- リポジトリまたはフレームワークがない場合は、Playwright TypeScript を代替として使用します。
- 不可欠な情報が不足している場合は、その情報を求めるか、
automation_change_set.jsonにギャップを記録します。
Notion の入力:
- Notion ページの URL、データベース/データソースの URL、ページ ID、データベース ID、データソース ID、コメント、MCP ペイロードを受け付けます。
- Notion は情報源および同期ステータスの表示先として扱い、信頼できる唯一の情報源とは見なしません。
- Notion のシグナルがある場合は、続行する前に
references/notion-mcp.mdを読みます。 - Notion を情報源とするすべてのテストケースについて、元のロケーターを保持します。
- スクリプトの作成/更新後に、
Automation StatusをAutomation Implementedに更新します。 - スクリプトレビューが
OKで、関連する検証がpassedになった後に限り、Automation StatusをAlready Automateに更新します。
Plane の入力:
DKI-179などの Plane の可読 ID、Plane の URL、UUID、ワークアイテム/カード/サブワークアイテム、コメント、ページ/Wiki、MCP ペイロードを受け付けます。- Plane はワークフローの表示面および同期された概要の表示面として扱い、信頼できる唯一の情報源とは見なしません。
- Plane のシグナルがある場合は、続行する前に
references/plane-mcp.mdを読みます。 - ステータスを変更する前に、利用可能なプロジェクトのステータスを読み込みます。ユーザー/パッケージの動的なマッピングのみを使用し、ステータスを独自に考案してはいけません。
Notion + Plane ブリッジ:
- 両方のシステムが提供されている場合、または Plane のコンテンツに Notion へのリンクが含まれている場合に有効化します。
- ブリッジのシグナルがある場合は、続行する前に
references/notion-plane-bridge.mdを読みます。 - ユーザーから別の指示がない限り、テストケース/ステータスの情報源には Notion を、ワークフローの概要には Plane を使用します。
ワークフロー
- 入力とリポジトリのコンテキストを調査します。
- 検証ツールが利用できる場合は、
schemas/automation-change-set.schema.jsonを使ってautomation_change_set.jsonを作成または更新します。 - Notion と Plane の参照元が有効な場合は解決し、ツールが不足している場合や失敗した場合は読み取り上の不足事項を記録します。
- 書き込みを行う前に、Notion と Plane の書き込みポリシーを確認します。
- フレームワーク、パッケージマネージャー、テストコマンド、テスト ID の規約、ブランチポリシー、既存のスクリプトのスタイルを検出します。
- 編集前にすべてのファイル変更を計画し、各変更を TC ID または承認済みの手動依頼に対応付けます。
- 必要な場合に限り、スクリプト、ページオブジェクト、フィクスチャ、ヘルパー、設定、テストデータを生成または更新します。
- 実行可能な軽量検証(フォーマットチェック、lint、型チェック、設定検証)を実行します。
- 環境、認証情報の取得元、データが整っている場合に限り、対象を絞った自動化を実行します。
- ユーザーから明示的な依頼がある場合、またはリリースポリシーで要求されている場合に限り、自動化スイート全体を実行します。
- ポリシーで許可されている場合は、スクリプトの作成または更新後に Notion のステータスを
Automation Implementedに同期します。 - 必要な場合は、スクリプトレビュー用パッケージを作成し、人間による OK/NOK 判定を待ちます。
- スクリプトレビューが
OKで、検証がpassedの場合に限り、Notion のステータスをAlready Automateに同期します。 - ポリシーで許可されている場合に限り、Plane の最終コメント、説明の要約、リンク、作業記録、ページ/Wiki、または状態を同期します。
- 昇格チェックリストを作成し、リモートへのプッシュ、デプロイ、マージの前に明示的な承認を必須とします。
変更セット
automation_change_set.json を正式な状態管理ファイルとして使用します。次の項目を含めます。
repo_context:リポジトリのパス、パッケージマネージャー、テストコマンド、ブランチ情報、検出した規約。framework:検出したフレームワーク、またはフォールバックの Playwright TypeScript。branch_policy:リポジトリのポリシー、またはフォールバックのdevelop -> master。automation_scope:作成、更新、手動のみ、スキップ、検証のみの作業。test_case_mappings:TC ID とスクリプトパス、仕様タイトル、アサーション、セレクター、ステータスの対応付け。planned_changes:編集前に予定しているファイル操作。applied_changes:編集後に実際に行ったファイル操作。validation_results:lint、型チェック、フォーマットチェック、設定検証、対象を絞った実行、全体実行。review_gates:スクリプトレビューと昇格レビューの OK/NOK 状態。promotion_status:プッシュ、デプロイ、マージの準備状況。notion_context、notion_write_policy、notion_sync:Notion の参照元、書き込みルール、同期記録。plane_context、plane_write_policy、plane_state_mapping、plane_sync:Plane の参照元、動的な状態の処理、書き込みルール、同期記録。notion_plane_bridge:検出した参照元、相互リンク、冪等性キー、部分同期の状態。crud_operations:Notion と Plane に対する読み取り/作成/更新/削除/アーカイブ/コメント/リンク/状態変更の監査記録。gaps:セレクター、データ、環境、フィクスチャ、API、リポジトリ、またはフレームワークに関する不足事項。changelog:日付付きの変更セットイベント。
許可されるアクションは create_script、update_script、skip_manual_only、mark_gap、refactor_approved、validation_only、sync_notion、sync_plane、bridge_notion_plane です。
スクリプトのルール
- フォールバックよりも、既存のフレームワークを優先します。
- 新規、またはフレームワークがない場合の自動化に限り、Playwright TypeScript をフォールバックとして使用します。
- TC ID を仕様タイトル、アノテーション、コメント、またはメタデータに含めます。
- 期待される結果からアサーションを導きます。
- 実際のシークレット、トークン、パスワード、Cookie、PII は記述しません。
- テストデータにはフィクスチャ/設定を使用し、環境変数名には
.env.exampleを使用します。 - UI フローを繰り返し使う場合は、ページオブジェクトモデルを使用します。
- リポジトリで既に使用されている場合は、共有認証/セッションフィクスチャを優先します。
- 該当する場合は、API のステータス、ペイロード、ヘッダー、エラーボディを検証します。
- 接続とクエリが安全で、必要な情報が提供されている場合に限り、DB 検証を使用します。
- やむを得ない場合を除き
waitForTimeout()を避け、使用する理由を変更セットに記録します。 - テストは決定的かつ独立して実行できるようにし、クリーンアップを考慮します。
- リファクタリングが必要、または明示的に承認されている場合を除き、リファクタリングは最小限にします。
ロケーターの方針
デフォルトの優先順位:
- アクセシブルな名前を指定した
getByRole()。 - フォーム入力には
getByLabel()。 - ラベルがなく、プレースホルダーが安定している場合に限り
getByPlaceholder()。 - 一意で安定している場合に限り
getByText()。 - リポジトリのテスト ID 設定に従った
getByTestId()。 - セマンティックなロケーターが利用できない場合に限り、安定した CSS ID/クラス。
- 理由を記録したうえで、最終手段として XPath。
生成されたクラスハッシュ、深い CSS チェーン、不安定な ID、変動するテキスト、無条件の .nth() セレクターは使用しないでください。安定したセレクターがない場合は selector_gap を記録し、テスト容易性を改善する方法を提案してください。
レビューゲート
スクリプトレビュー:
- 人間がスクリプト、パッチの概要、フィクスチャ、ロケーター、アサーション、検証をレビューします。
- ステータスは
OKまたはNOKです。 NOKの場合、昇格の前に変更セットとスクリプトを修正します。
昇格レビュー:
- スクリプトレビューが OK であること、検証ステータスが判明していること、ギャップが文書化されていること、ブランチポリシーが判明していること、リモート操作の承認状態が記録されていることが必要です。
ready_to_push、ready_to_deploy、ready_to_mergeの場合でも、リモートへのプッシュ、デプロイ、マージにはユーザーの明示的な承認が必要です。
昇格ステータス:draft、script_review_required、revision_required、validation_required、promotion_review_required、ready_to_push、ready_to_deploy、ready_to_merge、promoted、blocked。
Notion の管理対象同期
Notion の入出力が有効な場合に限り、Notion を使用します。まず references/notion-mcp.md を読んでください。
デフォルトの書き込みポリシー:
- 書き込み可能なテストケースのソースが特定された場合、ソースのステータス更新を有効にします
- 対応している場合、または依頼された場合は、簡潔なコメント同期を有効にします
- 依頼がない限り、自動化ページと結果データベースの同期は無効にします
- 依頼がある場合、またはポリシーで有効になっている場合を除き、スキーマの更新は無効にします
- 削除/アーカイブには、常に明示的な承認が必要です
ステータスのルール:
Manual Only:人間が変更しない限り変更しませんTo Be Automate:ソースのケースに自動化が必要ですAutomation Implemented:スクリプトは存在するか更新されていますが、スクリプトレビューが OK で、かつ検証に合格するという両方の条件はまだ満たされていませんAlready Automate:スクリプトレビューがOKで、関連する検証にpassedしています
Notion のプロパティが不足しており、スキーマの更新が無効または利用できない場合は、notion_schema_gap を記録し、可能であればコメントまたは Notes を代替手段として使用します。重複するコメント/ページ/行を避けるため、同期レコードと管理マーカーを使用します。
Plane の管理対象同期
Plane の入出力が有効な場合に限り、Plane を使用します。まず references/plane-mcp.md を読んでください。
デフォルトの書き込みポリシー:
- Plane のコンテキストが有効な場合、最終コメントの同期を有効にします
- 依頼された場合、または既存の管理対象ブロックが見つかった場合、説明の同期を有効にします
- 動的なマッピングが提供されている場合、または依頼された場合を除き、状態の同期は無効にします
- 依頼がない限り、作業ログとページ/Wiki の同期は無効にします
- ツールが対応している場合、スクリプト、変更セット、検証、レビュー、Notion の参照情報のリンク同期を有効にします
- フォローアップ項目の作成は無効にします
- 削除/アーカイブには、常に明示的な承認が必要です
状態のポリシー:
- 状態を変更する前に、プロジェクトの状態を読み取ります
- 明示的なユーザー/パッケージ/作業項目のマッピングのみを使用します
- マッピングがない場合は状態の変更をスキップし、
plane_state_mapping_gapを記録します - 対象の状態が存在しない場合はスキップし、遷移ギャップを記録します
Plane のコメントと説明の概要は簡潔にしてください。Notion に詳細な出力がある場合、Plane には概要とリンクのみを記載します。
Notion と Plane の連携
両方のシステムが有効な場合、または Plane のコンテンツに Notion のリンクが含まれている場合は、references/notion-plane-bridge.md を読んでください。
ルール:
automation_change_set.jsonを正規の情報源として維持します- 信頼度の高いソースがある場合、Notion をテストケース/ステータスのソースとします
- Plane をワークフローの場として使用します
- Notion の参照先が複数ある場合、または役割が不明確な場合はユーザーに確認します
- ポリシーで許可されている場合、Notion と Plane を相互にリンクします
- 連携ステータスを
synced、partial、failed、skippedのいずれかで記録します - リモート同期が一部失敗しても、ローカルの自動化出力は無効になりません
出力
正規出力:
automation_change_set.json
人間向け出力:
automation-review.mdvalidation-report.mdpatch-summary.mdpromotion-checklist.md
後続処理向け出力:
automation_status_updateqa_executor_validation_requestqa_reporter_automation_summary
ステータス更新ルール:
- スクリプトを作成/更新した場合 →
Automation Implementedの候補 - スクリプトレビューが OK で、検証に合格した場合 →
Already Automateの候補 - スクリプトを作成したが検証を実行していない場合 →
Automation Implementedを維持または設定し、script_created_unvalidatedと記録 - 不足によってブロックされた場合 →
To Be Automateを維持し、不足を記録 Manual Onlyは、人間がオートメーションのステータスを変更しない限り変更しない
品質ゲート
レビュー可能な出力を提示する前に、以下を確認してください。
- 計画または適用した各変更が、TC ID または承認済みの手動リクエストに対応している
- 各アサーションが期待結果に対応している
- セレクターがロケーターポリシーに従っているか、不足が記録されている
- シークレットや PII が書き込まれていない
- 書き込み前に Notion/Plane の書き込みポリシーが確定している
- Notion のステータスが
Manual Only、To Be Automate、Automation Implemented、Already Automateのいずれかである Already Automateは、スクリプトレビューがOKで、検証がpassedの場合にのみ使用されている- Plane の状態が移動前に読み取られ、マッピングがない場合は状態の移動がスキップされている
- Notion/Plane で破壊的な操作を行う前に、削除/アーカイブの承認が明示されている
- Notion/Plane への書き込みを試みた場合、同期記録が存在する
- 同期の一部失敗/失敗が不足として記録されている
- 不足によってフォローアップ項目が自動的に作成されていない
リソース
必要な場合にのみ読み込んでください。
schemas/automation-change-set.schema.json:正規の変更セットスキーマ。schemas/automation-review.schema.json:スクリプトおよび昇格レビューのフィードバックスキーマ。schemas/validation-result.schema.json:検証コマンドの結果スキーマ。schemas/automation-status-update.schema.json:後続処理向けオートメーションステータスのスキーマ。schemas/notion-sync-record.schema.json:Notion 書き込みの冪等性と同期結果のスキーマ。schemas/plane-sync-record.schema.json:Plane 書き込みの冪等性と同期結果のスキーマ。templates/:レビュー、検証、パッチ、昇格、変更セットに再利用できるテンプレート。references/playwright-typescript.md:フォールバック用のプロジェクト構成とコマンドパターン。references/locator-policy.md:セレクターの優先順位と壊れにくいルール。references/branch-policy.md:ブランチおよびリモート操作のポリシー。references/notion-mcp.md:Notion MCP の読み取り/書き込み/削除ポリシー、ステータス更新、冪等性、フォールバック、編集方針。references/plane-mcp.md:Plane MCP の読み取り/書き込み/削除ポリシー、動的な状態マッピング、管理対象のコメント、説明、リンク、作業ログ、ページ/Wiki、フォールバック、編集方針。references/notion-plane-bridge.md:検出、分類、相互リンク、重複ポリシー、一部同期、安全性。examples/:プランナー契約、エグゼキューターシグナル、変更セット、レビューの例。