runcor-R++

Stop guessing.
Start specifying.

R++ is a structured specification language for LLMs. Write a script with typed blocks, named values, and explicit assertions. The LLM produces exactly what it describes.

Domain-agnostic. Works with Claude, GPT, Gemini, or any LLM.

▶ Try the Playground View on GitHub

The Problem

Natural language prompts are ambiguous

An LLM reading prose has to guess at intent, fill in gaps, and make assumptions. Each guess is a chance to get it wrong. R++ eliminates those gaps.

✕ Prose prompt
Build me a REST API for order management.
It should have CRUD endpoints. Only admins
can delete. Add pagination with a default
page size of 20 and max of 100. Use proper
error handling and auth on all routes.

The LLM has to guess:
  → What framework?
  → What auth mechanism?
  → What error format?
  → What status codes?
  → Role names? Route paths?
  → Dozens of implicit decisions…
✓ R++ script
TARGET {
  output: "Order management REST API"
  lang: Python + FastAPI
  profile: api
}
TOKENS {
  pageSize:20 | maxPageSize:100
  roleAdmin:"admin" | roleUser:"user"
}
BEHAVIOR {
  MUST validate input BEFORE handler
  MUST NOT allow DELETE UNLESS role === roleAdmin
}
CHECKLIST {
  [ ] MUST implement EXACTLY 5 endpoints
  [ ] MUST use TOKENS (NEVER raw literals)
}

Every value named. Every assertion explicit. Zero guesswork.


Language Overview

10 blocks. Any domain.

R++ is domain-agnostic. The same block structure can specify a React component, a REST API, a CLI tool, a data pipeline, or any artifact an LLM can generate.

TARGET
Declare what is being built and which domain profile applies.
TOKENS
Define named constants. Any repeated value gets a name.
FORMAT
Define formatting and transformation functions.
MAP
Define lookup tables. Map keys to values.
DATA
Provide input data. Use EXACT for verbatim output.
INIT
Declare state, computed values, filters, sorts.
STRUCTURE
Describe how the output is composed as a tree.
COMPONENT
Describe what each unit of output contains.
BEHAVIOR
Describe logic, events, flows, constraints.
CHECKLIST
Assert what must be true. Boolean verification.

Syntax

Structured, not verbose

Each block has a clear role. Profiles add domain shorthands without polluting the core.


Interactive

Try R++ live

Describe what you want to build and hit Run. Your prompt gets converted into a structured R++ spec you can use with an AI to run on runcor or develop an app of your own.

rpp-playground
Input Text
R++ Output
Click ▶ Run to generate output…
Open full screen playground at rpp.runcor.ai

Domain Profiles

Core is universal. Profiles add vocabulary.

Activate a profile in the TARGET block. The core language is always available.

ui
Web apps & dashboards
Style shorthands, layout patterns, table/chart/input syntax.
bgBasepill badgeAreaChart
api
REST APIs & services
Endpoint spec, request/response shapes, validation rules.
method:request {}validate:
data
ETL & pipelines
Source/dest config, transform rules, quality checks.
source:transform {}quality {}
cli
Command-line tools
Flag/argument parsing, subcommands, output formatting.
flag:command:output {}

Precision

Every keyword is binary

No "should", "try to", or "ideally". Every enforcement keyword has a yes/no answer.

MUST
Required. Non-negotiable.
MUST NOT
Prohibited. Hard block.
ALWAYS
Every instance, no exceptions.
NEVER
Zero instances.
ONLY
Exactly this, nothing else.
EXACTLY
Precise count or value.
AT LEAST
Lower bound.
AT MOST
Upper bound.
UNLESS
Exception to a rule.
BEFORE
Ordering: this first.
AFTER
Ordering: this second.
PREFER
Soft preference.
FALLBACK
Recovery when primary fails.
OVERRIDE
Replaces a prior rule.

Start writing R++

Open source under MIT. Read the language reference or try the playground.

▶ Try the Playground ⭐ Star on GitHub