Cursor Skill

grinding-until-pass

Keep iterating on code changes until the tests pass, the build succeeds, or linting is clean. Runs in a tight loop of fix → run → check → repeat. Use when you want the agent to autonomously grind through test failures or build errors.

LLM Mart · 0 points · 21 views 1 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download spencerpauly-awesome-cursor-skills-resources_grinding-until-pass-99cd265.zip · 1 KB
Part of spencerpauly/awesome-cursor-skills — 65 skills

Install

skills CLI npx skills add https://github.com/spencerpauly/awesome-cursor-skills/tree/main/resources/grinding-until-pass
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install spencerpauly-awesome-cursor-skills@llmmart
Git git clone https://github.com/spencerpauly/awesome-cursor-skills.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole spencerpauly/awesome-cursor-skills collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

Grind Until Pass

Use this skill when you want the agent to keep working autonomously until a specific goal is met — all tests pass, the build succeeds, or linting is clean. Instead of stopping after one attempt, the agent loops until done.

Steps

  1. Define the goal command — the command whose exit code determines success:

    • Tests: npm test or npx vitest run
    • Build: npm run build
    • Lint: npm run lint
    • Type-check: npx tsc --noEmit
    • All of the above: npm run lint && npx tsc --noEmit && npm test && npm run build
  2. Run the command — execute it and capture the output.

  3. If it fails — analyze and fix:

    • Read the error output carefully.
    • Identify the root cause: failing test assertion, type error, lint violation, import error, etc.
    • Make the minimal fix. Don't refactor — just fix the error.
    • Go back to step 2.
  4. If it passes — stop and report:

    • Report what was fixed and how many iterations it took.
    • Summarize the changes made.

Rules for the Loop

  • Maximum 10 iterations — if after 10 attempts the command still fails, stop and report what's blocking progress. Something fundamental is wrong and needs human input.
  • Fix one thing at a time — don't try to fix all errors at once. Fix the first error, re-run, and see if the fix resolves downstream errors too.
  • Don't delete tests — if a test is failing, fix the code to make it pass. Don't modify the test unless the test itself is clearly wrong (testing old behavior that was intentionally changed).
  • Don't suppress errors — don't add @ts-ignore, eslint-disable, or any types to silence errors. Fix the actual problem.
  • Track progress — if the number of errors is increasing instead of decreasing, stop and reassess the approach.

When to Use This

  • After a large refactor that broke multiple tests
  • After upgrading a dependency that introduced type errors
  • After merging a branch with conflicts that need resolution
  • When you want to "just make it green" and trust the agent to grind through it

Advanced: Cursor Hooks Integration

You can automate this with a Cursor hook in .cursor/hooks.json that triggers after the agent's turn ends, checks if tests pass, and sends a follow-up message if they don't:

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

The script checks the exit code and returns a followup_message if tests are still failing.

Notes

  • This works best with fast test suites. If your tests take 5+ minutes, the loop will be slow.
  • Use --bail or --fail-fast flags to stop at the first failure for faster iteration.
  • The agent will be thorough but not creative — if the fix requires a design change, it'll need human guidance.
Files (awesome-cursor-skills)
  • SKILL.md 3.1 KB
    ---
    name: grinding-until-pass
    description: Keep iterating on code changes until the tests pass, the build succeeds, or linting is clean. Runs in a tight loop of fix → run → check → repeat. Use when you want the agent to autonomously grind through test failures or build errors.
    ---
    
    # Grind Until Pass
    
    Use this skill when you want the agent to keep working autonomously until a specific goal is met — all tests pass, the build succeeds, or linting is clean. Instead of stopping after one attempt, the agent loops until done.
    
    ## Steps
    
    1. **Define the goal command** — the command whose exit code determines success:
    
       - Tests: `npm test` or `npx vitest run`
       - Build: `npm run build`
       - Lint: `npm run lint`
       - Type-check: `npx tsc --noEmit`
       - All of the above: `npm run lint && npx tsc --noEmit && npm test && npm run build`
    
    2. **Run the command** — execute it and capture the output.
    
    3. **If it fails — analyze and fix**:
       - Read the error output carefully.
       - Identify the root cause: failing test assertion, type error, lint violation, import error, etc.
       - Make the minimal fix. Don't refactor — just fix the error.
       - Go back to step 2.
    
    4. **If it passes — stop and report**:
       - Report what was fixed and how many iterations it took.
       - Summarize the changes made.
    
    ## Rules for the Loop
    
    - **Maximum 10 iterations** — if after 10 attempts the command still fails, stop and report what's blocking progress. Something fundamental is wrong and needs human input.
    - **Fix one thing at a time** — don't try to fix all errors at once. Fix the first error, re-run, and see if the fix resolves downstream errors too.
    - **Don't delete tests** — if a test is failing, fix the code to make it pass. Don't modify the test unless the test itself is clearly wrong (testing old behavior that was intentionally changed).
    - **Don't suppress errors** — don't add `@ts-ignore`, `eslint-disable`, or `any` types to silence errors. Fix the actual problem.
    - **Track progress** — if the number of errors is increasing instead of decreasing, stop and reassess the approach.
    
    ## When to Use This
    
    - After a large refactor that broke multiple tests
    - After upgrading a dependency that introduced type errors
    - After merging a branch with conflicts that need resolution
    - When you want to "just make it green" and trust the agent to grind through it
    
    ## Advanced: Cursor Hooks Integration
    
    You can automate this with a Cursor hook in `.cursor/hooks.json` that triggers after the agent's turn ends, checks if tests pass, and sends a follow-up message if they don't:
    
    ```json
    {
      "hooks": [
        {
          "event": "stop",
          "command": "bash .cursor/scripts/check-tests.sh",
          "description": "Re-run tests after agent stops and send follow-up if failing"
        }
      ]
    }
    ```
    
    The script checks the exit code and returns a `followup_message` if tests are still failing.
    
    ## Notes
    
    - This works best with fast test suites. If your tests take 5+ minutes, the loop will be slow.
    - Use `--bail` or `--fail-fast` flags to stop at the first failure for faster iteration.
    - The agent will be thorough but not creative — if the fix requires a design change, it'll need human guidance.
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related