changelog-manage
FreeCHANGELOG エントリ追加・バージョン計算。「CHANGELOG」「変更履歴」「changelog add」「version bump」「バージョン」「バージョンアップ」などのキーワードで自動適用。
The English summary is being prepared. Showing the original description.
AI QA Agent のメインオーケストレーター。テストスイートまたは個別テストケースの QA を段階的に実行する。フェーズスキルに委譲して段階的開示を行い、サブエージェントでコンテキスト隔離を実現する。
「QA」「動作確認」「テストケース実行」「smoke test」「E2E」「手動テスト」「結合テスト」などのキーワードで自動適用。
The English summary is being prepared. Showing the original description.
See how to installReview the instructions the agent will receive before you install.
人間がスマホをポチポチして動作確認する作業を AI に委譲する。
Phase 0: QA Readiness 検査(条件付き) → ios-qa-prepare スキルで判定し、必要に応じて実行 Phase 1: 準備 → ios-qa-prepare スキルの知識で実行 Phase 2: テスト実行 → ios-qa-execute スキルの知識で実行 Phase 3: レポート → ios-qa-report スキルの知識で実行
「QA を実行して tests/qa-suite.md」 「動作確認して tests/cases/」
「このテストケースを実行して tests/cases/TC-001.md」
「アプリを起動して、メッセージが送信できるか確認して」 → テストケースを即興で構築して実行
実行タイミング: ワークフロー開始時
ユーザー指示を解析し、回帰テストモードを判定:
REGRESSION_MODE = false
if ユーザー指示に以下のキーワード:
- "回帰テスト"
- "regression test"
- "regression"
- "差分テスト"
- "差分確認"
THEN
REGRESSION_MODE = true
通知: "回帰テストモードで実行します。App Map 差分分析を先に実施します。"
END IF
回帰テストモード有効時の処理:
以下のいずれかに該当する場合、Phase 0 を実行:
Phase 0 の内容:
QA Readiness Score の計算式:
スコア = (HIGH要素率 × 40% + MED要素率 × 30% + 操作可能性 × 20% + 状態観測性 × 10%) × 100
ios-dev プラグインがある場合: Agent(subagent_type: "ios-dev:xbm-run", prompt: "ビルドして実行。scheme: <scheme>")
ない場合: ToolSearch("select:mcp__XcodeBuildMCP__build_run_sim") build_run_sim(scheme: "<scheme>")
scheme / simulator 情報を記憶。
App Map 注入をワンタイムで実施:
メリット:
実行順序に従い、各テストケースを処理。回帰テストモード有効時は影響テストケースを優先:
# 回帰テストモード: 影響テストケース優先
if REGRESSION_MODE:
affected_tests = Phase 0.5 の差分分析から抽出
test_execution_order = [
*affected_tests (優先度順),
*remaining_tests (元の優先度順)
]
else:
test_execution_order = 元の優先度順
for each test_case in test_execution_order:
# 回帰テストモード: 変更なしテストをスキップ提案
if REGRESSION_MODE and test_case not in affected_tests:
if ユーザー指示が「影響テストケースのみ」:
Skip(理由: App Map 差分なし)
continue
# 依存チェック
if depends_on が Fail/Inconclusive → Skipped
# アプリ状態リセット判断
if 前テストが Fail or preconditions が非互換 → アプリ再起動
# Step A: qa-runner で実行
Agent(
subagent_type: "ios-qa-agent:qa-runner",
prompt: |
以下のテストケースを実行してください。
## テストケース
{前提状態 + 操作意図のみ。期待結果は渡さない}
## 前提条件の達成手順(ヒント)
{プリセットの steps}
## 制限
max_actions: 20, timeout_seconds: {timeout}, stuck_threshold: 3
)
→ Execution Report を受け取る
# Step B: qa-judge で判定
Agent(
subagent_type: "ios-qa-agent:qa-judge",
prompt: |
以下のテスト結果を判定してください。
## 期待結果
{テストケースの期待結果セクション}
## 補足
{テストケースの補足セクション}
## 実行レポート
{qa-runner の Execution Report 全文}
)
→ Judgment を受け取る
results.append(judgment)
全 runner の Discoveries を集約し、App Map v5 フォーマットで更新:
Step 1: Discoveries の収集と分類
[interacted] — 操作して確認済み → 即座に App Map に反映[observed] — snapshot_ui のみで確認 → App Map に [unverified] マーク付きで追加Step 2: App Map への統合
既存 app-map.md がある場合:
[interacted] の情報: 既存記録を更新、日付を現在日時に更新[observed] の情報: 新規要素の場合は [MED, unverified] マーク付きで追加app-map.md がない場合:
Step 3: Known Issues への追記
Step 4: フォーマット更新
format_version: 5[HIGH, 2026-03-15][unverified] マーク付きの要素を Operation Patterns の Known Issues に記載実装注: このフェーズはオプション。テストスイート実行時のみ適用。単一ケース実行時はスキップ。
全テストスイート実行に対する全体タイムアウトを設定:
設定値:
タイムアウト判定ロジック:
for each test_case in remaining_tests:
elapsed_time = 現在時刻 - 実行開始時刻
remaining_time = total_timeout - elapsed_time
# 残りテストの平均実行時間を推定
avg_time_per_test = 3分(デフォルト推定値)
estimated_remaining_time = avg_time_per_test × len(remaining_tests)
if estimated_remaining_time > remaining_time:
# 時間不足の場合、残りテストを Skipped にする
for test in remaining_tests:
result.append(Skipped, reason: "全体タイムアウトによるスキップ")
break
else:
# テスト実行を続行
run_test(test_case)
警告メッセージ:
実行時間が圧迫しています。残り 10分で 5 件のテストが残っています。
以下のテストをスキップします: TC-004, TC-005
テストスイート内に 5 件を超えるテストがある場合、5 件ごとに中間サマリーを出力:
中間サマリーの内容:
## 中間レポート(TC-001 ~ TC-005)
| TC-ID | 結果 | Priority | 実行時間 |
|-------|------|----------|---------|
| TC-001 | Pass | critical | 45s |
| TC-002 | Pass | high | 52s |
| TC-003 | Fail | medium | 38s |
| TC-004 | Skipped | high | - |
| TC-005 | Inconclusive | medium | 55s |
**累計:** 3 Pass, 1 Fail, 1 Inconclusive, 1 Skipped / 実行時間: 190s
---
出力タイミング:
全テスト結果を集約してレポートを出力。
再起動する場合:
再起動しない場合:
再起動方法:
ToolSearch("select:mcp__XcodeBuildMCP__stop_app_sim,mcp__XcodeBuildMCP__launch_app_sim")
stop_app_sim() → launch_app_sim()
| 要素 | トークン消費 | 最適化前 | 最適化後 | 削減量 |
|---|---|---|---|---|
| App Map 読み込み | 300-600 × 1回 | 300-600 × N件 | 300-600 × 1回 | N-1 回分削減 |
| テストケース読み込み | 200-500 / 件 | 変わらず | 変わらず | - |
| qa-runner 結果 | 500-1,000 / 件 | 変わらず | 変わらず | - |
| qa-judge 結果 | 300-500 / 件 | 変わらず | 変わらず | - |
| レポート生成 | 1,000-3,000 | 変わらず | 変わらず | - |
| 10件実行時の合計 | 約 13,000-23,000 | - | 約 12,800-22,400 | 約 200-600(1回分) |
UI 操作ログ(snapshot_ui × N)は qa-runner 内で完全消費。
Phase 5 での効率化:
qa-runner には「期待結果」を渡さない。 理由: runner が期待結果を知ると、それに合わせた報告をする確認バイアスが生じる。 runner は「やったこと」と「見えたもの」を客観的に報告する。 judge が独立して「期待通りだったか」を判定する。
No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
CHANGELOG エントリ追加・バージョン計算。「CHANGELOG」「変更履歴」「changelog add」「version bump」「バージョン」「バージョンアップ」などのキーワードで自動適用。
The English summary is being prepared. Showing the original description.
プロジェクトの .claude/ ディレクトリ(skills, agents, contexts)を Codex CLI 互換 .agents/ に変換。「codex export」「Codex 変換」「プロジェクトをエクスポート」などで自動適用。
The English summary is being prepared. Showing the original description.
デザインシステム準拠のSwiftUIコンポーネントを生成する。新しいUIパーツの作成、コンポーネント生成時に使用。「コンポーネント作成」「新しいUI」「パーツ作成」「component generate」「UIパーツ」「新規コンポーネント」などのキーワードで自動適用。
The English summary is being prepared. Showing the original description.
Claude Code プラグインを Codex CLI 互換形式に変換。SKILL.md → .agents/skills/、agents → .agents/skills/、AGENTS.md 生成。「deploy」「codex」「Codex 変換」「エクスポート」などで自動適用。
The English summary is being prepared. Showing the original description.
SwiftUI ViewのDesign System準拠性を監査する。既存UIのレビュー、デザインチェック時に使用。「デザインレビュー」「UIチェック」「design audit」「デザイン監査」「UI監査」「デザインチェック」「トークン確認」などのキーワードで自動適用。
The English summary is being prepared. Showing the original description.
UIの視覚的差分を検出・比較する。デザイン変更前後の比較、リファレンスとの差分確認時に使用。「デザイン比較」「UI差分」「design diff」「design compare」「ビフォーアフター」「見た目の違い」などのキーワードで自動適用。
The English summary is being prepared. Showing the original description.