OMNI.md
OMNI.md is your project’s instruction source of truth. OmniDev uses it to generate provider-specific instruction files during omnidev sync.
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.