From 7f03716ec2ad6f9e8ad2c1cf480b10c5e9414304 Mon Sep 17 00:00:00 2001 From: Mason Williams Date: Sat, 17 Jan 2026 15:49:25 -0500 Subject: [PATCH] Add Cursor agent CI fix workflow Adds a GitHub Actions workflow that automatically attempts to fix CI failures using cursor-agent. When the test workflow fails on a PR, this workflow analyzes the failure logs and proposes fixes via a compare link comment. --- .github/workflows/fix-ci.yaml | 97 +++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 .github/workflows/fix-ci.yaml diff --git a/.github/workflows/fix-ci.yaml b/.github/workflows/fix-ci.yaml new file mode 100644 index 0000000..fe08902 --- /dev/null +++ b/.github/workflows/fix-ci.yaml @@ -0,0 +1,97 @@ +name: Fix CI Failures + +on: + workflow_run: + workflows: [Run tests for the CLI] + types: [completed] + +permissions: + contents: write + pull-requests: write + actions: read + +jobs: + attempt-fix: + if: >- + ${{ github.event.workflow_run.conclusion == 'failure' && + github.event.workflow_run.event == 'pull_request' && + github.event.workflow_run.name != 'Fix CI Failures' }} + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install Cursor CLI + run: | + curl https://cursor.com/install -fsS | bash + echo "$HOME/.cursor/bin" >> $GITHUB_PATH + + - name: Configure git identity + run: | + git config user.name "Cursor Agent" + git config user.email "cursor-agent@onkernel.com" + + - name: Setup Go + uses: actions/setup-go@v5 + with: + go-version-file: 'go.mod' + + - name: Fix CI failure + env: + CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }} + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BRANCH_PREFIX: ci-fix + run: | + cursor-agent -p "You are operating in a GitHub Actions runner for the Kernel CLI repository. + + The GitHub CLI is available as \`gh\` and authenticated via GH_TOKEN. Git is available. You have write access to repository contents and can comment on pull requests, but you must not create or edit PRs directly. + + # Context + - Repo: ${{ github.repository }} + - Workflow Run ID: ${{ github.event.workflow_run.id }} + - Workflow Run URL: ${{ github.event.workflow_run.html_url }} + - Fix Branch Prefix: ci-fix + + # Codebase Structure + - cmd/ - CLI commands (main command implementations) + - cmd/proxies/ - Proxy-related commands + - cmd/mcp/ - MCP server commands + - pkg/ - Supporting packages and templates + - Makefile - Build and test targets (\`make test\` runs \`go vet\` and \`go test\`) + + # Goal + Implement an end-to-end CI fix flow: identify the failing PR, analyze the failure, make minimal targeted fixes, and propose changes back. + + # Requirements + 1. Use \`gh run view ${{ github.event.workflow_run.id }} --log-failed\` to get failure logs + 2. Identify the PR associated with the failed workflow run + 3. Analyze the failure - common issues include: + - Go compilation errors + - Test failures (missing interface methods, type mismatches) + - Mock/fake implementations missing new interface methods + - Linting issues from \`go vet\` + 4. Make minimal, targeted edits consistent with the repo style + 5. Create/update a fix branch: ci-fix/ + 6. Push changes and post a PR comment with ONLY a compare link for quick PR creation + - Format: Describe the fix, then provide ONLY a single PR creation link + - Example format: + \"🔧 CI Fix Available + I've pushed a fix for the CI failure. + + 👉 Click here to create a PR with the fix\" + - Do NOT include any git merge instructions or manual merge commands + - Only include the compare link (e.g., https://github.com/.../compare/...) + + # Style Guidelines + - Go: Follow existing patterns, use testify for tests + - Comments: Keep simple, no extra formatting + - Interfaces: When adding methods to interfaces, update all implementations including test fakes + + # Constraints + - Do NOT create PRs directly - only post comments with compare links + - Avoid duplicate comments - update existing bot comments + - If no actionable fix is possible, make no changes and post no comment + - PR comments must ONLY include the PR creation link, no manual merge instructions + " --model opus-4.5 --force --output-format=text