[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CEBBGXGWHZDTJ0GGHDJBV9":3,"skill-same:01M6CEBBGXGWHZDTJ0GGHDJBV9":404},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":29,"linkOnly":30,"markdownContent":31,"markdownBody":32,"frontMatter":33,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":41,"repositoryHtmlUrl":42,"repositoryHomepageUrl":6,"ownerHtmlUrl":43,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":44,"install":45,"resources":58},"01M6CEBBGXGWHZDTJ0GGHDJBV9","prose",null,"OpenProse VM skill pack. Activate on any `prose` command, .prose files, or OpenProse mentions; orchestrates multi-agent workflows.","LongIV999\u002FOpenclawd","LongIV999","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F92411512?v=4","01M6CEACAHRWWFRVKBQPSQ2WBM","01M6CEACEJDYKGDKD1P6A7J7VV",0,"MIT","https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5,23,24,25,26,27,28],"workflows","vm","https","multi-agent","command","files","2026-11-10 10:12:30",false,"---\nname: prose\ndescription: OpenProse VM skill pack. Activate on any `prose` command, .prose files, or OpenProse mentions; orchestrates multi-agent workflows.\nmetadata: { \"openclaw\": { \"emoji\": \"?\", \"homepage\": \"https:\u002F\u002Fwww.prose.md\" } }\n---\n\n# 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\n## OpenClaw Runtime Mapping\n\n- **Task tool** in the upstream spec == OpenClaw `sessions_spawn`\n- **File I\u002FO** == OpenClaw `read`\u002F`write`\n- **Remote fetch** == OpenClaw `web_fetch` (or `exec` with curl when POST is required)\n\n## When to Activate\n\nActivate this skill when the user:\n\n- **Uses ANY `prose` command** (e.g., `prose boot`, `prose run`, `prose compile`, `prose update`, `prose help`, etc.)\n- Asks to run a `.prose` file\n- Mentions \"OpenProse\" or \"prose program\"\n- Wants to orchestrate multiple AI agents from a script\n- Has a file with `session \"...\"` or `agent name:` syntax\n- Wants to create a reusable workflow\n\n## Command Routing\n\nWhen a user invokes `prose \u003Ccommand>`, intelligently route based on intent:\n\n| Command                 | Action                                                        |\n| ----------------------- | ------------------------------------------------------------- |\n| `prose help`            | Load `help.md`, guide user to what they need                  |\n| `prose run \u003Cfile>`      | Load VM (`prose.md` + state backend), execute the program     |\n| `prose run handle\u002Fslug` | Fetch from registry, then execute (see Remote Programs below) |\n| `prose compile \u003Cfile>`  | Load `compiler.md`, validate the program                      |\n| `prose update`          | Run migration (see Migration section below)                   |\n| `prose examples`        | Show or run example programs from `examples\u002F`                 |\n| Other                   | Intelligently interpret based on context                      |\n\n### Important: 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\n### Resolving Example References\n\n**Examples are bundled in `examples\u002F` (same directory as this file).** When users reference examples by name (e.g., \"run the gastown example\"):\n\n1. Read `examples\u002F` to list available files\n2. Match by partial name, keyword, or number\n3. Run with: `prose run examples\u002F28-gas-town.prose`\n\n**Common examples by keyword:**\n| Keyword | File |\n|---------|------|\n| hello, hello world | `examples\u002F01-hello-world.prose` |\n| gas town, gastown | `examples\u002F28-gas-town.prose` |\n| captain, chair | `examples\u002F29-captains-chair.prose` |\n| forge, browser | `examples\u002F37-the-forge.prose` |\n| parallel | `examples\u002F16-parallel-reviews.prose` |\n| pipeline | `examples\u002F21-pipeline-operations.prose` |\n| error, retry | `examples\u002F22-error-handling.prose` |\n\n### Remote Programs\n\nYou can run any `.prose` program from a URL or registry reference:\n\n```bash\n# Direct URL — any fetchable URL works\nprose run https:\u002F\u002Fraw.githubusercontent.com\u002Fopenprose\u002Fprose\u002Fmain\u002Fskills\u002Fopen-prose\u002Fexamples\u002F48-habit-miner.prose\n\n# Registry shorthand — handle\u002Fslug resolves to p.prose.md\nprose run irl-danb\u002Fhabit-miner\nprose run alice\u002Fcode-review\n```\n\n**Resolution rules:**\n\n| Input                               | Resolution                             |\n| ----------------------------------- | -------------------------------------- |\n| Starts with `http:\u002F\u002F` or `https:\u002F\u002F` | Fetch directly from URL                |\n| Contains `\u002F` but no protocol        | Resolve to `https:\u002F\u002Fp.prose.md\u002F{path}` |\n| Otherwise                           | Treat as local file path               |\n\n**Steps for remote programs:**\n\n1. Apply resolution rules above\n2. Fetch the `.prose` content\n3. Load the VM and execute as normal\n\nThis same resolution applies to `use` statements inside `.prose` files:\n\n```prose\nuse \"https:\u002F\u002Fexample.com\u002Fmy-program.prose\"  # Direct URL\nuse \"alice\u002Fresearch\" as research             # Registry shorthand\n```\n\n---\n\n## File Locations\n\n**Do NOT search for OpenProse documentation files.** All skill files are co-located with this SKILL.md file:\n\n| File                       | Location                    | Purpose                                        |\n| -------------------------- | --------------------------- | ---------------------------------------------- |\n| `prose.md`                 | Same directory as this file | VM semantics (load to run programs)            |\n| `help.md`                  | Same directory as this file | Help, FAQs, onboarding (load for `prose help`) |\n| `state\u002Ffilesystem.md`      | Same directory as this file | File-based state (default, load with VM)       |\n| `state\u002Fin-context.md`      | Same directory as this file | In-context state (on request)                  |\n| `state\u002Fsqlite.md`          | Same directory as this file | SQLite state (experimental, on request)        |\n| `state\u002Fpostgres.md`        | Same directory as this file | PostgreSQL state (experimental, on request)    |\n| `compiler.md`              | Same directory as this file | Compiler\u002Fvalidator (load only on request)      |\n| `guidance\u002Fpatterns.md`     | Same directory as this file | Best practices (load when writing .prose)      |\n| `guidance\u002Fantipatterns.md` | Same directory as this file | What to avoid (load when writing .prose)       |\n| `examples\u002F`                | Same directory as this file | 37 example programs                            |\n\n**User workspace files** (these ARE in the user's project):\n\n| File\u002FDirectory   | Location                 | Purpose                           |\n| ---------------- | ------------------------ | --------------------------------- |\n| `.prose\u002F.env`    | User's working directory | Config (key=value format)         |\n| `.prose\u002Fruns\u002F`   | User's working directory | Runtime state for file-based mode |\n| `.prose\u002Fagents\u002F` | User's working directory | Project-scoped persistent agents  |\n| `*.prose` files  | User's project           | User-created programs to execute  |\n\n**User-level files** (in user's home directory, shared across all projects):\n\n| File\u002FDirectory     | Location        | Purpose                                       |\n| ------------------ | --------------- | --------------------------------------------- |\n| `~\u002F.prose\u002Fagents\u002F` | User's home dir | User-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\n---\n\n## Core Documentation\n\n| File                       | Purpose                         | When to Load                                                          |\n| -------------------------- | ------------------------------- | --------------------------------------------------------------------- |\n| `prose.md`                 | VM \u002F Interpreter                | Always load to run programs                                           |\n| `state\u002Ffilesystem.md`      | File-based state                | Load with VM (default)                                                |\n| `state\u002Fin-context.md`      | In-context state                | Only if user requests `--in-context` or says \"use in-context state\"   |\n| `state\u002Fsqlite.md`          | SQLite state (experimental)     | Only if user requests `--state=sqlite` (requires sqlite3 CLI)         |\n| `state\u002Fpostgres.md`        | PostgreSQL state (experimental) | Only if user requests `--state=postgres` (requires psql + PostgreSQL) |\n| `compiler.md`              | Compiler \u002F Validator            | **Only** when user asks to compile or validate                        |\n| `guidance\u002Fpatterns.md`     | Best practices                  | Load when **writing** new .prose files                                |\n| `guidance\u002Fantipatterns.md` | What to avoid                   | Load when **writing** new .prose files                                |\n\n### Authoring Guidance\n\nWhen the user asks you to **write or create** a new `.prose` file, load the guidance files:\n\n- `guidance\u002Fpatterns.md` — Proven patterns for robust, efficient programs\n- `guidance\u002Fantipatterns.md` — Common mistakes to avoid\n\nDo **not** load these when running or compiling—they're for authoring only.\n\n### State Modes\n\nOpenProse supports three state management approaches:\n\n| Mode                        | When to Use                                                       | State Location              |\n| --------------------------- | ----------------------------------------------------------------- | --------------------------- |\n| **filesystem** (default)    | Complex programs, resumption needed, debugging                    | `.prose\u002Fruns\u002F{id}\u002F` files   |\n| **in-context**              | Simple programs (\u003C30 statements), no persistence needed           | Conversation history        |\n| **sqlite** (experimental)   | Queryable state, atomic transactions, flexible schema             | `.prose\u002Fruns\u002F{id}\u002Fstate.db` |\n| **postgres** (experimental) | True concurrent writes, external integrations, team collaboration | PostgreSQL database         |\n\n**Default behavior:** When loading `prose.md`, also load `state\u002Ffilesystem.md`. This is the recommended mode for most programs.\n\n**Switching modes:** If the user says \"use in-context state\" or passes `--in-context`, load `state\u002Fin-context.md` instead.\n\n**Experimental SQLite mode:** If the user passes `--state=sqlite` or says \"use sqlite state\", load `state\u002Fsqlite.md`. This mode requires `sqlite3` CLI to be installed (pre-installed on macOS, available via package managers on Linux\u002FWindows). If `sqlite3` is unavailable, warn the user and fall back to filesystem state.\n\n**Experimental 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\u002Fpostgres.md` for secure setup guidance.\n\n1. **Check for connection configuration first:**\n\n   ```bash\n   # Check .prose\u002F.env for OPENPROSE_POSTGRES_URL\n   cat .prose\u002F.env 2>\u002Fdev\u002Fnull | grep OPENPROSE_POSTGRES_URL\n   # Or check environment variable\n   echo $OPENPROSE_POSTGRES_URL\n   ```\n\n2. **If connection string exists, verify connectivity:**\n\n   ```bash\n   psql \"$OPENPROSE_POSTGRES_URL\" -c \"SELECT 1\" 2>&1\n   ```\n\n3. **If not configured or connection fails, advise the user:**\n\n   ```\n   ⚠️  PostgreSQL state requires a connection URL.\n\n   To configure:\n   1. Set up a PostgreSQL database (Docker, local, or cloud)\n   2. Add connection string to .prose\u002F.env:\n\n      echo \"OPENPROSE_POSTGRES_URL=postgresql:\u002F\u002Fuser:pass@localhost:5432\u002Fprose\" >> .prose\u002F.env\n\n   Quick 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:\u002F\u002Fpostgres@localhost:5432\u002Fprose\" >> .prose\u002F.env\n\n   See state\u002Fpostgres.md for detailed setup options.\n   ```\n\n4. **Only after successful connection check, load `state\u002Fpostgres.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\n**Context warning:** `compiler.md` is large. Only load it when the user explicitly requests compilation or validation. After compiling, recommend `\u002Fcompact` or a new session before running—don't keep both docs in context.\n\n## Examples\n\nThe `examples\u002F` directory contains 37 example programs:\n\n- **01-08**: Basics (hello world, research, code review, debugging)\n- **09-12**: Agents and skills\n- **13-15**: Variables and composition\n- **16-19**: Parallel execution\n- **20-21**: Loops and pipelines\n- **22-23**: Error handling\n- **24-27**: Advanced (choice, conditionals, blocks, interpolation)\n- **28**: Gas Town (multi-agent orchestration)\n- **29-31**: Captain's chair pattern (persistent orchestrator)\n- **33-36**: Production workflows (PR auto-fix, content pipeline, feature factory, bug hunter)\n- **37**: 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\n## Execution\n\nWhen first invoking the OpenProse VM in a session, display this banner:\n\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\n1. **Read `prose.md`** — this document defines how you embody the VM\n2. **You ARE the VM** — your conversation is its memory, your tools are its instructions\n3. **Spawn sessions** — each `session` statement triggers a Task tool call\n4. **Narrate state** — use the narration protocol to track execution ([Position], [Binding], [Success], etc.)\n5. **Evaluate intelligently** — `**...**` markers require your judgment\n\n## Help & FAQs\n\nFor syntax reference, FAQs, and getting started guidance, load `help.md`.\n\n---\n\n## Migration (`prose update`)\n\nWhen a user invokes `prose update`, check for legacy file structures and migrate them to the current format.\n\n### Legacy Paths to Check\n\n| Legacy Path         | Current Path   | Notes                            |\n| ------------------- | -------------- | -------------------------------- |\n| `.prose\u002Fstate.json` | `.prose\u002F.env`  | Convert JSON to key=value format |\n| `.prose\u002Fexecution\u002F` | `.prose\u002Fruns\u002F` | Rename directory                 |\n\n### Migration Steps\n\n1. **Check for `.prose\u002Fstate.json`**\n   - If exists, read the JSON content\n   - Convert to `.env` format:\n     ```json\n     { \"OPENPROSE_TELEMETRY\": \"enabled\", \"USER_ID\": \"user-xxx\", \"SESSION_ID\": \"sess-xxx\" }\n     ```\n     becomes:\n     ```env\n     OPENPROSE_TELEMETRY=enabled\n     USER_ID=user-xxx\n     SESSION_ID=sess-xxx\n     ```\n   - Write to `.prose\u002F.env`\n   - Delete `.prose\u002Fstate.json`\n\n2. **Check for `.prose\u002Fexecution\u002F`**\n   - If exists, rename to `.prose\u002Fruns\u002F`\n   - The internal structure of run directories may also have changed; migration of individual run state is best-effort\n\n3. **Create `.prose\u002Fagents\u002F` if missing**\n   - This is a new directory for project-scoped persistent agents\n\n### Migration Output\n\n```\n? Migrating OpenProse workspace...\n  ✓ Converted .prose\u002Fstate.json → .prose\u002F.env\n  ✓ Renamed .prose\u002Fexecution\u002F → .prose\u002Fruns\u002F\n  ✓ Created .prose\u002Fagents\u002F\n✅ Migration complete. Your workspace is up to date.\n```\n\nIf no legacy files are found:\n\n```\n✅ Workspace already up to date. No migration needed.\n```\n\n### Skill File References (for maintainers)\n\nThese documentation files were renamed in the skill itself (not user workspace):\n\n| Legacy Name       | Current Name               |\n| ----------------- | -------------------------- |\n| `docs.md`         | `compiler.md`              |\n| `patterns.md`     | `guidance\u002Fpatterns.md`     |\n| `antipatterns.md` | `guidance\u002Fantipatterns.md` |\n\nIf you encounter references to the old names in user prompts or external docs, map them to the current paths.\n","# 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\n## OpenClaw Runtime Mapping\n\n- **Task tool** in the upstream spec == OpenClaw `sessions_spawn`\n- **File I\u002FO** == OpenClaw `read`\u002F`write`\n- **Remote fetch** == OpenClaw `web_fetch` (or `exec` with curl when POST is required)\n\n## When to Activate\n\nActivate this skill when the user:\n\n- **Uses ANY `prose` command** (e.g., `prose boot`, `prose run`, `prose compile`, `prose update`, `prose help`, etc.)\n- Asks to run a `.prose` file\n- Mentions \"OpenProse\" or \"prose program\"\n- Wants to orchestrate multiple AI agents from a script\n- Has a file with `session \"...\"` or `agent name:` syntax\n- Wants to create a reusable workflow\n\n## Command Routing\n\nWhen a user invokes `prose \u003Ccommand>`, intelligently route based on intent:\n\n| Command                 | Action                                                        |\n| ----------------------- | ------------------------------------------------------------- |\n| `prose help`            | Load `help.md`, guide user to what they need                  |\n| `prose run \u003Cfile>`      | Load VM (`prose.md` + state backend), execute the program     |\n| `prose run handle\u002Fslug` | Fetch from registry, then execute (see Remote Programs below) |\n| `prose compile \u003Cfile>`  | Load `compiler.md`, validate the program                      |\n| `prose update`          | Run migration (see Migration section below)                   |\n| `prose examples`        | Show or run example programs from `examples\u002F`                 |\n| Other                   | Intelligently interpret based on context                      |\n\n### Important: 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\n### Resolving Example References\n\n**Examples are bundled in `examples\u002F` (same directory as this file).** When users reference examples by name (e.g., \"run the gastown example\"):\n\n1. Read `examples\u002F` to list available files\n2. Match by partial name, keyword, or number\n3. Run with: `prose run examples\u002F28-gas-town.prose`\n\n**Common examples by keyword:**\n| Keyword | File |\n|---------|------|\n| hello, hello world | `examples\u002F01-hello-world.prose` |\n| gas town, gastown | `examples\u002F28-gas-town.prose` |\n| captain, chair | `examples\u002F29-captains-chair.prose` |\n| forge, browser | `examples\u002F37-the-forge.prose` |\n| parallel | `examples\u002F16-parallel-reviews.prose` |\n| pipeline | `examples\u002F21-pipeline-operations.prose` |\n| error, retry | `examples\u002F22-error-handling.prose` |\n\n### Remote Programs\n\nYou can run any `.prose` program from a URL or registry reference:\n\n```bash\n# Direct URL — any fetchable URL works\nprose run https:\u002F\u002Fraw.githubusercontent.com\u002Fopenprose\u002Fprose\u002Fmain\u002Fskills\u002Fopen-prose\u002Fexamples\u002F48-habit-miner.prose\n\n# Registry shorthand — handle\u002Fslug resolves to p.prose.md\nprose run irl-danb\u002Fhabit-miner\nprose run alice\u002Fcode-review\n```\n\n**Resolution rules:**\n\n| Input                               | Resolution                             |\n| ----------------------------------- | -------------------------------------- |\n| Starts with `http:\u002F\u002F` or `https:\u002F\u002F` | Fetch directly from URL                |\n| Contains `\u002F` but no protocol        | Resolve to `https:\u002F\u002Fp.prose.md\u002F{path}` |\n| Otherwise                           | Treat as local file path               |\n\n**Steps for remote programs:**\n\n1. Apply resolution rules above\n2. Fetch the `.prose` content\n3. Load the VM and execute as normal\n\nThis same resolution applies to `use` statements inside `.prose` files:\n\n```prose\nuse \"https:\u002F\u002Fexample.com\u002Fmy-program.prose\"  # Direct URL\nuse \"alice\u002Fresearch\" as research             # Registry shorthand\n```\n\n---\n\n## File Locations\n\n**Do NOT search for OpenProse documentation files.** All skill files are co-located with this SKILL.md file:\n\n| File                       | Location                    | Purpose                                        |\n| -------------------------- | --------------------------- | ---------------------------------------------- |\n| `prose.md`                 | Same directory as this file | VM semantics (load to run programs)            |\n| `help.md`                  | Same directory as this file | Help, FAQs, onboarding (load for `prose help`) |\n| `state\u002Ffilesystem.md`      | Same directory as this file | File-based state (default, load with VM)       |\n| `state\u002Fin-context.md`      | Same directory as this file | In-context state (on request)                  |\n| `state\u002Fsqlite.md`          | Same directory as this file | SQLite state (experimental, on request)        |\n| `state\u002Fpostgres.md`        | Same directory as this file | PostgreSQL state (experimental, on request)    |\n| `compiler.md`              | Same directory as this file | Compiler\u002Fvalidator (load only on request)      |\n| `guidance\u002Fpatterns.md`     | Same directory as this file | Best practices (load when writing .prose)      |\n| `guidance\u002Fantipatterns.md` | Same directory as this file | What to avoid (load when writing .prose)       |\n| `examples\u002F`                | Same directory as this file | 37 example programs                            |\n\n**User workspace files** (these ARE in the user's project):\n\n| File\u002FDirectory   | Location                 | Purpose                           |\n| ---------------- | ------------------------ | --------------------------------- |\n| `.prose\u002F.env`    | User's working directory | Config (key=value format)         |\n| `.prose\u002Fruns\u002F`   | User's working directory | Runtime state for file-based mode |\n| `.prose\u002Fagents\u002F` | User's working directory | Project-scoped persistent agents  |\n| `*.prose` files  | User's project           | User-created programs to execute  |\n\n**User-level files** (in user's home directory, shared across all projects):\n\n| File\u002FDirectory     | Location        | Purpose                                       |\n| ------------------ | --------------- | --------------------------------------------- |\n| `~\u002F.prose\u002Fagents\u002F` | User's home dir | User-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\n---\n\n## Core Documentation\n\n| File                       | Purpose                         | When to Load                                                          |\n| -------------------------- | ------------------------------- | --------------------------------------------------------------------- |\n| `prose.md`                 | VM \u002F Interpreter                | Always load to run programs                                           |\n| `state\u002Ffilesystem.md`      | File-based state                | Load with VM (default)                                                |\n| `state\u002Fin-context.md`      | In-context state                | Only if user requests `--in-context` or says \"use in-context state\"   |\n| `state\u002Fsqlite.md`          | SQLite state (experimental)     | Only if user requests `--state=sqlite` (requires sqlite3 CLI)         |\n| `state\u002Fpostgres.md`        | PostgreSQL state (experimental) | Only if user requests `--state=postgres` (requires psql + PostgreSQL) |\n| `compiler.md`              | Compiler \u002F Validator            | **Only** when user asks to compile or validate                        |\n| `guidance\u002Fpatterns.md`     | Best practices                  | Load when **writing** new .prose files                                |\n| `guidance\u002Fantipatterns.md` | What to avoid                   | Load when **writing** new .prose files                                |\n\n### Authoring Guidance\n\nWhen the user asks you to **write or create** a new `.prose` file, load the guidance files:\n\n- `guidance\u002Fpatterns.md` — Proven patterns for robust, efficient programs\n- `guidance\u002Fantipatterns.md` — Common mistakes to avoid\n\nDo **not** load these when running or compiling—they're for authoring only.\n\n### State Modes\n\nOpenProse supports three state management approaches:\n\n| Mode                        | When to Use                                                       | State Location              |\n| --------------------------- | ----------------------------------------------------------------- | --------------------------- |\n| **filesystem** (default)    | Complex programs, resumption needed, debugging                    | `.prose\u002Fruns\u002F{id}\u002F` files   |\n| **in-context**              | Simple programs (\u003C30 statements), no persistence needed           | Conversation history        |\n| **sqlite** (experimental)   | Queryable state, atomic transactions, flexible schema             | `.prose\u002Fruns\u002F{id}\u002Fstate.db` |\n| **postgres** (experimental) | True concurrent writes, external integrations, team collaboration | PostgreSQL database         |\n\n**Default behavior:** When loading `prose.md`, also load `state\u002Ffilesystem.md`. This is the recommended mode for most programs.\n\n**Switching modes:** If the user says \"use in-context state\" or passes `--in-context`, load `state\u002Fin-context.md` instead.\n\n**Experimental SQLite mode:** If the user passes `--state=sqlite` or says \"use sqlite state\", load `state\u002Fsqlite.md`. This mode requires `sqlite3` CLI to be installed (pre-installed on macOS, available via package managers on Linux\u002FWindows). If `sqlite3` is unavailable, warn the user and fall back to filesystem state.\n\n**Experimental 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\u002Fpostgres.md` for secure setup guidance.\n\n1. **Check for connection configuration first:**\n\n   ```bash\n   # Check .prose\u002F.env for OPENPROSE_POSTGRES_URL\n   cat .prose\u002F.env 2>\u002Fdev\u002Fnull | grep OPENPROSE_POSTGRES_URL\n   # Or check environment variable\n   echo $OPENPROSE_POSTGRES_URL\n   ```\n\n2. **If connection string exists, verify connectivity:**\n\n   ```bash\n   psql \"$OPENPROSE_POSTGRES_URL\" -c \"SELECT 1\" 2>&1\n   ```\n\n3. **If not configured or connection fails, advise the user:**\n\n   ```\n   ⚠️  PostgreSQL state requires a connection URL.\n\n   To configure:\n   1. Set up a PostgreSQL database (Docker, local, or cloud)\n   2. Add connection string to .prose\u002F.env:\n\n      echo \"OPENPROSE_POSTGRES_URL=postgresql:\u002F\u002Fuser:pass@localhost:5432\u002Fprose\" >> .prose\u002F.env\n\n   Quick 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:\u002F\u002Fpostgres@localhost:5432\u002Fprose\" >> .prose\u002F.env\n\n   See state\u002Fpostgres.md for detailed setup options.\n   ```\n\n4. **Only after successful connection check, load `state\u002Fpostgres.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\n**Context warning:** `compiler.md` is large. Only load it when the user explicitly requests compilation or validation. After compiling, recommend `\u002Fcompact` or a new session before running—don't keep both docs in context.\n\n## Examples\n\nThe `examples\u002F` directory contains 37 example programs:\n\n- **01-08**: Basics (hello world, research, code review, debugging)\n- **09-12**: Agents and skills\n- **13-15**: Variables and composition\n- **16-19**: Parallel execution\n- **20-21**: Loops and pipelines\n- **22-23**: Error handling\n- **24-27**: Advanced (choice, conditionals, blocks, interpolation)\n- **28**: Gas Town (multi-agent orchestration)\n- **29-31**: Captain's chair pattern (persistent orchestrator)\n- **33-36**: Production workflows (PR auto-fix, content pipeline, feature factory, bug hunter)\n- **37**: 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\n## Execution\n\nWhen first invoking the OpenProse VM in a session, display this banner:\n\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\n1. **Read `prose.md`** — this document defines how you embody the VM\n2. **You ARE the VM** — your conversation is its memory, your tools are its instructions\n3. **Spawn sessions** — each `session` statement triggers a Task tool call\n4. **Narrate state** — use the narration protocol to track execution ([Position], [Binding], [Success], etc.)\n5. **Evaluate intelligently** — `**...**` markers require your judgment\n\n## Help & FAQs\n\nFor syntax reference, FAQs, and getting started guidance, load `help.md`.\n\n---\n\n## Migration (`prose update`)\n\nWhen a user invokes `prose update`, check for legacy file structures and migrate them to the current format.\n\n### Legacy Paths to Check\n\n| Legacy Path         | Current Path   | Notes                            |\n| ------------------- | -------------- | -------------------------------- |\n| `.prose\u002Fstate.json` | `.prose\u002F.env`  | Convert JSON to key=value format |\n| `.prose\u002Fexecution\u002F` | `.prose\u002Fruns\u002F` | Rename directory                 |\n\n### Migration Steps\n\n1. **Check for `.prose\u002Fstate.json`**\n   - If exists, read the JSON content\n   - Convert to `.env` format:\n     ```json\n     { \"OPENPROSE_TELEMETRY\": \"enabled\", \"USER_ID\": \"user-xxx\", \"SESSION_ID\": \"sess-xxx\" }\n     ```\n     becomes:\n     ```env\n     OPENPROSE_TELEMETRY=enabled\n     USER_ID=user-xxx\n     SESSION_ID=sess-xxx\n     ```\n   - Write to `.prose\u002F.env`\n   - Delete `.prose\u002Fstate.json`\n\n2. **Check for `.prose\u002Fexecution\u002F`**\n   - If exists, rename to `.prose\u002Fruns\u002F`\n   - The internal structure of run directories may also have changed; migration of individual run state is best-effort\n\n3. **Create `.prose\u002Fagents\u002F` if missing**\n   - This is a new directory for project-scoped persistent agents\n\n### Migration Output\n\n```\n? Migrating OpenProse workspace...\n  ✓ Converted .prose\u002Fstate.json → .prose\u002F.env\n  ✓ Renamed .prose\u002Fexecution\u002F → .prose\u002Fruns\u002F\n  ✓ Created .prose\u002Fagents\u002F\n✅ Migration complete. Your workspace is up to date.\n```\n\nIf no legacy files are found:\n\n```\n✅ Workspace already up to date. No migration needed.\n```\n\n### Skill File References (for maintainers)\n\nThese documentation files were renamed in the skill itself (not user workspace):\n\n| Legacy Name       | Current Name               |\n| ----------------- | -------------------------- |\n| `docs.md`         | `compiler.md`              |\n| `patterns.md`     | `guidance\u002Fpatterns.md`     |\n| `antipatterns.md` | `guidance\u002Fantipatterns.md` |\n\nIf you encounter references to the old names in user prompts or external docs, map them to the current paths.\n",{"name":5,"metadata":34,"description":7},{"openclaw":35},{"emoji":36,"homepage":37},"?","https:\u002F\u002Fwww.prose.md","main","56e72bb5549c5fa0a0470501619427b4f104aa92","extensions\u002Fopen-prose\u002Fskills\u002Fprose",1,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd","https:\u002F\u002Fgithub.com\u002FLongIV999","2026-02-15 08:26:56",{"source":8,"skillName":5,"commands":46,"prompt":56,"zipAvailable":57},[47,50,53],{"tool":48,"command":49},"npx","npx skills add LongIV999\u002FOpenclawd --skill prose",{"tool":51,"command":52},"bunx","bunx skills add LongIV999\u002FOpenclawd --skill prose",{"tool":54,"command":55},"pnpm","pnpm dlx skills add LongIV999\u002FOpenclawd --skill prose","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002FSKILL.md",true,[59,65,69,73,77,81,85,89,95,99,103,107,111,115,119,123,127,131,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191,195,199,203,207,211,215,219,223,227,231,235,239,243,247,251,255,259,263,267,271,275,279,283,287,291,295,299,303,307,311,315,319,323,327,331,335,339,343,347,351,355,359,363,367,371,375,380,384,388,392,396,400],{"path":60,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":63,"sourceHtmlUrl":64},"alt-borges.md","REFERENCE","参考文档",7127,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Falt-borges.md",{"path":66,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":67,"sourceHtmlUrl":68},"alts\u002Farabian-nights.md",10176,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Falts\u002Farabian-nights.md",{"path":70,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":71,"sourceHtmlUrl":72},"alts\u002Fborges.md",11547,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Falts\u002Fborges.md",{"path":74,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":75,"sourceHtmlUrl":76},"alts\u002Ffolk.md",10097,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Falts\u002Ffolk.md",{"path":78,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":79,"sourceHtmlUrl":80},"alts\u002Fhomer.md",9589,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Falts\u002Fhomer.md",{"path":82,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":83,"sourceHtmlUrl":84},"alts\u002Fkafka.md",11162,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Falts\u002Fkafka.md",{"path":86,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":87,"sourceHtmlUrl":88},"compiler.md",82791,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fcompiler.md",{"path":90,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":93,"sourceHtmlUrl":94},"examples\u002F01-hello-world.prose","OTHER","其他",118,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F01-hello-world.prose",{"path":96,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":97,"sourceHtmlUrl":98},"examples\u002F02-research-and-summarize.prose",355,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F02-research-and-summarize.prose",{"path":100,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":101,"sourceHtmlUrl":102},"examples\u002F03-code-review.prose",821,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F03-code-review.prose",{"path":104,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":105,"sourceHtmlUrl":106},"examples\u002F04-write-and-refine.prose",643,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F04-write-and-refine.prose",{"path":108,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":109,"sourceHtmlUrl":110},"examples\u002F05-debug-issue.prose",738,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F05-debug-issue.prose",{"path":112,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":113,"sourceHtmlUrl":114},"examples\u002F06-explain-codebase.prose",786,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F06-explain-codebase.prose",{"path":116,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":117,"sourceHtmlUrl":118},"examples\u002F07-refactor.prose",830,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F07-refactor.prose",{"path":120,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":121,"sourceHtmlUrl":122},"examples\u002F08-blog-post.prose",840,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F08-blog-post.prose",{"path":124,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":125,"sourceHtmlUrl":126},"examples\u002F09-research-with-agents.prose",890,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F09-research-with-agents.prose",{"path":128,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":129,"sourceHtmlUrl":130},"examples\u002F10-code-review-agents.prose",1040,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F10-code-review-agents.prose",{"path":132,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":133,"sourceHtmlUrl":134},"examples\u002F11-skills-and-imports.prose",888,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F11-skills-and-imports.prose",{"path":136,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":137,"sourceHtmlUrl":138},"examples\u002F12-secure-agent-permissions.prose",1223,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F12-secure-agent-permissions.prose",{"path":140,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":141,"sourceHtmlUrl":142},"examples\u002F13-variables-and-context.prose",1918,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F13-variables-and-context.prose",{"path":144,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":145,"sourceHtmlUrl":146},"examples\u002F14-composition-blocks.prose",1112,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F14-composition-blocks.prose",{"path":148,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":149,"sourceHtmlUrl":150},"examples\u002F15-inline-sequences.prose",647,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F15-inline-sequences.prose",{"path":152,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":153,"sourceHtmlUrl":154},"examples\u002F16-parallel-reviews.prose",536,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F16-parallel-reviews.prose",{"path":156,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":157,"sourceHtmlUrl":158},"examples\u002F17-parallel-research.prose",565,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F17-parallel-research.prose",{"path":160,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":161,"sourceHtmlUrl":162},"examples\u002F18-mixed-parallel-sequential.prose",774,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F18-mixed-parallel-sequential.prose",{"path":164,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":165,"sourceHtmlUrl":166},"examples\u002F19-advanced-parallel.prose",2347,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F19-advanced-parallel.prose",{"path":168,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":169,"sourceHtmlUrl":170},"examples\u002F20-fixed-loops.prose",670,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F20-fixed-loops.prose",{"path":172,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":173,"sourceHtmlUrl":174},"examples\u002F21-pipeline-operations.prose",1247,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F21-pipeline-operations.prose",{"path":176,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":177,"sourceHtmlUrl":178},"examples\u002F22-error-handling.prose",1304,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F22-error-handling.prose",{"path":180,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":181,"sourceHtmlUrl":182},"examples\u002F23-retry-with-backoff.prose",1529,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F23-retry-with-backoff.prose",{"path":184,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":185,"sourceHtmlUrl":186},"examples\u002F24-choice-blocks.prose",2932,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F24-choice-blocks.prose",{"path":188,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":189,"sourceHtmlUrl":190},"examples\u002F25-conditionals.prose",3095,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F25-conditionals.prose",{"path":192,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":193,"sourceHtmlUrl":194},"examples\u002F26-parameterized-blocks.prose",3135,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F26-parameterized-blocks.prose",{"path":196,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":197,"sourceHtmlUrl":198},"examples\u002F27-string-interpolation.prose",3289,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F27-string-interpolation.prose",{"path":200,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":201,"sourceHtmlUrl":202},"examples\u002F28-automated-pr-review.prose",1390,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F28-automated-pr-review.prose",{"path":204,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":205,"sourceHtmlUrl":206},"examples\u002F28-gas-town.prose",48980,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F28-gas-town.prose",{"path":208,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":209,"sourceHtmlUrl":210},"examples\u002F29-captains-chair.prose",7921,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F29-captains-chair.prose",{"path":212,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":213,"sourceHtmlUrl":214},"examples\u002F30-captains-chair-simple.prose",1334,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F30-captains-chair-simple.prose",{"path":216,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":217,"sourceHtmlUrl":218},"examples\u002F31-captains-chair-with-memory.prose",5001,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F31-captains-chair-with-memory.prose",{"path":220,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":221,"sourceHtmlUrl":222},"examples\u002F33-pr-review-autofix.prose",4487,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F33-pr-review-autofix.prose",{"path":224,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":225,"sourceHtmlUrl":226},"examples\u002F34-content-pipeline.prose",5286,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F34-content-pipeline.prose",{"path":228,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":229,"sourceHtmlUrl":230},"examples\u002F35-feature-factory.prose",7876,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F35-feature-factory.prose",{"path":232,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":233,"sourceHtmlUrl":234},"examples\u002F36-bug-hunter.prose",6368,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F36-bug-hunter.prose",{"path":236,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":237,"sourceHtmlUrl":238},"examples\u002F37-the-forge.prose",37753,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F37-the-forge.prose",{"path":240,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":241,"sourceHtmlUrl":242},"examples\u002F38-skill-scan.prose",16754,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F38-skill-scan.prose",{"path":244,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":245,"sourceHtmlUrl":246},"examples\u002F39-architect-by-simulation.prose",9555,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F39-architect-by-simulation.prose",{"path":248,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":249,"sourceHtmlUrl":250},"examples\u002F40-rlm-self-refine.prose",752,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F40-rlm-self-refine.prose",{"path":252,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":253,"sourceHtmlUrl":254},"examples\u002F41-rlm-divide-conquer.prose",917,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F41-rlm-divide-conquer.prose",{"path":256,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":257,"sourceHtmlUrl":258},"examples\u002F42-rlm-filter-recurse.prose",1209,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F42-rlm-filter-recurse.prose",{"path":260,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":261,"sourceHtmlUrl":262},"examples\u002F43-rlm-pairwise.prose",1279,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F43-rlm-pairwise.prose",{"path":264,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":265,"sourceHtmlUrl":266},"examples\u002F44-run-endpoint-ux-test.prose",8423,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F44-run-endpoint-ux-test.prose",{"path":268,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":269,"sourceHtmlUrl":270},"examples\u002F45-plugin-release.prose",4654,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F45-plugin-release.prose",{"path":272,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":273,"sourceHtmlUrl":274},"examples\u002F45-run-endpoint-ux-test-with-remediation.prose",19296,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F45-run-endpoint-ux-test-with-remediation.prose",{"path":276,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":277,"sourceHtmlUrl":278},"examples\u002F46-run-endpoint-ux-test-fast.prose",4967,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F46-run-endpoint-ux-test-fast.prose",{"path":280,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":281,"sourceHtmlUrl":282},"examples\u002F46-workflow-crystallizer.prose",8043,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F46-workflow-crystallizer.prose",{"path":284,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":285,"sourceHtmlUrl":286},"examples\u002F47-language-self-improvement.prose",10828,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F47-language-self-improvement.prose",{"path":288,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":289,"sourceHtmlUrl":290},"examples\u002F48-habit-miner.prose",13580,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F48-habit-miner.prose",{"path":292,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":293,"sourceHtmlUrl":294},"examples\u002F49-prose-run-retrospective.prose",6690,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002F49-prose-run-retrospective.prose",{"path":296,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":297,"sourceHtmlUrl":298},"examples\u002FREADME.md",14568,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002FREADME.md",{"path":300,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":301,"sourceHtmlUrl":302},"examples\u002Froadmap\u002Fiterative-refinement.prose",464,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002Froadmap\u002Fiterative-refinement.prose",{"path":304,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":305,"sourceHtmlUrl":306},"examples\u002Froadmap\u002Fparallel-review.prose",522,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002Froadmap\u002Fparallel-review.prose",{"path":308,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":309,"sourceHtmlUrl":310},"examples\u002Froadmap\u002FREADME.md",960,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002Froadmap\u002FREADME.md",{"path":312,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":313,"sourceHtmlUrl":314},"examples\u002Froadmap\u002Fsimple-pipeline.prose",389,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002Froadmap\u002Fsimple-pipeline.prose",{"path":316,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":317,"sourceHtmlUrl":318},"examples\u002Froadmap\u002Fsyntax\u002Fopen-prose-syntax.prose",5288,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fexamples\u002Froadmap\u002Fsyntax\u002Fopen-prose-syntax.prose",{"path":320,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":321,"sourceHtmlUrl":322},"guidance\u002Fantipatterns.md",23766,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fguidance\u002Fantipatterns.md",{"path":324,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":325,"sourceHtmlUrl":326},"guidance\u002Fpatterns.md",20699,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fguidance\u002Fpatterns.md",{"path":328,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":329,"sourceHtmlUrl":330},"guidance\u002Fsystem-prompt.md",7352,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fguidance\u002Fsystem-prompt.md",{"path":332,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":333,"sourceHtmlUrl":334},"help.md",6789,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fhelp.md",{"path":336,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":337,"sourceHtmlUrl":338},"lib\u002Fcalibrator.prose",6007,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Flib\u002Fcalibrator.prose",{"path":340,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":341,"sourceHtmlUrl":342},"lib\u002Fcost-analyzer.prose",4884,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Flib\u002Fcost-analyzer.prose",{"path":344,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":345,"sourceHtmlUrl":346},"lib\u002Ferror-forensics.prose",6687,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Flib\u002Ferror-forensics.prose",{"path":348,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":349,"sourceHtmlUrl":350},"lib\u002Finspector.prose",5470,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Flib\u002Finspector.prose",{"path":352,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":353,"sourceHtmlUrl":354},"lib\u002Fprofiler.prose",15065,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Flib\u002Fprofiler.prose",{"path":356,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":357,"sourceHtmlUrl":358},"lib\u002Fprogram-improver.prose",7774,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Flib\u002Fprogram-improver.prose",{"path":360,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":361,"sourceHtmlUrl":362},"lib\u002Fproject-memory.prose",3633,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Flib\u002Fproject-memory.prose",{"path":364,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":365,"sourceHtmlUrl":366},"lib\u002FREADME.md",4425,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Flib\u002FREADME.md",{"path":368,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":369,"sourceHtmlUrl":370},"lib\u002Fuser-memory.prose",2759,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Flib\u002Fuser-memory.prose",{"path":372,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":373,"sourceHtmlUrl":374},"lib\u002Fvm-improver.prose",6736,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Flib\u002Fvm-improver.prose",{"path":376,"resourceType":376,"resourceTypeDesc":377,"sizeBytes":378,"sourceHtmlUrl":379},"LICENSE","许可证",1066,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002FLICENSE",{"path":381,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":382,"sourceHtmlUrl":383},"primitives\u002Fsession.md",18669,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fprimitives\u002Fsession.md",{"path":385,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":386,"sourceHtmlUrl":387},"prose.md",36352,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fprose.md",{"path":389,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":390,"sourceHtmlUrl":391},"state\u002Ffilesystem.md",12875,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fstate\u002Ffilesystem.md",{"path":393,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":394,"sourceHtmlUrl":395},"state\u002Fin-context.md",12860,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fstate\u002Fin-context.md",{"path":397,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":398,"sourceHtmlUrl":399},"state\u002Fpostgres.md",33789,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fstate\u002Fpostgres.md",{"path":401,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":402,"sourceHtmlUrl":403},"state\u002Fsqlite.md",21369,"https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fextensions\u002Fopen-prose\u002Fskills\u002Fprose\u002Fstate\u002Fsqlite.md",[405,414,424,444,457,471],{"skillNo":406,"name":407,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":408,"categories":409,"keywords":410,"publishedAt":29},"01M6CEFMR22ANX8BMWBY9J8VW3","youtube-to-obsidian","https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fskills\u002Fyoutube-to-obsidian\u002FSKILL.md",[],[411,412,413],"youtube to obsidian","youtube","obsidian",{"skillNo":415,"name":416,"nameZh":6,"description":417,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":418,"categories":419,"keywords":420,"publishedAt":29},"01M6CEFJW8HMZ7EY2C7FXDN8HG","weather","Get current weather and forecasts (no API key required).","https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fskills\u002Fweather\u002FSKILL.md",[],[416,421,25,422,423],"help","api","curl",{"skillNo":425,"name":426,"nameZh":6,"description":427,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":428,"categories":429,"keywords":430,"publishedAt":29},"01M6CEFGENXXNDQTCWVC82VBFT","wacli","Send WhatsApp messages to other people or search\u002Fsync WhatsApp history via the wacli CLI (not for normal user chats).","https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fskills\u002Fwacli\u002FSKILL.md",[],[426,431,432,433,434,25,435,436,437,438,439,440,441,442,443],"github","cli","sync","search","messages","history","cmd","brew","user","install","tap","whatsapp","go",{"skillNo":445,"name":446,"nameZh":6,"description":447,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":448,"categories":449,"keywords":450,"publishedAt":29},"01M6CEFERBY58R1VW8Z8ZCYEMY","voice-call","Start voice calls via the OpenClaw voice-call plugin.","https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fskills\u002Fvoice-call\u002FSKILL.md",[],[451,452,453,454,455,456],"voice","voice call","openclaw","plugin","plugins","start",{"skillNo":458,"name":459,"nameZh":6,"description":460,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":461,"categories":462,"keywords":466,"publishedAt":29},"01M6CEFD0C501CWXD9E4BMV2B2","video-frames","Extract frames or short clips from videos using ffmpeg.","https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fskills\u002Fvideo-frames\u002FSKILL.md",[463],{"categoryNo":464,"categoryName":465,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体",[467,468,438,25,469,470,440],"Video","video frames","short","extract",{"skillNo":472,"name":473,"nameZh":6,"description":474,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":475,"categories":476,"keywords":485,"publishedAt":29},"01M6CEFAJ48939CYW40VTBYGVP","trello","Manage Trello boards, lists, and cards via the Trello REST API.","https:\u002F\u002Fgithub.com\u002FLongIV999\u002FOpenclawd\u002Fblob\u002Fmain\u002Fskills\u002Ftrello\u002FSKILL.md",[477,480],{"categoryNo":478,"categoryName":479,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":481,"categoryName":482,"taxonomyType":483,"taxonomyTypeDesc":484},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[473,25,486,487,488,422,489,490,491],"cloud","developer","REST","jq","atlassian","manage"]