Thanks for your interest! Here's how to contribute.
git clone https://github.com/intent-compiler/intent-compiler.git
cd intent-compiler
npm install
npx tsc --noEmit # Type check
npx tsx src/cli.ts --help # Test CLISet your API key:
export ANTHROPIC_API_KEY="sk-..." # Claude
# or DeepSeek:
export ANTHROPIC_BASE_URL="https://api.deepseek.com/anthropic"
export ANTHROPIC_AUTH_TOKEN="sk-..."- Add a new section type: Define the content shape in
src/schema.ts, add a renderer insrc/renderers/html.ts, update the JSON Schema enum. - Improve a renderer: The built-in HTML renderer is minimal. Better styling, accessibility, or responsive design are all welcome.
- Translate IR docs: Help translate the README and schema docs to more languages.
- Write a new renderer:
{ meta: RendererMeta, render: (ir: IntentIR) => string }. Drop it inexamples/renderers/as a demo, or propose adding it as built-in. - Add a new domain: Extend
SectionTypewith domain-specific types, write a renderer, update the compiler prompt. - Add an LLM provider: Implement
src/providers/<name>.tsfollowing the pattern inanthropic.ts.
src/
├── schema.ts # The IR — source of truth
├── compiler.ts # NL → IR (prompt + validate)
├── cli.ts # CLI tool
├── mcp-server.ts # MCP server (STDIO transport)
├── providers/ # LLM adapters (add new ones here)
├── renderers/
│ ├── registry.ts # Renderer plugin system
│ ├── html.ts # Built-in: HTML page
│ ├── react.ts # Built-in: React components
│ ├── markdown.ts # Built-in: Markdown doc
│ ├── slide.ts # Built-in: Slide deck
│ └── document.ts # Built-in: Document/report
└── playground/
└── index.html # IR Playground
npx tsc --noEmit # Type check must pass
npm test # Tests must pass<type>: <description>
feat: add pricing section type
fix: slide renderer null body crash
docs: update README with MCP setup
- Fork → branch → change → test → PR
- Keep PRs small — one feature or fix per PR
- Include a test or verification output
- Update DEVLOG.md if relevant
MIT. By contributing, you agree to license your work under MIT.