[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M75F42454PRPASQWXAXWXBCV":3,"skill-same:01M75F42454PRPASQWXAXWXBCV":76},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":6,"ownerHtmlUrl":58,"ownerBlogUrl":59,"ownerDescription":60,"updatedAt":61,"install":62,"resources":75},"01M75F42454PRPASQWXAXWXBCV","org-memory",null,"Structured knowledge base and task management using org-mode files. Query, mutate, link, and search org files and org-roam databases with the `org` CLI.","javimosch\u002Fopen-claw-skills","javimosch","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F12900508?v=4","01M6D3F2AS6PV75ET9PZ1QGP8J","Javier Leandro Arancibia","01M75B8NCTAJG9WH5YNZH7C3D8",0,"MIT","https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fdcprevere\u002Forg-memory\u002FSKILL.md",[],[],"2026-11-12 13:55:43",false,"---\nname: org-memory\nversion: 0.5.0\ndescription: \"Structured knowledge base and task management using org-mode files. Query, mutate, link, and search org files and org-roam databases with the `org` CLI.\"\nmetadata: {\"openclaw\":{\"emoji\":\"🦄\",\"homepage\":\"https:\u002F\u002Fgithub.com\u002Fdcprevere\u002Forg-cli\",\"requires\":{\"bins\":[\"org\"],\"env\":[\"ORG_MEMORY_AGENT_DIR\",\"ORG_MEMORY_HUMAN_DIR\",\"ORG_MEMORY_AGENT_DATABASE_LOCATION\",\"ORG_MEMORY_HUMAN_DATABASE_LOCATION\",\"ORG_MEMORY_AGENT_ROAM_DIR\",\"ORG_MEMORY_HUMAN_ROAM_DIR\"]},\"install\":[{\"kind\":\"download\",\"label\":\"Download from GitHub releases: https:\u002F\u002Fgithub.com\u002Fdcprevere\u002Forg-cli\u002Freleases\"}],\"scope\":{\"reads\":[\"$ORG_MEMORY_AGENT_DIR\",\"$ORG_MEMORY_HUMAN_DIR\"],\"writes\":[\"$ORG_MEMORY_AGENT_DIR\",\"$ORG_MEMORY_HUMAN_DIR\"],\"migrationReads\":[\"~\u002F.openclaw\u002Fworkspace\u002FMEMORY.md\",\"~\u002F.openclaw\u002Fworkspace\u002Fmemory\u002F\"],\"migrationWrites\":[\"~\u002F.openclaw\u002Fopenclaw.json\"]}}}\n---\n\n# org-memory\n\nUse the `org` CLI to maintain structured, linked, human-readable knowledge in org-mode files. Org files are plain text with rich structure: headlines, TODO states, tags, properties, timestamps, and links. Combined with org-roam, they form a knowledge graph backed by a SQLite database.\n\n## Shortcuts\n\nWhen your human uses these patterns, act on them directly.\n\n### Org mutations\n\n| Prefix | Alias | Action |\n|---|---|---|\n| `t:` | `Todo:` | Create TODO in human's org (extracts dates) |\n| `d:` | `Done:` \u002F `Finished:` | Mark a TODO as DONE |\n| `s:` | | Reschedule a TODO |\n| `r:` | `Note:` | Save to human's roam (knowledge\u002Finfo) |\n| `k:` | `Know:` \u002F `Remember:` | Agent learns it (agent's knowledge base) |\n\n### Behaviour modifiers\n\nThese prefixes change how you respond, not what you store.\n\n| Prefix | Action |\n|---|---|\n| `v:` | Voice reply (TTS) |\n| `?` | Research (web + files) |\n| `@` | Roam lookup |\n| `w:` | Work context (Remundo) |\n| `!` | Urgent — act now |\n| `q:` | Quick answer, no tools |\n\n### Todo — create a task\n\n`t: \u003Ctext>` or `Todo: \u003Ctext>` means \"create a task.\" Extract any date or timeframe from the text and schedule it. If the text contains a relative date (\"in 3 weeks\", \"by Friday\", \"next month\"), compute the actual date and add `--scheduled \u003Cdate>` or `--deadline \u003Cdate>`.\n\nAction: `org add \"$ORG_MEMORY_HUMAN_DIR\u002Finbox.org\" '\u003Ctitle>' --todo TODO --scheduled \u003Cdate> --db \"$ORG_MEMORY_HUMAN_DATABASE_LOCATION\" -f json`\n\nUse `--deadline` instead of `--scheduled` when the text implies a hard due date (\"by Friday\", \"due March 1st\"). Use `--scheduled` for softer timing (\"in 3 weeks\", \"next month\", \"tomorrow\").\n\nExamples:\n- \"t: submit taxes in 3 weeks\" → `org add ...\u002Finbox.org 'Submit taxes' --todo TODO --scheduled 2026-03-18`\n- \"Todo: renew passport by June\" → `org add ...\u002Finbox.org 'Renew passport' --todo TODO --deadline 2026-06-01`\n- \"t: call dentist tomorrow\" → `org add ...\u002Finbox.org 'Call dentist' --todo TODO --scheduled 2026-02-26`\n- \"Todo: book flights\" → `org add ...\u002Finbox.org 'Book flights' --todo TODO` (no date mentioned)\n\n### Note — for the human\n\n`r: \u003Ctext>` or `Note: \u003Ctext>` means \"add this to MY org files.\" It is always a task or reminder for the *human*, not for the agent.\n\nAction: `org add \"$ORG_MEMORY_HUMAN_DIR\u002Finbox.org\" '\u003Ctext>' --todo TODO -f json`\n\nIf the note includes a date or deadline, add `--scheduled \u003Cdate>` or `--deadline \u003Cdate>`. If there's no date, add it without one (the human will schedule it themselves, or ask you to).\n\nExamples:\n- \"r: Buy groceries\" → `org add ...\u002Finbox.org 'Buy groceries' --todo TODO`\n- \"Note: Review PR #42 by Friday\" → `org add ...\u002Finbox.org 'Review PR #42' --todo TODO --deadline 2026-02-28`\n- \"r: we could add feature X to the app\" → `org add ...\u002Finbox.org 'Add feature X to the app' --todo TODO`\n- \"Note: send email to Donna about safeguarding\" → `org add ...\u002Finbox.org 'Send email to Donna about safeguarding' --todo TODO`\n\n**Note vs Todo:** Both create TODO headings. The difference is intent — `t:` \u002F `Todo:` signals a concrete task (always try to extract a date), while `r:` \u002F `Note:` is broader (ideas, reminders, observations). When there's no date, add it without one.\n\n**Edge case — ideas and observations:** If the human says \"r: we could do X\" or \"Note: idea for Y\", it's still a Note. They're telling you to write it down for them. Add it as a TODO. Don't create a roam node, don't put it in the agent's knowledge base.\n\n### Schedule — reschedule a task\n\n`s: \u003Ctext>` means \"reschedule this task.\" Search for the matching TODO and update its scheduled date.\n\nAction:\n1. Search: `org todo list --state TODO --search '\u003Ctext>' -d \"$ORG_MEMORY_HUMAN_DIR\" -f json`\n2. If exactly one match: `org schedule \u003Ccustom_id> \u003Cdate> -d \"$ORG_MEMORY_HUMAN_DIR\" --db \"$ORG_MEMORY_HUMAN_DATABASE_LOCATION\" -f json`\n3. If multiple matches: show them to the human and ask which one\n4. If no match: tell the human you couldn't find it\n\nExamples:\n- \"s: taxes to next Friday\" → find \"taxes\" TODO, reschedule to next Friday\n- \"s: dentist 2026-04-01\" → find \"dentist\" TODO, reschedule to 2026-04-01\n\n### Done — mark complete\n\n`d: \u003Ctext>`, `Done: \u003Ctext>`, or `Finished: \u003Ctext>` means \"mark this task as DONE.\" Search for the matching TODO and set its state.\n\nAction:\n1. Search: `org todo list --state TODO --search '\u003Ctext>' -d \"$ORG_MEMORY_HUMAN_DIR\" -f json`\n2. If exactly one match: `org todo set \u003Ccustom_id> DONE -d \"$ORG_MEMORY_HUMAN_DIR\" --db \"$ORG_MEMORY_HUMAN_DATABASE_LOCATION\" -f json`\n3. If multiple matches: show them to the human and ask which one\n4. If no match: tell the human you couldn't find it\n\nExamples:\n- \"d: pay Nigel Kerry\" → find and mark DONE\n- \"Finished: the PR review\" → find and mark DONE\n- \"Done: groceries\" → search for \"groceries\", mark DONE\n\n### Know — for the agent\n\n`k: \u003Cinfo>`, `Know: \u003Cinfo>`, or `Remember: \u003Cinfo>` means \"store this in YOUR knowledge base for future recall.\" This is information the agent should retain across sessions.\n\nAction: Search for an existing node first (`org roam node find`), then create or update.\n\nExamples:\n- \"k: Sarah prefers morning meetings\" → Create\u002Fupdate a node for Sarah in `$ORG_MEMORY_AGENT_DIR`\n- \"Remember: The API uses OAuth2, not API keys\" → Create\u002Fupdate a node for the API in `$ORG_MEMORY_AGENT_DIR`\n\n### After every write — confirm\n\nAfter every mutation to either directory, print a line in this exact format:\n\n```\norg-memory: \u003Caction> \u003Cfile-path>\n```\n\nExamples: `org-memory: added TODO to ~\u002Forg\u002Fhuman\u002Finbox.org`, `org-memory: created node ~\u002Forg\u002Fagent\u002Fsarah.org`, `org-memory: updated ~\u002Forg\u002Fagent\u002Fsarah.org`.\n\n**This is mandatory.** Never silently write to either directory. The human should always see what you did and where.\n\n## Output format\n\nAll commands accept `-f json` for structured output with `{\"ok\":true,\"data\":...}` envelopes. Errors return `{\"ok\":false,\"error\":{\"type\":\"...\",\"message\":\"...\"}}`. Always use `-f json`.\n\n## Command safety\n\nUser-provided text (task titles, note content, search terms) must be single-quoted to prevent shell expansion. Double quotes allow `$(…)`, backticks, and variable interpolation — single quotes do not.\n\n```bash\n# Correct\norg add \"$ORG_MEMORY_HUMAN_DIR\u002Finbox.org\" 'User provided text' --todo TODO -f json\n\n# Wrong — double quotes allow shell injection\norg add \"$ORG_MEMORY_HUMAN_DIR\u002Finbox.org\" \"User provided text\" --todo TODO -f json\n```\n\nIf the text contains a literal single quote, escape it with `'\\''`:\n\n```bash\norg add \"$ORG_MEMORY_HUMAN_DIR\u002Finbox.org\" 'Don'\\''t forget' --todo TODO -f json\n```\n\nFor multi-line content, pipe via stdin instead of interpolating:\n\n```bash\nprintf '%s' 'Long text here' | org append k4t --stdin -d \"$ORG_MEMORY_AGENT_DIR\" --db \"$ORG_MEMORY_AGENT_DATABASE_LOCATION\" -f json\n```\n\nEnvironment variable paths (`$ORG_MEMORY_HUMAN_DIR`, etc.) must always be double-quoted to handle spaces, but never place user text inside double quotes.\n\n## Discovery\n\nRun `org schema` once to get a machine-readable description of all commands, arguments, and flags. Use this to construct valid commands without memorizing the interface.\n\n## Setup\n\nConfiguration is via environment variables. Set them in `openclaw.json` so they are injected into every command automatically.\n\nRequired — set these to match your directory layout:\n\n| Variable | Default | Purpose |\n|---|---|---|\n| `ORG_MEMORY_AGENT_DIR` | `~\u002Forg\u002Falcuin` | Agent's org workspace directory |\n| `ORG_MEMORY_AGENT_ROAM_DIR` | `~\u002Forg\u002Falcuin\u002Froam` | Agent's roam node directory |\n| `ORG_MEMORY_AGENT_DATABASE_LOCATION` | `~\u002Forg\u002Falcuin\u002Froam\u002F.org.db` | Agent's database |\n| `ORG_MEMORY_HUMAN_DIR` | `~\u002Forg\u002Fhuman` | Human's org workspace directory |\n| `ORG_MEMORY_HUMAN_ROAM_DIR` | `~\u002Forg\u002Fhuman\u002Froam` | Human's roam node directory |\n| `ORG_MEMORY_HUMAN_DATABASE_LOCATION` | `~\u002Forg\u002Fhuman\u002Froam\u002F.org.db` | Human's database |\n\nOptional — these have sensible defaults:\n\n| Variable | Default | Purpose |\n|---|---|---|\n| `ORG_MEMORY_USE_FOR_AGENT` | `true` | Enable the agent's own knowledge base |\n| `ORG_MEMORY_USE_FOR_HUMAN` | `true` | Enable task management in the human's org files |\n| `ORG_MEMORY_ORG_BIN` | `org` | Path to the org CLI binary |\n| `ORG_MEMORY_INBOX_FILE` | `inbox.org` | Filename for new tasks (relative to humanDir) |\n\nWorkspace dirs (`*_DIR`) hold tasks, inbox, and daily files. Roam dirs (`*_ROAM_DIR`) hold knowledge graph nodes. Databases are collocated with roam dirs by default. Roam dirs default to `\u003Cworkspace>\u002Froam` — roam nodes are never created in the workspace root.\n\nIf `ORG_MEMORY_USE_FOR_AGENT` is not `true`, skip the Knowledge management section. If `ORG_MEMORY_USE_FOR_HUMAN` is not `true`, skip the Task management and Batch operations sections.\n\nAlways pass `--db` to point at the correct database. The CLI auto-syncs the roam database after every mutation using the `--db` value. Without `--db`, the CLI defaults to `\u003Cdirectory>\u002F.org.db`.\n\nInitialize each enabled directory. If the directories already contain org files, sync them first:\n\n```bash\n# Sync existing files into the roam database (skip if starting fresh)\norg roam sync -d \"$ORG_MEMORY_AGENT_DIR\" --db \"$ORG_MEMORY_AGENT_DATABASE_LOCATION\"\norg roam sync -d \"$ORG_MEMORY_HUMAN_DIR\" --db \"$ORG_MEMORY_HUMAN_DATABASE_LOCATION\"\n\n# Create a seed node for the agent's knowledge base (skip if files already exist)\norg roam node create 'Index' -d \"$ORG_MEMORY_AGENT_DIR\" --db \"$ORG_MEMORY_AGENT_DATABASE_LOCATION\" -f json\n\n# Build the headline index (enables CUSTOM_ID auto-assignment and file-less commands)\norg index -d \"$ORG_MEMORY_AGENT_DIR\" --db \"$ORG_MEMORY_AGENT_DATABASE_LOCATION\"\norg index -d \"$ORG_MEMORY_HUMAN_DIR\" --db \"$ORG_MEMORY_HUMAN_DATABASE_LOCATION\"\n```\n\nThe roam response includes the node's ID, file path, title, and tags.\n\n## Stable identifiers (CUSTOM_ID)\n\nEvery headline created with `org add` is auto-assigned a short CUSTOM_ID (e.g. `k4t`) when an index database exists. This ID appears in the `custom_id` field of all JSON responses and as a column in text output.\n\nUse CUSTOM_IDs to refer to headlines in subsequent commands — they are stable across edits and don't require a file path:\n\n```bash\norg todo set k4t DONE -d \"$ORG_MEMORY_HUMAN_DIR\" --db \"$ORG_MEMORY_HUMAN_DATABASE_LOCATION\" -f json\norg schedule k4t 2026-03-15 -d \"$ORG_MEMORY_HUMAN_DIR\" --db \"$ORG_MEMORY_HUMAN_DATABASE_LOCATION\" -f json\norg note k4t 'Pushed back per manager request' -d \"$ORG_MEMORY_HUMAN_DIR\" --db \"$ORG_MEMORY_HUMAN_DATABASE_LOCATION\" -f json\norg append k4t 'Updated scope per review.' -d \"$ORG_MEMORY_HUMAN_DIR\" --db \"$ORG_MEMORY_HUMAN_DATABASE_LOCATION\" -f json\n```\n\nTo backfill CUSTOM_IDs on existing headlines that don't have them:\n\n```bash\norg custom-id assign -d \"$ORG_MEMORY_HUMAN_DIR\" --db \"$ORG_MEMORY_HUMAN_DATABASE_LOCATION\"\n```\n\n**Never address headlines by position number (`pos`).** Positions change when files are edited — a mutation on one headline shifts the byte positions of everything after it.\n\nSafe identifiers (in order of preference):\n1. **CUSTOM_ID** (e.g. `k4t`) — stable, short, unique\n2. **org-id** (UUID) — stable, unique\n3. **Exact title** — stable as long as the title doesn't change\n\nIf you need to mutate multiple headlines in the same file, either:\n- Use `org batch` for atomic multi-step operations (recommended)\n- Use CUSTOM_IDs or titles, never `pos`\n- If you must use `pos`, re-query after each mutation to get fresh positions\n\n## Error handling\n\nBranch on the `ok` field. Handle errors by `type`:\n\n- `file_not_found`: wrong path or deleted file\n- `headline_not_found`: identifier doesn't match; re-query to get current state\n- `parse_error`: file has syntax the parser can't handle; don't retry\n- `invalid_args`: check `org schema` or `org \u003Ccommand> --help`\n\n## References\n\nRead these on demand when the conversation requires them:\n\n- **Knowledge management** (`{baseDir}\u002Freferences\u002Fknowledge-management.md`): Read when `ORG_MEMORY_USE_FOR_AGENT=true` and you need to create\u002Fquery\u002Flink roam nodes in the agent's knowledge base.\n- **Task management** (`{baseDir}\u002Freferences\u002Ftask-management.md`): Read when `ORG_MEMORY_USE_FOR_HUMAN=true` and you need to query or mutate the human's tasks, use batch operations, or map natural-language queries to commands.\n- **Memory architecture** (`{baseDir}\u002Freferences\u002Fmemory-architecture.md`): Read at session start (file structure, session routine, ambient capture guidelines). Also contains optional memory migration instructions — only follow those if the user explicitly asks to migrate from MEMORY.md to org-mode. Migration reads\u002Fwrites files outside the declared directories (see reference for details).\n","# org-memory\n\nUse the `org` CLI to maintain structured, linked, human-readable knowledge in org-mode files. Org files are plain text with rich structure: headlines, TODO states, tags, properties, timestamps, and links. Combined with org-roam, they form a knowledge graph backed by a SQLite database.\n\n## Shortcuts\n\nWhen your human uses these patterns, act on them directly.\n\n### Org mutations\n\n| Prefix | Alias | Action |\n|---|---|---|\n| `t:` | `Todo:` | Create TODO in human's org (extracts dates) |\n| `d:` | `Done:` \u002F `Finished:` | Mark a TODO as DONE |\n| `s:` | | Reschedule a TODO |\n| `r:` | `Note:` | Save to human's roam (knowledge\u002Finfo) |\n| `k:` | `Know:` \u002F `Remember:` | Agent learns it (agent's knowledge base) |\n\n### Behaviour modifiers\n\nThese prefixes change how you respond, not what you store.\n\n| Prefix | Action |\n|---|---|\n| `v:` | Voice reply (TTS) |\n| `?` | Research (web + files) |\n| `@` | Roam lookup |\n| `w:` | Work context (Remundo) |\n| `!` | Urgent — act now |\n| `q:` | Quick answer, no tools |\n\n### Todo — create a task\n\n`t: \u003Ctext>` or `Todo: \u003Ctext>` means \"create a task.\" Extract any date or timeframe from the text and schedule it. If the text contains a relative date (\"in 3 weeks\", \"by Friday\", \"next month\"), compute the actual date and add `--scheduled \u003Cdate>` or `--deadline \u003Cdate>`.\n\nAction: `org add \"$ORG_MEMORY_HUMAN_DIR\u002Finbox.org\" '\u003Ctitle>' --todo TODO --scheduled \u003Cdate> --db \"$ORG_MEMORY_HUMAN_DATABASE_LOCATION\" -f json`\n\nUse `--deadline` instead of `--scheduled` when the text implies a hard due date (\"by Friday\", \"due March 1st\"). Use `--scheduled` for softer timing (\"in 3 weeks\", \"next month\", \"tomorrow\").\n\nExamples:\n- \"t: submit taxes in 3 weeks\" → `org add ...\u002Finbox.org 'Submit taxes' --todo TODO --scheduled 2026-03-18`\n- \"Todo: renew passport by June\" → `org add ...\u002Finbox.org 'Renew passport' --todo TODO --deadline 2026-06-01`\n- \"t: call dentist tomorrow\" → `org add ...\u002Finbox.org 'Call dentist' --todo TODO --scheduled 2026-02-26`\n- \"Todo: book flights\" → `org add ...\u002Finbox.org 'Book flights' --todo TODO` (no date mentioned)\n\n### Note — for the human\n\n`r: \u003Ctext>` or `Note: \u003Ctext>` means \"add this to MY org files.\" It is always a task or reminder for the *human*, not for the agent.\n\nAction: `org add \"$ORG_MEMORY_HUMAN_DIR\u002Finbox.org\" '\u003Ctext>' --todo TODO -f json`\n\nIf the note includes a date or deadline, add `--scheduled \u003Cdate>` or `--deadline \u003Cdate>`. If there's no date, add it without one (the human will schedule it themselves, or ask you to).\n\nExamples:\n- \"r: Buy groceries\" → `org add ...\u002Finbox.org 'Buy groceries' --todo TODO`\n- \"Note: Review PR #42 by Friday\" → `org add ...\u002Finbox.org 'Review PR #42' --todo TODO --deadline 2026-02-28`\n- \"r: we could add feature X to the app\" → `org add ...\u002Finbox.org 'Add feature X to the app' --todo TODO`\n- \"Note: send email to Donna about safeguarding\" → `org add ...\u002Finbox.org 'Send email to Donna about safeguarding' --todo TODO`\n\n**Note vs Todo:** Both create TODO headings. The difference is intent — `t:` \u002F `Todo:` signals a concrete task (always try to extract a date), while `r:` \u002F `Note:` is broader (ideas, reminders, observations). When there's no date, add it without one.\n\n**Edge case — ideas and observations:** If the human says \"r: we could do X\" or \"Note: idea for Y\", it's still a Note. They're telling you to write it down for them. Add it as a TODO. Don't create a roam node, don't put it in the agent's knowledge base.\n\n### Schedule — reschedule a task\n\n`s: \u003Ctext>` means \"reschedule this task.\" Search for the matching TODO and update its scheduled date.\n\nAction:\n1. Search: `org todo list --state TODO --search '\u003Ctext>' -d \"$ORG_MEMORY_HUMAN_DIR\" -f json`\n2. If exactly one match: `org schedule \u003Ccustom_id> \u003Cdate> -d \"$ORG_MEMORY_HUMAN_DIR\" --db \"$ORG_MEMORY_HUMAN_DATABASE_LOCATION\" -f json`\n3. If multiple matches: show them to the human and ask which one\n4. If no match: tell the human you couldn't find it\n\nExamples:\n- \"s: taxes to next Friday\" → find \"taxes\" TODO, reschedule to next Friday\n- \"s: dentist 2026-04-01\" → find \"dentist\" TODO, reschedule to 2026-04-01\n\n### Done — mark complete\n\n`d: \u003Ctext>`, `Done: \u003Ctext>`, or `Finished: \u003Ctext>` means \"mark this task as DONE.\" Search for the matching TODO and set its state.\n\nAction:\n1. Search: `org todo list --state TODO --search '\u003Ctext>' -d \"$ORG_MEMORY_HUMAN_DIR\" -f json`\n2. If exactly one match: `org todo set \u003Ccustom_id> DONE -d \"$ORG_MEMORY_HUMAN_DIR\" --db \"$ORG_MEMORY_HUMAN_DATABASE_LOCATION\" -f json`\n3. If multiple matches: show them to the human and ask which one\n4. If no match: tell the human you couldn't find it\n\nExamples:\n- \"d: pay Nigel Kerry\" → find and mark DONE\n- \"Finished: the PR review\" → find and mark DONE\n- \"Done: groceries\" → search for \"groceries\", mark DONE\n\n### Know — for the agent\n\n`k: \u003Cinfo>`, `Know: \u003Cinfo>`, or `Remember: \u003Cinfo>` means \"store this in YOUR knowledge base for future recall.\" This is information the agent should retain across sessions.\n\nAction: Search for an existing node first (`org roam node find`), then create or update.\n\nExamples:\n- \"k: Sarah prefers morning meetings\" → Create\u002Fupdate a node for Sarah in `$ORG_MEMORY_AGENT_DIR`\n- \"Remember: The API uses OAuth2, not API keys\" → Create\u002Fupdate a node for the API in `$ORG_MEMORY_AGENT_DIR`\n\n### After every write — confirm\n\nAfter every mutation to either directory, print a line in this exact format:\n\n```\norg-memory: \u003Caction> \u003Cfile-path>\n```\n\nExamples: `org-memory: added TODO to ~\u002Forg\u002Fhuman\u002Finbox.org`, `org-memory: created node ~\u002Forg\u002Fagent\u002Fsarah.org`, `org-memory: updated ~\u002Forg\u002Fagent\u002Fsarah.org`.\n\n**This is mandatory.** Never silently write to either directory. The human should always see what you did and where.\n\n## Output format\n\nAll commands accept `-f json` for structured output with `{\"ok\":true,\"data\":...}` envelopes. Errors return `{\"ok\":false,\"error\":{\"type\":\"...\",\"message\":\"...\"}}`. Always use `-f json`.\n\n## Command safety\n\nUser-provided text (task titles, note content, search terms) must be single-quoted to prevent shell expansion. Double quotes allow `$(…)`, backticks, and variable interpolation — single quotes do not.\n\n```bash\n# Correct\norg add \"$ORG_MEMORY_HUMAN_DIR\u002Finbox.org\" 'User provided text' --todo TODO -f json\n\n# Wrong — double quotes allow shell injection\norg add \"$ORG_MEMORY_HUMAN_DIR\u002Finbox.org\" \"User provided text\" --todo TODO -f json\n```\n\nIf the text contains a literal single quote, escape it with `'\\''`:\n\n```bash\norg add \"$ORG_MEMORY_HUMAN_DIR\u002Finbox.org\" 'Don'\\''t forget' --todo TODO -f json\n```\n\nFor multi-line content, pipe via stdin instead of interpolating:\n\n```bash\nprintf '%s' 'Long text here' | org append k4t --stdin -d \"$ORG_MEMORY_AGENT_DIR\" --db \"$ORG_MEMORY_AGENT_DATABASE_LOCATION\" -f json\n```\n\nEnvironment variable paths (`$ORG_MEMORY_HUMAN_DIR`, etc.) must always be double-quoted to handle spaces, but never place user text inside double quotes.\n\n## Discovery\n\nRun `org schema` once to get a machine-readable description of all commands, arguments, and flags. Use this to construct valid commands without memorizing the interface.\n\n## Setup\n\nConfiguration is via environment variables. Set them in `openclaw.json` so they are injected into every command automatically.\n\nRequired — set these to match your directory layout:\n\n| Variable | Default | Purpose |\n|---|---|---|\n| `ORG_MEMORY_AGENT_DIR` | `~\u002Forg\u002Falcuin` | Agent's org workspace directory |\n| `ORG_MEMORY_AGENT_ROAM_DIR` | `~\u002Forg\u002Falcuin\u002Froam` | Agent's roam node directory |\n| `ORG_MEMORY_AGENT_DATABASE_LOCATION` | `~\u002Forg\u002Falcuin\u002Froam\u002F.org.db` | Agent's database |\n| `ORG_MEMORY_HUMAN_DIR` | `~\u002Forg\u002Fhuman` | Human's org workspace directory |\n| `ORG_MEMORY_HUMAN_ROAM_DIR` | `~\u002Forg\u002Fhuman\u002Froam` | Human's roam node directory |\n| `ORG_MEMORY_HUMAN_DATABASE_LOCATION` | `~\u002Forg\u002Fhuman\u002Froam\u002F.org.db` | Human's database |\n\nOptional — these have sensible defaults:\n\n| Variable | Default | Purpose |\n|---|---|---|\n| `ORG_MEMORY_USE_FOR_AGENT` | `true` | Enable the agent's own knowledge base |\n| `ORG_MEMORY_USE_FOR_HUMAN` | `true` | Enable task management in the human's org files |\n| `ORG_MEMORY_ORG_BIN` | `org` | Path to the org CLI binary |\n| `ORG_MEMORY_INBOX_FILE` | `inbox.org` | Filename for new tasks (relative to humanDir) |\n\nWorkspace dirs (`*_DIR`) hold tasks, inbox, and daily files. Roam dirs (`*_ROAM_DIR`) hold knowledge graph nodes. Databases are collocated with roam dirs by default. Roam dirs default to `\u003Cworkspace>\u002Froam` — roam nodes are never created in the workspace root.\n\nIf `ORG_MEMORY_USE_FOR_AGENT` is not `true`, skip the Knowledge management section. If `ORG_MEMORY_USE_FOR_HUMAN` is not `true`, skip the Task management and Batch operations sections.\n\nAlways pass `--db` to point at the correct database. The CLI auto-syncs the roam database after every mutation using the `--db` value. Without `--db`, the CLI defaults to `\u003Cdirectory>\u002F.org.db`.\n\nInitialize each enabled directory. If the directories already contain org files, sync them first:\n\n```bash\n# Sync existing files into the roam database (skip if starting fresh)\norg roam sync -d \"$ORG_MEMORY_AGENT_DIR\" --db \"$ORG_MEMORY_AGENT_DATABASE_LOCATION\"\norg roam sync -d \"$ORG_MEMORY_HUMAN_DIR\" --db \"$ORG_MEMORY_HUMAN_DATABASE_LOCATION\"\n\n# Create a seed node for the agent's knowledge base (skip if files already exist)\norg roam node create 'Index' -d \"$ORG_MEMORY_AGENT_DIR\" --db \"$ORG_MEMORY_AGENT_DATABASE_LOCATION\" -f json\n\n# Build the headline index (enables CUSTOM_ID auto-assignment and file-less commands)\norg index -d \"$ORG_MEMORY_AGENT_DIR\" --db \"$ORG_MEMORY_AGENT_DATABASE_LOCATION\"\norg index -d \"$ORG_MEMORY_HUMAN_DIR\" --db \"$ORG_MEMORY_HUMAN_DATABASE_LOCATION\"\n```\n\nThe roam response includes the node's ID, file path, title, and tags.\n\n## Stable identifiers (CUSTOM_ID)\n\nEvery headline created with `org add` is auto-assigned a short CUSTOM_ID (e.g. `k4t`) when an index database exists. This ID appears in the `custom_id` field of all JSON responses and as a column in text output.\n\nUse CUSTOM_IDs to refer to headlines in subsequent commands — they are stable across edits and don't require a file path:\n\n```bash\norg todo set k4t DONE -d \"$ORG_MEMORY_HUMAN_DIR\" --db \"$ORG_MEMORY_HUMAN_DATABASE_LOCATION\" -f json\norg schedule k4t 2026-03-15 -d \"$ORG_MEMORY_HUMAN_DIR\" --db \"$ORG_MEMORY_HUMAN_DATABASE_LOCATION\" -f json\norg note k4t 'Pushed back per manager request' -d \"$ORG_MEMORY_HUMAN_DIR\" --db \"$ORG_MEMORY_HUMAN_DATABASE_LOCATION\" -f json\norg append k4t 'Updated scope per review.' -d \"$ORG_MEMORY_HUMAN_DIR\" --db \"$ORG_MEMORY_HUMAN_DATABASE_LOCATION\" -f json\n```\n\nTo backfill CUSTOM_IDs on existing headlines that don't have them:\n\n```bash\norg custom-id assign -d \"$ORG_MEMORY_HUMAN_DIR\" --db \"$ORG_MEMORY_HUMAN_DATABASE_LOCATION\"\n```\n\n**Never address headlines by position number (`pos`).** Positions change when files are edited — a mutation on one headline shifts the byte positions of everything after it.\n\nSafe identifiers (in order of preference):\n1. **CUSTOM_ID** (e.g. `k4t`) — stable, short, unique\n2. **org-id** (UUID) — stable, unique\n3. **Exact title** — stable as long as the title doesn't change\n\nIf you need to mutate multiple headlines in the same file, either:\n- Use `org batch` for atomic multi-step operations (recommended)\n- Use CUSTOM_IDs or titles, never `pos`\n- If you must use `pos`, re-query after each mutation to get fresh positions\n\n## Error handling\n\nBranch on the `ok` field. Handle errors by `type`:\n\n- `file_not_found`: wrong path or deleted file\n- `headline_not_found`: identifier doesn't match; re-query to get current state\n- `parse_error`: file has syntax the parser can't handle; don't retry\n- `invalid_args`: check `org schema` or `org \u003Ccommand> --help`\n\n## References\n\nRead these on demand when the conversation requires them:\n\n- **Knowledge management** (`{baseDir}\u002Freferences\u002Fknowledge-management.md`): Read when `ORG_MEMORY_USE_FOR_AGENT=true` and you need to create\u002Fquery\u002Flink roam nodes in the agent's knowledge base.\n- **Task management** (`{baseDir}\u002Freferences\u002Ftask-management.md`): Read when `ORG_MEMORY_USE_FOR_HUMAN=true` and you need to query or mutate the human's tasks, use batch operations, or map natural-language queries to commands.\n- **Memory architecture** (`{baseDir}\u002Freferences\u002Fmemory-architecture.md`): Read at session start (file structure, session routine, ambient capture guidelines). Also contains optional memory migration instructions — only follow those if the user explicitly asks to migrate from MEMORY.md to org-mode. Migration reads\u002Fwrites files outside the declared directories (see reference for details).\n",{"name":5,"version":24,"metadata":25,"description":7},"0.5.0",{"openclaw":26},{"emoji":27,"scope":28,"install":38,"homepage":42,"requires":43},"🦄",{"reads":29,"writes":32,"migrationReads":33,"migrationWrites":36},[30,31],"$ORG_MEMORY_AGENT_DIR","$ORG_MEMORY_HUMAN_DIR",[30,31],[34,35],"~\u002F.openclaw\u002Fworkspace\u002FMEMORY.md","~\u002F.openclaw\u002Fworkspace\u002Fmemory\u002F",[37],"~\u002F.openclaw\u002Fopenclaw.json",[39],{"kind":40,"label":41},"download","Download from GitHub releases: https:\u002F\u002Fgithub.com\u002Fdcprevere\u002Forg-cli\u002Freleases","https:\u002F\u002Fgithub.com\u002Fdcprevere\u002Forg-cli",{"env":44,"bins":51},[45,46,47,48,49,50],"ORG_MEMORY_AGENT_DIR","ORG_MEMORY_HUMAN_DIR","ORG_MEMORY_AGENT_DATABASE_LOCATION","ORG_MEMORY_HUMAN_DATABASE_LOCATION","ORG_MEMORY_AGENT_ROAM_DIR","ORG_MEMORY_HUMAN_ROAM_DIR",[52],"org","main","f9d3fe7cf9ac8f1ea63a0d96e98e1f510a3814db","skills\u002Fdcprevere\u002Forg-memory",1,"https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills","https:\u002F\u002Fgithub.com\u002Fjavimosch","intrane.fr","Building robust, open-source infrastructure for the commons. AI-leveraged, self-hosted, built to last.","2026-06-07 03:34:58",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add javimosch\u002Fopen-claw-skills --skill org-memory",{"tool":68,"command":69},"bunx","bunx skills add javimosch\u002Fopen-claw-skills --skill org-memory",{"tool":71,"command":72},"pnpm","pnpm dlx skills add javimosch\u002Fopen-claw-skills --skill org-memory","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fdcprevere\u002Forg-memory\u002FSKILL.md",true,[],[77,85,92,99,106,113],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":84},"01M778GGXG2VQ0YF31W2MKGMQZ","crowd-prompting","A marketplace where AI agents improve prompts, system instructions, tool descriptions, and other text-based content with domain expertise from real-world operations — and earn tokens for valuable contributions.","https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzzadrian\u002Fcrowd-prompting\u002FSKILL.md",[],[],"2026-11-15 14:19:17",{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":91,"publishedAt":84},"01M778G7BH8SBJ9FJ6C3G7CB1K","ceaser","Interact with the Ceaser privacy protocol on Base L2 using the ceaser-mcp MCP tools. This skill uses the ceaser-mcp npm package for ALL operations -- shield, unshield, note management, and protocol queries. All ceaser tool calls use CLI subcommands (npx -y ceaser-mcp \u003Csubcommand>). Ceaser is a privacy-preserving ETH wrapper using Noir\u002FUltraHonk zero-knowledge proofs on Base L2 (chain ID 8453).","https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzyra-v21\u002Fceaser\u002FSKILL.md",[],[],{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":84},"01M778FYCJQZWFKKX5FYMK3S47","ceaser-send","Fully automated private ETH transfer via Ceaser Protocol on Base L2 using the ceaser-mcp MCP tools. This skill uses the ceaser-mcp npm package for ALL operations -- all ceaser tool calls use CLI subcommands (npx -y ceaser-mcp \u003Csubcommand>). WARNING -- creates observable on-chain links between user wallet and hot wallet (see Privacy Warning). Generates an ephemeral hot wallet with BIP-39 mnemonic recovery, user funds it, agent signs and broadcasts the Shield TX automatically. Exactly one manual step required (funding the hot wallet with ETH). Uses Noir\u002FUltraHonk zero-knowledge proofs.","https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzyra-v21\u002Fceaser-send\u002FSKILL.md",[],[],{"skillNo":100,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":105,"publishedAt":84},"01M778FQQNSEYA3HJKZBPQ4M9Z","dilemm-ai","Compete in DilemmAI, the prisoner's dilemma AI arena at dilemm.ai. Use when an OpenClaw agent wants to create an account, design and submit strategy prompts for their bot, enter matchmaking, analyze historical matches and leaderboards, and iterate on bot strategy. Requires headless browser automation (no API available yet).","https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzyori\u002Fdilemm-ai\u002FSKILL.md",[],[],{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":84},"01M778FGVZX7QA2TF9BFMM37FY","moldium","Post and manage content on the Moldium blog platform. Triggered by \"post to Moldium\", \"write a blog post\", \"publish an article\", etc.","https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzyom45\u002Fmoldium\u002FSKILL.md",[],[],{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":84},"01M778F88D8PQ9MQ0KNW2TJ8ZH","arxiv-paper-reviews","Interact with arXiv Crawler API to fetch papers, read reviews, submit comments, search papers, and import papers. Use when working with arXiv papers, fetching paper lists by date\u002Fcategory\u002Finterest, viewing paper details with comments, submitting paper reviews, searching papers by title, or importing papers from arXiv URLs via API at http:\u002F\u002Fweakaccept.top:8000\u002F.","https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Farxiv-paper-reviews\u002FSKILL.md",[],[]]