mcpField
G
grinding-until-pass

grinding-until-pass

github.com/spencerpaulyテスト・品質868555 回インストール13 週間前に更新
リポジトリ

grinding-until-pass について

コーディングエージェント向けのスキルです。指定したテスト、ビルド、lint、型チェックのコマンドを繰り返し実行し、失敗を分析して最小限の修正を加え、成功するか最大10回に達するまで続けます。大規模なリファクタリングを避けた、範囲の定まった自動修正に適しています。

主な機能

  1. 01目標コマンドを成功まで繰り返し実行
  2. 02エラーを分析して最小限に修正
  3. 03ループを最大10回に制限
  4. 04一度に一つの問題を修正
  5. 05テストを維持しエラーを抑制しない

活用シーン

  1. 01リファクタリング後のテスト失敗の修正
  2. 02依存関係更新後の型エラーへの対処
  3. 03ブランチのマージ後に生じた競合の解消
  4. 04lint、型チェック、テスト、ビルドの順次実行

インストール

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

$npx skills add https://github.com/spencerpauly/awesome-cursor-skills --skill grinding-until-pass

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

詳細

Grind Until Pass

すべてのテストに合格する、ビルドが成功する、リンティングに問題がなくなるなど、特定の目標を達成するまでエージェントに自律的に作業を続けさせたい場合に、このスキルを使用します。一度試して止まるのではなく、完了するまでエージェントがループします。

手順

  1. 目標コマンドを定義する — 終了コードによって成功を判定するコマンドです。

    • テスト:npm test または npx vitest run
    • ビルド:npm run build
    • リント:npm run lint
    • 型チェック:npx tsc --noEmit
    • 上記すべて:npm run lint && npx tsc --noEmit && npm test && npm run build
  2. コマンドを実行する — 実行して出力を記録します。

  3. 失敗した場合 — 分析して修正する:

    • エラー出力を注意深く読みます。
    • 根本原因を特定します。失敗したテストのアサーション、型エラー、リント違反、インポートエラーなどです。
    • 最小限の修正を行います。リファクタリングはせず、エラーだけを修正します。
    • 手順 2 に戻ります。
  4. 成功した場合 — 停止して報告する:

    • 修正した内容と、完了までにかかった反復回数を報告します。
    • 行った変更を要約します。

ループのルール

  • 最大 10 回の反復 — 10 回試してもコマンドが失敗する場合は、停止して進行を妨げている要因を報告します。根本的な問題があり、人間の入力が必要です。
  • 一度に一つだけ修正する — すべてのエラーを一度に修正しようとせず、最初のエラーを修正して再実行し、その修正によって後続のエラーも解消されるか確認します。
  • テストを削除しない — テストが失敗した場合は、コードを修正して合格させます。テスト自体に明らかな誤りがある場合(意図的に変更された古い動作をテストしているなど)を除き、テストを変更しないでください。
  • エラーを抑制しない — エラーを無視するために @ts-ignore、eslint-disable、any 型を追加しないでください。実際の問題を修正します。
  • 進捗を追跡する — エラー数が減らずに増えている場合は、停止してアプローチを見直します。

使用する場面

  • 大規模なリファクタリングで複数のテストが失敗した後
  • 依存関係のアップグレードによって型エラーが発生した後
  • 解決が必要な競合のあるブランチをマージした後
  • 「とにかく成功させる」作業をエージェントに任せ、徹底的に取り組んでもらいたい場合

応用:Cursor Hooks との連携

エージェントのターン終了後に実行され、テストの合否を確認し、失敗している場合にフォローアップメッセージを送る Cursor hook を .cursor/hooks.json に設定して、自動化できます。

{
  "hooks": [
    {
      "event": "stop",
      "command": "bash .cursor/scripts/check-tests.sh",
      "description": "Re-run tests after agent stops and send follow-up if failing"
    }
  ]
}

このスクリプトは終了コードを確認し、テストがまだ失敗している場合に followup_message を返します。

注意事項

  • テストスイートの実行が速い場合に最も効果を発揮します。テストに 5 分以上かかる場合、ループは遅くなります。
  • 反復を速めるため、最初の失敗で停止する --bail または --fail-fast フラグを使用してください。
  • エージェントは徹底的に作業しますが、創造的な対応は得意ではありません。修正に設計変更が必要な場合は、人間による指示が必要です。

コメント