mcpField
S
sc-pr-fix

sc-pr-fix

github.com/tony363開発2091 回インストール30 週間前に更新
リポジトリ

sc-pr-fix について

プルリクエストを作成してCIチェックを監視し、失敗の修正を対話形式で支援するスキルです。試行回数の上限と確認プロンプトで操作を制御し、ドライランや低リスク修正の自動適用にも対応します。

主な機能

  1. 01ブランチ、コミット、プルリクエストの作成
  2. 02`gh` によるCIチェックの監視
  3. 03一般的なCI失敗ログの解析
  4. 04修正適用前の確認
  5. 05再試行の制限と失敗の繰り返し検出

活用シーン

  1. 01プルリクエストを作成してCIチェックを追跡
  2. 02lintやテストの失敗を診断・修正
  3. 03ドライランでGitやプルリクエスト操作を確認

MCP 対応

複雑なCI失敗のデバッグや、修正案を適用する前のレビューにPAL MCPを使用します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/tony363/superclaude --skill sc-pr-fix

インストール後、Claude Code で/sc-pr-fixを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

scripts/
check_pr_status.py
fix_orchestrator.py
parse_check_failures.py

詳細

PR 修正スキル

プルリクエストを作成し、すべてのチェックが通るまで CI チェックの失敗を対話的に修正します。

クイックスタート

# Create PR from current changes
/sc:pr-fix "fix: resolve test failures" --branch fix/tests

# Dry run to preview
/sc:pr-fix "feat: new feature" --dry-run

# With custom PR details
/sc:pr-fix "chore: update deps" --title "Update dependencies" --body "Monthly update"

# Auto-fix low-risk issues
/sc:pr-fix "fix: lint errors" --auto-fix

動作フロー

  1. 検証 - Git の状態を確認し、変更が存在することを確認します
  2. ブランチ - 新しいブランチを作成してチェックアウトします
  3. コミット - すべての変更をステージングし、指定されたメッセージでコミットします
  4. プッシュ - ブランチを origin にプッシュします
  5. PR 作成 - gh CLI でプルリクエストを作成します
  6. 監視 - 設定された間隔で CI の状態をポーリングします
  7. 修正ループ - 失敗したチェックごとに、以下を行います。
    • 失敗ログを解析します
    • 修正案を提示します(複雑な問題には PAL MCP の支援を利用します)
    • ユーザーに確認を求めます(対話モード)
    • 修正を適用してプッシュします
    • チェックを再度監視します
  8. 完了 - すべてのチェックに合格するか、最大試行回数に達した時点で完了します

フラグ

フラグ型デフォルト説明
--branchstringauto新しいブランチ名(auto の場合:pr-fix/<timestamp>)
--basestringmainPR の対象ブランチ
--titlestringcommit msgPR のタイトル
--bodystringautoPR の説明文
--dry-runboolfalse実行せずに操作をプレビューします
--auto-fixboolfalse低リスクの修正を自動適用し、高リスクの場合のみ確認を求めます
--max-fix-attemptsint5CI 修正の最大反復回数(上限:5)
--poll-intervalint30CI 状態を確認する間隔(秒)
--no-pushboolfalseブランチを作成してコミットしますが、プッシュや PR 作成は行いません

対話モード

デフォルトでは、スキルは修正のたびに確認を求めます。

================================================================================
CI Check Failed: build (lint)                                   Attempt 2 of 5
================================================================================

Error Summary:
  - src/component.ts:42:15 - Missing semicolon (semi)
  - src/utils.ts:18:1 - Unexpected console statement (no-console)

Proposed Fix:
  1. Add semicolon at src/component.ts:42
  2. Remove console.log at src/utils.ts:18

Risk Level: LOW (auto-fixable lint errors)

--------------------------------------------------------------------------------
[A]pply fix  [S]kip this check  [V]iew full log  [Q]uit
>

低リスクの修正(lint、フォーマット)で確認を省略するには、--auto-fix を使用します。 高リスクの修正(テストの変更、セキュリティ、コアロジック)では、常に確認を求めます。

リスク分類

レベル例動作
LOWLint エラー、フォーマット、空白--auto-fix の場合は自動修正
MEDIUMテストの更新、ドキュメント常に確認
HIGHコアロジック、セキュリティ、API の変更常に確認し、PAL によるレビューを実施

エビデンス要件

このスキルでは、操作が成功したことを示すエビデンスが必要です。

  • Git 操作が成功していること(ブランチの作成、プッシュ)
  • PR の作成時に有効な PR URL が返されること
  • CI の状態を gh CLI で取得できること
  • 修正の試行でファイルの差分が表示されること

ツールの連携

  • Bash - Git と gh CLI の実行
  • Read - 失敗ログとソースコードの分析
  • Edit - ソースファイルへの修正の適用
  • AskUserQuestion - 修正の確認を求める対話型プロンプト
  • PAL MCP debug - 複雑な CI 失敗の診断
  • PAL MCP codereview - 適用前の修正品質の検証

