{
  "agent:main:main": {
    "sessionId": "bb578c09-4126-4d94-aff1-7315ed07d213",
    "updatedAt": 1775498400622,
    "systemSent": true,
    "abortedLastRun": false,
    "chatType": "direct",
    "deliveryContext": {
      "to": "heartbeat"
    },
    "lastTo": "heartbeat",
    "origin": {
      "label": "heartbeat",
      "provider": "heartbeat",
      "from": "heartbeat",
      "to": "heartbeat"
    },
    "sessionFile": "/root/.clawdbot-builder/agents/main/sessions/bb578c09-4126-4d94-aff1-7315ed07d213.jsonl",
    "compactionCount": 0,
    "skillsSnapshot": {
      "prompt": "\n\nThe following skills provide specialized instructions for specific tasks.\nUse the read tool to load a skill's file when the task matches its description.\nWhen a skill file references a relative path, resolve it against the skill directory (parent of SKILL.md / dirname of the path) and use that absolute path in tool commands.\n\n<available_skills>\n  <skill>\n    <name>acp-router</name>\n    <description>Route plain-language requests for Pi, Claude Code, Codex, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI, Qwen, Kiro, Kimi, iFlow, Factory Droid, Kilocode, or ACP harness work into either OpenClaw ACP runtime sessions or direct acpx-driven sessions (&quot;telephone game&quot; flow). For coding-agent thread requests, read this skill first, then use only `sessions_spawn` for thread creation.</description>\n    <location>/usr/lib/node_modules/openclaw/dist/extensions/acpx/skills/acp-router/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>clawflow</name>\n    <description>Use when work should span one or more detached tasks but still behave like one job with a single owner context. ClawFlow is the runtime substrate under authoring layers like Lobster, acpx, or plain code. Keep conditional logic in the caller; use ClawFlow for flow identity, waiting, outputs, and user-facing emergence.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/clawflow/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>clawflow-inbox-triage</name>\n    <description>Example ClawFlow authoring pattern for inbox triage. Use when messages need different treatment based on intent, with some routes notifying immediately, some waiting on outside answers, and others rolling into a later summary.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/clawflow-inbox-triage/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>coding-agent</name>\n    <description>Delegate coding tasks to Codex, Claude Code, or Pi agents via background process. Use when: (1) building/creating new features or apps, (2) reviewing PRs (spawn in temp dir), (3) refactoring large codebases, (4) iterative coding that needs file exploration. NOT for: simple one-liner fixes (just edit), reading code (use read tool), thread-bound ACP harness requests in chat (for example spawn/run Codex or Claude Code in a Discord thread; use sessions_spawn with runtime:&quot;acp&quot;), or any work in ~/clawd workspace (never spawn agents here). Claude Code: use --print --permission-mode bypassPermissions (no PTY). Codex/Pi/OpenCode: pty:true required.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/coding-agent/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>gh-issues</name>\n    <description>Fetch GitHub issues, spawn sub-agents to implement fixes and open PRs, then monitor and address PR review comments. Usage: /gh-issues [owner/repo] [--label bug] [--limit 5] [--milestone v1.0] [--assignee @me] [--fork user/repo] [--watch] [--interval 5] [--reviews-only] [--cron] [--dry-run] [--model glm-5] [--notify-channel -1002381931352]</description>\n    <location>/usr/lib/node_modules/openclaw/skills/gh-issues/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>github</name>\n    <description>GitHub operations via `gh` CLI: issues, PRs, CI runs, code review, API queries. Use when: (1) checking PR status or CI, (2) creating/commenting on issues, (3) listing/filtering PRs or issues, (4) viewing run logs. NOT for: complex web UI interactions requiring manual browser flows (use browser tooling when available), bulk operations across many repos (script with gh api), or when gh auth is not configured.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/github/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>healthcheck</name>\n    <description>Host security hardening and risk-tolerance configuration for OpenClaw deployments. Use when a user asks for security audits, firewall/SSH/update hardening, risk posture, exposure review, OpenClaw cron scheduling for periodic checks, or version status checks on a machine running OpenClaw (laptop, workstation, Pi, VPS).</description>\n    <location>/usr/lib/node_modules/openclaw/skills/healthcheck/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>mcporter</name>\n    <description>Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/mcporter/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>node-connect</name>\n    <description>Diagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps. Use when QR/setup code/manual connect fails, local Wi-Fi works but VPS/tailnet does not, or errors mention pairing required, unauthorized, bootstrap token invalid or expired, gateway.bind, gateway.remote.url, Tailscale, or plugins.entries.device-pair.config.publicUrl.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/node-connect/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>openai-whisper</name>\n    <description>Local speech-to-text with the Whisper CLI (no API key).</description>\n    <location>/usr/lib/node_modules/openclaw/skills/openai-whisper/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>openai-whisper-api</name>\n    <description>Transcribe audio via OpenAI Audio Transcriptions API (Whisper).</description>\n    <location>/usr/lib/node_modules/openclaw/skills/openai-whisper-api/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>skill-creator</name>\n    <description>Create, edit, improve, or audit AgentSkills. Use when creating a new skill from scratch or when asked to improve, review, audit, tidy up, or clean up an existing skill or SKILL.md file. Also use when editing or restructuring a skill directory (moving files to references/ or scripts/, removing stale content, validating against the AgentSkills spec). Triggers on phrases like &quot;create a skill&quot;, &quot;author a skill&quot;, &quot;tidy up a skill&quot;, &quot;improve this skill&quot;, &quot;review the skill&quot;, &quot;clean up the skill&quot;, &quot;audit the skill&quot;.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/skill-creator/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>tmux</name>\n    <description>Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/tmux/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>video-frames</name>\n    <description>Extract frames or short clips from videos using ffmpeg.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/video-frames/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>weather</name>\n    <description>Get current weather and forecasts via wttr.in or Open-Meteo. Use when: user asks about weather, temperature, or forecasts for any location. NOT for: historical weather data, severe weather alerts, or detailed meteorological analysis. No API key needed.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/weather/SKILL.md</location>\n  </skill>\n</available_skills>",
      "skills": [
        {
          "name": "acp-router"
        },
        {
          "name": "clawflow"
        },
        {
          "name": "clawflow-inbox-triage"
        },
        {
          "name": "coding-agent",
          "requiredEnv": []
        },
        {
          "name": "gh-issues",
          "primaryEnv": "GH_TOKEN",
          "requiredEnv": []
        },
        {
          "name": "github",
          "requiredEnv": []
        },
        {
          "name": "healthcheck"
        },
        {
          "name": "mcporter",
          "requiredEnv": []
        },
        {
          "name": "node-connect"
        },
        {
          "name": "openai-whisper",
          "requiredEnv": []
        },
        {
          "name": "openai-whisper-api",
          "primaryEnv": "OPENAI_API_KEY",
          "requiredEnv": [
            "OPENAI_API_KEY"
          ]
        },
        {
          "name": "skill-creator"
        },
        {
          "name": "tmux",
          "requiredEnv": []
        },
        {
          "name": "video-frames",
          "requiredEnv": []
        },
        {
          "name": "weather",
          "requiredEnv": []
        }
      ],
      "resolvedSkills": [
        {
          "name": "acp-router",
          "description": "Route plain-language requests for Pi, Claude Code, Codex, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI, Qwen, Kiro, Kimi, iFlow, Factory Droid, Kilocode, or ACP harness work into either OpenClaw ACP runtime sessions or direct acpx-driven sessions (\"telephone game\" flow). For coding-agent thread requests, read this skill first, then use only `sessions_spawn` for thread creation.",
          "filePath": "/usr/lib/node_modules/openclaw/dist/extensions/acpx/skills/acp-router/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/dist/extensions/acpx/skills/acp-router",
          "source": "openclaw-extra",
          "disableModelInvocation": false
        },
        {
          "name": "clawflow",
          "description": "Use when work should span one or more detached tasks but still behave like one job with a single owner context. ClawFlow is the runtime substrate under authoring layers like Lobster, acpx, or plain code. Keep conditional logic in the caller; use ClawFlow for flow identity, waiting, outputs, and user-facing emergence.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/clawflow/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/clawflow",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "clawflow-inbox-triage",
          "description": "Example ClawFlow authoring pattern for inbox triage. Use when messages need different treatment based on intent, with some routes notifying immediately, some waiting on outside answers, and others rolling into a later summary.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/clawflow-inbox-triage/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/clawflow-inbox-triage",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "coding-agent",
          "description": "Delegate coding tasks to Codex, Claude Code, or Pi agents via background process. Use when: (1) building/creating new features or apps, (2) reviewing PRs (spawn in temp dir), (3) refactoring large codebases, (4) iterative coding that needs file exploration. NOT for: simple one-liner fixes (just edit), reading code (use read tool), thread-bound ACP harness requests in chat (for example spawn/run Codex or Claude Code in a Discord thread; use sessions_spawn with runtime:\"acp\"), or any work in ~/clawd workspace (never spawn agents here). Claude Code: use --print --permission-mode bypassPermissions (no PTY). Codex/Pi/OpenCode: pty:true required.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/coding-agent/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/coding-agent",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "gh-issues",
          "description": "Fetch GitHub issues, spawn sub-agents to implement fixes and open PRs, then monitor and address PR review comments. Usage: /gh-issues [owner/repo] [--label bug] [--limit 5] [--milestone v1.0] [--assignee @me] [--fork user/repo] [--watch] [--interval 5] [--reviews-only] [--cron] [--dry-run] [--model glm-5] [--notify-channel -1002381931352]",
          "filePath": "/usr/lib/node_modules/openclaw/skills/gh-issues/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/gh-issues",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "github",
          "description": "GitHub operations via `gh` CLI: issues, PRs, CI runs, code review, API queries. Use when: (1) checking PR status or CI, (2) creating/commenting on issues, (3) listing/filtering PRs or issues, (4) viewing run logs. NOT for: complex web UI interactions requiring manual browser flows (use browser tooling when available), bulk operations across many repos (script with gh api), or when gh auth is not configured.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/github/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/github",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "healthcheck",
          "description": "Host security hardening and risk-tolerance configuration for OpenClaw deployments. Use when a user asks for security audits, firewall/SSH/update hardening, risk posture, exposure review, OpenClaw cron scheduling for periodic checks, or version status checks on a machine running OpenClaw (laptop, workstation, Pi, VPS).",
          "filePath": "/usr/lib/node_modules/openclaw/skills/healthcheck/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/healthcheck",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "mcporter",
          "description": "Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/mcporter/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/mcporter",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "node-connect",
          "description": "Diagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps. Use when QR/setup code/manual connect fails, local Wi-Fi works but VPS/tailnet does not, or errors mention pairing required, unauthorized, bootstrap token invalid or expired, gateway.bind, gateway.remote.url, Tailscale, or plugins.entries.device-pair.config.publicUrl.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/node-connect/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/node-connect",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "openai-whisper",
          "description": "Local speech-to-text with the Whisper CLI (no API key).",
          "filePath": "/usr/lib/node_modules/openclaw/skills/openai-whisper/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/openai-whisper",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "openai-whisper-api",
          "description": "Transcribe audio via OpenAI Audio Transcriptions API (Whisper).",
          "filePath": "/usr/lib/node_modules/openclaw/skills/openai-whisper-api/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/openai-whisper-api",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "skill-creator",
          "description": "Create, edit, improve, or audit AgentSkills. Use when creating a new skill from scratch or when asked to improve, review, audit, tidy up, or clean up an existing skill or SKILL.md file. Also use when editing or restructuring a skill directory (moving files to references/ or scripts/, removing stale content, validating against the AgentSkills spec). Triggers on phrases like \"create a skill\", \"author a skill\", \"tidy up a skill\", \"improve this skill\", \"review the skill\", \"clean up the skill\", \"audit the skill\".",
          "filePath": "/usr/lib/node_modules/openclaw/skills/skill-creator/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/skill-creator",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "tmux",
          "description": "Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/tmux/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/tmux",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "video-frames",
          "description": "Extract frames or short clips from videos using ffmpeg.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/video-frames/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/video-frames",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "weather",
          "description": "Get current weather and forecasts via wttr.in or Open-Meteo. Use when: user asks about weather, temperature, or forecasts for any location. NOT for: historical weather data, severe weather alerts, or detailed meteorological analysis. No API key needed.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/weather/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/weather",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        }
      ],
      "version": 0
    },
    "authProfileOverride": "deepseek:default",
    "authProfileOverrideSource": "auto",
    "authProfileOverrideCompactionCount": 0
  },
  "agent:main:telegram:group:-1003505625266:topic:2": {
    "sessionId": "37d44dc7-915c-43e9-9400-88003a019793",
    "updatedAt": 1772641667041,
    "systemSent": true,
    "abortedLastRun": false,
    "chatType": "direct",
    "deliveryContext": {
      "channel": "telegram"
    },
    "lastChannel": "telegram",
    "origin": {
      "label": "Rivet Gateway Bridge",
      "provider": "webchat",
      "surface": "webchat",
      "chatType": "direct"
    },
    "sessionFile": "/root/.clawdbot-builder/agents/main/sessions/37d44dc7-915c-43e9-9400-88003a019793.jsonl",
    "compactionCount": 0,
    "skillsSnapshot": {
      "prompt": "\n\nThe following skills provide specialized instructions for specific tasks.\nUse the read tool to load a skill's file when the task matches its description.\nWhen a skill file references a relative path, resolve it against the skill directory (parent of SKILL.md / dirname of the path) and use that absolute path in tool commands.\n\n<available_skills>\n  <skill>\n    <name>coding-agent</name>\n    <description>Delegate coding tasks to Codex, Claude Code, or Pi agents via background process. Use when: (1) building/creating new features or apps, (2) reviewing PRs (spawn in temp dir), (3) refactoring large codebases, (4) iterative coding that needs file exploration. NOT for: simple one-liner fixes (just edit), reading code (use read tool), thread-bound ACP harness requests in chat (for example spawn/run Codex or Claude Code in a Discord thread; use sessions_spawn with runtime:&quot;acp&quot;), or any work in ~/clawd workspace (never spawn agents here). Requires a bash tool that supports pty:true.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/coding-agent/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>gh-issues</name>\n    <description>Fetch GitHub issues, spawn sub-agents to implement fixes and open PRs, then monitor and address PR review comments. Usage: /gh-issues [owner/repo] [--label bug] [--limit 5] [--milestone v1.0] [--assignee @me] [--fork user/repo] [--watch] [--interval 5] [--reviews-only] [--cron] [--dry-run] [--model glm-5] [--notify-channel -1002381931352]</description>\n    <location>/usr/lib/node_modules/openclaw/skills/gh-issues/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>github</name>\n    <description>GitHub operations via `gh` CLI: issues, PRs, CI runs, code review, API queries. Use when: (1) checking PR status or CI, (2) creating/commenting on issues, (3) listing/filtering PRs or issues, (4) viewing run logs. NOT for: complex web UI interactions requiring manual browser flows (use browser tooling when available), bulk operations across many repos (script with gh api), or when gh auth is not configured.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/github/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>healthcheck</name>\n    <description>Host security hardening and risk-tolerance configuration for OpenClaw deployments. Use when a user asks for security audits, firewall/SSH/update hardening, risk posture, exposure review, OpenClaw cron scheduling for periodic checks, or version status checks on a machine running OpenClaw (laptop, workstation, Pi, VPS).</description>\n    <location>/usr/lib/node_modules/openclaw/skills/healthcheck/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>mcporter</name>\n    <description>Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/mcporter/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>openai-image-gen</name>\n    <description>Batch-generate images via OpenAI Images API. Random prompt sampler + `index.html` gallery.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/openai-image-gen/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>openai-whisper</name>\n    <description>Local speech-to-text with the Whisper CLI (no API key).</description>\n    <location>/usr/lib/node_modules/openclaw/skills/openai-whisper/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>openai-whisper-api</name>\n    <description>Transcribe audio via OpenAI Audio Transcriptions API (Whisper).</description>\n    <location>/usr/lib/node_modules/openclaw/skills/openai-whisper-api/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>skill-creator</name>\n    <description>Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/skill-creator/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>tmux</name>\n    <description>Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/tmux/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>video-frames</name>\n    <description>Extract frames or short clips from videos using ffmpeg.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/video-frames/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>weather</name>\n    <description>Get current weather and forecasts via wttr.in or Open-Meteo. Use when: user asks about weather, temperature, or forecasts for any location. NOT for: historical weather data, severe weather alerts, or detailed meteorological analysis. No API key needed.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/weather/SKILL.md</location>\n  </skill>\n</available_skills>",
      "skills": [
        {
          "name": "coding-agent",
          "requiredEnv": []
        },
        {
          "name": "gh-issues",
          "primaryEnv": "GH_TOKEN",
          "requiredEnv": []
        },
        {
          "name": "github",
          "requiredEnv": []
        },
        {
          "name": "healthcheck"
        },
        {
          "name": "mcporter",
          "requiredEnv": []
        },
        {
          "name": "openai-image-gen",
          "primaryEnv": "OPENAI_API_KEY",
          "requiredEnv": [
            "OPENAI_API_KEY"
          ]
        },
        {
          "name": "openai-whisper",
          "requiredEnv": []
        },
        {
          "name": "openai-whisper-api",
          "primaryEnv": "OPENAI_API_KEY",
          "requiredEnv": [
            "OPENAI_API_KEY"
          ]
        },
        {
          "name": "skill-creator"
        },
        {
          "name": "tmux",
          "requiredEnv": []
        },
        {
          "name": "video-frames",
          "requiredEnv": []
        },
        {
          "name": "weather",
          "requiredEnv": []
        }
      ],
      "resolvedSkills": [
        {
          "name": "coding-agent",
          "description": "Delegate coding tasks to Codex, Claude Code, or Pi agents via background process. Use when: (1) building/creating new features or apps, (2) reviewing PRs (spawn in temp dir), (3) refactoring large codebases, (4) iterative coding that needs file exploration. NOT for: simple one-liner fixes (just edit), reading code (use read tool), thread-bound ACP harness requests in chat (for example spawn/run Codex or Claude Code in a Discord thread; use sessions_spawn with runtime:\"acp\"), or any work in ~/clawd workspace (never spawn agents here). Requires a bash tool that supports pty:true.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/coding-agent/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/coding-agent",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "gh-issues",
          "description": "Fetch GitHub issues, spawn sub-agents to implement fixes and open PRs, then monitor and address PR review comments. Usage: /gh-issues [owner/repo] [--label bug] [--limit 5] [--milestone v1.0] [--assignee @me] [--fork user/repo] [--watch] [--interval 5] [--reviews-only] [--cron] [--dry-run] [--model glm-5] [--notify-channel -1002381931352]",
          "filePath": "/usr/lib/node_modules/openclaw/skills/gh-issues/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/gh-issues",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "github",
          "description": "GitHub operations via `gh` CLI: issues, PRs, CI runs, code review, API queries. Use when: (1) checking PR status or CI, (2) creating/commenting on issues, (3) listing/filtering PRs or issues, (4) viewing run logs. NOT for: complex web UI interactions requiring manual browser flows (use browser tooling when available), bulk operations across many repos (script with gh api), or when gh auth is not configured.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/github/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/github",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "healthcheck",
          "description": "Host security hardening and risk-tolerance configuration for OpenClaw deployments. Use when a user asks for security audits, firewall/SSH/update hardening, risk posture, exposure review, OpenClaw cron scheduling for periodic checks, or version status checks on a machine running OpenClaw (laptop, workstation, Pi, VPS).",
          "filePath": "/usr/lib/node_modules/openclaw/skills/healthcheck/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/healthcheck",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "mcporter",
          "description": "Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/mcporter/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/mcporter",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "openai-image-gen",
          "description": "Batch-generate images via OpenAI Images API. Random prompt sampler + `index.html` gallery.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/openai-image-gen/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/openai-image-gen",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "openai-whisper",
          "description": "Local speech-to-text with the Whisper CLI (no API key).",
          "filePath": "/usr/lib/node_modules/openclaw/skills/openai-whisper/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/openai-whisper",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "openai-whisper-api",
          "description": "Transcribe audio via OpenAI Audio Transcriptions API (Whisper).",
          "filePath": "/usr/lib/node_modules/openclaw/skills/openai-whisper-api/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/openai-whisper-api",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "skill-creator",
          "description": "Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/skill-creator/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/skill-creator",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "tmux",
          "description": "Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/tmux/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/tmux",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "video-frames",
          "description": "Extract frames or short clips from videos using ffmpeg.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/video-frames/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/video-frames",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "weather",
          "description": "Get current weather and forecasts via wttr.in or Open-Meteo. Use when: user asks about weather, temperature, or forecasts for any location. NOT for: historical weather data, severe weather alerts, or detailed meteorological analysis. No API key needed.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/weather/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/weather",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        }
      ],
      "version": 0
    },
    "systemPromptReport": {
      "source": "run",
      "generatedAt": 1772623464234,
      "sessionId": "37d44dc7-915c-43e9-9400-88003a019793",
      "sessionKey": "agent:main:telegram:group:-1003505625266:topic:2",
      "provider": "openrouter",
      "model": "openai/gpt-5.3-codex",
      "workspaceDir": "/home/ccuser/the-50-dollar-app",
      "bootstrapMaxChars": 20000,
      "bootstrapTotalMaxChars": 150000,
      "sandbox": {
        "mode": "off",
        "sandboxed": false
      },
      "systemPrompt": {
        "chars": 41892,
        "projectContextChars": 26834,
        "nonProjectContextChars": 15058
      },
      "injectedWorkspaceFiles": [
        {
          "name": "AGENTS.md",
          "path": "/home/ccuser/the-50-dollar-app/AGENTS.md",
          "missing": false,
          "rawChars": 5224,
          "injectedChars": 5224,
          "truncated": false
        },
        {
          "name": "SOUL.md",
          "path": "/home/ccuser/the-50-dollar-app/SOUL.md",
          "missing": false,
          "rawChars": 4341,
          "injectedChars": 4341,
          "truncated": false
        },
        {
          "name": "TOOLS.md",
          "path": "/home/ccuser/the-50-dollar-app/TOOLS.md",
          "missing": false,
          "rawChars": 4670,
          "injectedChars": 4670,
          "truncated": false
        },
        {
          "name": "IDENTITY.md",
          "path": "/home/ccuser/the-50-dollar-app/IDENTITY.md",
          "missing": false,
          "rawChars": 717,
          "injectedChars": 717,
          "truncated": false
        },
        {
          "name": "USER.md",
          "path": "/home/ccuser/the-50-dollar-app/USER.md",
          "missing": false,
          "rawChars": 1537,
          "injectedChars": 1537,
          "truncated": false
        },
        {
          "name": "HEARTBEAT.md",
          "path": "/home/ccuser/the-50-dollar-app/HEARTBEAT.md",
          "missing": false,
          "rawChars": 1330,
          "injectedChars": 1330,
          "truncated": false
        },
        {
          "name": "BOOTSTRAP.md",
          "path": "/home/ccuser/the-50-dollar-app/BOOTSTRAP.md",
          "missing": false,
          "rawChars": 1444,
          "injectedChars": 1444,
          "truncated": false
        },
        {
          "name": "MEMORY.md",
          "path": "/home/ccuser/the-50-dollar-app/MEMORY.md",
          "missing": false,
          "rawChars": 6985,
          "injectedChars": 6985,
          "truncated": false
        }
      ],
      "skills": {
        "promptChars": 4913,
        "entries": [
          {
            "name": "coding-agent",
            "blockChars": 759
          },
          {
            "name": "gh-issues",
            "blockChars": 499
          },
          {
            "name": "github",
            "blockChars": 563
          },
          {
            "name": "healthcheck",
            "blockChars": 482
          },
          {
            "name": "mcporter",
            "blockChars": 321
          },
          {
            "name": "openai-image-gen",
            "blockChars": 263
          },
          {
            "name": "openai-whisper",
            "blockChars": 224
          },
          {
            "name": "openai-whisper-api",
            "blockChars": 240
          },
          {
            "name": "skill-creator",
            "blockChars": 287
          },
          {
            "name": "tmux",
            "blockChars": 246
          },
          {
            "name": "video-frames",
            "blockChars": 220
          },
          {
            "name": "weather",
            "blockChars": 407
          }
        ]
      },
      "tools": {
        "listChars": 2278,
        "schemaChars": 17165,
        "entries": [
          {
            "name": "read",
            "summaryChars": 298,
            "schemaChars": 392,
            "propertiesCount": 4
          },
          {
            "name": "edit",
            "summaryChars": 129,
            "schemaChars": 591,
            "propertiesCount": 6
          },
          {
            "name": "write",
            "summaryChars": 127,
            "schemaChars": 313,
            "propertiesCount": 3
          },
          {
            "name": "exec",
            "summaryChars": 181,
            "schemaChars": 1086,
            "propertiesCount": 12
          },
          {
            "name": "process",
            "summaryChars": 85,
            "schemaChars": 961,
            "propertiesCount": 12
          },
          {
            "name": "browser",
            "summaryChars": 1251,
            "schemaChars": 2799,
            "propertiesCount": 48
          },
          {
            "name": "canvas",
            "summaryChars": 106,
            "schemaChars": 661,
            "propertiesCount": 18
          },
          {
            "name": "nodes",
            "summaryChars": 115,
            "schemaChars": 1758,
            "propertiesCount": 36
          },
          {
            "name": "message",
            "summaryChars": 124,
            "schemaChars": 4249,
            "propertiesCount": 86
          },
          {
            "name": "tts",
            "summaryChars": 152,
            "schemaChars": 223,
            "propertiesCount": 2
          },
          {
            "name": "agents_list",
            "summaryChars": 118,
            "schemaChars": 33,
            "propertiesCount": 0
          },
          {
            "name": "sessions_list",
            "summaryChars": 54,
            "schemaChars": 212,
            "propertiesCount": 4
          },
          {
            "name": "sessions_history",
            "summaryChars": 36,
            "schemaChars": 161,
            "propertiesCount": 3
          },
          {
            "name": "sessions_send",
            "summaryChars": 84,
            "schemaChars": 273,
            "propertiesCount": 5
          },
          {
            "name": "sessions_spawn",
            "summaryChars": 134,
            "schemaChars": 895,
            "propertiesCount": 15
          },
          {
            "name": "subagents",
            "summaryChars": 105,
            "schemaChars": 191,
            "propertiesCount": 4
          },
          {
            "name": "session_status",
            "summaryChars": 207,
            "schemaChars": 89,
            "propertiesCount": 2
          },
          {
            "name": "web_search",
            "summaryChars": 138,
            "schemaChars": 895,
            "propertiesCount": 6
          },
          {
            "name": "web_fetch",
            "summaryChars": 129,
            "schemaChars": 374,
            "propertiesCount": 3
          },
          {
            "name": "image",
            "summaryChars": 260,
            "schemaChars": 342,
            "propertiesCount": 6
          },
          {
            "name": "pdf",
            "summaryChars": 275,
            "schemaChars": 400,
            "propertiesCount": 6
          },
          {
            "name": "memory_search",
            "summaryChars": 334,
            "schemaChars": 139,
            "propertiesCount": 3
          },
          {
            "name": "memory_get",
            "summaryChars": 151,
            "schemaChars": 128,
            "propertiesCount": 3
          }
        ]
      }
    },
    "contextTokens": 200000,
    "inputTokens": 819518,
    "outputTokens": 3767,
    "cacheRead": 0,
    "cacheWrite": 0,
    "totalTokens": 204187,
    "totalTokensFresh": true
  },
  "agent:main:openai:474f313d-3418-4c33-9c42-ce8d4e80149d": {
    "sessionId": "88e715ea-5367-4a05-9184-6e8ca8eb17c4",
    "updatedAt": 1771079627155,
    "skillsSnapshot": {
      "prompt": "\n\nThe following skills provide specialized instructions for specific tasks.\nUse the read tool to load a skill's file when the task matches its description.\n\n<available_skills>\n  <skill>\n    <name>bird</name>\n    <description>X/Twitter CLI for reading, searching, posting, and engagement via cookies.</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/bird/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>bluebubbles</name>\n    <description>Build or update the BlueBubbles external channel plugin for Clawdbot (extension package, REST send/probe, webhook inbound).</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/bluebubbles/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>clawdhub</name>\n    <description>Use the ClawdHub CLI to search, install, update, and publish agent skills from clawdhub.com. Use when you need to fetch new skills on the fly, sync installed skills to latest or a specific version, or publish new/updated skill folders with the npm-installed clawdhub CLI.</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/clawdhub/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>coding-agent</name>\n    <description>Run Codex CLI, Claude Code, OpenCode, or Pi Coding Agent via background process for programmatic control.</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/coding-agent/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>github</name>\n    <description>Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/github/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>growth-engine</name>\n    <description>RateRight Growth Engine Sales CRM API. Access leads, send SMS, log calls, get dashboard stats, AI intel briefs, and manage notes.</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/growth-engine/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>mcporter</name>\n    <description>Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/mcporter/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>notion</name>\n    <description>Notion API for creating and managing pages, databases, and blocks.</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/notion/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>skill-creator</name>\n    <description>Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/skill-creator/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>slack</name>\n    <description>Use when you need to control Slack from Clawdbot via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/slack/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>tmux</name>\n    <description>Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/tmux/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>video-frames</name>\n    <description>Extract frames or short clips from videos using ffmpeg.</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/video-frames/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>weather</name>\n    <description>Get current weather and forecasts (no API key required).</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/weather/SKILL.md</location>\n  </skill>\n</available_skills>",
      "skills": [
        {
          "name": "bird"
        },
        {
          "name": "bluebubbles"
        },
        {
          "name": "clawdhub"
        },
        {
          "name": "coding-agent"
        },
        {
          "name": "github"
        },
        {
          "name": "growth-engine"
        },
        {
          "name": "mcporter"
        },
        {
          "name": "notion"
        },
        {
          "name": "skill-creator"
        },
        {
          "name": "slack"
        },
        {
          "name": "tmux"
        },
        {
          "name": "video-frames"
        },
        {
          "name": "weather"
        }
      ],
      "resolvedSkills": [
        {
          "name": "bird",
          "description": "X/Twitter CLI for reading, searching, posting, and engagement via cookies.",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/bird/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/bird",
          "source": "clawdbot-bundled"
        },
        {
          "name": "bluebubbles",
          "description": "Build or update the BlueBubbles external channel plugin for Clawdbot (extension package, REST send/probe, webhook inbound).",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/bluebubbles/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/bluebubbles",
          "source": "clawdbot-bundled"
        },
        {
          "name": "clawdhub",
          "description": "Use the ClawdHub CLI to search, install, update, and publish agent skills from clawdhub.com. Use when you need to fetch new skills on the fly, sync installed skills to latest or a specific version, or publish new/updated skill folders with the npm-installed clawdhub CLI.",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/clawdhub/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/clawdhub",
          "source": "clawdbot-bundled"
        },
        {
          "name": "coding-agent",
          "description": "Run Codex CLI, Claude Code, OpenCode, or Pi Coding Agent via background process for programmatic control.",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/coding-agent/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/coding-agent",
          "source": "clawdbot-bundled"
        },
        {
          "name": "github",
          "description": "Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/github/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/github",
          "source": "clawdbot-bundled"
        },
        {
          "name": "growth-engine",
          "description": "RateRight Growth Engine Sales CRM API. Access leads, send SMS, log calls, get dashboard stats, AI intel briefs, and manage notes.",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/growth-engine/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/growth-engine",
          "source": "clawdbot-bundled"
        },
        {
          "name": "mcporter",
          "description": "Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/mcporter/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/mcporter",
          "source": "clawdbot-bundled"
        },
        {
          "name": "notion",
          "description": "Notion API for creating and managing pages, databases, and blocks.",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/notion/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/notion",
          "source": "clawdbot-bundled"
        },
        {
          "name": "skill-creator",
          "description": "Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/skill-creator/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/skill-creator",
          "source": "clawdbot-bundled"
        },
        {
          "name": "slack",
          "description": "Use when you need to control Slack from Clawdbot via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/slack/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/slack",
          "source": "clawdbot-bundled"
        },
        {
          "name": "tmux",
          "description": "Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/tmux/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/tmux",
          "source": "clawdbot-bundled"
        },
        {
          "name": "video-frames",
          "description": "Extract frames or short clips from videos using ffmpeg.",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/video-frames/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/video-frames",
          "source": "clawdbot-bundled"
        },
        {
          "name": "weather",
          "description": "Get current weather and forecasts (no API key required).",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/weather/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/weather",
          "source": "clawdbot-bundled"
        }
      ],
      "version": 0
    },
    "contextTokens": 150000,
    "abortedLastRun": false,
    "inputTokens": 10,
    "outputTokens": 23,
    "totalTokens": 14473
  },
  "agent:main:subagent:8c7ef965-025e-49e2-bd31-b09191db3796": {
    "sessionId": "2f82428d-1483-4fef-8b18-4c79e618c31b",
    "updatedAt": 1771370184983,
    "deliveryContext": {
      "channel": "telegram"
    },
    "lastChannel": "telegram",
    "label": "minimax-test",
    "spawnedBy": "agent:main:main",
    "channel": "telegram",
    "skillsSnapshot": {
      "prompt": "\n\nThe following skills provide specialized instructions for specific tasks.\nUse the read tool to load a skill's file when the task matches its description.\n\n<available_skills>\n  <skill>\n    <name>bird</name>\n    <description>X/Twitter CLI for reading, searching, posting, and engagement via cookies.</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/bird/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>bluebubbles</name>\n    <description>Build or update the BlueBubbles external channel plugin for Clawdbot (extension package, REST send/probe, webhook inbound).</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/bluebubbles/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>clawdhub</name>\n    <description>Use the ClawdHub CLI to search, install, update, and publish agent skills from clawdhub.com. Use when you need to fetch new skills on the fly, sync installed skills to latest or a specific version, or publish new/updated skill folders with the npm-installed clawdhub CLI.</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/clawdhub/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>coding-agent</name>\n    <description>Run Codex CLI, Claude Code, OpenCode, or Pi Coding Agent via background process for programmatic control.</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/coding-agent/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>github</name>\n    <description>Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/github/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>growth-engine</name>\n    <description>RateRight Growth Engine Sales CRM API. Access leads, send SMS, log calls, get dashboard stats, AI intel briefs, and manage notes.</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/growth-engine/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>mcporter</name>\n    <description>Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/mcporter/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>notion</name>\n    <description>Notion API for creating and managing pages, databases, and blocks.</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/notion/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>skill-creator</name>\n    <description>Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/skill-creator/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>slack</name>\n    <description>Use when you need to control Slack from Clawdbot via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/slack/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>tmux</name>\n    <description>Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/tmux/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>video-frames</name>\n    <description>Extract frames or short clips from videos using ffmpeg.</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/video-frames/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>weather</name>\n    <description>Get current weather and forecasts (no API key required).</description>\n    <location>/usr/lib/node_modules/clawdbot/skills/weather/SKILL.md</location>\n  </skill>\n</available_skills>",
      "skills": [
        {
          "name": "bird"
        },
        {
          "name": "bluebubbles"
        },
        {
          "name": "clawdhub"
        },
        {
          "name": "coding-agent"
        },
        {
          "name": "github"
        },
        {
          "name": "growth-engine"
        },
        {
          "name": "mcporter"
        },
        {
          "name": "notion"
        },
        {
          "name": "skill-creator"
        },
        {
          "name": "slack"
        },
        {
          "name": "tmux"
        },
        {
          "name": "video-frames"
        },
        {
          "name": "weather"
        }
      ],
      "resolvedSkills": [
        {
          "name": "bird",
          "description": "X/Twitter CLI for reading, searching, posting, and engagement via cookies.",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/bird/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/bird",
          "source": "clawdbot-bundled"
        },
        {
          "name": "bluebubbles",
          "description": "Build or update the BlueBubbles external channel plugin for Clawdbot (extension package, REST send/probe, webhook inbound).",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/bluebubbles/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/bluebubbles",
          "source": "clawdbot-bundled"
        },
        {
          "name": "clawdhub",
          "description": "Use the ClawdHub CLI to search, install, update, and publish agent skills from clawdhub.com. Use when you need to fetch new skills on the fly, sync installed skills to latest or a specific version, or publish new/updated skill folders with the npm-installed clawdhub CLI.",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/clawdhub/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/clawdhub",
          "source": "clawdbot-bundled"
        },
        {
          "name": "coding-agent",
          "description": "Run Codex CLI, Claude Code, OpenCode, or Pi Coding Agent via background process for programmatic control.",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/coding-agent/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/coding-agent",
          "source": "clawdbot-bundled"
        },
        {
          "name": "github",
          "description": "Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/github/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/github",
          "source": "clawdbot-bundled"
        },
        {
          "name": "growth-engine",
          "description": "RateRight Growth Engine Sales CRM API. Access leads, send SMS, log calls, get dashboard stats, AI intel briefs, and manage notes.",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/growth-engine/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/growth-engine",
          "source": "clawdbot-bundled"
        },
        {
          "name": "mcporter",
          "description": "Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/mcporter/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/mcporter",
          "source": "clawdbot-bundled"
        },
        {
          "name": "notion",
          "description": "Notion API for creating and managing pages, databases, and blocks.",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/notion/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/notion",
          "source": "clawdbot-bundled"
        },
        {
          "name": "skill-creator",
          "description": "Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/skill-creator/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/skill-creator",
          "source": "clawdbot-bundled"
        },
        {
          "name": "slack",
          "description": "Use when you need to control Slack from Clawdbot via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/slack/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/slack",
          "source": "clawdbot-bundled"
        },
        {
          "name": "tmux",
          "description": "Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/tmux/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/tmux",
          "source": "clawdbot-bundled"
        },
        {
          "name": "video-frames",
          "description": "Extract frames or short clips from videos using ffmpeg.",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/video-frames/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/video-frames",
          "source": "clawdbot-bundled"
        },
        {
          "name": "weather",
          "description": "Get current weather and forecasts (no API key required).",
          "filePath": "/usr/lib/node_modules/clawdbot/skills/weather/SKILL.md",
          "baseDir": "/usr/lib/node_modules/clawdbot/skills/weather",
          "source": "clawdbot-bundled"
        }
      ],
      "version": 0
    },
    "contextTokens": 150000,
    "abortedLastRun": false,
    "inputTokens": 10,
    "outputTokens": 52,
    "totalTokens": 9278
  },
  "agent:main:telegram:group:-1003505625266:topic:8": {
    "chatType": "group",
    "channel": "telegram",
    "groupId": "-1003505625266:topic:8",
    "displayName": "telegram:g-1003505625266-topic-8",
    "origin": {
      "label": "telegram:group:-1003505625266:topic:8",
      "provider": "telegram",
      "surface": "telegram",
      "chatType": "group",
      "from": "telegram:group:-1003505625266:topic:8",
      "to": "telegram:-1003505625266",
      "threadId": 8
    },
    "sessionId": "6e75e5d8-afbd-40dd-a097-bb6e3df5b182",
    "updatedAt": 1772002709502,
    "deliveryContext": {
      "channel": "telegram",
      "threadId": 8
    },
    "lastChannel": "telegram",
    "sessionFile": "/root/.clawdbot-builder/agents/main/sessions/6e75e5d8-afbd-40dd-a097-bb6e3df5b182.jsonl",
    "lastThreadId": 8
  },
  "agent:main:telegram:group:-1003505625266:topic:6": {
    "chatType": "group",
    "channel": "telegram",
    "groupId": "-1003505625266:topic:6",
    "displayName": "telegram:g-1003505625266-topic-6",
    "origin": {
      "label": "telegram:group:-1003505625266:topic:6",
      "provider": "telegram",
      "surface": "telegram",
      "chatType": "group",
      "from": "telegram:group:-1003505625266:topic:6",
      "to": "telegram:-1003505625266",
      "threadId": 6
    },
    "sessionId": "b578834a-2994-454e-b33e-0ee1417802ae",
    "updatedAt": 1772002715305,
    "deliveryContext": {
      "channel": "telegram",
      "threadId": 6
    },
    "lastChannel": "telegram",
    "sessionFile": "/root/.clawdbot-builder/agents/main/sessions/b578834a-2994-454e-b33e-0ee1417802ae.jsonl",
    "lastThreadId": 6
  },
  "agent:main:openai:f8eaeea4-d2df-483c-ae3c-deb307929897": {
    "sessionId": "5a7b6994-b72c-4888-8345-6053dba0d7a0",
    "updatedAt": 1772532405749,
    "skillsSnapshot": {
      "prompt": "\n\nThe following skills provide specialized instructions for specific tasks.\nUse the read tool to load a skill's file when the task matches its description.\nWhen a skill file references a relative path, resolve it against the skill directory (parent of SKILL.md / dirname of the path) and use that absolute path in tool commands.\n\n<available_skills>\n  <skill>\n    <name>coding-agent</name>\n    <description>Delegate coding tasks to Codex, Claude Code, or Pi agents via background process. Use when: (1) building/creating new features or apps, (2) reviewing PRs (spawn in temp dir), (3) refactoring large codebases, (4) iterative coding that needs file exploration. NOT for: simple one-liner fixes (just edit), reading code (use read tool), thread-bound ACP harness requests in chat (for example spawn/run Codex or Claude Code in a Discord thread; use sessions_spawn with runtime:&quot;acp&quot;), or any work in ~/clawd workspace (never spawn agents here). Requires a bash tool that supports pty:true.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/coding-agent/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>gh-issues</name>\n    <description>Fetch GitHub issues, spawn sub-agents to implement fixes and open PRs, then monitor and address PR review comments. Usage: /gh-issues [owner/repo] [--label bug] [--limit 5] [--milestone v1.0] [--assignee @me] [--fork user/repo] [--watch] [--interval 5] [--reviews-only] [--cron] [--dry-run] [--model glm-5] [--notify-channel -1002381931352]</description>\n    <location>/usr/lib/node_modules/openclaw/skills/gh-issues/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>github</name>\n    <description>GitHub operations via `gh` CLI: issues, PRs, CI runs, code review, API queries. Use when: (1) checking PR status or CI, (2) creating/commenting on issues, (3) listing/filtering PRs or issues, (4) viewing run logs. NOT for: complex web UI interactions requiring manual browser flows (use browser tooling when available), bulk operations across many repos (script with gh api), or when gh auth is not configured.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/github/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>healthcheck</name>\n    <description>Host security hardening and risk-tolerance configuration for OpenClaw deployments. Use when a user asks for security audits, firewall/SSH/update hardening, risk posture, exposure review, OpenClaw cron scheduling for periodic checks, or version status checks on a machine running OpenClaw (laptop, workstation, Pi, VPS).</description>\n    <location>/usr/lib/node_modules/openclaw/skills/healthcheck/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>mcporter</name>\n    <description>Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/mcporter/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>openai-image-gen</name>\n    <description>Batch-generate images via OpenAI Images API. Random prompt sampler + `index.html` gallery.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/openai-image-gen/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>openai-whisper</name>\n    <description>Local speech-to-text with the Whisper CLI (no API key).</description>\n    <location>/usr/lib/node_modules/openclaw/skills/openai-whisper/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>openai-whisper-api</name>\n    <description>Transcribe audio via OpenAI Audio Transcriptions API (Whisper).</description>\n    <location>/usr/lib/node_modules/openclaw/skills/openai-whisper-api/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>skill-creator</name>\n    <description>Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/skill-creator/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>tmux</name>\n    <description>Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/tmux/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>video-frames</name>\n    <description>Extract frames or short clips from videos using ffmpeg.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/video-frames/SKILL.md</location>\n  </skill>\n  <skill>\n    <name>weather</name>\n    <description>Get current weather and forecasts via wttr.in or Open-Meteo. Use when: user asks about weather, temperature, or forecasts for any location. NOT for: historical weather data, severe weather alerts, or detailed meteorological analysis. No API key needed.</description>\n    <location>/usr/lib/node_modules/openclaw/skills/weather/SKILL.md</location>\n  </skill>\n</available_skills>",
      "skills": [
        {
          "name": "coding-agent",
          "requiredEnv": []
        },
        {
          "name": "gh-issues",
          "primaryEnv": "GH_TOKEN",
          "requiredEnv": []
        },
        {
          "name": "github",
          "requiredEnv": []
        },
        {
          "name": "healthcheck"
        },
        {
          "name": "mcporter",
          "requiredEnv": []
        },
        {
          "name": "openai-image-gen",
          "primaryEnv": "OPENAI_API_KEY",
          "requiredEnv": [
            "OPENAI_API_KEY"
          ]
        },
        {
          "name": "openai-whisper",
          "requiredEnv": []
        },
        {
          "name": "openai-whisper-api",
          "primaryEnv": "OPENAI_API_KEY",
          "requiredEnv": [
            "OPENAI_API_KEY"
          ]
        },
        {
          "name": "skill-creator"
        },
        {
          "name": "tmux",
          "requiredEnv": []
        },
        {
          "name": "video-frames",
          "requiredEnv": []
        },
        {
          "name": "weather",
          "requiredEnv": []
        }
      ],
      "resolvedSkills": [
        {
          "name": "coding-agent",
          "description": "Delegate coding tasks to Codex, Claude Code, or Pi agents via background process. Use when: (1) building/creating new features or apps, (2) reviewing PRs (spawn in temp dir), (3) refactoring large codebases, (4) iterative coding that needs file exploration. NOT for: simple one-liner fixes (just edit), reading code (use read tool), thread-bound ACP harness requests in chat (for example spawn/run Codex or Claude Code in a Discord thread; use sessions_spawn with runtime:\"acp\"), or any work in ~/clawd workspace (never spawn agents here). Requires a bash tool that supports pty:true.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/coding-agent/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/coding-agent",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "gh-issues",
          "description": "Fetch GitHub issues, spawn sub-agents to implement fixes and open PRs, then monitor and address PR review comments. Usage: /gh-issues [owner/repo] [--label bug] [--limit 5] [--milestone v1.0] [--assignee @me] [--fork user/repo] [--watch] [--interval 5] [--reviews-only] [--cron] [--dry-run] [--model glm-5] [--notify-channel -1002381931352]",
          "filePath": "/usr/lib/node_modules/openclaw/skills/gh-issues/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/gh-issues",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "github",
          "description": "GitHub operations via `gh` CLI: issues, PRs, CI runs, code review, API queries. Use when: (1) checking PR status or CI, (2) creating/commenting on issues, (3) listing/filtering PRs or issues, (4) viewing run logs. NOT for: complex web UI interactions requiring manual browser flows (use browser tooling when available), bulk operations across many repos (script with gh api), or when gh auth is not configured.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/github/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/github",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "healthcheck",
          "description": "Host security hardening and risk-tolerance configuration for OpenClaw deployments. Use when a user asks for security audits, firewall/SSH/update hardening, risk posture, exposure review, OpenClaw cron scheduling for periodic checks, or version status checks on a machine running OpenClaw (laptop, workstation, Pi, VPS).",
          "filePath": "/usr/lib/node_modules/openclaw/skills/healthcheck/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/healthcheck",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "mcporter",
          "description": "Use the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/mcporter/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/mcporter",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "openai-image-gen",
          "description": "Batch-generate images via OpenAI Images API. Random prompt sampler + `index.html` gallery.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/openai-image-gen/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/openai-image-gen",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "openai-whisper",
          "description": "Local speech-to-text with the Whisper CLI (no API key).",
          "filePath": "/usr/lib/node_modules/openclaw/skills/openai-whisper/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/openai-whisper",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "openai-whisper-api",
          "description": "Transcribe audio via OpenAI Audio Transcriptions API (Whisper).",
          "filePath": "/usr/lib/node_modules/openclaw/skills/openai-whisper-api/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/openai-whisper-api",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "skill-creator",
          "description": "Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/skill-creator/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/skill-creator",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "tmux",
          "description": "Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/tmux/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/tmux",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "video-frames",
          "description": "Extract frames or short clips from videos using ffmpeg.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/video-frames/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/video-frames",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        },
        {
          "name": "weather",
          "description": "Get current weather and forecasts via wttr.in or Open-Meteo. Use when: user asks about weather, temperature, or forecasts for any location. NOT for: historical weather data, severe weather alerts, or detailed meteorological analysis. No API key needed.",
          "filePath": "/usr/lib/node_modules/openclaw/skills/weather/SKILL.md",
          "baseDir": "/usr/lib/node_modules/openclaw/skills/weather",
          "source": "openclaw-bundled",
          "disableModelInvocation": false
        }
      ],
      "version": 0
    },
    "sessionFile": "/root/.clawdbot-builder/agents/main/sessions/5a7b6994-b72c-4888-8345-6053dba0d7a0.jsonl",
    "contextTokens": 200000,
    "abortedLastRun": false,
    "inputTokens": 15785,
    "outputTokens": 119,
    "totalTokens": 15785,
    "totalTokensFresh": true,
    "cacheRead": 0,
    "cacheWrite": 0
  },
  "telegram:slash:7377499346": {
    "origin": {
      "label": "Michael",
      "provider": "telegram",
      "surface": "telegram",
      "chatType": "direct",
      "from": "telegram:7377499346",
      "to": "telegram:7377499346",
      "accountId": "default"
    },
    "sessionId": "098a20bb-cb03-4a77-b0c5-3495168dd4b1",
    "updatedAt": 1772711466516
  },
  "agent:main:telegram:slash:7377499346": {
    "origin": {
      "label": "Michael",
      "provider": "telegram",
      "surface": "telegram",
      "chatType": "direct",
      "from": "telegram:7377499346",
      "to": "telegram:7377499346",
      "accountId": "default"
    },
    "sessionId": "a7f6fba3-96d8-426d-9efc-03541f70a5c8",
    "updatedAt": 1773359299198
  },
  "agent:main:telegram:group:@heartbeat": {
    "chatType": "group",
    "channel": "telegram",
    "groupId": "@heartbeat",
    "displayName": "telegram:@heartbeat",
    "origin": {
      "label": "telegram:group:@heartbeat",
      "provider": "telegram",
      "surface": "telegram",
      "chatType": "group",
      "from": "telegram:group:@heartbeat",
      "to": "telegram:@heartbeat"
    },
    "sessionId": "3d7aed26-8b82-40b2-863e-84d385f21256",
    "updatedAt": 1773993855237,
    "deliveryContext": {
      "channel": "telegram"
    },
    "lastChannel": "telegram"
  },
  "agent:main:telegram:group:@michael": {
    "chatType": "group",
    "channel": "telegram",
    "groupId": "@michael",
    "displayName": "telegram:@michael",
    "origin": {
      "label": "telegram:group:@michael",
      "provider": "telegram",
      "surface": "telegram",
      "chatType": "group",
      "from": "telegram:group:@michael",
      "to": "telegram:@michael"
    },
    "sessionId": "53709dd1-07cf-4385-b211-bbb89f3bf8b0",
    "updatedAt": 1774426165687,
    "deliveryContext": {
      "channel": "telegram"
    },
    "lastChannel": "telegram"
  }
}