15+ AI coding tools, a pile of formats, still no shared standard.
If your team mixes IDE agents, CLIs, and repo bots, you end up duplicating rules across multiple files. Switch tools? Rewrite configs. Vendor lock-in by format continues.
IDE and Editor Assistants:
- 🟣 Cursor →
.cursor/rules/*.mdcfiles (MDC format, not.cursorrulesanymore) - 🔵 Windsurf →
.windsurf/rules/*.mdfiles (shifted from.windsurfrulesin Wave 8) - 🟢 GitHub Copilot →
.github/copilot-instructions.md+ now supportsAGENTS.md - 🟠 Sourcegraph Cody → VS Code
settings.json+ custom command JSON files - 🟡 Continue.dev →
~/.continue/config.yaml(config.json deprecated) - 🔵 Warp Terminal → YAML Launch Configurations + MCP server setup
CLI-First Agents:
- 🟣 OpenAI Codex CLI →
~/.codex/config.toml+ supportsAGENTS.md - 🟢 Factory Droid →
.droid.yaml+AGENTS.mdfor conventions - 🔵 Gemini CLI →
~/.gemini/settings.json+GEMINI.mdhierarchy - 🟡 Aider →
.aider.conf.yml(YAML) - 🟠 OpenHands →
config.tomlwith named LLM configs
Special Cases:
- 🟢 Claude Code →
.claude/settings.json+CLAUDE.mdfor instructions - 🟡 Cline (VS Code) →
.clinerulesfile or.clinerules/directory - 🟠 Sweep AI →
sweep.yamlin JetBrains projects - 🔴 Tabnine → Admin console + IDE settings (no standard file)
The Impact:
A typical stack like Cursor + Copilot + Gemini CLI means maintaining three rule systems at once:
.cursor/rules/*.mdc.github/copilot-instructions.md.gemini/settings.json
Plus tool-specific files like .windsurf/rules/*.md, .aider.conf.yml, CLAUDE.md, AGENTS.md, etc.
Result: Fragmented ecosystem. Switching tools still triggers complete rewrites.
your-project/
└── .ai/ ← One folder
├── context.json ← One standard
├── profiles/ ← Every runtime
│ ├── cursor.json
│ ├── windsurf.json
│ └── claude.json
├── rules/
│ └── style.md
└── agents/
└── code-reviewer.json
VERSA: Write once, run everywhere.
|
One |
Explicit deny → ask → allow permissions with secret bindings |
Plain JSON and Markdown. Git-friendly. Easy to diff. |
8 primitives cover rules, prompts, agents, memory, tools, and more |
|
Canonical VERSA 1.0 specification Reference CLI tool ( JSON Schema validation for Example configurations for various project types |
Transform VERSA to native tool formats Test suite for VERSA-compatible runtimes Landing site and documentation ⚙️ .githubOrganization profile and workflows |
VERSA defines 8 canonical primitives for agent configuration:
| Primitive | Purpose | Example |
|---|---|---|
| 📜 Rules | Project context & guidelines | Code style, architecture patterns |
| 💬 Prompts | Reusable templates | Bug report, feature spec |
| 🤖 Agents | Declarative agent configs | Code reviewer, documenter |
| 🧠 Memory | Retention policies | Session, project, persistent |
| 📚 Knowledge | Document ingestion | Docs, repos, URLs |
| 🛠️ Tools | MCP servers & APIs | Custom capabilities |
| ⚙️ Settings | Model routing | GPT-4, Claude, temperature |
| 🛡️ Permissions | Security policies | File access, secrets |
mkdir .ai
cd .ai{
"version": "1.0",
"rules": ["rules/style.md"],
"context": ["src/**/*.ts"],
"settings": {
"model": "claude-sonnet-4"
}
}// .ai/profiles/cursor.json
{
"version": "1.0",
"merge": "deep",
"settings": {
"shortcuts": {
"review": "agents/code-reviewer.json"
}
}
}<!-- .ai/rules/style.md -->
ai:meta
priority: high
attach: always
---
# Code Style Guide
- TypeScript strict mode
- Functional components
- Max line length: 100| Tool | Status | Adapter |
|---|---|---|
| Cursor | 🟡 Beta | dotaislash-adapters |
| Windsurf | 🟡 Beta | dotaislash-adapters |
| Aider | 🔴 Planned | Coming soon |
| Claude | 🔴 Planned | Coming soon |
| Cody | 🔴 Planned | Coming soon |
- 📖 Read the Spec - Full VERSA 1.0 specification
- 🚀 Quick Start Guide - Get started in 5 minutes
- 📚 Examples - Real-world configurations
- 🔧 CLI Documentation - Command reference
- 💬 Discussions - Ask questions, share ideas
We're building VERSA openly with the community!
- 💡 Share Ideas - Join discussions
- 🐛 Report Issues - Found a problem? Open an issue
- 📝 Improve Docs - Help others understand VERSA
- 🔧 Build Adapters - Support a new tool
- 📚 Create Examples - Share your
.ai/configs - 🧪 Write Tests - Improve conformance suite
See individual repositories for contributing guidelines.
- ✅ Core specification
- ✅ Website launch
- ✅ JSON Schemas (v1.0.0)
- ✅ Reference CLI (v1.0.0)
- ✅ Adapters (v1.0.0)
- ✅ Examples (v1.0.0)
- ✅ Conformance suite (v1.0.0)
- 📦 npm packages
- 🔌 Community adapters
- 📚 Comprehensive examples
- 🎓 Integration tutorials
- 🤝 Tool partnerships
- 🌍 Multi-language support
- 🔐 Advanced security
- 🚀 Performance optimizations
Boring is Beautiful
Plain JSON and Markdown. No DSLs. No magic. Just simple, portable formats.
Convention over Configuration
Sensible defaults. Minimal required fields. Override only what you need.
Security by Default
Explicit permissions. Deny-first policies. Secrets never in code.
| Component | Status |
|---|---|
| Specification | 🟢 Stable (v1.0.0) |
| JSON Schemas | 🟢 Released (v1.0.0) |
| CLI Tool | 🟢 Released (v1.0.0) |
| Examples | 🟢 Released (v1.0.0) |
| Adapters | 🟢 Released (v1.0.0) |
| Conformance | 🟢 Released (v1.0.0) |
Legend: 🟢 Stable · 🟡 In Progress · 🔴 Planned