MCP 連携

  • PAL MCP debug - CI 失敗の根本原因分析
  • PAL MCP codereview - 適用前の修正案のレビュー

安全機構

  1. 上限:修正の反復回数は最大 5 回(変更できません)
  2. 停滞の検出:同じエラーが 3 回連続した場合は中止します
  3. 振動の検出:修正・取り消し・修正のパターンを検出した場合は中止します
  4. 対話的な確認:構造的な変更にはすべて承認が必要です
  5. チェックをスキップしない:修正するか、明示的に中止する必要があります。スキップはできません
  6. バックアップブランチ:開始前に backup/<branch>-<timestamp> を作成します

CI 状態のポーリング

このスキルは、以下を使用して GitHub Actions のチェック状態をポーリングします。

gh pr checks <pr_number> --json name,state,conclusion,url

ポーリングの動作:

  • 初期待機時間:プッシュ後 10 秒(CI の開始を待ちます)
  • ポーリング間隔:--poll-interval 秒(デフォルト:30)
  • タイムアウト:チェック完了まで 10 分
  • pending、queued、in_progress、completed の各状態に対応します

失敗ログの解析

対応する CI 出力形式:

  • ESLint/TSLint の JSON 形式
  • トレースバックを含む pytest の出力
  • ruff/flake8 形式
  • Jest/Vitest の出力形式
  • 一般的なエラーパターン(error:、ERROR、failed)
  • GitHub Actions のアノテーション

例

修正ループを含む基本的な PR 作成
/sc:pr-fix "fix: resolve ESLint errors"

出力:

Creating branch: pr-fix/20240115-143022
Committing: fix: resolve ESLint errors
Pushing to origin...
Creating PR #42: fix: resolve ESLint errors

Monitoring CI checks...
  - lint: pending
  - test: pending

[30s later]
  - lint: failed
  - test: passed

Parsing lint failures...
Found 2 errors in 1 file.

================================================================================
CI Check Failed: lint                                           Attempt 1 of 5
================================================================================
...
[A]pply fix  [S]kip  [V]iew log  [Q]uit
> a

Applying fix...
Pushing fix commit...
Monitoring CI checks...
  - lint: passed
  - test: passed

All checks passed! PR #42 is ready for review.
PR URL: https://github.com/owner/repo/pull/42
詳細情報を含む機能 PR
/sc:pr-fix "feat: add user dashboard" \
  --branch feat/user-dashboard \
  --title "Add User Dashboard Component" \
  --body "Implements user dashboard as per spec #42"
プレビューモード
/sc:pr-fix "refactor: cleanup utils" --dry-run

出力:

[DRY RUN] Would execute:
  1. git checkout -b pr-fix/20240115-143022
  2. git add -A
  3. git commit -m "refactor: cleanup utils"
  4. git push -u origin pr-fix/20240115-143022
  5. gh pr create --base main --title "refactor: cleanup utils"
  6. Monitor CI and fix failures interactively

No changes made.
低リスクの問題を自動修正する
/sc:pr-fix "fix: formatting" --auto-fix

--auto-fix を指定すると、低リスクの修正(リント、フォーマット)が自動的に適用されます。 中リスクおよび高リスクの修正では、引き続き確認が求められます。

終了条件

修正ループは、次のいずれかの条件を満たすと終了します。

条件終了ステータスメッセージ
すべてのチェックに合格SUCCESS"All checks passed! PR ready for review."
最大試行回数(5回)FAILED"Max fix attempts reached. Manual intervention required."
停滞(同じエラーが3回発生)FAILED"Same error persists after 3 attempts. Aborting."
ユーザーが終了ABORTED"Fix loop aborted by user."
CI タイムアウトTIMEOUT"CI checks did not complete within timeout."

コミットメッセージの形式

修正コミットには Conventional Commits を使用します。

fix(ci): resolve <check_name> failures

- <description of fix 1>
- <description of fix 2>

Automated fix by sc-pr-fix skill

スクリプト

このスキルでは、scripts/ 内の Python ヘルパースクリプトを使用します。

  • check_pr_status.py - gh pr checks を使用して PR のチェック状況をポーリングします
  • parse_check_failures.py - CI の失敗ログを解析してエラーを抽出します
  • fix_orchestrator.py - 安全機構を備えた修正ループを調整します

エラー処理

シナリオ動作
Git リポジトリがないエラーメッセージを表示して終了します
作業ツリーに未コミットの変更があるスタッシュ、コミット、または中止を選択するよう求めます
ブランチがすでに存在する別の名前を指定するよう求めます
プッシュに失敗権限を確認し、再試行を提案します
PR の作成に失敗gh CLI のエラーを表示し、手動での作成を提案します
CI タイムアウト状況を報告し、監視の継続を提案します
解析に失敗生ログの表示に切り替えます
修正の適用に失敗試行回数を増やし、ループを続けます
ユーザーが中止状況の概要を表示して正常に終了します

コメント