grinding-until-pass について
コーディングエージェント向けのスキルです。指定したテスト、ビルド、lint、型チェックのコマンドを繰り返し実行し、失敗を分析して最小限の修正を加え、成功するか最大10回に達するまで続けます。大規模なリファクタリングを避けた、範囲の定まった自動修正に適しています。
主な機能
- 01目標コマンドを成功まで繰り返し実行
- 02エラーを分析して最小限に修正
- 03ループを最大10回に制限
- 04一度に一つの問題を修正
- 05テストを維持しエラーを抑制しない
活用シーン
- 01リファクタリング後のテスト失敗の修正
- 02依存関係更新後の型エラーへの対処
- 03ブランチのマージ後に生じた競合の解消
- 04lint、型チェック、テスト、ビルドの順次実行
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ spencerpauly/ awesome-cursor-skills --skill grinding-until-passインストール後、Claude Code で/grinding-until-passを入力して読み込まれたか確認します。
詳細
Grind Until Pass
すべてのテストに合格する、ビルドが成功する、リンティングに問題がなくなるなど、特定の目標を達成するまでエージェントに自律的に作業を続けさせたい場合に、このスキルを使用します。一度試して止まるのではなく、完了するまでエージェントがループします。
手順
-
目標コマンドを定義する — 終了コードによって成功を判定するコマンドです。
- テスト:
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 に戻ります。
-
成功した場合 — 停止して報告する:
- 修正した内容と、完了までにかかった反復回数を報告します。
- 行った変更を要約します。
ループのルール
- 最大 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フラグを使用してください。 - エージェントは徹底的に作業しますが、創造的な対応は得意ではありません。修正に設計変更が必要な場合は、人間による指示が必要です。
コメント
Markdown 対応