- All playbooks
- Unnecessary work
- Install tools only in the jobs that need them
Install tools only in the jobs that need them
Keep lightweight discovery and validation jobs from paying for tools used only by other stages.
Compare approaches
How companies used this technique
Read what each company changed and follow the original sources.
Install only what the change detector needs
Change-detection jobs disabled the workspace install and used a standalone Turbo executable. Later graph discovery installed only its root tools.
Current graph discovery uses a filtered tools install. Source
- Use it when
- A metadata or graph-discovery job spends more on setup than its actual decision.
- Before applying it
- Pin the detector version and prove its dependency discovery works without install scripts.
Install tools only where they are used
Stripe Android installed Ruby in its shared prepare step for every check. It moved the install into the screenshot and dependency-update jobs that actually run Ruby.
Ruby installation, about 2 minutes per the author, now runs only in the jobs that use Ruby. Source
- Use it when
- A shared setup step installs browsers, language runtimes or CLIs for every job.
- Before applying it
- Trace indirect script and action dependencies before moving setup, and declare every tool a job needs explicitly.
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