Skills

OpenProse

OpenProse is a portable, markdown-first workflow format for orchestrating AI sessions. In OpenClaw it ships as a plugin that installs an OpenProse skill pack and a /prose slash command. Programs live in .prose files and can spawn multiple sub-agents with explicit control flow.

Install

  • Enable the plugin

    Bundled plugins are disabled by default. Enable OpenProse:

    bash
    openclaw plugins enable open-prose
  • Restart the Gateway

    bash
    openclaw gateway restart
  • Verify

    bash
    openclaw plugins list | grep prose

    You should see open-prose as enabled. The /prose skill command is now available in chat.

  • For a local checkout: openclaw plugins install ./path/to/local/open-prose-plugin

    Slash command

    OpenProse registers /prose as a user-invocable skill command:

    text
    /prose help/prose run <file.prose>/prose run <handle/slug>/prose run <https://example.com/file.prose>/prose compile <file.prose>/prose examples/prose update

    /prose run <handle/slug> resolves to https://p.prose.md/<handle>/<slug>. Direct URLs are fetched as-is using the web_fetch tool.

    Top-level remote runs are explicit. Remote imports inside a .prose program are transitive code dependencies: before OpenProse fetches any remote use target, it shows the resolved import list and requires the operator to reply exactly approve remote prose imports for that run.

    What it can do

    • Multi-agent research and synthesis with explicit parallelism.
    • Repeatable, approval-safe workflows (code review, incident triage, content pipelines).
    • Reusable .prose programs you can run across supported agent runtimes.

    Example: parallel research and synthesis

    prose
    # Research + synthesis with two agents running in parallel. input topic: "What should we research?" agent researcher:  model: sonnet  prompt: "You research thoroughly and cite sources." agent writer:  model: opus  prompt: "You write a concise summary." parallel:  findings = session: researcher    prompt: "Research {topic}."  draft = session: writer    prompt: "Summarize {topic}." session "Merge the findings + draft into a final answer."context: { findings, draft }

    OpenClaw runtime mapping

    OpenProse programs map to OpenClaw primitives:

    OpenProse concept OpenClaw tool
    Spawn session / Task tool sessions_spawn
    File read / write read / write
    Web fetch web_fetch

    File locations

    OpenProse keeps state under .prose/ in your workspace:

    text
    .prose/├── .env├── runs/│   └── {YYYYMMDD}-{HHMMSS}-{random}/│       ├── program.prose│       ├── state.md│       ├── bindings/│       └── agents/└── agents/

    User-level persistent agents live at:

    text
    ~/.prose/agents/

    State backends

    filesystem (default)

    State is written to .prose/runs/... in the workspace. No extra dependencies required.

    in-context

    Transient state kept in the context window. Suitable for small, short-lived programs.

    sqlite (experimental)

    Requires the sqlite3 binary on PATH.

    postgres (experimental)

    Requires psql and a connection string.

    Security

    Treat .prose files like code. Review them before running, including remote use imports. Top-level /prose run https://... requests are explicit, but transitive remote imports require per-run approval before they are fetched or executed. Use OpenClaw tool allowlists and approval gates to control side effects. For deterministic, approval-gated workflows, compare with Lobster.

    Official site: https://www.prose.md

    Was this useful?
    On this page

    On this page