Skip to content
Ultracite
Esc
↑↓navigate↵open⌘Jpreview

Devin knows your lint command before it codes

Devin reads AGENTS.md before it starts coding, taking the first 16 KiB of each file, and Devin Review reads it again for every pull request. Cloud sessions have no post-edit hook, so Devin runs ultracite in its VM when the rules or your blueprint say to, and a CI check catches the rest.

Devin by CognitionChecked against October 2026

# Ultracite Code Standards

This project uses **Ultracite**, a zero-config preset that enforces strict code quality standards through automated formatting and linting.

## Quick Reference

- **Format code**: `npx ultracite fix`
- **Check for issues**: `npx ultracite check`
- **Diagnose setup**: `npx ultracite doctor`

Oxlint + Oxfmt (the underlying engine) provides robust linting and formatting. Most issues are automatically fixable.

…
Ultracite’s rules
Where Devin looks for instructions
  1. 1.devin/blueprint.yamlThe repository’s knowledge entries, such as lint and test, load into context at session start.
  2. 2AGENTS.mdUltraciteFound before Devin starts coding. The first 16 KiB is included automatically.
  3. 3packages/*/AGENTS.mdAn AGENTS.md can sit anywhere in the repo, and Devin includes the first 16 KiB of each one.
  4. 4REVIEW.mdDevin Review only: read with every AGENTS.md and CLAUDE.md when it analyzes a pull request.

How Devin reads the rules

A Devin session starts with the repository’s blueprint knowledge and its AGENTS.md files. Devin Review reads AGENTS.md too, plus REVIEW.md for anything that only matters in review.

Location
AGENTS.md in the repo root, or anywhere else in it. Devin looks for it before it starts coding.
Size
The first 16 KiB of each AGENTS.md loads automatically; past that, Devin gets a truncation notice. Ultracite’s rules take about 5 KB.
Blueprints
Write them in Settings > Environment > Blueprints, or keep them in the repo as .devin/blueprint.yaml and sync after merging.
Builds
maintenance runs during builds. At session start it’s shown to Devin, not run, so Devin can rerun it if dependencies have changed.
Review files
Devin Review reads **/REVIEW.md, **/AGENTS.md, **/CLAUDE.md, **/CONTRIBUTING.md, Cursor and Windsurf rules, and .coderabbit.yaml.
Auto-fix
With Auto-Fix on, Devin Review proposes code changes alongside its bug findings, which you can apply from the diff view.

Checked in the VM, enforced in CI

AGENTS.md names ultracite fix and ultracite check, and a blueprint knowledge entry puts the same commands in Devin’s context at the start of every session. The blueprint’s maintenance step installs dependencies when the environment builds, so the commands work in the VM. Your CI check is the gate, and Devin can pick its failures up from the PR.

maintenance:
  - name: "Install npm dependencies"
    run: npm install

knowledge:
  - name: lint
    contents: |
      Run linting with:
      npx ultracite check

      For auto-fix:
      npx ultracite fix
  1. 01Devin edits files in its cloud VM, with AGENTS.md and the blueprint’s lint entry in context.
  2. 02It runs npx ultracite fix and npx ultracite check in the VM’s shell when its instructions call for them.
  3. 03It opens a pull request, and your CI runs ultracite check on it.
  4. 04If the check fails, a /devin comment sends it back to Devin, which pushes a fix to the same branch.

Worth knowing about Devin

  • Lint commands in the blueprint

    A blueprint’s knowledge section isn’t executed: it’s how you tell Devin the right lint, test and build commands, and it loads at session start. It’s per repository, so with five repos configured, Devin sees only the entries for the one it’s working on.

  • Fixes from the pull request

    Devin answers comments on pull requests its sessions are working on, and /devin <prompt> starts a session from any open PR. Its GitHub App can read check results and rerun workflows, so a failing ultracite check is something it can see and act on.

  • Review instructions by directory

    Devin Review scopes files in .agents/, .devin/, .cursor/ and .github/ to their parent directory, so src/.agents/REVIEW.md applies only under src/. Admins can add more files to its context with glob patterns under Review Rules.

  • The Ultracite skill

    Devin scans .agents/skills/, its recommended location, along with .devin/skills/, .claude/skills/ and three other folders in every connected repo, so it finds the Ultracite skill init installs in .agents/skills/. It invokes a skill when it judges it relevant, or when you write @skills:ultracite.

Devin questions, answered

Does Devin read AGENTS.md?
Yes. Devin looks for AGENTS.md before it starts coding, in the repo root or anywhere else in it, and includes the first 16 KiB of each file in its context. Past that it gets a truncation notice and can read the rest on demand.
How do I make Devin run the linter?
The rules already name npx ultracite fix and npx ultracite check. To put them in front of Devin every time, add a lint entry to the repository’s blueprint knowledge, which loads into Devin’s context at the start of each session.
Can Devin fix a failing lint check on a PR?
Comment /devin fix the failing lint check and push a commit on the pull request; that’s the example in Devin’s own docs. Devin starts a session with the PR as context, or passes the comment to the session already working on it.
Does Devin Review follow the Ultracite rules?
Yes. Devin Review uses every AGENTS.md in the repo as context when it analyzes a pull request, along with REVIEW.md, CLAUDE.md, CONTRIBUTING.md and other rules files. Put review-only guidance in REVIEW.md.
Does Devin support hooks?
Devin CLI does: PostToolUse and other events in .devin/hooks.v1.json, where exit code 2 blocks the action. It also loads Claude Code hooks from .claude/settings.json. npx ultracite init --hooks devin adds Ultracite’s to .devin/hooks.v1.json: it fixes each file Devin writes or edits and adds what’s left to its context.

Ship less slop

One command sets up your linter, formatter, editor and agents. Works with Oxlint, Biome and ESLint.