Skip to content
v0.8.0 · ISC

One config source to rule them all.

Five AI coding tools. Five bespoke dotfile formats. One neutral model in .ulis/ that compiles into all of them.

Claude Code.claude/
Codex.codex/
Cursor.cursor/
OpenCode.opencode/
ForgeCode.forge/
~/projects/acme — uliszsh
$
pipeline
ulis init
Scaffold
Creates the canonical .ulis/ tree with sane defaults for agents, skills, MCP and permissions.
ulis build
Compile
Schema parse, collision detection and reference resolution, then native config for every target into <source>/generated/ so you can diff before you ship.
ulis install
Deploy
Copies each generated tree into the directory the tool expects, tracking what it wrote so a later install can prune what you removed.
.ulis/
.ulis/
├── agents/ security.md · tester.md
├── skills/ code-quality/SKILL.md
├── commands/
├── rules/
├── raw/ passthrough files
├── config.yaml
├── mcp.yaml
├── permissions.yaml
├── skills.yaml
└── extensions.yaml
generated/
├── claude/ agents · skills · settings.json
├── codex/ agents · skills · config.toml
├── cursor/ rules · mcp.json · permissions.json
├── opencode/ agents · skills · opencode.json
└── forgecode/ AGENTS.md · .forge/

Kill the config drift in 60 seconds.

$ bun add -g @nejcm/ulis && ulis initRead the guide

Released under the ISC License.