plugins/lisa-openclaw/skills/lisa-openclaw-connect-staff/SKILL.md
Connect staff roles to a human chat surface (Telegram or Slack) via OpenClaw using a facilitator/specialist hub-and-spoke model. Registers bots/apps, creates or reuses the human-facing surface, wires routes in ~/.openclaw/openclaw.json, writes facilitator/specialist agent prompts, validates the gateway, resets stale sessions, and runs an end-to-end route test. Use when you want a "chief of staff" facilitator and its specialists reachable from chat. Requires lisa-openclaw-setup first.
npx skillsauth add codyswanngt/lisa lisa-openclaw-connect-staffInstall 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.
Wire existing staff roles into a working hub-and-spoke chat deployment on Telegram or Slack through OpenClaw. Humans talk only to the facilitator (the "chief of staff"); the facilitator consults specialists internally and synthesizes one answer back to the human.
This SKILL.md is the complete, runnable definition for both Claude Code and Codex. Codex has no
command or $ARGUMENTS layer, so every behavior — including platform selection — is specified here.
Keep all real values (org names, ids, handles, tokens, paths) out of any committed file; they belong
only in ~/.openclaw/openclaw.json (machine-local, never committed).
lisa-openclaw-setup has run (an openclaw section exists in .lisa.config.json, and the
required gateway capabilities — sessions_spawn, native-reply session scoping, NO_REPLY — are
confirmed). If a capability is unmet, fail closed: do not create routes that would post
duplicates or bleed cross-thread context.config.staff[] and each has a dual-runtime subagent
(.claude/agents/<id>.md + .codex/agents/<id>.toml). If a role or its subagent is missing:
/lisa:add-role <Role> first.$lisa-wiki:lisa-wiki-add-role first.
Only auto-delegate if that skill is available in the active runtime; otherwise print the exact
next step and stop. Never infer agent ids from display names — always use config.staff[].id.Resolve the platform with this precedence:
telegram or slack).openclaw.defaultPlatform from .lisa.config.json.Connect staff via telegram or slack?sessions_spawn with explicit
agentIds — never by messaging another bot on the chat platform (bot-to-bot delivery is
unreliable; treat any visible specialist "workroom" as an audit copy, not proof of delivery).NO_REPLY as its assistant final
so the gateway does not post a duplicate loose message.[Facilitator]; the platform shows
identity.private (default) or public; for Telegram, whether any
specialist audit topics are wanted (default: none)For exact route shapes and the facilitator/specialist prompt text, read references/platform-routing.md and references/prompts.md.
Read only what you need; never print token contents:
~/.openclaw/openclaw.json (existing agents, channels, groups, topics, routes)config.staff[] and the staff subagent filesTelegram: create or reuse one organization supergroup with forum topics enabled; create one
human-facing facilitator topic; create one bot per visible identity only when separate names/avatars
are needed; specialist audit topics only if explicitly requested. The Bot API chat_id for a
supergroup is the signed id (usually starting -100); the topic id is the
message_thread_id.
Slack: use Socket Mode for a workstation-hosted gateway unless told otherwise; create or reuse one
human-facing facilitator channel (default <organization-slug>-chief-of-staff, private/invite-only
unless public is requested); bind routes by stable channel id, not channel name; optional
specialist workrooms are audit-only.
Telegram bot-to-bot and bot-originated-topic messages can fail to wake other bots — this is exactly
why internal sessions_spawn is the default route.
xoxb/xapp tokens.0600 local files outside the repo).
Never print/paste tokens into chat, logs, docs, or any committed file. After saving, verify the
token via an OpenClaw probe or platform API check without exposing it.For the facilitator and each specialist, ensure the OpenClaw agent exists and its prompt encodes the
hub-and-spoke contract. Use the prompt templates in references/prompts.md.
The facilitator prompt must require: consult ≥1 specialist before substantive answers; treat the
current thread/native-reply root as the session boundary; route via sessions_spawn with explicit
agentIds; acknowledge → yield/wait → evaluate → synthesize → reply in the original thread; return
NO_REPLY after any message-tool send; isolate/clear/archive consulted specialist context after the
investigation. Specialist prompts must require: accept work only via internal dispatch; return
concise structured results; never post to human-facing surfaces.
Edit ~/.openclaw/openclaw.json carefully (see references/platform-routing.md
for exact shapes). Back up the file first. Parse JSON, change only the intended keys, and preserve
all unrelated agents, channels, routes, and tokens:
agents.listsubagents.allowAgents = the specialist ids; set
subagents.requireAgentId = true when supportedchannels.slack.replyToModeByChatType.channel = "all" so acknowledgements and final
answers are real thread repliesShow the exact route keys you will change before writing.
Run, waiting for the gateway to warm up before declaring success:
openclaw config validate
openclaw gateway restart
openclaw channels status --probe --timeout 90000
Archive (don't delete) affected session files under ~/.openclaw/session-archive/, remove active
session pointers for the changed routes, restart the gateway, and re-probe. Old session history can
preserve stale routing instructions after a prompt/config change.
Do not call the work complete until the live loop passes. Acceptance criteria:
sessions_spawn consultation with ≥1 explicit specialist id.NO_REPLY rule held).If the test fails, inspect gateway logs and sessions before changing config; check the bot's admin rights (Telegram) / app channel membership and scopes (Slack), and mention-gating, first.
Finish with: platform and human-facing surface; surfaces created/reused; apps/bots registered and any pending; token storage location (no values); facilitator + specialist agents created/updated; validation results; end-to-end test result; and any remaining manual or cooldown follow-up.
lisa-openclaw-setup (run first), lisa-openclaw-connect-repo-topic (Telegram repo-coding topics).
Staff "brains" come from the lisa-wiki plugin's add-role.
documentation
Onboard a user to the project via its LLM Wiki. Interviews the user about themselves in relation to the project, captures that to project-scoped memory only, then gives a guided tour of what the project is and sample questions they can ask. Use when someone is new to the project or asks to be onboarded. Read-mostly — it does not open PRs or write PII into the wiki.
documentation
Migrate an existing, hand-rolled wiki implementation onto the lisa-wiki kernel — phased and compatibility-first, with a strict no-loss guarantee. Use when adopting lisa-wiki in a repo that already has its own wiki/, ingest skills, docs, or roles. Renaming things into the canonical shape is fine; losing functionality or data is not. Ends by running /doctor.
development
Health-check the LLM Wiki. Reports orphan pages, contradictions, stale claims, broken internal links, missing index/log coverage, structure-manifest violations, and secret/tenant leaks. Use periodically or before hardening a wiki. Read-only — it reports findings, it does not fix them.
testing
Ingest source material into the LLM Wiki. With an argument (URL, file path, or prompt) it ingests that one source; with no argument it runs a full ingest across every enabled non-external-write source. Routes to the right connector, then runs the ordered pipeline (source note → synthesis → index → log → verify → state → commit/PR). Use whenever new knowledge should enter the wiki.