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.
…- 1
AGENTS.mdUltraciteLoaded at the start of every session. - 2
packages/*/AGENTS.mdIn a monorepo, agents read the nearest file in the directory tree, so each package can have its own. - 3
.ona/skills/Repository skills, also read from.claude/skills/and.agents/skills/. They win over organization skills with the same name. - 4
Organization 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.mdin the directory tree, sopackages/web/AGENTS.mdcovers 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
ultraciteto 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- 01The agent edits files in an isolated environment built from your Dev Container, with
AGENTS.mdloaded. - 02It runs
npx ultracite fixandnpx ultracite checkwhen the rules tell it to. - 03In an Automation, a Command step runs
npx ultracite checkafter the Prompt step. - 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 skillinitinstalls 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.mdat the start of every session, and in a monorepo they read the nearestAGENTS.mdin 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.mdtell it to runnpx ultracite fixandnpx ultracite check. For a check that doesn’t depend on the agent, putnpx ultracite checkin 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.yamlare where deterministic checks go. - Where should dependencies get installed?
- In the Dev Container or a startup task, so the environment has
node_modulesbefore the agent runsultracite. A task with thepostDevcontainerStarttrigger runs after the Dev Container starts.
Keep going
- AgentCodexOpenAI’s coding agent for the terminal, IDEs, the ChatGPT desktop app and cloud tasks.
- AgentDevinCognition’s autonomous coding agent, in cloud sessions, a CLI and a desktop app.
- AgentOpenHandsOpen-source agent platform with a GUI, CLI, SDK and cloud that runs agents in sandboxes.
- DocsAgent rulesWhat
initwrites for every agent, and how to keep it current.
Ship less slop
One command sets up your linter, formatter, editor and agents. Works with Oxlint, Biome and ESLint.