{
  "agent:main:main": {
    "sessionId": "3a88aa08-dc3c-46b7-bb3e-974eb4bd92fd",
    "updatedAt": 1775500591110,
    "systemSent": true,
    "abortedLastRun": false,
    "chatType": "direct",
    "deliveryContext": {
      "to": "telegram:7377499346"
    },
    "lastTo": "telegram:7377499346",
    "origin": {
      "label": "telegram:7377499346",
      "provider": "heartbeat",
      "from": "telegram:7377499346",
      "to": "telegram:7377499346"
    },
    "sessionFile": "/root/.clawdbot-harper/agents/main/sessions/3a88aa08-dc3c-46b7-bb3e-974eb4bd92fd.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>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": "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": "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": "moonshot:default",
    "authProfileOverrideSource": "auto",
    "authProfileOverrideCompactionCount": 0
  },
  "agent:main:telegram:group:-1003505625266:topic:2": {
    "chatType": "group",
    "channel": "telegram",
    "groupId": "-1003505625266:topic:2",
    "displayName": "telegram:g-1003505625266-topic-2",
    "origin": {
      "label": "telegram:group:-1003505625266:topic:2",
      "provider": "telegram",
      "surface": "telegram",
      "chatType": "group",
      "from": "telegram:group:-1003505625266:topic:2",
      "to": "telegram:-1003505625266",
      "threadId": 2
    },
    "sessionId": "cf5d57f0-544e-4744-85d7-7f50076b7479",
    "updatedAt": 1772002637080,
    "deliveryContext": {
      "channel": "telegram",
      "threadId": 2
    },
    "lastChannel": "telegram",
    "lastThreadId": 2
  },
  "agent:main:openai:70515858-85c5-4c49-8f23-cc4bcac183e1": {
    "sessionId": "57b755fd-5fc1-4976-9cfc-4c7c9646079c",
    "updatedAt": 1772532394014,
    "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-harper/agents/main/sessions/57b755fd-5fc1-4976-9cfc-4c7c9646079c.jsonl",
    "contextTokens": 200000,
    "modelProvider": "openrouter",
    "model": "openai/gpt-5.2",
    "abortedLastRun": false,
    "inputTokens": 16392,
    "outputTokens": 5,
    "totalTokens": 16392,
    "totalTokensFresh": true,
    "cacheRead": 0,
    "cacheWrite": 0
  },
  "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": "2081c910-1818-4e1a-a83e-911f1c7670d5",
    "updatedAt": 1774332689426,
    "deliveryContext": {
      "channel": "telegram"
    },
    "lastChannel": "telegram"
  }
}