- All playbooks
- Agent PR volume
- Run CI once per pull request commit
Run CI once per pull request commit
Remove overlapping push and pull request triggers so each change receives one intended validation run.
How companies used this technique
Read what each company changed and follow the original sources.
Run CI once per change
Anthropic reports more CI jobs in a given day. As a StarSling pattern for GitHub Actions, removing duplicate push and pull_request runs and metadata-only triggers keeps each change to one run.
- Use it when
- Run history shows duplicate events for the same commit, or metadata events rerun checks that do not depend on that metadata.
- Before applying it
- Preview deployments, cache warming, release side effects and metadata-dependent checks keep the triggers they need.
Run each pull-request commit once
The Ruby extension's workflow ran on every push and every pull request, so each in-repo branch got two identical runs; for one commit they started three seconds apart. Shopify/vscode-shopify-ruby#808 limits push to main and adds a concurrency group whose cancellation applies only to pull_request events, so a main run that is already running is never cancelled, though a main run still waiting in the same group is replaced by a newer push.
Merged 2026-09-18; the workflow on the default branch is unchanged since. Source
- Use it when
- The same commit runs equivalent validation through both push and pull_request, and developers push several times in a row.
- Before applying it
- Check that the two runs test the same ref with the same permissions before treating them as duplicates.
Run push builds only on the default branch
target-determinator's presubmit workflow ran on every push and on every pull request, so a commit pushed to a pull request branch in the repository ran the test matrix twice. The change restricts the push trigger to main; pull requests still run through the pull_request event.
- Use it when
- A workflow triggers on both push and pull_request, and the push trigger covers every branch.
- Before applying it
- Branches without a pull request no longer get push builds; the workflow keeps workflow_dispatch for running them by hand.
Company Playbooks
- Read Anthropic’s playbookRun only affected tests
- Read DoorDash’s playbookRun build and test in parallel, sharded across CI agents
- Read Linear’s playbookBenchmark the same job on faster hardware
- Read Mastra’s playbookStarSling runners for the slowest test workflow
- Read OpenAI’s playbookRank CI fixes by the minutes they save
- Read Ramp’s playbookMove a CPU-bound test suite to a faster CPU
- Read Shopify’s playbookLet an agent iterate against one CI metric
- Read Spotify’s playbookBuild arm64 on native arm64 runners
- Read Stripe’s playbookRun only the tests a change can reach
- Read Uber’s playbookBuild the merge-queue speculations most likely to be needed