skills/openclaw/zoe-capability-extender/SKILL.md
# zoe-capability-extender Add new capabilities to Zoe: new intents, MCP tools, or OpenClaw skills. ## Trigger conditions This skill activates when the system message begins with `[ZOE_SELF_BUILD: capability]`, or when the user asks to add a new ability, command, feature, or integration to Zoe. ## Prerequisites - Caller must have admin role. Check via `zoe_self_capabilities` tool. If not admin, stop. - Read the relevant architectural files before writing anything: - `services/zoe-data/inte
npx skillsauth add jason-easyazz/zoe-ai-assistant skills/openclaw/zoe-capability-extenderInstall 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.
Add new capabilities to Zoe: new intents, MCP tools, or OpenClaw skills.
This skill activates when the system message begins with [ZOE_SELF_BUILD: capability], or when the user asks to add a new ability, command, feature, or integration to Zoe.
zoe_self_capabilities tool. If not admin, stop.services/zoe-data/intent_router.py — for intent pattern additionsservices/zoe-data/mcp_server.py — for MCP tool additions/home/zoe/.openclaw/workspace/skills/ — for skill-level additionschat.py: never add if/else keyword detection to the production chat router.Choose the layer that matches the capability scope:
| Layer | When to use | Where to edit |
|-------|-------------|---------------|
| Intent router pattern | New phrase/intent that maps to existing logic | intent_router.py — add a pattern + handler |
| MCP tool | New structured action Zoe can take (API call, DB write, etc.) | mcp_server.py — add a @mcp_tool function |
| OpenClaw skill | Multi-step reasoning task or domain knowledge | New SKILL.md in /home/zoe/.openclaw/workspace/skills/<name>/ |
| Proactive trigger | Background check that fires unprompted | New Trigger class in services/zoe-data/proactive/triggers/ + register in main.py |
Ask if ambiguous:
Draft a brief spec (≤5 bullet points) describing:
Present the spec to the user and wait for confirmation.
Intent router pattern (edit intent_router.py):
# Add to the relevant pattern group — do NOT create a new if/else block in chat.py
{"pattern": r"(?i)\bnew phrase\b", "intent": "new_intent", "handler": existing_or_new_handler}
MCP tool (edit mcp_server.py):
@mcp_tool(name="tool_name", description="One-line description")
async def tool_name(param: str) -> dict:
...
OpenClaw skill (create SKILL.md):
zoe-widget-builder/SKILL.md/home/zoe/.openclaw/workspace/skills/<skill-name>/SKILL.mdProactive trigger (create .py + register):
ProactiveTrigger from proactive.triggers.baseasync def check(self, db) -> list[TriggerResult]main.py lifespan with register_trigger(MyTrigger())zoe-data (systemctl --user restart zoe-data.service) and exercise the new path manuallyjournalctl --user -u zoe-data.service -n 30 for "Registered trigger" and confirm no import errorsReport exactly what was added, which file was changed, and how to exercise the new capability. Do not add speculative follow-on features.
chat.py — this is a hard rule from the design charter.env, never hardcodeddescription= string — Zoe uses this for routingtools
Run Karpathy-style fixed-budget optimization loops for one approved asset and one objective score. Use when the user asks to optimize, auto-research, run overnight experiments, improve a prompt/tool/copy/config, or turn 'is it good?' into a number.
development
# Web Search Skill ## When to Use Use this skill when the user wants information that requires looking at the live web. ## Trigger Conditions **Use `web_search` (fast, ~3-5s) when:** - Single-source fact lookup: news, exchange rates, sports scores, weather, stock prices - One specific product at one named retailer: "what does Bunnings charge for X" - Simple factual question answerable from one good search result **Use `deep_web_research` (~60s) when:** - ANY mention of location / "near me"
tools
# Touch Panel Skill Zoe drives physical kiosk panels via `panel_*` MCP tools and can SSH into them for diagnostics and repair. ## When to use this skill - User asks about the touch screen / panel / kiosk - Diagnosing why the panel is blank, frozen, or showing wrong content - Restarting, updating, or re-provisioning a panel - Controlling what shows on the panel (navigate, announce, smart-home overlay, etc.) - Registering a new panel or managing panel tokens --- ## Current hardware (productio
tools
# zoe-widget-builder Build new dashboard widgets for Zoe's touch panel and desktop UI. ## Trigger conditions This skill activates when the system message begins with `[ZOE_SELF_BUILD: widget]`. ## Prerequisites - Caller must have admin role. Check via `zoe_self_capabilities` tool (role field). If not admin, reply: "Widget building requires admin access." - Do NOT build if the widget already exists (`zoe_self_capabilities` returns it in existing_widgets). ## Step-by-step workflow ### 1. Chec