plugins/lisa-openclaw-cursor/skills/lisa-openclaw-setup/SKILL.md
Set up OpenClaw as the chat-surface runtime for this project's staff roles. Verifies the openclaw CLI, the ~/.openclaw/openclaw.json config, a secret provider, and the required gateway capabilities (sessions_spawn, native-reply session scoping, the NO_REPLY sentinel), then writes a lean `openclaw` section to .lisa.config.json. Prerequisite for lisa-openclaw-connect-staff and lisa-openclaw-connect-repo-topic. Use when a project wants its facilitator/specialist staff reachable from Telegram or Slack.
npx skillsauth add codyswanngt/lisa lisa-openclaw-setupInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Verify the OpenClaw runtime prerequisites and record a minimal, placeholder-safe pointer in
.lisa.config.json so the connect skills have what they need. This skill writes only setup-level
pointers — never tokens, channel/topic/group ids, bot handles, or route tables. Those live in
~/.openclaw/openclaw.json (OpenClaw's own machine-local source of truth) and are written by the
connect skills, never committed.
This SKILL.md is self-contained and runs identically under Claude Code and Codex. There is no command/argument layer in Codex, so do not rely on one.
OpenClaw is a locally-hosted multi-agent gateway. A CLI (openclaw, usually at
~/.local/bin/openclaw) manages a config file (~/.openclaw/openclaw.json) that defines agents,
chat-channel bindings (Telegram groups/topics, Slack channels), and routing. A long-running
gateway process delivers chat messages to agents and back. Agents reach other agents internally
via sessions_spawn rather than by messaging each other on the chat platform.
Gather (ask only for what is missing):
telegram or slack0600 local token files). Capture only its type and a reference, never a value.The facilitator and specialists are staff roles. A companion plugin (lisa-wiki) scaffolds a
staff role's "brain" (a wiki/staff/<id>.md doc page plus a dual-runtime subagent at
.claude/agents/<id>.md and .codex/agents/<id>.toml) from a config.staff[] entry. This plugin
wires that role to a chat surface — the "body".
If config.staff[] (in .lisa.config.json) has no entries yet, tell the user to define their staff
first:
/lisa:add-role <Role> (e.g. /lisa:add-role Chief of Staff).$lisa-wiki:lisa-wiki-add-role with the role.Only auto-delegate if that skill is actually available in the active runtime; otherwise just print the exact next step and stop.
Resolve a usable openclaw binary, in order:
~/.local/bin/openclawopenclaw on PATHIf none is found, stop and tell the user to install OpenClaw and re-run. Record the resolved path for
the config's configPath/CLI discovery only if it is non-standard.
Confirm ~/.openclaw/openclaw.json exists and is valid JSON. Do not print token values found
inside it. If it is missing, instruct the user to initialize OpenClaw (its own init flow creates the
file) before continuing.
Confirm a token-storage mechanism is configured. Acceptable: the OpenClaw-configured secret provider,
an OS keychain entry, or 0600-permissioned local token files outside the repo. Capture the provider
type and a non-secret reference only.
The connect skills depend on three OpenClaw behaviors. Probe for them and fail closed (warn loudly, do not silently proceed) if any is missing:
sessions_spawn — internal agent-to-agent dispatch (how the facilitator consults specialists).thread_ts; Telegram supergroup + forum topic + root message_id), and
replies in that thread continue the same session, so concurrent threads don't share short-term
context.channels.telegram.accounts.<account-id>.groups.<group-id>.topics.<topic-id>.agentId routes group
messages as an explicit topic route instead of dropping them as a non-default account fallback.NO_REPLY sentinel — after an agent sends a message with the platform message tool, returning
exactly NO_REPLY as its assistant final prevents the gateway from posting a duplicate loose
message.Probe via the OpenClaw CLI/version and a non-mutating validate, e.g.:
openclaw --version
openclaw config validate
If a capability cannot be confirmed, record it as an unmet prerequisite. The connect skills must refuse to create routes that would post duplicates or leak cross-thread context.
Update only the openclaw section of .lisa.config.json. Parse the existing JSON, preserve all
other keys and formatting as much as practical, and write structurally (never string-splice). Shape:
{
"openclaw": {
"defaultPlatform": "telegram",
"facilitatorAgentId": "<facilitator-agent-id>",
"secretProvider": {
"type": "<secret-provider-type>",
"ref": "<secret-provider-ref>"
},
"configPath": "~/.openclaw/openclaw.json"
}
}
Rules for this section:
defaultPlatform: "telegram" or "slack".facilitatorAgentId: the default facilitator/chief id only — not per-surface routing.secretProvider: a pointer only; never token material.configPath: optional; default ~/.openclaw/openclaw.json. Set only for non-standard installs.~/.openclaw/openclaw.json.Finish with: resolved CLI path, config-file status, secret-provider type/ref, each capability probe
result (pass / warn / unknown), the openclaw section written, and the exact next command/skill
(lisa-openclaw-connect-staff or lisa-openclaw-connect-repo-topic).
lisa-openclaw-connect-staff, lisa-openclaw-connect-repo-topic. Staff "brains" come from the
lisa-wiki plugin's add-role.
tools
--- name: harper-realtime description: This skill should be used when adding or troubleshooting Harper (HarperDB/Fabric) real-time behavior: MQTT topics, WebSocket resource subscriptions, resource publish/subscribe handlers, SSE-style streaming routes, and local subscriber verification. Pairs with harper-resources, harper-config-yaml, harper-schema-graphql, and harper-build-and-deploy. --- # Harper Realtime ## Overview Harper exposes live data through the same Resource model used for REST and
tools
--- name: harper-realtime description: This skill should be used when adding or troubleshooting Harper (HarperDB/Fabric) real-time behavior: MQTT topics, WebSocket resource subscriptions, resource publish/subscribe handlers, SSE-style streaming routes, and local subscriber verification. Pairs with harper-resources, harper-config-yaml, harper-schema-graphql, and harper-build-and-deploy. --- # Harper Realtime ## Overview Harper exposes live data through the same Resource model used for REST and
tools
--- name: harper-realtime description: This skill should be used when adding or troubleshooting Harper (HarperDB/Fabric) real-time behavior: MQTT topics, WebSocket resource subscriptions, resource publish/subscribe handlers, SSE-style streaming routes, and local subscriber verification. Pairs with harper-resources, harper-config-yaml, harper-schema-graphql, and harper-build-and-deploy. --- # Harper Realtime ## Overview Harper exposes live data through the same Resource model used for REST and
tools
--- name: harper-realtime description: This skill should be used when adding or troubleshooting Harper (HarperDB/Fabric) real-time behavior: MQTT topics, WebSocket resource subscriptions, resource publish/subscribe handlers, SSE-style streaming routes, and local subscriber verification. Pairs with harper-resources, harper-config-yaml, harper-schema-graphql, and harper-build-and-deploy. --- # Harper Realtime ## Overview Harper exposes live data through the same Resource model used for REST and