OpenProse
A declarative language for standing AI work. You declare the outcomes you want kept true, in Markdown contracts, and any Prose-Complete agent harness runs them.
OpenProse
OpenProse is a declarative language for standing AI work. You write Markdown contracts (*.prose.md) that declare an ideal world-model: the truths you want kept current. You say what must stay true, and the host session works out the model work it takes to keep it that way. When order, loops, or exact choreography genuinely matter, optional imperative ProseScript plans drop in. Declarative by default, imperative where you want the control.
The language ships as a skill. Install it, and any Prose-Complete coding agent (any agent host that can spawn sessions, read and write files, and call tools: Claude Code, Codex CLI, OpenCode, and friends) can author and run contracts:
npx skills add openprose/proseFrom there, point your agent at a contract and say prose run <file>. The session itself embodies the VM: there is no parser and no separate binary.
Start here
Setup
Install the skill, author a first contract, and run it where your agent lives.
Declare outcomes
The central teaching: author a truth to keep current, not a sequence of steps to run. Why a contract is a typed function where a bare prompt is `any`.
Contracts
The authored surface: the five kinds and the load-bearing sections. Structure is subscription.
ProseScript
The optional imperative layer for when the order of operations matters.
The shape of a contract
You author Responsibilities: standing goals, written as Markdown contracts. A responsibility declares what it subscribes to (### Requires) and the truth it keeps current (### Maintains):
---
name: renewal-risk
kind: responsibility
---
### Goal
Keep a current risk read on every account whose signals have moved.
### Requires
- `usage`: the per-account usage facet from the telemetry responsibility
### Maintains
A current risk score per account. Material: the score band and the top
driver per account; `fetched_at` and request ids are immaterial. Each
account carries a `valid_until`. Postcondition: every flagged account
cites a corroborating signal.### Maintains is the load-bearing section: the schema of the truth this contract keeps current. Contracts teaches it in depth, along with the five kinds and the rest of the authored surface.
How a host serves that contract set (memoization, receipts, a reconciler) is the host's concern, not the language's. The contract is the public artifact; it runs unchanged on any compliant host. See Harness-agnostic for the seam.
Where the truth lives
The canonical execution behavior lives in the open-source open-prose skill in the openprose/prose repo. These docs are orientation; if the docs and the skill disagree, trust the skill.
The conversation always ends. The responsibility shouldn't have to.