---
title: "Give agents actionable lint feedback"
description: "Expose the project’s lint rules and actionable failure messages to agents so they can correct violations during the development loop."
url: https://starsling.dev/ci-playbooks/techniques/agent-readable-lint-feedback
canonicalUrl: https://starsling.dev/ci-playbooks/techniques/agent-readable-lint-feedback
---

# Give agents actionable lint feedback

Expose the project’s lint rules and actionable failure messages to agents so they can correct violations during the development loop.

## How to choose an approach

Compare the examples by repository setup, prerequisites, and risks before adopting one. Each company implemented this in its own environment; measure each change against your own baseline.

- **[OpenAI](https://starsling.dev/ci-playbooks/openai#remediation-lints)**: Use it when An agent keeps meeting the same lint or structural-test error in CI, and the message names the rule without the repair. Check before adopting: The message is part of the rule, so update it in the same change as the rule and keep the check itself deterministic.
- **[Spotify](https://starsling.dev/ci-playbooks/spotify#lint-guardrails-for-agents)**: Use it when Agents and developers open more pull requests than reviewers can read, and the repository's conventions are written in documents that no check enforces. Check before adopting: Rules need an owner who keeps them current. Start with the patterns reviewers correct most often. Adapted for GitHub Actions; compare the original system with yours.

## Apply this technique

````text
Evaluate and apply this CI technique to my repository: Give agents actionable lint feedback.

Expose the project’s lint rules and actionable failure messages to agents so they can correct violations during the development loop.

Read the technique and its source-backed company examples: https://starsling.dev/ci-playbooks/techniques/agent-readable-lint-feedback.md

Inspect this repository’s CI workflows, build and test commands, dependencies, and recent run timings. Identify where this technique applies and explain the expected benefit using this repository’s evidence.
Measure a baseline from recent comparable runs: elapsed time, queue time, runner minutes and failures where available. If data is unavailable, say what cannot be measured.
Compare relevant company approaches, checking prerequisites, platform differences and tradeoffs. Rank applicable options by evidence, fit and measurable opportunity; do not present company results as predictions for this repo.
Recommend the smallest safe change, show what checks and fallback paths remain, and ASK ME WHICH CHANGE TO APPROVE BEFORE EDITING ANY FILES.
Only after approval, work on a new feature branch, make one reversible change, and open a reviewable pull request. Never merge or push to a default or protected branch.
Keep required checks, test coverage, deployment and release behavior intact. Validate the change and compare equivalent runs where possible; report limitations and what should be monitored after merge.
````

## How companies used this technique

Read what each company changed and follow the original sources.

### OpenAI: Write lint errors that tell the agent how to fix them

OpenAI's agent-first team enforces the direction of layer dependencies with custom linters and structural tests, and adds taste invariants such as structured logging, naming conventions for schemas and types, file size limits and platform-specific reliability requirements. Each custom lint writes its error message to carry remediation instructions, so the failure an agent reads also tells it the repair.

Evidence: Company-reported result or observation

we statically enforce structured logging, naming conventions for schemas and types, file size limits, and platform-specific reliability requirements with custom lints ([Source](https://openai.com/index/harness-engineering/))

Use it when: An agent keeps meeting the same lint or structural-test error in CI, and the message names the rule without the repair.

Before applying it: The message is part of the rule, so update it in the same change as the rule and keep the check itself deterministic.

[Read more in the OpenAI playbook](https://starsling.dev/ci-playbooks/openai#remediation-lints)

[Primary source](https://openai.com/index/harness-engineering/)

### Spotify: Give agents the same lint feedback as developers

**Translated to GitHub Actions**

- What Spotify built: Spotify's Soundcheck assesses components against its golden state, and the lint system corrects Claude when it uses a ruled-out pattern.
- Your GitHub Actions version: Give agents the same lint feedback developers get, so a ruled-out pattern fails the check and the agent corrects itself.

Spotify's golden state defines the recommended technologies and practices for each type of component, and Soundcheck lets teams assess their components against it. Combined with static analysis and linting, these standards become guardrails. When Claude uses a pattern the standards rule out for Spotify's infrastructure, it gets immediate feedback from the lint system and corrects itself. Spotify's Fleet Management has merged more than 2.5 million automated maintenance pull requests, most of them auto-merged. As context, Spotify reports a 76% increase in pull request frequency across its overall AI adoption, with the vast majority of pull requests authored by a developer working alongside an AI agent.

Evidence: Documented technique

Use it when: Agents and developers open more pull requests than reviewers can read, and the repository's conventions are written in documents that no check enforces.

Before applying it: Rules need an owner who keeps them current. Start with the patterns reviewers correct most often.

GitHub Actions adaptation: Compare the source system with your own workflow before applying this translation.

[Read more in the Spotify playbook](https://starsling.dev/ci-playbooks/spotify#lint-guardrails-for-agents)

[Primary source](https://engineering.atspotify.com/2026/6/code-with-claude-coding-is-no-longer-the-constraint)

## CI optimization is continuous work.

Apply this technique yourself, or use StarSling Runners for faster GitHub Actions and optional agent-driven optimization PRs, which teams on eligible paid plans can turn on.

[Get self-improving CI](https://starsling.dev/products/runners)

## Company Playbooks

### [Anthropic](https://starsling.dev/ci-playbooks/anthropic)

Run only affected tests

### [DoorDash](https://starsling.dev/ci-playbooks/doordash)

Run build and test in parallel, sharded across CI agents

### [Linear](https://starsling.dev/ci-playbooks/linear)

Benchmark the same job on faster hardware

### [Mastra](https://starsling.dev/ci-playbooks/mastra)

StarSling runners for the slowest test workflow

### [OpenAI](https://starsling.dev/ci-playbooks/openai)

Rank CI fixes by the minutes they save

### [Ramp](https://starsling.dev/ci-playbooks/ramp)

Move a CPU-bound test suite to a faster CPU

### [Shopify](https://starsling.dev/ci-playbooks/shopify)

Let an agent iterate against one CI metric

### [Spotify](https://starsling.dev/ci-playbooks/spotify)

Build arm64 on native arm64 runners

### [Stripe](https://starsling.dev/ci-playbooks/stripe)

Run only the tests a change can reach

### [Uber](https://starsling.dev/ci-playbooks/uber)

Build the merge-queue speculations most likely to be needed
