OMNI.md
OMNI.md is your project’s instruction source of truth. OmniDev uses it to generate provider-specific instruction files during omnidev sync.
Do not edit generated files like AGENTS.md or CLAUDE.md directly. They are ephemeral copies of OMNI.md, so any persistent change belongs in OMNI.md.
Example
Section titled “Example”# My Project
## Project DescriptionA web application for managing tasks.
## Conventions- Use TypeScript strict mode- Follow the existing code styleProvider-specific blocks
Section titled “Provider-specific blocks”OMNI.md can also scope instructions to a provider:
# My Project
Shared instructions for every provider.
<provider.claude>Only include this when generating Claude instructions.</provider.claude>
<provider.codex>Only include this when generating Codex instructions.</provider.codex>Supported names:
claudeandclaude-codeare equivalentcodexcursoropencode
Provider names are normalized internally, so claude and claude-code behave identically across OMNI.md and capability.providers.
How it is used
Section titled “How it is used”When you run omnidev sync, OmniDev:
- Reads
OMNI.md - Generates provider files like
CLAUDE.mdandAGENTS.md - Embeds capability rules and docs directly into the generated files
Current limitation
Section titled “Current limitation”Cursor currently shares CLAUDE.md with Claude Code. That means Cursor-specific OMNI.md blocks are not rendered separately while both providers use the same instruction file surface.
- Keep
OMNI.mdconcise and focused on project-wide guidance. - Use provider blocks sparingly. Shared instructions are still the default.
- Never add file tree structure to your
OMNI.md. This is generally a core service of every coding agent that they can discover things on their own. File structure is the first thing that will go stale.