[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6RTH27V8GTC7X0MN7R2NEVS":3,"skill-same:01M6RTH27V8GTC7X0MN7R2NEVS":224},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":13,"repositoryHtmlUrl":51,"repositoryHomepageUrl":6,"ownerHtmlUrl":52,"ownerBlogUrl":53,"ownerDescription":54,"updatedAt":55,"install":56,"resources":69},"01M6RTH27V8GTC7X0MN7R2NEVS","agent-chat",null,"XMTP real-time agent-to-agent and user-to-agent encrypted messaging daemon for EverClaw. Manages always-on messaging via XMTP MLS protocol with multi-identity buddy bot support, filesystem-based IPC bridge, consent policies, and cross-platform daemon lifecycle (launchd\u002Fsystemd). Use when setting up XMTP messaging, managing agent identities, configuring buddy bots, troubleshooting message delivery, or controlling the agent-chat daemon.","EverClaw\u002Fbuddybots.org","EverClaw","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F262691656?v=4","01M6RTE2R7A5898VSQ3HAZNTRN","01M6RTE2WCCGNTM8VWGPZY3NTT",0,"MIT","https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"chat","agent chat","when","bot","for","daemon","buddy","encrypted","platform","time","delivery","message","bots","agent-to-agent","up","launchd","bridge","messaging","identity","support","2026-11-10 10:12:30",false,"---\nname: agent-chat\ndescription: \"XMTP real-time agent-to-agent and user-to-agent encrypted messaging daemon for EverClaw. Manages always-on messaging via XMTP MLS protocol with multi-identity buddy bot support, filesystem-based IPC bridge, consent policies, and cross-platform daemon lifecycle (launchd\u002Fsystemd). Use when setting up XMTP messaging, managing agent identities, configuring buddy bots, troubleshooting message delivery, or controlling the agent-chat daemon.\"\n---\n\n# agent-chat\n\nXMTP real-time agent-to-agent and user-to-agent messaging for EverClaw.\n\n## Overview\n\nAlways-on daemon providing E2E-encrypted messaging via XMTP's MLS protocol. Runs as a separate process managed by launchd (macOS) or systemd (Linux), communicating with OpenClaw through a filesystem bridge.\n\n## Version\n\n0.2.0\n\n## Dependencies\n\n- `@xmtp\u002Fagent-sdk` ^2.3.0\n- `xmtp-comms-guard` ^6.0.0 (peer)\n- Node.js >= 20.0.0\n\n## Quick Start\n\n```bash\n# 1. Generate XMTP identity (one-time)\nnode skills\u002Fagent-chat\u002Fsetup-identity.mjs\n\n# 2. Install daemon as system service\nbash scripts\u002Fsetup-agent-chat.sh\n\n# 3. Check status\nbash scripts\u002Fsetup-agent-chat.sh --status\n```\n\n## Daemon Management\n\nThe `setup-agent-chat.sh` script installs the XMTP daemon as a persistent system service.\n\n### Commands\n\n```bash\n# Install and start daemon (auto-detects OS)\nbash scripts\u002Fsetup-agent-chat.sh\n\n# Check daemon status\nbash scripts\u002Fsetup-agent-chat.sh --status\n\n# View recent logs\nbash scripts\u002Fsetup-agent-chat.sh --logs\n\n# Restart daemon\nbash scripts\u002Fsetup-agent-chat.sh --restart\n\n# Uninstall daemon\nbash scripts\u002Fsetup-agent-chat.sh --uninstall\n\n# Install without starting\nbash scripts\u002Fsetup-agent-chat.sh --skip-start\n```\n\n### Platform Support\n\n| Platform | Service Manager | Location | Logs |\n|----------|----------------|----------|------|\n| macOS | launchd | `~\u002FLibrary\u002FLaunchAgents\u002Fcom.everclaw.agent-chat.plist` | `~\u002F.everclaw\u002Flogs\u002Fagent-chat.*` |\n| Linux | systemd (user) | `~\u002F.config\u002Fsystemd\u002Fuser\u002Feverclaw-agent-chat.service` | `journalctl --user -u everclaw-agent-chat` |\n\n**Note:** Linux uses user-level systemd (no sudo required). All services run as your user account.\n\n### Manual Commands\n\n**macOS (launchd):**\n```bash\n# Check if loaded\nlaunchctl list | grep everclaw\n\n# View logs\ntail -f ~\u002F.everclaw\u002Flogs\u002Fagent-chat.log\n\n# Stop\u002Fstart\nlaunchctl bootout gui\u002F$(id -u)\u002Fcom.everclaw.agent-chat\nlaunchctl bootstrap gui\u002F$(id -u) ~\u002FLibrary\u002FLaunchAgents\u002Fcom.everclaw.agent-chat.plist\n```\n\n**Linux (systemd):**\n```bash\n# Check status\nsystemctl --user status everclaw-agent-chat\n\n# View logs\njournalctl --user -u everclaw-agent-chat -f\n\n# Stop\u002Fstart\nsystemctl --user stop everclaw-agent-chat\nsystemctl --user start everclaw-agent-chat\n```\n\n## Architecture\n\n- **Process model**: Separate always-on daemon (not in-process with OpenClaw)\n- **IPC**: Filesystem bridge (`~\u002F.everclaw\u002Fxmtp\u002Foutbox\u002F` → `inbox\u002F`)\n- **Message format**: V6 JSON inside XMTP text content type\n- **Consent**: Configurable per-agent (`open`\u002F`handshake`\u002F`strict`)\n- **Middleware chain**: Consent → CommsGuard V6 → Router\n\n## Identity Model\n\nTwo-tier:\n- **28 flavor canonical wallets** — project-controlled, `open` consent\n- **Per-user wallets** — generated at install, `handshake` consent\n\nXMTP wallet is messaging-only — no funds. Separate from MOR staking wallet.\n\n## CLI Reference\n\n```bash\n# Identity status\nnode skills\u002Fagent-chat\u002Fcli.mjs status\n\n# Daemon health\nnode skills\u002Fagent-chat\u002Fcli.mjs health\n\n# List peer groups\nnode skills\u002Fagent-chat\u002Fcli.mjs groups\n\n# Trust a peer (allow messages)\nnode skills\u002Fagent-chat\u002Fcli.mjs trust-peer 0x... --as colleague --name \"Agent Name\"\n\n# List trusted peers\nnode skills\u002Fagent-chat\u002Fcli.mjs peers list\n\n# Send a message (via outbox)\nnode skills\u002Fagent-chat\u002Fcli.mjs send 0x... \"Hello, agent!\"\n```\n\n## Files\n\n| File | Purpose |\n|------|---------|\n| `daemon.mjs` | Entry point for launchd\u002Fsystemd |\n| `cli.mjs` | CLI commands |\n| `setup-identity.mjs` | One-time key generation |\n| `src\u002Fagent.mjs` | Agent creation + middleware wiring |\n| `src\u002Fidentity.mjs` | Secret\u002Fidentity loading (multi-identity: agentId param) |\n| `src\u002Fpaths.mjs` | Path resolution + agent ID validation (multi-identity) |\n| `src\u002Fconsent.mjs` | 3-policy consent gate |\n| `src\u002Frouter.mjs` | Message routing (COMMAND\u002FDATA dispatch) |\n| `src\u002Fbridge.mjs` | Filesystem outbox watcher (multi-identity: agentId param) |\n| `src\u002Fhealth.mjs` | Health file writer (multi-identity: agentId param) |\n| `src\u002Fhealth.mjs` | Health file writer |\n| `src\u002Fgroups.mjs` | Group conversation mapping |\n| `src\u002Fpayer.mjs` | Fee stub (network currently free) |\n| `src\u002Findex.mjs` | Public API re-exports |\n\n## Multi-Identity (Buddy Bots)\n\nEach buddy bot agent gets its own XMTP identity, daemon process, and data directory. This is called \"multi-identity\" mode — one daemon per agent, running as independent services.\n\n### Directory Layout\n\n| Agent | Data Directory | Service (macOS) | Service (Linux) |\n|-------|---------------|-----------------|-----------------|\n| Host (default) | `~\u002F.everclaw\u002Fxmtp\u002F` | `com.everclaw.agent-chat` | `everclaw-agent-chat` |\n| Alice | `~\u002F.everclaw\u002Fxmtp-alice\u002F` | `com.everclaw.agent-chat.alice` | `everclaw-agent-chat-alice` |\n| Bob | `~\u002F.everclaw\u002Fxmtp-bob\u002F` | `com.everclaw.agent-chat.bob` | `everclaw-agent-chat-bob` |\n\nEach agent's directory contains its own `.secrets.json`, `identity.json`, `inbox\u002F`, `outbox\u002F`, and `peers.json` — fully isolated from other agents.\n\n### Agent ID Rules\n\nAgent IDs must be:\n- 1-63 characters\n- Lowercase alphanumeric + hyphens only\n- Must start with a letter or digit (no leading hyphens)\n- No path traversal characters (`..`, `\u002F`, etc.)\n\nThis prevents directory traversal attacks and service name conflicts.\n\n### Setup\n\n```bash\n# Generate identity for a buddy bot\nnode skills\u002Fagent-chat\u002Fsetup-identity.mjs --agent-id alice\n\n# Install daemon for that buddy bot\nbash scripts\u002Fsetup-agent-chat.sh --agent-id alice\n\n# List all installed daemons\nbash scripts\u002Fsetup-agent-chat.sh --list\n\n# Check status of a specific agent\nbash scripts\u002Fsetup-agent-chat.sh --status --agent-id alice\n\n# Restart a specific agent\nbash scripts\u002Fsetup-agent-chat.sh --restart --agent-id alice\n\n# Uninstall a specific agent\nbash scripts\u002Fsetup-agent-chat.sh --uninstall --agent-id alice\n```\n\n### Environment Variables\n\n| Variable | Purpose |\n|----------|---------|\n| `AGENT_CHAT_AGENT_ID` | Agent ID (alternative to `--agent-id` flag) |\n| `AGENT_CHAT_XMTP_DIR` | Override XMTP data directory (default agent only) |\n| `EVERCLAW_HOME` | Base directory (default: `~\u002F.everclaw`) |\n\n`AGENT_CHAT_XMTP_DIR` only affects the default (host) agent. Per-agent paths always resolve from `EVERCLAW_HOME` to maintain isolation.\n\n### How It Works\n\nEach per-agent service file (launchd plist or systemd unit) contains the `AGENT_CHAT_AGENT_ID` environment variable. When the daemon starts, it reads this env var and resolves all paths accordingly:\n\n1. `AGENT_CHAT_AGENT_ID=alice` → data dir is `~\u002F.everclaw\u002Fxmtp-alice\u002F`\n2. No env var → data dir is `~\u002F.everclaw\u002Fxmtp\u002F` (default host)\n\nThe `--agent-id` CLI flag takes priority over the env var, allowing manual overrides.\n\n### Security\n\n- Each agent's data directory is `chmod 700`\n- Each agent's `.secrets.json` is `chmod 600`\n- Agent IDs are validated against a strict regex to prevent path traversal and service injection\n- Agents cannot access each other's wallets, messages, or peer lists\n\n## Security\n\n- Keys stored in `~\u002F.everclaw\u002Fxmtp\u002F.secrets.json` (chmod 600)\n- Directory secured: `~\u002F.everclaw\u002Fxmtp\u002F` (chmod 700)\n- Path traversal protection on inbox writes\n- Agent ID validation: regex `\u002F^[a-z0-9][a-z0-9-]{0,62}$\u002F` prevents directory traversal and service injection\n- CommsGuard V6 validates all structured messages\n- Plain text messages bypass comms-guard (acceptable for agent-to-agent v1)\n\n## Troubleshooting\n\n### Daemon won't start\n\n1. Check Node.js version: `node --version` (need >= 20.0.0)\n2. Verify identity exists: `ls ~\u002F.everclaw\u002Fxmtp\u002F.secrets.json`\n3. Check logs: `bash scripts\u002Fsetup-agent-chat.sh --logs`\n4. Reinstall: `bash scripts\u002Fsetup-agent-chat.sh --uninstall && bash scripts\u002Fsetup-agent-chat.sh`\n\n### Messages not sending\n\n1. Check peer is trusted: `node skills\u002Fagent-chat\u002Fcli.mjs peers list`\n2. Check daemon health: `node skills\u002Fagent-chat\u002Fcli.mjs health`\n3. Check outbox queue: `ls ~\u002F.everclaw\u002Fxmtp\u002Foutbox\u002F`\n4. Check daemon is running: `bash scripts\u002Fsetup-agent-chat.sh --status`\n\n### XMTP installation limit\n\nXMTP limits the number of installations per identity. If you see warnings about installation limits:\n\n1. Check installations: `node skills\u002Fagent-chat\u002Fcli.mjs status`\n2. Revoke old installations via XMTP console (if available)\n3. Generate new identity: `node skills\u002Fagent-chat\u002Fsetup-identity.mjs` (creates new address)","# agent-chat\n\nXMTP real-time agent-to-agent and user-to-agent messaging for EverClaw.\n\n## Overview\n\nAlways-on daemon providing E2E-encrypted messaging via XMTP's MLS protocol. Runs as a separate process managed by launchd (macOS) or systemd (Linux), communicating with OpenClaw through a filesystem bridge.\n\n## Version\n\n0.2.0\n\n## Dependencies\n\n- `@xmtp\u002Fagent-sdk` ^2.3.0\n- `xmtp-comms-guard` ^6.0.0 (peer)\n- Node.js >= 20.0.0\n\n## Quick Start\n\n```bash\n# 1. Generate XMTP identity (one-time)\nnode skills\u002Fagent-chat\u002Fsetup-identity.mjs\n\n# 2. Install daemon as system service\nbash scripts\u002Fsetup-agent-chat.sh\n\n# 3. Check status\nbash scripts\u002Fsetup-agent-chat.sh --status\n```\n\n## Daemon Management\n\nThe `setup-agent-chat.sh` script installs the XMTP daemon as a persistent system service.\n\n### Commands\n\n```bash\n# Install and start daemon (auto-detects OS)\nbash scripts\u002Fsetup-agent-chat.sh\n\n# Check daemon status\nbash scripts\u002Fsetup-agent-chat.sh --status\n\n# View recent logs\nbash scripts\u002Fsetup-agent-chat.sh --logs\n\n# Restart daemon\nbash scripts\u002Fsetup-agent-chat.sh --restart\n\n# Uninstall daemon\nbash scripts\u002Fsetup-agent-chat.sh --uninstall\n\n# Install without starting\nbash scripts\u002Fsetup-agent-chat.sh --skip-start\n```\n\n### Platform Support\n\n| Platform | Service Manager | Location | Logs |\n|----------|----------------|----------|------|\n| macOS | launchd | `~\u002FLibrary\u002FLaunchAgents\u002Fcom.everclaw.agent-chat.plist` | `~\u002F.everclaw\u002Flogs\u002Fagent-chat.*` |\n| Linux | systemd (user) | `~\u002F.config\u002Fsystemd\u002Fuser\u002Feverclaw-agent-chat.service` | `journalctl --user -u everclaw-agent-chat` |\n\n**Note:** Linux uses user-level systemd (no sudo required). All services run as your user account.\n\n### Manual Commands\n\n**macOS (launchd):**\n```bash\n# Check if loaded\nlaunchctl list | grep everclaw\n\n# View logs\ntail -f ~\u002F.everclaw\u002Flogs\u002Fagent-chat.log\n\n# Stop\u002Fstart\nlaunchctl bootout gui\u002F$(id -u)\u002Fcom.everclaw.agent-chat\nlaunchctl bootstrap gui\u002F$(id -u) ~\u002FLibrary\u002FLaunchAgents\u002Fcom.everclaw.agent-chat.plist\n```\n\n**Linux (systemd):**\n```bash\n# Check status\nsystemctl --user status everclaw-agent-chat\n\n# View logs\njournalctl --user -u everclaw-agent-chat -f\n\n# Stop\u002Fstart\nsystemctl --user stop everclaw-agent-chat\nsystemctl --user start everclaw-agent-chat\n```\n\n## Architecture\n\n- **Process model**: Separate always-on daemon (not in-process with OpenClaw)\n- **IPC**: Filesystem bridge (`~\u002F.everclaw\u002Fxmtp\u002Foutbox\u002F` → `inbox\u002F`)\n- **Message format**: V6 JSON inside XMTP text content type\n- **Consent**: Configurable per-agent (`open`\u002F`handshake`\u002F`strict`)\n- **Middleware chain**: Consent → CommsGuard V6 → Router\n\n## Identity Model\n\nTwo-tier:\n- **28 flavor canonical wallets** — project-controlled, `open` consent\n- **Per-user wallets** — generated at install, `handshake` consent\n\nXMTP wallet is messaging-only — no funds. Separate from MOR staking wallet.\n\n## CLI Reference\n\n```bash\n# Identity status\nnode skills\u002Fagent-chat\u002Fcli.mjs status\n\n# Daemon health\nnode skills\u002Fagent-chat\u002Fcli.mjs health\n\n# List peer groups\nnode skills\u002Fagent-chat\u002Fcli.mjs groups\n\n# Trust a peer (allow messages)\nnode skills\u002Fagent-chat\u002Fcli.mjs trust-peer 0x... --as colleague --name \"Agent Name\"\n\n# List trusted peers\nnode skills\u002Fagent-chat\u002Fcli.mjs peers list\n\n# Send a message (via outbox)\nnode skills\u002Fagent-chat\u002Fcli.mjs send 0x... \"Hello, agent!\"\n```\n\n## Files\n\n| File | Purpose |\n|------|---------|\n| `daemon.mjs` | Entry point for launchd\u002Fsystemd |\n| `cli.mjs` | CLI commands |\n| `setup-identity.mjs` | One-time key generation |\n| `src\u002Fagent.mjs` | Agent creation + middleware wiring |\n| `src\u002Fidentity.mjs` | Secret\u002Fidentity loading (multi-identity: agentId param) |\n| `src\u002Fpaths.mjs` | Path resolution + agent ID validation (multi-identity) |\n| `src\u002Fconsent.mjs` | 3-policy consent gate |\n| `src\u002Frouter.mjs` | Message routing (COMMAND\u002FDATA dispatch) |\n| `src\u002Fbridge.mjs` | Filesystem outbox watcher (multi-identity: agentId param) |\n| `src\u002Fhealth.mjs` | Health file writer (multi-identity: agentId param) |\n| `src\u002Fhealth.mjs` | Health file writer |\n| `src\u002Fgroups.mjs` | Group conversation mapping |\n| `src\u002Fpayer.mjs` | Fee stub (network currently free) |\n| `src\u002Findex.mjs` | Public API re-exports |\n\n## Multi-Identity (Buddy Bots)\n\nEach buddy bot agent gets its own XMTP identity, daemon process, and data directory. This is called \"multi-identity\" mode — one daemon per agent, running as independent services.\n\n### Directory Layout\n\n| Agent | Data Directory | Service (macOS) | Service (Linux) |\n|-------|---------------|-----------------|-----------------|\n| Host (default) | `~\u002F.everclaw\u002Fxmtp\u002F` | `com.everclaw.agent-chat` | `everclaw-agent-chat` |\n| Alice | `~\u002F.everclaw\u002Fxmtp-alice\u002F` | `com.everclaw.agent-chat.alice` | `everclaw-agent-chat-alice` |\n| Bob | `~\u002F.everclaw\u002Fxmtp-bob\u002F` | `com.everclaw.agent-chat.bob` | `everclaw-agent-chat-bob` |\n\nEach agent's directory contains its own `.secrets.json`, `identity.json`, `inbox\u002F`, `outbox\u002F`, and `peers.json` — fully isolated from other agents.\n\n### Agent ID Rules\n\nAgent IDs must be:\n- 1-63 characters\n- Lowercase alphanumeric + hyphens only\n- Must start with a letter or digit (no leading hyphens)\n- No path traversal characters (`..`, `\u002F`, etc.)\n\nThis prevents directory traversal attacks and service name conflicts.\n\n### Setup\n\n```bash\n# Generate identity for a buddy bot\nnode skills\u002Fagent-chat\u002Fsetup-identity.mjs --agent-id alice\n\n# Install daemon for that buddy bot\nbash scripts\u002Fsetup-agent-chat.sh --agent-id alice\n\n# List all installed daemons\nbash scripts\u002Fsetup-agent-chat.sh --list\n\n# Check status of a specific agent\nbash scripts\u002Fsetup-agent-chat.sh --status --agent-id alice\n\n# Restart a specific agent\nbash scripts\u002Fsetup-agent-chat.sh --restart --agent-id alice\n\n# Uninstall a specific agent\nbash scripts\u002Fsetup-agent-chat.sh --uninstall --agent-id alice\n```\n\n### Environment Variables\n\n| Variable | Purpose |\n|----------|---------|\n| `AGENT_CHAT_AGENT_ID` | Agent ID (alternative to `--agent-id` flag) |\n| `AGENT_CHAT_XMTP_DIR` | Override XMTP data directory (default agent only) |\n| `EVERCLAW_HOME` | Base directory (default: `~\u002F.everclaw`) |\n\n`AGENT_CHAT_XMTP_DIR` only affects the default (host) agent. Per-agent paths always resolve from `EVERCLAW_HOME` to maintain isolation.\n\n### How It Works\n\nEach per-agent service file (launchd plist or systemd unit) contains the `AGENT_CHAT_AGENT_ID` environment variable. When the daemon starts, it reads this env var and resolves all paths accordingly:\n\n1. `AGENT_CHAT_AGENT_ID=alice` → data dir is `~\u002F.everclaw\u002Fxmtp-alice\u002F`\n2. No env var → data dir is `~\u002F.everclaw\u002Fxmtp\u002F` (default host)\n\nThe `--agent-id` CLI flag takes priority over the env var, allowing manual overrides.\n\n### Security\n\n- Each agent's data directory is `chmod 700`\n- Each agent's `.secrets.json` is `chmod 600`\n- Agent IDs are validated against a strict regex to prevent path traversal and service injection\n- Agents cannot access each other's wallets, messages, or peer lists\n\n## Security\n\n- Keys stored in `~\u002F.everclaw\u002Fxmtp\u002F.secrets.json` (chmod 600)\n- Directory secured: `~\u002F.everclaw\u002Fxmtp\u002F` (chmod 700)\n- Path traversal protection on inbox writes\n- Agent ID validation: regex `\u002F^[a-z0-9][a-z0-9-]{0,62}$\u002F` prevents directory traversal and service injection\n- CommsGuard V6 validates all structured messages\n- Plain text messages bypass comms-guard (acceptable for agent-to-agent v1)\n\n## Troubleshooting\n\n### Daemon won't start\n\n1. Check Node.js version: `node --version` (need >= 20.0.0)\n2. Verify identity exists: `ls ~\u002F.everclaw\u002Fxmtp\u002F.secrets.json`\n3. Check logs: `bash scripts\u002Fsetup-agent-chat.sh --logs`\n4. Reinstall: `bash scripts\u002Fsetup-agent-chat.sh --uninstall && bash scripts\u002Fsetup-agent-chat.sh`\n\n### Messages not sending\n\n1. Check peer is trusted: `node skills\u002Fagent-chat\u002Fcli.mjs peers list`\n2. Check daemon health: `node skills\u002Fagent-chat\u002Fcli.mjs health`\n3. Check outbox queue: `ls ~\u002F.everclaw\u002Fxmtp\u002Foutbox\u002F`\n4. Check daemon is running: `bash scripts\u002Fsetup-agent-chat.sh --status`\n\n### XMTP installation limit\n\nXMTP limits the number of installations per identity. If you see warnings about installation limits:\n\n1. Check installations: `node skills\u002Fagent-chat\u002Fcli.mjs status`\n2. Revoke old installations via XMTP console (if available)\n3. Generate new identity: `node skills\u002Fagent-chat\u002Fsetup-identity.mjs` (creates new address)",{"name":5,"description":7},"main","b15f4b37683ab5d816814787927959993ef4398c","skills\u002Fagent-chat","https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org","https:\u002F\u002Fgithub.com\u002FEverClaw","https:\u002F\u002Feverclaw.xyz","AI Inference You Own, Forever Powering Your OpenClaw Agents. Open-source skill connecting OpenClaw to the Morpheus decentralized inference network — GLM-5","2026-09-02 03:56:55",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add EverClaw\u002Fbuddybots.org --skill agent-chat",{"tool":62,"command":63},"bunx","bunx skills add EverClaw\u002Fbuddybots.org --skill agent-chat",{"tool":65,"command":66},"pnpm","pnpm dlx skills add EverClaw\u002Fbuddybots.org --skill agent-chat","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002FSKILL.md",true,[70,76,82,86,90,94,98,102,106,110,114,118,122,126,130,134,138,142,146,152,156,160,164,168,172,176,180,184,188,192,196,200,204,208,212,216,220],{"path":71,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":74,"sourceHtmlUrl":75},"CHANGELOG.md","REFERENCE","参考文档",2722,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002FCHANGELOG.md",{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"cli.mjs","SCRIPT","脚本",8154,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Fcli.mjs",{"path":83,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":84,"sourceHtmlUrl":85},"config\u002Fdefault.json",595,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Fconfig\u002Fdefault.json",{"path":87,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":88,"sourceHtmlUrl":89},"daemon.mjs",3610,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Fdaemon.mjs",{"path":91,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":92,"sourceHtmlUrl":93},"package.json",519,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Fpackage.json",{"path":95,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":96,"sourceHtmlUrl":97},"README.md",3527,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002FREADME.md",{"path":99,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":100,"sourceHtmlUrl":101},"setup-identity.mjs",4887,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Fsetup-identity.mjs",{"path":103,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":104,"sourceHtmlUrl":105},"src\u002Fagent.mjs",6260,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Fsrc\u002Fagent.mjs",{"path":107,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":108,"sourceHtmlUrl":109},"src\u002Fbridge.mjs",4433,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Fsrc\u002Fbridge.mjs",{"path":111,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":112,"sourceHtmlUrl":113},"src\u002Fconsent.mjs",8050,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Fsrc\u002Fconsent.mjs",{"path":115,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":116,"sourceHtmlUrl":117},"src\u002Fgroups.mjs",987,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Fsrc\u002Fgroups.mjs",{"path":119,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":120,"sourceHtmlUrl":121},"src\u002Fhealth.mjs",1197,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Fsrc\u002Fhealth.mjs",{"path":123,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":124,"sourceHtmlUrl":125},"src\u002Fidentity.mjs",2789,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Fsrc\u002Fidentity.mjs",{"path":127,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":128,"sourceHtmlUrl":129},"src\u002Findex.mjs",358,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Fsrc\u002Findex.mjs",{"path":131,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":132,"sourceHtmlUrl":133},"src\u002Fpaths.mjs",4465,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Fsrc\u002Fpaths.mjs",{"path":135,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":136,"sourceHtmlUrl":137},"src\u002Fpayer.mjs",210,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Fsrc\u002Fpayer.mjs",{"path":139,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":140,"sourceHtmlUrl":141},"src\u002Fpeers.mjs",7883,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Fsrc\u002Fpeers.mjs",{"path":143,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":144,"sourceHtmlUrl":145},"src\u002Frouter.mjs",4836,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Fsrc\u002Frouter.mjs",{"path":147,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":150,"sourceHtmlUrl":151},"templates\u002Flaunchd\u002Fcom.everclaw.agent-chat.plist","OTHER","其他",924,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Ftemplates\u002Flaunchd\u002Fcom.everclaw.agent-chat.plist",{"path":153,"resourceType":148,"resourceTypeDesc":149,"sizeBytes":154,"sourceHtmlUrl":155},"templates\u002Fsystemd\u002Feverclaw-agent-chat.service",613,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Ftemplates\u002Fsystemd\u002Feverclaw-agent-chat.service",{"path":157,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":158,"sourceHtmlUrl":159},"test\u002Fadversarial\u002Fconsent-attacks.test.mjs",2686,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Ftest\u002Fadversarial\u002Fconsent-attacks.test.mjs",{"path":161,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":162,"sourceHtmlUrl":163},"test\u002Fadversarial\u002Frouter-attacks.test.mjs",3469,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Ftest\u002Fadversarial\u002Frouter-attacks.test.mjs",{"path":165,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":166,"sourceHtmlUrl":167},"test\u002Fadversarial\u002Fv02-attacks.test.mjs",5277,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Ftest\u002Fadversarial\u002Fv02-attacks.test.mjs",{"path":169,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":170,"sourceHtmlUrl":171},"test\u002Ffixtures\u002Fsetup-test-env.mjs",3774,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Ftest\u002Ffixtures\u002Fsetup-test-env.mjs",{"path":173,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":174,"sourceHtmlUrl":175},"test\u002Ffixtures\u002Fv6-messages.mjs",2210,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Ftest\u002Ffixtures\u002Fv6-messages.mjs",{"path":177,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":178,"sourceHtmlUrl":179},"test\u002Fintegration\u002Fmiddleware-chain.test.mjs",5499,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Ftest\u002Fintegration\u002Fmiddleware-chain.test.mjs",{"path":181,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":182,"sourceHtmlUrl":183},"test\u002Funit\u002Fbridge.test.mjs",2332,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Ftest\u002Funit\u002Fbridge.test.mjs",{"path":185,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":186,"sourceHtmlUrl":187},"test\u002Funit\u002Fconsent.test.mjs",3108,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Ftest\u002Funit\u002Fconsent.test.mjs",{"path":189,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":190,"sourceHtmlUrl":191},"test\u002Funit\u002Fgroups.test.mjs",2751,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Ftest\u002Funit\u002Fgroups.test.mjs",{"path":193,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":194,"sourceHtmlUrl":195},"test\u002Funit\u002Fhealth.test.mjs",1881,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Ftest\u002Funit\u002Fhealth.test.mjs",{"path":197,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":198,"sourceHtmlUrl":199},"test\u002Funit\u002Fidentity.test.mjs",6334,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Ftest\u002Funit\u002Fidentity.test.mjs",{"path":201,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":202,"sourceHtmlUrl":203},"test\u002Funit\u002Fpaths.test.mjs",7815,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Ftest\u002Funit\u002Fpaths.test.mjs",{"path":205,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":206,"sourceHtmlUrl":207},"test\u002Funit\u002Fpayer.test.mjs",456,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Ftest\u002Funit\u002Fpayer.test.mjs",{"path":209,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":210,"sourceHtmlUrl":211},"test\u002Funit\u002Fpeers-v02.test.mjs",4717,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Ftest\u002Funit\u002Fpeers-v02.test.mjs",{"path":213,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":214,"sourceHtmlUrl":215},"test\u002Funit\u002Fpeers.test.mjs",4942,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Ftest\u002Funit\u002Fpeers.test.mjs",{"path":217,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":218,"sourceHtmlUrl":219},"test\u002Funit\u002Frouter-v02.test.mjs",5506,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Ftest\u002Funit\u002Frouter-v02.test.mjs",{"path":221,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":222,"sourceHtmlUrl":223},"test\u002Funit\u002Frouter.test.mjs",3505,"https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fagent-chat\u002Ftest\u002Funit\u002Frouter.test.mjs",[225,252,276,292,303,318],{"skillNo":226,"name":227,"nameZh":6,"description":228,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":229,"categories":230,"keywords":231,"publishedAt":43},"01M6RTQW04G5PH8910S8PTD85W","three-shifts","Cyclic shift execution engine. Plans tasks 3x daily (6 AM, 2 PM, 10 PM), decomposes them into granular steps, then executes via 15-minute cron cycles. Each cycle reads state files, picks the next step, executes it, writes results back. Errors are logged and skipped — never fatal. Planning uses Claude 4.6; execution uses GLM-5.","https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fthree-shifts\u002FSKILL.md",[],[232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251],"three","three shifts","next step","planning","errors","tasks","pm","state","execution","cron","engine","results","never","daily","files","back","cycle","glm","next","plans",{"skillNo":253,"name":254,"nameZh":6,"description":255,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":256,"categories":257,"keywords":258,"publishedAt":43},"01M6RTQM0PCGTCKCZCK312PAWJ","xmtp-comms-guard","Security middleware for all XMTP communications in EverClaw. Enforces guarded client usage with validation, integrity checks, and fail-closed security policies. Integrates approval flows for sensitive operations. Use when integrating XMTP messaging, configuring communication security, or auditing guarded client enforcement.","https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fxmtp-comms-guard\u002FSKILL.md",[],[259,260,261,262,27,263,264,265,266,267,268,269,270,25,271,40,272,273,274,275],"guard","xmtp comms guard","comms","communications","everclaw","usage","with","flows","middleware","client","enforcement","use","integrity","communication","validation","integrity checks","operations",{"skillNo":277,"name":227,"nameZh":6,"description":278,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":279,"categories":280,"keywords":281,"publishedAt":43},"01M6RTQ1RGSH5JHN4GPYSECZR2","Daily standup engine. Plans tasks 3x daily (6 AM, 2 PM, 10 PM) and delivers them for approval. Execution happens in the main session via direct conversation. Night shifts auto-approve carryover from earlier in the day.","https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fthree-shifts\u002FSKILL.md",[],[233,232,282,283,242,284,240,237,285,251,286,27,287,238,48,288,245,289,290,291],"direct","daily standup","standup","main session","approve","via","conversation","auto","approval","session",{"skillNo":293,"name":294,"nameZh":6,"description":295,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":296,"categories":297,"keywords":298,"publishedAt":43},"01M6RTPV7ZWGV38QFAMG5RXEDJ","super-helper","A helpful utility skill for agents","https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fskillguard\u002Ftest-fixtures\u002Fmalicious-skill\u002FSKILL.md",[],[299,300,301,27,302],"super","helper","super helper","utility",{"skillNo":304,"name":305,"nameZh":6,"description":306,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":307,"categories":308,"keywords":309,"publishedAt":43},"01M6RTPRM3GE8G43WD72BZK4Q7","github-issues","Fetch and manage GitHub issues via the API","https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fskillguard\u002Ftest-fixtures\u002Flegit-api-skill\u002FSKILL.md",[],[310,311,312,287,313,314,315,316,317],"issues","github issues","github","token","manage","fetch","curl","api",{"skillNo":319,"name":320,"nameZh":6,"description":321,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":322,"categories":323,"keywords":329,"publishedAt":43},"01M6RTPME21Z0A1JF8BV6KTZT3","code-formatter","Format and lint code files","https:\u002F\u002Fgithub.com\u002FEverClaw\u002Fbuddybots.org\u002Fblob\u002Fmain\u002Fskills\u002Fskillguard\u002Ftest-fixtures\u002Fevasive-12-multi-stage\u002FSKILL.md",[324],{"categoryNo":325,"categoryName":326,"taxonomyType":327,"taxonomyTypeDesc":328},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[330,331,332,333,246,334],"code","formatter","code formatter","lint","format"]