Skip to main content
Fix It For Me lets Macroscope create branches, commit code changes, and open pull requests to fix issues it finds during review.

How It Works

  1. Reply to a Macroscope review comment requesting a fix (or ask from Slack)
  2. Macroscope creates a new branch and applies the fix via an AI agent
  3. Macroscope opens a PR. If triggered from a review comment, the base is the feature branch. If from Slack, the base is your main branch.
  4. GitHub Actions run on the new PR. If any fail, Macroscope attempts to fix them automatically.
  5. If the base is a feature branch and auto-merge is enabled, Macroscope will auto-merge once all checks pass. PRs against your main branch always require manual merge.

Auto-Merge Control

Override the default auto-merge setting per fix:
  • “Fix it for me and auto-merge”: auto-merges once checks pass, even if auto-merge is off by default.
  • “Fix it but don’t auto-merge”: opens the PR but leaves it for manual merge.
If auto-merge is blocked, Macroscope posts a comment explaining why (missing reviews, conflicts, failed checks).

Branch Protection

Macroscope operates like any other developer. It never writes directly to main branches. Branches follow the pattern macroscope/*/**. If you have branch protection rules that apply to all branches (like “Require a pull request before merging”), you may need to exclude macroscope/*/** branches.

GitHub Actions

Macroscope uses your existing GitHub Actions and CheckSuites to validate fixes. To reduce latency or cost on Macroscope PRs, you can add branch-specific rules for macroscope/*/** to limit which actions run.

Generated Code

If your repo has auto-generated code, include the expected diff in your test output. Macroscope will detect and apply it automatically.

Example Test

name: Protobuf generated code up-to-date

on:
  push:
  pull_request:

jobs:
  protobuf-gen-check:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Go
        uses: actions/setup-go@v5
        with:
          go-version: "1.22"

      - name: Install protoc plugins
        run: |
          go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
          go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

      - name: Regenerate protobuf files
        run: |
          protoc -I=proto \
            --go_out=. \
            --go-grpc_out=. \
            proto/*.proto

      - name: Fail if generated files changed (shows diff)
        run: git diff --exit-code