OpenProse
Express intent by composing requirements. Execute contracts and evaluate results.
OpenProse
Contract authoring is expressing intent by composing requirements. Reusable contracts provide the building blocks; composition determines how their requirements apply together.
An agent performs the work, and an evaluator assesses whether the contract's requirements are satisfied. The executor returns a result that includes evidence for the assessment. Execution and evaluation repeat as needed.
These docs cover the public open-prose skill's Contract Markdown and
ProseScript format. A responsibility expresses requirements for information
or conditions maintained over time. A function provides a one-time call.
ProseScript specifies required steps when their order or method matters.
The syntax here was checked against skill 0.18.0, runtime contract 2. Use the format supported by your installed skill. Requirements describe what must happen; tools, permissions, continuous operation, and enforcement depend on the selected host. See Harness-agnostic.
Install the language skill in a compatible coding agent, then provide the tools and inputs your contract needs:
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.
Contract authoring
Express intent through requirements, combine reusable contracts, and distinguish completing work from evidence that it meets the requirements.
Contracts
The authored surface: the five kinds and the recognized sections. Learn how declared inputs and outputs connect.
ProseScript
The optional imperative layer for when the order of operations matters.
The shape of a contract
For ongoing work, author a responsibility. It declares the inputs it subscribes to (### Requires) and the state it must maintain (### Maintains). This fragment assumes a separate telemetry responsibility supplies usage:
---
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 section that defines maintained state: the schema for the state this contract maintains. Contracts teaches it in depth, along with the five kinds and the rest of the authored surface.
The host serves the contract set using its available runtime capabilities, such as memoization, receipts, and a reconciler. The authored requirements remain the same when you change compatible hosts; successful execution still depends on the host and the required inputs. See Harness-agnostic for that boundary.
Source of execution rules
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.