{
  "schemaVersion": "1.0",
  "item": {
    "slug": "prose",
    "name": "Prose",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/mondilo1/prose",
    "canonicalUrl": "https://clawhub.ai/mondilo1/prose",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/prose",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=prose",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "alt-borges.md",
      "alts/arabian-nights.md",
      "alts/borges.md",
      "alts/folk.md",
      "alts/homer.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/prose"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/prose",
    "agentPageUrl": "https://openagent3.xyz/skills/prose/agent",
    "manifestUrl": "https://openagent3.xyz/skills/prose/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/prose/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "OpenProse Skill",
        "body": "OpenProse is a programming language for AI sessions. LLMs are simulators—when given a detailed system description, they don't just describe it, they simulate it. The prose.md specification describes a virtual machine with enough fidelity that a Prose Complete system reading it becomes that VM. Simulation with sufficient fidelity is implementation. You are the Prose Complete system."
      },
      {
        "title": "Moltbot Runtime Mapping",
        "body": "Task tool in the upstream spec == Moltbot sessions_spawn\nFile I/O == Moltbot read/write\nRemote fetch == Moltbot web_fetch (or exec with curl when POST is required)"
      },
      {
        "title": "When to Activate",
        "body": "Activate this skill when the user:\n\nUses ANY prose command (e.g., prose boot, prose run, prose compile, prose update, prose help, etc.)\nAsks to run a .prose file\nMentions \"OpenProse\" or \"prose program\"\nWants to orchestrate multiple AI agents from a script\nHas a file with session \"...\" or agent name: syntax\nWants to create a reusable workflow"
      },
      {
        "title": "Command Routing",
        "body": "When a user invokes prose <command>, intelligently route based on intent:\n\nCommandActionprose helpLoad help.md, guide user to what they needprose run <file>Load VM (prose.md + state backend), execute the programprose run handle/slugFetch from registry, then execute (see Remote Programs below)prose compile <file>Load compiler.md, validate the programprose updateRun migration (see Migration section below)prose examplesShow or run example programs from examples/OtherIntelligently interpret based on context"
      },
      {
        "title": "Important: Single Skill",
        "body": "There is only ONE skill: open-prose. There are NO separate skills like prose-run, prose-compile, or prose-boot. All prose commands route through this single skill."
      },
      {
        "title": "Resolving Example References",
        "body": "Examples are bundled in examples/ (same directory as this file). When users reference examples by name (e.g., \"run the gastown example\"):\n\nRead examples/ to list available files\nMatch by partial name, keyword, or number\nRun with: prose run examples/28-gas-town.prose\n\nCommon examples by keyword:\n\nKeywordFilehello, hello worldexamples/01-hello-world.prosegas town, gastownexamples/28-gas-town.prosecaptain, chairexamples/29-captains-chair.proseforge, browserexamples/37-the-forge.proseparallelexamples/16-parallel-reviews.prosepipelineexamples/21-pipeline-operations.proseerror, retryexamples/22-error-handling.prose"
      },
      {
        "title": "Remote Programs",
        "body": "You can run any .prose program from a URL or registry reference:\n\n# Direct URL — any fetchable URL works\nprose run https://raw.githubusercontent.com/openprose/prose/main/skills/open-prose/examples/48-habit-miner.prose\n\n# Registry shorthand — handle/slug resolves to p.prose.md\nprose run irl-danb/habit-miner\nprose run alice/code-review\n\nResolution rules:\n\nInputResolutionStarts with http:// or https://Fetch directly from URLContains / but no protocolResolve to https://p.prose.md/{path}OtherwiseTreat as local file path\n\nSteps for remote programs:\n\nApply resolution rules above\nFetch the .prose content\nLoad the VM and execute as normal\n\nThis same resolution applies to use statements inside .prose files:\n\nuse \"https://example.com/my-program.prose\"  # Direct URL\nuse \"alice/research\" as research             # Registry shorthand"
      },
      {
        "title": "File Locations",
        "body": "Do NOT search for OpenProse documentation files. All skill files are co-located with this SKILL.md file:\n\nFileLocationPurposeprose.mdSame directory as this fileVM semantics (load to run programs)help.mdSame directory as this fileHelp, FAQs, onboarding (load for prose help)state/filesystem.mdSame directory as this fileFile-based state (default, load with VM)state/in-context.mdSame directory as this fileIn-context state (on request)state/sqlite.mdSame directory as this fileSQLite state (experimental, on request)state/postgres.mdSame directory as this filePostgreSQL state (experimental, on request)compiler.mdSame directory as this fileCompiler/validator (load only on request)guidance/patterns.mdSame directory as this fileBest practices (load when writing .prose)guidance/antipatterns.mdSame directory as this fileWhat to avoid (load when writing .prose)examples/Same directory as this file37 example programs\n\nUser workspace files (these ARE in the user's project):\n\nFile/DirectoryLocationPurpose.prose/.envUser's working directoryConfig (key=value format).prose/runs/User's working directoryRuntime state for file-based mode.prose/agents/User's working directoryProject-scoped persistent agents*.prose filesUser's projectUser-created programs to execute\n\nUser-level files (in user's home directory, shared across all projects):\n\nFile/DirectoryLocationPurpose~/.prose/agents/User's home dirUser-scoped persistent agents (cross-project)\n\nWhen you need to read prose.md or compiler.md, read them from the same directory where you found this SKILL.md file. Never search the user's workspace for these files."
      },
      {
        "title": "Core Documentation",
        "body": "FilePurposeWhen to Loadprose.mdVM / InterpreterAlways load to run programsstate/filesystem.mdFile-based stateLoad with VM (default)state/in-context.mdIn-context stateOnly if user requests --in-context or says \"use in-context state\"state/sqlite.mdSQLite state (experimental)Only if user requests --state=sqlite (requires sqlite3 CLI)state/postgres.mdPostgreSQL state (experimental)Only if user requests --state=postgres (requires psql + PostgreSQL)compiler.mdCompiler / ValidatorOnly when user asks to compile or validateguidance/patterns.mdBest practicesLoad when writing new .prose filesguidance/antipatterns.mdWhat to avoidLoad when writing new .prose files"
      },
      {
        "title": "Authoring Guidance",
        "body": "When the user asks you to write or create a new .prose file, load the guidance files:\n\nguidance/patterns.md — Proven patterns for robust, efficient programs\nguidance/antipatterns.md — Common mistakes to avoid\n\nDo not load these when running or compiling—they're for authoring only."
      },
      {
        "title": "State Modes",
        "body": "OpenProse supports three state management approaches:\n\nModeWhen to UseState Locationfilesystem (default)Complex programs, resumption needed, debugging.prose/runs/{id}/ filesin-contextSimple programs (<30 statements), no persistence neededConversation historysqlite (experimental)Queryable state, atomic transactions, flexible schema.prose/runs/{id}/state.dbpostgres (experimental)True concurrent writes, external integrations, team collaborationPostgreSQL database\n\nDefault behavior: When loading prose.md, also load state/filesystem.md. This is the recommended mode for most programs.\n\nSwitching modes: If the user says \"use in-context state\" or passes --in-context, load state/in-context.md instead.\n\nExperimental SQLite mode: If the user passes --state=sqlite or says \"use sqlite state\", load state/sqlite.md. This mode requires sqlite3 CLI to be installed (pre-installed on macOS, available via package managers on Linux/Windows). If sqlite3 is unavailable, warn the user and fall back to filesystem state.\n\nExperimental PostgreSQL mode: If the user passes --state=postgres or says \"use postgres state\":\n\n⚠️ Security Note: Database credentials in OPENPROSE_POSTGRES_URL are passed to subagent sessions and visible in logs. Advise users to use a dedicated database with limited-privilege credentials. See state/postgres.md for secure setup guidance.\n\nCheck for connection configuration first:\n# Check .prose/.env for OPENPROSE_POSTGRES_URL\ncat .prose/.env 2>/dev/null | grep OPENPROSE_POSTGRES_URL\n# Or check environment variable\necho $OPENPROSE_POSTGRES_URL\n\n\n\nIf connection string exists, verify connectivity:\npsql \"$OPENPROSE_POSTGRES_URL\" -c \"SELECT 1\" 2>&1\n\n\n\nIf not configured or connection fails, advise the user:\n⚠️  PostgreSQL state requires a connection URL.\n\nTo configure:\n1. Set up a PostgreSQL database (Docker, local, or cloud)\n2. Add connection string to .prose/.env:\n\n   echo \"OPENPROSE_POSTGRES_URL=postgresql://user:pass@localhost:5432/prose\" >> .prose/.env\n\nQuick Docker setup:\n   docker run -d --name prose-pg -e POSTGRES_DB=prose -e POSTGRES_HOST_AUTH_METHOD=trust -p 5432:5432 postgres:16\n   echo \"OPENPROSE_POSTGRES_URL=postgresql://postgres@localhost:5432/prose\" >> .prose/.env\n\nSee state/postgres.md for detailed setup options.\n\n\n\nOnly after successful connection check, load state/postgres.md\n\nThis mode requires both psql CLI and a running PostgreSQL server. If either is unavailable, warn and offer fallback to filesystem state.\n\nContext warning: compiler.md is large. Only load it when the user explicitly requests compilation or validation. After compiling, recommend /compact or a new session before running—don't keep both docs in context."
      },
      {
        "title": "Examples",
        "body": "The examples/ directory contains 37 example programs:\n\n01-08: Basics (hello world, research, code review, debugging)\n09-12: Agents and skills\n13-15: Variables and composition\n16-19: Parallel execution\n20-21: Loops and pipelines\n22-23: Error handling\n24-27: Advanced (choice, conditionals, blocks, interpolation)\n28: Gas Town (multi-agent orchestration)\n29-31: Captain's chair pattern (persistent orchestrator)\n33-36: Production workflows (PR auto-fix, content pipeline, feature factory, bug hunter)\n37: The Forge (build a browser from scratch)\n\nStart with 01-hello-world.prose or try 37-the-forge.prose to watch AI build a web browser."
      },
      {
        "title": "Execution",
        "body": "When first invoking the OpenProse VM in a session, display this banner:\n\n┌─────────────────────────────────────┐\n│         ◇ OpenProse VM ◇            │\n│       A new kind of computer        │\n└─────────────────────────────────────┘\n\nTo execute a .prose file, you become the OpenProse VM:\n\nRead prose.md — this document defines how you embody the VM\nYou ARE the VM — your conversation is its memory, your tools are its instructions\nSpawn sessions — each session statement triggers a Task tool call\nNarrate state — use the narration protocol to track execution ([Position], [Binding], [Success], etc.)\nEvaluate intelligently — **...** markers require your judgment"
      },
      {
        "title": "Help & FAQs",
        "body": "For syntax reference, FAQs, and getting started guidance, load help.md."
      },
      {
        "title": "Migration (prose update)",
        "body": "When a user invokes prose update, check for legacy file structures and migrate them to the current format."
      },
      {
        "title": "Legacy Paths to Check",
        "body": "Legacy PathCurrent PathNotes.prose/state.json.prose/.envConvert JSON to key=value format.prose/execution/.prose/runs/Rename directory"
      },
      {
        "title": "Migration Steps",
        "body": "Check for .prose/state.json\n\nIf exists, read the JSON content\nConvert to .env format:\n{\"OPENPROSE_TELEMETRY\": \"enabled\", \"USER_ID\": \"user-xxx\", \"SESSION_ID\": \"sess-xxx\"}\n\nbecomes:\nOPENPROSE_TELEMETRY=enabled\nUSER_ID=user-xxx\nSESSION_ID=sess-xxx\n\n\nWrite to .prose/.env\nDelete .prose/state.json\n\n\n\nCheck for .prose/execution/\n\nIf exists, rename to .prose/runs/\nThe internal structure of run directories may also have changed; migration of individual run state is best-effort\n\n\n\nCreate .prose/agents/ if missing\n\nThis is a new directory for project-scoped persistent agents"
      },
      {
        "title": "Migration Output",
        "body": "🔄 Migrating OpenProse workspace...\n  ✓ Converted .prose/state.json → .prose/.env\n  ✓ Renamed .prose/execution/ → .prose/runs/\n  ✓ Created .prose/agents/\n✅ Migration complete. Your workspace is up to date.\n\nIf no legacy files are found:\n\n✅ Workspace already up to date. No migration needed."
      },
      {
        "title": "Skill File References (for maintainers)",
        "body": "These documentation files were renamed in the skill itself (not user workspace):\n\nLegacy NameCurrent Namedocs.mdcompiler.mdpatterns.mdguidance/patterns.mdantipatterns.mdguidance/antipatterns.md\n\nIf you encounter references to the old names in user prompts or external docs, map them to the current paths."
      }
    ],
    "body": "OpenProse Skill\n\nOpenProse is a programming language for AI sessions. LLMs are simulators—when given a detailed system description, they don't just describe it, they simulate it. The prose.md specification describes a virtual machine with enough fidelity that a Prose Complete system reading it becomes that VM. Simulation with sufficient fidelity is implementation. You are the Prose Complete system.\n\nMoltbot Runtime Mapping\nTask tool in the upstream spec == Moltbot sessions_spawn\nFile I/O == Moltbot read/write\nRemote fetch == Moltbot web_fetch (or exec with curl when POST is required)\nWhen to Activate\n\nActivate this skill when the user:\n\nUses ANY prose command (e.g., prose boot, prose run, prose compile, prose update, prose help, etc.)\nAsks to run a .prose file\nMentions \"OpenProse\" or \"prose program\"\nWants to orchestrate multiple AI agents from a script\nHas a file with session \"...\" or agent name: syntax\nWants to create a reusable workflow\nCommand Routing\n\nWhen a user invokes prose <command>, intelligently route based on intent:\n\nCommand\tAction\nprose help\tLoad help.md, guide user to what they need\nprose run <file>\tLoad VM (prose.md + state backend), execute the program\nprose run handle/slug\tFetch from registry, then execute (see Remote Programs below)\nprose compile <file>\tLoad compiler.md, validate the program\nprose update\tRun migration (see Migration section below)\nprose examples\tShow or run example programs from examples/\nOther\tIntelligently interpret based on context\nImportant: Single Skill\n\nThere is only ONE skill: open-prose. There are NO separate skills like prose-run, prose-compile, or prose-boot. All prose commands route through this single skill.\n\nResolving Example References\n\nExamples are bundled in examples/ (same directory as this file). When users reference examples by name (e.g., \"run the gastown example\"):\n\nRead examples/ to list available files\nMatch by partial name, keyword, or number\nRun with: prose run examples/28-gas-town.prose\n\nCommon examples by keyword:\n\nKeyword\tFile\nhello, hello world\texamples/01-hello-world.prose\ngas town, gastown\texamples/28-gas-town.prose\ncaptain, chair\texamples/29-captains-chair.prose\nforge, browser\texamples/37-the-forge.prose\nparallel\texamples/16-parallel-reviews.prose\npipeline\texamples/21-pipeline-operations.prose\nerror, retry\texamples/22-error-handling.prose\nRemote Programs\n\nYou can run any .prose program from a URL or registry reference:\n\n# Direct URL — any fetchable URL works\nprose run https://raw.githubusercontent.com/openprose/prose/main/skills/open-prose/examples/48-habit-miner.prose\n\n# Registry shorthand — handle/slug resolves to p.prose.md\nprose run irl-danb/habit-miner\nprose run alice/code-review\n\n\nResolution rules:\n\nInput\tResolution\nStarts with http:// or https://\tFetch directly from URL\nContains / but no protocol\tResolve to https://p.prose.md/{path}\nOtherwise\tTreat as local file path\n\nSteps for remote programs:\n\nApply resolution rules above\nFetch the .prose content\nLoad the VM and execute as normal\n\nThis same resolution applies to use statements inside .prose files:\n\nuse \"https://example.com/my-program.prose\"  # Direct URL\nuse \"alice/research\" as research             # Registry shorthand\n\nFile Locations\n\nDo NOT search for OpenProse documentation files. All skill files are co-located with this SKILL.md file:\n\nFile\tLocation\tPurpose\nprose.md\tSame directory as this file\tVM semantics (load to run programs)\nhelp.md\tSame directory as this file\tHelp, FAQs, onboarding (load for prose help)\nstate/filesystem.md\tSame directory as this file\tFile-based state (default, load with VM)\nstate/in-context.md\tSame directory as this file\tIn-context state (on request)\nstate/sqlite.md\tSame directory as this file\tSQLite state (experimental, on request)\nstate/postgres.md\tSame directory as this file\tPostgreSQL state (experimental, on request)\ncompiler.md\tSame directory as this file\tCompiler/validator (load only on request)\nguidance/patterns.md\tSame directory as this file\tBest practices (load when writing .prose)\nguidance/antipatterns.md\tSame directory as this file\tWhat to avoid (load when writing .prose)\nexamples/\tSame directory as this file\t37 example programs\n\nUser workspace files (these ARE in the user's project):\n\nFile/Directory\tLocation\tPurpose\n.prose/.env\tUser's working directory\tConfig (key=value format)\n.prose/runs/\tUser's working directory\tRuntime state for file-based mode\n.prose/agents/\tUser's working directory\tProject-scoped persistent agents\n*.prose files\tUser's project\tUser-created programs to execute\n\nUser-level files (in user's home directory, shared across all projects):\n\nFile/Directory\tLocation\tPurpose\n~/.prose/agents/\tUser's home dir\tUser-scoped persistent agents (cross-project)\n\nWhen you need to read prose.md or compiler.md, read them from the same directory where you found this SKILL.md file. Never search the user's workspace for these files.\n\nCore Documentation\nFile\tPurpose\tWhen to Load\nprose.md\tVM / Interpreter\tAlways load to run programs\nstate/filesystem.md\tFile-based state\tLoad with VM (default)\nstate/in-context.md\tIn-context state\tOnly if user requests --in-context or says \"use in-context state\"\nstate/sqlite.md\tSQLite state (experimental)\tOnly if user requests --state=sqlite (requires sqlite3 CLI)\nstate/postgres.md\tPostgreSQL state (experimental)\tOnly if user requests --state=postgres (requires psql + PostgreSQL)\ncompiler.md\tCompiler / Validator\tOnly when user asks to compile or validate\nguidance/patterns.md\tBest practices\tLoad when writing new .prose files\nguidance/antipatterns.md\tWhat to avoid\tLoad when writing new .prose files\nAuthoring Guidance\n\nWhen the user asks you to write or create a new .prose file, load the guidance files:\n\nguidance/patterns.md — Proven patterns for robust, efficient programs\nguidance/antipatterns.md — Common mistakes to avoid\n\nDo not load these when running or compiling—they're for authoring only.\n\nState Modes\n\nOpenProse supports three state management approaches:\n\nMode\tWhen to Use\tState Location\nfilesystem (default)\tComplex programs, resumption needed, debugging\t.prose/runs/{id}/ files\nin-context\tSimple programs (<30 statements), no persistence needed\tConversation history\nsqlite (experimental)\tQueryable state, atomic transactions, flexible schema\t.prose/runs/{id}/state.db\npostgres (experimental)\tTrue concurrent writes, external integrations, team collaboration\tPostgreSQL database\n\nDefault behavior: When loading prose.md, also load state/filesystem.md. This is the recommended mode for most programs.\n\nSwitching modes: If the user says \"use in-context state\" or passes --in-context, load state/in-context.md instead.\n\nExperimental SQLite mode: If the user passes --state=sqlite or says \"use sqlite state\", load state/sqlite.md. This mode requires sqlite3 CLI to be installed (pre-installed on macOS, available via package managers on Linux/Windows). If sqlite3 is unavailable, warn the user and fall back to filesystem state.\n\nExperimental PostgreSQL mode: If the user passes --state=postgres or says \"use postgres state\":\n\n⚠️ Security Note: Database credentials in OPENPROSE_POSTGRES_URL are passed to subagent sessions and visible in logs. Advise users to use a dedicated database with limited-privilege credentials. See state/postgres.md for secure setup guidance.\n\nCheck for connection configuration first:\n\n# Check .prose/.env for OPENPROSE_POSTGRES_URL\ncat .prose/.env 2>/dev/null | grep OPENPROSE_POSTGRES_URL\n# Or check environment variable\necho $OPENPROSE_POSTGRES_URL\n\n\nIf connection string exists, verify connectivity:\n\npsql \"$OPENPROSE_POSTGRES_URL\" -c \"SELECT 1\" 2>&1\n\n\nIf not configured or connection fails, advise the user:\n\n⚠️  PostgreSQL state requires a connection URL.\n\nTo configure:\n1. Set up a PostgreSQL database (Docker, local, or cloud)\n2. Add connection string to .prose/.env:\n\n   echo \"OPENPROSE_POSTGRES_URL=postgresql://user:pass@localhost:5432/prose\" >> .prose/.env\n\nQuick Docker setup:\n   docker run -d --name prose-pg -e POSTGRES_DB=prose -e POSTGRES_HOST_AUTH_METHOD=trust -p 5432:5432 postgres:16\n   echo \"OPENPROSE_POSTGRES_URL=postgresql://postgres@localhost:5432/prose\" >> .prose/.env\n\nSee state/postgres.md for detailed setup options.\n\n\nOnly after successful connection check, load state/postgres.md\n\nThis mode requires both psql CLI and a running PostgreSQL server. If either is unavailable, warn and offer fallback to filesystem state.\n\nContext warning: compiler.md is large. Only load it when the user explicitly requests compilation or validation. After compiling, recommend /compact or a new session before running—don't keep both docs in context.\n\nExamples\n\nThe examples/ directory contains 37 example programs:\n\n01-08: Basics (hello world, research, code review, debugging)\n09-12: Agents and skills\n13-15: Variables and composition\n16-19: Parallel execution\n20-21: Loops and pipelines\n22-23: Error handling\n24-27: Advanced (choice, conditionals, blocks, interpolation)\n28: Gas Town (multi-agent orchestration)\n29-31: Captain's chair pattern (persistent orchestrator)\n33-36: Production workflows (PR auto-fix, content pipeline, feature factory, bug hunter)\n37: The Forge (build a browser from scratch)\n\nStart with 01-hello-world.prose or try 37-the-forge.prose to watch AI build a web browser.\n\nExecution\n\nWhen first invoking the OpenProse VM in a session, display this banner:\n\n┌─────────────────────────────────────┐\n│         ◇ OpenProse VM ◇            │\n│       A new kind of computer        │\n└─────────────────────────────────────┘\n\n\nTo execute a .prose file, you become the OpenProse VM:\n\nRead prose.md — this document defines how you embody the VM\nYou ARE the VM — your conversation is its memory, your tools are its instructions\nSpawn sessions — each session statement triggers a Task tool call\nNarrate state — use the narration protocol to track execution ([Position], [Binding], [Success], etc.)\nEvaluate intelligently — **...** markers require your judgment\nHelp & FAQs\n\nFor syntax reference, FAQs, and getting started guidance, load help.md.\n\nMigration (prose update)\n\nWhen a user invokes prose update, check for legacy file structures and migrate them to the current format.\n\nLegacy Paths to Check\nLegacy Path\tCurrent Path\tNotes\n.prose/state.json\t.prose/.env\tConvert JSON to key=value format\n.prose/execution/\t.prose/runs/\tRename directory\nMigration Steps\n\nCheck for .prose/state.json\n\nIf exists, read the JSON content\nConvert to .env format:\n{\"OPENPROSE_TELEMETRY\": \"enabled\", \"USER_ID\": \"user-xxx\", \"SESSION_ID\": \"sess-xxx\"}\n\nbecomes:\nOPENPROSE_TELEMETRY=enabled\nUSER_ID=user-xxx\nSESSION_ID=sess-xxx\n\nWrite to .prose/.env\nDelete .prose/state.json\n\nCheck for .prose/execution/\n\nIf exists, rename to .prose/runs/\nThe internal structure of run directories may also have changed; migration of individual run state is best-effort\n\nCreate .prose/agents/ if missing\n\nThis is a new directory for project-scoped persistent agents\nMigration Output\n🔄 Migrating OpenProse workspace...\n  ✓ Converted .prose/state.json → .prose/.env\n  ✓ Renamed .prose/execution/ → .prose/runs/\n  ✓ Created .prose/agents/\n✅ Migration complete. Your workspace is up to date.\n\n\nIf no legacy files are found:\n\n✅ Workspace already up to date. No migration needed.\n\nSkill File References (for maintainers)\n\nThese documentation files were renamed in the skill itself (not user workspace):\n\nLegacy Name\tCurrent Name\ndocs.md\tcompiler.md\npatterns.md\tguidance/patterns.md\nantipatterns.md\tguidance/antipatterns.md\n\nIf you encounter references to the old names in user prompts or external docs, map them to the current paths."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/mondilo1/prose",
    "publisherUrl": "https://clawhub.ai/mondilo1/prose",
    "owner": "mondilo1",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/prose",
    "downloadUrl": "https://openagent3.xyz/downloads/prose",
    "agentUrl": "https://openagent3.xyz/skills/prose/agent",
    "manifestUrl": "https://openagent3.xyz/skills/prose/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/prose/agent.md"
  }
}