diff --git a/docs/concepts/agent-workspace.md b/docs/concepts/agent-workspace.md
index f84683159c2..532347efcc2 100644
--- a/docs/concepts/agent-workspace.md
+++ b/docs/concepts/agent-workspace.md
@@ -60,40 +60,40 @@ Older installs may have created `~/openclaw`. Keeping multiple workspace directo
These are the standard files OpenClaw expects inside the workspace:
-
+
Operating instructions for the agent and how it should use memory. Loaded at the start of every session. Good place for rules, priorities, and "how to behave" details.
-
+
Persona, tone, and boundaries. Loaded every session. Guide: [SOUL.md personality guide](/concepts/soul).
-
+
Who the user is and how to address them. Loaded every session.
-
+
The agent's name, vibe, and emoji. Created/updated during the bootstrap ritual.
-
+
Notes about your local tools and conventions. Does not control tool availability; it is only guidance.
-
+
Optional tiny checklist for heartbeat runs. Keep it short to avoid token burn.
-
+
Optional startup checklist run automatically on gateway restart (when [internal hooks](/automation/hooks) are enabled). Keep it short; use the message tool for outbound sends.
-
+
One-time first-run ritual. Only created for a brand-new workspace. Delete it after the ritual is complete.
-
+
Daily memory log (one file per day). Recommended to read today + yesterday on session start.
-
+
Curated long-term memory. Only load in the main, private session (not shared/group contexts). See [Memory](/concepts/memory) for the workflow and automatic memory flush.
-
+
Workspace-specific skills. Highest-precedence skill location for that workspace. Overrides project agent skills, personal agent skills, managed skills, bundled skills, and `skills.load.extraDirs` when names collide.
-
+
Canvas UI files for node displays (for example `canvas/index.html`).
@@ -224,7 +224,7 @@ Suggested `.gitignore` starter:
## Related
-- [Heartbeat](/gateway/heartbeat) — HEARTBEAT.md workspace file
-- [Sandboxing](/gateway/sandboxing) — workspace access in sandboxed environments
-- [Session](/concepts/session) — session storage paths
-- [Standing orders](/automation/standing-orders) — persistent instructions in workspace files
+- [Heartbeat](/gateway/heartbeat) - HEARTBEAT.md workspace file
+- [Sandboxing](/gateway/sandboxing) - workspace access in sandboxed environments
+- [Session](/concepts/session) - session storage paths
+- [Standing orders](/automation/standing-orders) - persistent instructions in workspace files
diff --git a/docs/help/index.md b/docs/help/index.md
index ea5998ec161..72fd8c89ad9 100644
--- a/docs/help/index.md
+++ b/docs/help/index.md
@@ -8,32 +8,32 @@ title: "Help"
Quick "get unstuck" path for the most common problems:
-- [Troubleshooting](/help/troubleshooting) — symptom-first decision tree
-- [Debugging](/help/debugging) — watch mode, raw streams, dev profile
-- [Install sanity](/install/node#troubleshooting) — Node / npm / PATH checks
-- [Gateway troubleshooting](/gateway/troubleshooting) — gateway-specific issues
-- [Doctor](/gateway/doctor) — automated repair + diagnostic bundle
+- [Troubleshooting](/help/troubleshooting) - symptom-first decision tree
+- [Debugging](/help/debugging) - watch mode, raw streams, dev profile
+- [Install sanity](/install/node#troubleshooting) - Node / npm / PATH checks
+- [Gateway troubleshooting](/gateway/troubleshooting) - gateway-specific issues
+- [Doctor](/gateway/doctor) - automated repair + diagnostic bundle
## FAQ
-- [FAQ](/help/faq) — day-to-day concepts and operational questions
-- [First-run FAQ](/help/faq-first-run) — install, onboard, auth, subscriptions, early failures
-- [Models FAQ](/help/faq-models) — model selection, failover, auth profiles
+- [FAQ](/help/faq) - day-to-day concepts and operational questions
+- [First-run FAQ](/help/faq-first-run) - install, onboard, auth, subscriptions, early failures
+- [Models FAQ](/help/faq-models) - model selection, failover, auth profiles
## Diagnostics
-- [Environment variables](/help/environment) — where OpenClaw loads env vars and precedence
-- [Diagnostics flags](/diagnostics/flags) — runtime diagnostics and verbose modes
-- [Node + tsx crash](/debug/node-issue) — specific Node / tsx runtime crash scenarios
+- [Environment variables](/help/environment) - where OpenClaw loads env vars and precedence
+- [Diagnostics flags](/diagnostics/flags) - runtime diagnostics and verbose modes
+- [Node + tsx crash](/debug/node-issue) - specific Node / tsx runtime crash scenarios
## Testing
-- [Testing](/help/testing) — test suites and Docker runners
-- [Update and plugin tests](/help/testing-updates-plugins) — package update, migration, and plugin install validation
-- [Live tests](/help/testing-live) — network-touching provider and CLI smokes
+- [Testing](/help/testing) - test suites and Docker runners
+- [Update and plugin tests](/help/testing-updates-plugins) - package update, migration, and plugin install validation
+- [Live tests](/help/testing-live) - network-touching provider and CLI smokes
## Community and meta
-- [OpenClaw lore](/start/lore) — the story
-- [Docs hubs](/start/hubs) — how this documentation is organized
-- [Docs directory](/start/docs-directory) — full file map
+- [OpenClaw lore](/start/lore) - the story
+- [Docs hubs](/start/hubs) - how this documentation is organized
+- [Docs directory](/start/docs-directory) - full file map
diff --git a/docs/plugins/sdk-entrypoints.md b/docs/plugins/sdk-entrypoints.md
index 1a24c9c1f09..69052d62097 100644
--- a/docs/plugins/sdk-entrypoints.md
+++ b/docs/plugins/sdk-entrypoints.md
@@ -71,12 +71,12 @@ export default definePluginEntry({
| Field | Type | Required | Default |
| -------------- | ---------------------------------------------------------------- | -------- | ------------------- |
-| `id` | `string` | Yes | — |
-| `name` | `string` | Yes | — |
-| `description` | `string` | Yes | — |
-| `kind` | `string` | No | — |
+| `id` | `string` | Yes | - |
+| `name` | `string` | Yes | - |
+| `description` | `string` | Yes | - |
+| `kind` | `string` | No | - |
| `configSchema` | `OpenClawPluginConfigSchema \| () => OpenClawPluginConfigSchema` | No | Empty object schema |
-| `register` | `(api: OpenClawPluginApi) => void` | Yes | — |
+| `register` | `(api: OpenClawPluginApi) => void` | Yes | - |
- `id` must match your `openclaw.plugin.json` manifest.
- `kind` is for exclusive slots: `"memory"` or `"context-engine"`.
@@ -112,14 +112,14 @@ export default defineChannelPluginEntry({
| Field | Type | Required | Default |
| --------------------- | ---------------------------------------------------------------- | -------- | ------------------- |
-| `id` | `string` | Yes | — |
-| `name` | `string` | Yes | — |
-| `description` | `string` | Yes | — |
-| `plugin` | `ChannelPlugin` | Yes | — |
+| `id` | `string` | Yes | - |
+| `name` | `string` | Yes | - |
+| `description` | `string` | Yes | - |
+| `plugin` | `ChannelPlugin` | Yes | - |
| `configSchema` | `OpenClawPluginConfigSchema \| () => OpenClawPluginConfigSchema` | No | Empty object schema |
-| `setRuntime` | `(runtime: PluginRuntime) => void` | No | — |
-| `registerCliMetadata` | `(api: OpenClawPluginApi) => void` | No | — |
-| `registerFull` | `(api: OpenClawPluginApi) => void` | No | — |
+| `setRuntime` | `(runtime: PluginRuntime) => void` | No | - |
+| `registerCliMetadata` | `(api: OpenClawPluginApi) => void` | No | - |
+| `registerFull` | `(api: OpenClawPluginApi) => void` | No | - |
- `setRuntime` is called during registration so you can store the runtime reference
(typically via `createPluginRuntimeStore`). It is skipped during CLI metadata
@@ -275,8 +275,8 @@ Use `openclaw plugins inspect ` to see a plugin's shape.
## Related
-- [SDK Overview](/plugins/sdk-overview) — registration API and subpath reference
-- [Runtime Helpers](/plugins/sdk-runtime) — `api.runtime` and `createPluginRuntimeStore`
-- [Setup and Config](/plugins/sdk-setup) — manifest, setup entry, deferred loading
-- [Channel Plugins](/plugins/sdk-channel-plugins) — building the `ChannelPlugin` object
-- [Provider Plugins](/plugins/sdk-provider-plugins) — provider registration and hooks
+- [SDK Overview](/plugins/sdk-overview) - registration API and subpath reference
+- [Runtime Helpers](/plugins/sdk-runtime) - `api.runtime` and `createPluginRuntimeStore`
+- [Setup and Config](/plugins/sdk-setup) - manifest, setup entry, deferred loading
+- [Channel Plugins](/plugins/sdk-channel-plugins) - building the `ChannelPlugin` object
+- [Provider Plugins](/plugins/sdk-provider-plugins) - provider registration and hooks
diff --git a/docs/tools/exec-approvals.md b/docs/tools/exec-approvals.md
index 49df3a6c80f..e616bf286bd 100644
--- a/docs/tools/exec-approvals.md
+++ b/docs/tools/exec-approvals.md
@@ -18,7 +18,7 @@ skips approvals).
Effective policy is the **stricter** of `tools.exec.*` and approvals
defaults; if an approvals field is omitted, the `tools.exec` value is
-used. Host exec also uses local approvals state on that machine — a
+used. Host exec also uses local approvals state on that machine - a
host-local `ask: "always"` in `~/.openclaw/exec-approvals.json` keeps
prompting even if session or config defaults request `ask: "on-miss"`.
@@ -116,18 +116,18 @@ Example schema:
### `exec.security`
- - `deny` — block all host exec requests.
- - `allowlist` — allow only allowlisted commands.
- - `full` — allow everything (equivalent to elevated).
+ - `deny` - block all host exec requests.
+ - `allowlist` - allow only allowlisted commands.
+ - `full` - allow everything (equivalent to elevated).
### `exec.ask`
- - `off` — never prompt.
- - `on-miss` — prompt only when the allowlist does not match.
- - `always` — prompt on every command. `allow-always` durable trust does **not** suppress prompts when effective ask mode is `always`.
+ - `off` - never prompt.
+ - `on-miss` - prompt only when the allowlist does not match.
+ - `always` - prompt on every command. `allow-always` durable trust does **not** suppress prompts when effective ask mode is `always`.
@@ -136,9 +136,9 @@ Example schema:
Resolution when a prompt is required but no UI is reachable.
-- `deny` — block.
-- `allowlist` — allow only if allowlist matches.
-- `full` — allow.
+- `deny` - block.
+- `allowlist` - allow only if allowlist matches.
+- `full` - allow.
@@ -168,7 +168,7 @@ automatically.
## YOLO mode (no-approval)
If you want host exec to run without approval prompts, you must open
-**both** policy layers — requested exec policy in OpenClaw config
+**both** policy layers - requested exec policy in OpenClaw config
(`tools.exec.*`) **and** host-local approvals policy in
`~/.openclaw/exec-approvals.json`.
@@ -194,7 +194,7 @@ CLI-backed providers that expose their own noninteractive permission mode
can follow this policy. Claude CLI adds
`--permission-mode bypassPermissions` when OpenClaw's requested exec
policy is YOLO. Override that backend behavior with explicit Claude args
-under `agents.defaults.cliBackends.claude-cli.args` / `resumeArgs` —
+under `agents.defaults.cliBackends.claude-cli.args` / `resumeArgs` -
for example `--permission-mode default`, `acceptEdits`, or
`bypassPermissions`.
@@ -365,7 +365,7 @@ skill bin list. Disable this if you want strict manual allowlists.
For safe bins (the stdin-only fast-path), interpreter binding details, and
how to forward approval prompts to Slack/Discord/Telegram (or run them as
native approval clients), see
-[Exec approvals — advanced](/tools/exec-approvals-advanced).
+[Exec approvals - advanced](/tools/exec-approvals-advanced).
## Control UI editing
@@ -379,7 +379,7 @@ Nodes must advertise `system.execApprovals.get/set` (macOS app or
headless node host). If a node does not advertise exec approvals yet,
edit its local `~/.openclaw/exec-approvals.json` directly.
-CLI: `openclaw approvals` supports gateway or node editing — see
+CLI: `openclaw approvals` supports gateway or node editing - see
[Approvals CLI](/cli/approvals).
## Approval flow
@@ -435,7 +435,7 @@ run.
## Related
-
+
Safe bins, interpreter binding, and approval forwarding to chat.
diff --git a/docs/tools/lobster.md b/docs/tools/lobster.md
index 693746b98c0..b60b659b1b0 100644
--- a/docs/tools/lobster.md
+++ b/docs/tools/lobster.md
@@ -26,9 +26,9 @@ Today, complex workflows require many back-and-forth tool calls. Each call costs
Lobster is intentionally small. The goal is not "a new language," it's a predictable, AI-friendly pipeline spec with first-class approvals and resume tokens.
-- **Approve/resume is built in**: A normal program can prompt a human, but it can’t _pause and resume_ with a durable token without you inventing that runtime yourself.
-- **Determinism + auditability**: Pipelines are data, so they’re easy to log, diff, replay, and review.
-- **Constrained surface for AI**: A tiny grammar + JSON piping reduces “creative” code paths and makes validation realistic.
+- **Approve/resume is built in**: A normal program can prompt a human, but it can't _pause and resume_ with a durable token without you inventing that runtime yourself.
+- **Determinism + auditability**: Pipelines are data, so they're easy to log, diff, replay, and review.
+- **Constrained surface for AI**: A tiny grammar + JSON piping reduces "creative" code paths and makes validation realistic.
- **Safety policy baked in**: Timeouts, output caps, sandbox checks, and allowlists are enforced by the runtime, not each script.
- **Still programmable**: Each step can call any CLI or script. If you want JS/TS, generate `.lobster` files from code.
@@ -39,7 +39,7 @@ If the pipeline pauses for approval, the tool returns a `resumeToken` so you can
## Pattern: small CLI + JSON pipes + approvals
-Build tiny commands that speak JSON, then chain them into a single Lobster call. (Example command names below — swap in your own.)
+Build tiny commands that speak JSON, then chain them into a single Lobster call. (Example command names below - swap in your own.)
```bash
inbox list --json
@@ -148,7 +148,7 @@ steps:
Notes:
-- `stdin: $step.stdout` and `stdin: $step.json` pass a prior step’s output.
+- `stdin: $step.stdout` and `stdin: $step.json` pass a prior step's output.
- `condition` (or `when`) can gate steps on `$step.approved`.
## Install Lobster
@@ -317,10 +317,10 @@ OpenProse pairs well with Lobster: use `/prose` to orchestrate multi-agent prep,
## Safety
-- **Local in-process only** — workflows execute inside the gateway process; no network calls from the plugin itself.
-- **No secrets** — Lobster doesn't manage OAuth; it calls OpenClaw tools that do.
-- **Sandbox-aware** — disabled when the tool context is sandboxed.
-- **Hardened** — timeouts and output caps enforced by the embedded runner.
+- **Local in-process only** - workflows execute inside the gateway process; no network calls from the plugin itself.
+- **No secrets** - Lobster doesn't manage OAuth; it calls OpenClaw tools that do.
+- **Sandbox-aware** - disabled when the tool context is sandboxed.
+- **Hardened** - timeouts and output caps enforced by the embedded runner.
## Troubleshooting
@@ -336,13 +336,13 @@ OpenProse pairs well with Lobster: use `/prose` to orchestrate multi-agent prep,
## Case study: community workflows
-One public example: a “second brain” CLI + Lobster pipelines that manage three Markdown vaults (personal, partner, shared). The CLI emits JSON for stats, inbox listings, and stale scans; Lobster chains those commands into workflows like `weekly-review`, `inbox-triage`, `memory-consolidation`, and `shared-task-sync`, each with approval gates. AI handles judgment (categorization) when available and falls back to deterministic rules when not.
+One public example: a "second brain" CLI + Lobster pipelines that manage three Markdown vaults (personal, partner, shared). The CLI emits JSON for stats, inbox listings, and stale scans; Lobster chains those commands into workflows like `weekly-review`, `inbox-triage`, `memory-consolidation`, and `shared-task-sync`, each with approval gates. AI handles judgment (categorization) when available and falls back to deterministic rules when not.
- Thread: [https://x.com/plattenschieber/status/2014508656335770033](https://x.com/plattenschieber/status/2014508656335770033)
- Repo: [https://github.com/bloomedai/brain-cli](https://github.com/bloomedai/brain-cli)
## Related
-- [Automation & Tasks](/automation) — scheduling Lobster workflows
-- [Automation Overview](/automation) — all automation mechanisms
-- [Tools Overview](/tools) — all available agent tools
+- [Automation & Tasks](/automation) - scheduling Lobster workflows
+- [Automation Overview](/automation) - all automation mechanisms
+- [Tools Overview](/tools) - all available agent tools