2026
Portable agent definitions compiled to four runtimes
Declarative YAML agent definitions validated once and compiled to native configuration for Claude Code, Codex CLI, OpenCode and Gemini CLI.
- Python
- YAML
- Pydantic
- pytest
- Arquitectura hexagonal
Problem
Every coding-agent runtime uses its own configuration format. Maintaining the same agent in four places means four files that drift apart, and finding out at runtime that a target does not support what you asked for.
Solution
One declarative definition as the single source of truth, pushed through a five-stage pipeline: parse, validate whether it is structurally correct, lint whether it is also a good idea, analyse what each target runtime really supports, and compile to its native configuration.
Separating validation, lint and capability analysis is deliberate and recorded as an architecture decision: they answer three different questions, and merging them produces confusing errors.
Architecture
Technical decisions
- The core does not execute agents, manage worktrees or ship a UI: scope closed on purpose.
- Documented CLI/JSON contract so other tooling can build on top.
- Permission model and skill format captured as ADRs, including the choice to use real SKILL.md instead of inventing a format.
- Hexagonal architecture: isolated domain, one adapter per runtime.
Result
Working core with architecture, contract and capability documentation, plus example projects: a repository maintainer and a SAP Business One pair of developer and reviewer agents.
Contact
Let's work together on your next project
If you have a SAP Business One project, a pending integration or simply a question, send me a message. I reply to everything.
- Location
- Palma, Mallorca
- in/ramon-artigues
- GitHub
- RamonArtigues