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

Ona agents, with lint as a deterministic step

Ona’s agents load AGENTS.md at the start of every session, and a nested AGENTS.md applies to its own part of the tree. There’s no post-edit hook: the agent runs ultracite when the rules tell it to, and an Automation’s Command step or a task in .ona/config.yaml runs the check without relying on it.

Ona by OpenAIChecked 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 Ona looks for instructions
  1. 1AGENTS.mdUltraciteLoaded at the start of every session.
  2. 2packages/*/AGENTS.mdIn a monorepo, agents read the nearest file in the directory tree, so each package can have its own.
  3. 3.ona/skills/Repository skills, also read from .claude/skills/ and .agents/skills/. They win over organization skills with the same name.
  4. 4Organization skillsSet in Settings > Agents > Skills, for every repository in the organization.

How Ona reads the rules

Ona recommends a short AGENTS.md in the repository root, loaded at the start of every session, with nested files for packages that need their own instructions. Skills come from the repository, the organization and Ona itself.

Length
Ona recommends under 300 lines, and under 60 for most projects. Ultracite’s rules are about 120 lines.
Nesting
Agents read the nearest AGENTS.md in the directory tree, so packages/web/AGENTS.md covers that package.
Emphasis
Ona notes that agents pay attention to emphasis, such as “IMPORTANT” or “NEVER” on a rule that must not be broken.
The agent
Codex Agent, which runs the open-source Codex harness, for all new environments and Automations.
Status
Ona joined OpenAI’s Codex team; the deal closed on August 10, 2026.
Environment
Each agent works in an isolated environment built from your Dev Container, so Node and your dependencies need to be there for ultracite to run.

Lint as a step, not a suggestion

In a conversation, the agent runs Ultracite because AGENTS.md tells it to. In an Automation, a Command step makes the check deterministic: it runs npx ultracite check after the Prompt step and before the Pull request step, in the same environment. A task in .ona/config.yaml puts the same check one click away in the session sidebar.

tasks:
  lint:
    name: Ultracite check
    command: npx ultracite check
    triggeredBy:
      - manual
  1. 01The agent edits files in an isolated environment built from your Dev Container, with AGENTS.md loaded.
  2. 02It runs npx ultracite fix and npx ultracite check when the rules tell it to.
  3. 03In an Automation, a Command step runs npx ultracite check after the Prompt step.
  4. 04The Pull request step submits the changes for review, where your CI check runs as usual.

Worth knowing about Ona

  • Codex is the agent now

    Ona Agent, Ona’s own harness for Anthropic models, is deprecated and no longer available on Ona Cloud, where existing Automations moved to Codex Agent automatically. Enterprise organizations with their own Anthropic model access can keep Ona Agent for now.

  • Prompts and commands in one Automation

    Automation steps run in sequence in one environment: Prompt for work that needs judgment, Command for deterministic operations like npm test, then Pull request and Report. Ona’s guidance is to use commands for validation and prompts for changes.

  • Triggered by pull requests

    Automations run manually, on a schedule, or on pull request events, which need the GitHub integration or a webhook. Run them on projects to reuse each project’s Dev Container and environment settings.

  • The Ultracite skill

    Ona discovers repository skills in .ona/skills/, .claude/skills/ and .agents/skills/, so it finds the Ultracite skill init installs in .agents/skills/ and uses it when a task matches its description.

Ona questions, answered

Does Ona read AGENTS.md?
Yes. Ona’s agents load the root AGENTS.md at the start of every session, and in a monorepo they read the nearest AGENTS.md in the directory tree.
What changed when Ona joined OpenAI?
Ona announced in June 2026 that it was joining OpenAI as part of the Codex team, and the deal closed on August 10, 2026. Separately, Ona’s docs now point every new environment and Automation to Codex Agent; Ona Agent is deprecated.
How do I make Ona’s agent run the linter?
The rules in AGENTS.md tell it to run npx ultracite fix and npx ultracite check. For a check that doesn’t depend on the agent, put npx ultracite check in an Automation’s Command step or a task in .ona/config.yaml.
Does Ona support hooks?
Ona’s docs don’t describe hooks that run after the agent edits a file. Command steps in Automations and tasks in .ona/config.yaml are where deterministic checks go.
Where should dependencies get installed?
In the Dev Container or a startup task, so the environment has node_modules before the agent runs ultracite. A task with the postDevcontainerStart trigger runs after the Dev Container starts.

Ship less slop

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