OriginAIProduct specs for Claude Code, Cursor, and Codex

What is RPML?

RPML (Rapid Prototype Markup Language) is the static UI spec language OriginAI uses so coding agents implement screens, states, and rules — not a running app.

RPML (Rapid Prototype Markup Language) is a static UI specification language. A .rpml file is one screen or functional region: the layout, every interaction state, permission variant, and loading / empty / error / validation branch, written as markup a person can read and a coding agent can implement.

It is not HTML you ship. It is not a clickable prototype. Time is replaced with space — states sit next to each other in one annotated layout, so a reviewer does not have to ask "but what happens when…".

OriginAI stores product specs as RPML. You edit them in the workbench, publish a release, and Claude Code, Cursor, or Codex reads that frozen snapshot through the originai CLI or MCP.

Why a language instead of a screenshot or a PRD

Screenshots miss states. A PRD goes stale and skips the empty table, the admin-only button, and the confirm dialog. Markdown task lists (the usual spec-driven-development kit) describe what to build next, not what the product looks like when each rule fires.

RPML is for that product contract:

  • One .rpml file per screen or region, rooted at <page>.
  • A single <view> snapshot built from RPML primitives (button, table, navigator, …) — not raw div / input.
  • Numbered pins (data-pin) with matching <annotation> blocks for the rules that belong to each region.
  • <enum> / <enum-item> for conditional branches instead of burying them in prose.

The runtime that paints those files in a browser is @21stware/rpui. OriginAI's workbench uses the same language. Locally you can also npx @21stware/rpui serve . on a folder of .rpml files.

How OriginAI uses RPML

  1. Author — generate or write .rpml in the workbench (or have a coding agent write it via originai write-document before the first release).
  2. Validatenpx originai validate --content "…" checks the file locally, no token required.
  3. Publish — a release freezes the tree. Agents implement that version, not the live draft.
  4. After publish — further agent writes become change requests you apply or dismiss.

See Files and README for how a multi-page product is split (README first, then one file per route).

RPML is not

  • Not a replacement for Claude Code, Cursor, or Codex. Those tools write the product. RPML tells them what "done" looks like on each screen.
  • Not GitHub Spec Kit. Spec Kit is a markdown specify → plan → tasks → implement workflow that lives in your repo. RPML is the visual product spec those tasks should implement. See OriginAI vs Spec Kit.
  • Not Proto Markdown or a generic "rapid prototyping markup". RPML is the language OriginAI and @21stware/rpui speak.

On this page