Website npm version license node npm downloads
Universal context engineering CLI for AI coding agents. Define your project's conventions, stack, and architecture in a single context.config.ts file, then generate AI-readable context files for multiple tools from that single source of truth.
Website: www.contextai.run
| Target | File |
|---|---|
| OpenAI Codex / generic agents | AGENTS.md |
| Claude | CLAUDE.md |
| Cursor | .cursorrules |
| GitHub Copilot | .github/copilot-instructions.md |
| LLMs.txt | llms.txt |
| Kiro (AWS) | .kiro/steering/*.md |
| Windsurf | .windsurf/rules/*.md |
| Gemini CLI / Antigravity | GEMINI.md |
| Custom | any path via config |
npm install -g contextai # Interactive setup — creates context.config.ts contextai init # Generate all enabled output files contextai generate
| Command | Description |
|---|---|
contextai init |
Interactive setup wizard |
contextai generate |
Generate output files from config |
contextai generate --dry-run |
Preview output without writing files |
contextai generate --format json |
Output JSON IR to stdout instead of writing files |
contextai validate |
Check output files are fresh and well-structured |
contextai diff |
Show diff between config and on-disk outputs |
contextai watch |
Watch config for changes and regenerate automatically |
Create a context.config.ts at your project root:
import { defineContext } from 'contextai'; export default defineContext({ project: { name: 'my-app', stack: ['TypeScript', 'React', 'Node.js'], architecture: 'Monorepo with shared packages', }, conventions: { code: [ { title: 'Naming', items: ['camelCase for variables', 'PascalCase for components'], }, ], }, outputs: { 'AGENTS.md': true, 'CLAUDE.md': true, '.cursorrules': true, '.github/copilot-instructions.md': true, 'llms.txt': true, '.kiro/steering': true, '.windsurf/rules': true, 'GEMINI.md': true, }, });
export default defineContext({ // ... outputs: { 'CLAUDE.md': true, custom: [ { path: 'docs/ai-context.md', generator: (config) => `# ${config.project.name}\n${config.project.architecture}`, }, ], }, });
Detected frameworks get convention templates applied automatically. Supported: nextjs, nestjs, express, remix, sveltekit.
export default defineContext({ // ... templates: ['nextjs'], });
Each convention section can have an optional scope:
'agent-only'— included only in AI-facing output files'human-only'— excluded from generated output- omitted — included everywhere
conventions: { security: [ { title: 'Auth', items: ['Use JWT tokens', 'Rotate secrets quarterly'], scope: 'agent-only', }, ], },
During contextai init, you can optionally install a pre-commit git hook that runs contextai generate and stages the output files automatically.
import { DefaultConfigParser, DefaultTemplateRegistry, defineContext } from 'contextai'; const parser = new DefaultConfigParser(); const config = await parser.load('./context.config.ts');
- Node.js >= 20