用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/thmtz/nanoclaw-fleet --skill add-signal命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Debug container agent issues. Use when things aren't working, container fails, authentication problems, or to understand how the container system works. Covers logs, environment variables, mounts, and common issues.
Format messages for Slack using mrkdwn syntax. Use when responding to Slack channels (folder starts with "slack_" or JID contains slack identifiers).
Report a Discord-formatted status dashboard of the fleet — master state, every worker's backend/model/uptime, and a summary footer. Trigger on the user typing "/status", "status?", "fleet status", "what's running", or anything semantically equivalent to "show me what's running right now."
基于 SOC 职业分类
正在显示 SKILL.md
| name | add-signal |
| description | Add Signal channel integration via signal-cli TCP daemon. Native adapter — no Chat SDK bridge. |
Adds Signal messaging support via a native adapter that speaks JSON-RPC to a signal-cli TCP daemon. No Chat SDK bridge, no npm deps — only Node.js builtins.
signal-cli installed and a Signal account linked:
brew install signal-clisignal-cli -a +1YOURNUMBER link (follow the QR instructions)NanoClaw doesn't ship channels in trunk. This skill copies the Signal adapter and its tests in from the channels branch.
Skip to Credentials if all of these are already in place:
src/channels/signal.ts and src/channels/signal.test.ts both existsrc/channels/index.ts contains import './signal.js';Otherwise continue. Every step below is safe to re-run.
git fetch origin channels
git show origin/channels:src/channels/signal.ts > src/channels/signal.ts
git show origin/channels:src/channels/signal.test.ts > src/channels/signal.test.ts
Append to src/channels/index.ts (skip if the line is already present):
import './signal.js';
pnpm run build
No npm packages to install — the adapter uses only Node.js builtins (node:net, node:child_process, node:fs).
Add to .env:
SIGNAL_ACCOUNT=+1YOURNUMBER
# TCP daemon host and port (default: 127.0.0.1:7583)
SIGNAL_TCP_HOST=127.0.0.1
SIGNAL_TCP_PORT=7583
# Path to the signal-cli binary (default: resolved on PATH)
SIGNAL_CLI_PATH=/usr/local/bin/signal-cli
# Whether NanoClaw manages the daemon lifecycle (default: true).
# Set to false if you run signal-cli daemon externally.
SIGNAL_MANAGE_DAEMON=true
# signal-cli data directory (default: ~/.local/share/signal-cli)
SIGNAL_DATA_DIR=~/.local/share/signal-cli
Security note: keep the TCP host on 127.0.0.1. The daemon has no auth — binding it to a public interface would expose your full Signal account to the network.
Sync to container: mkdir -p data/env && cp .env data/env/env
# macOS
launchctl kickstart -k gui/$(id -u)/com.nanoclaw
# Linux
systemctl --user restart nanoclaw
If you're in the middle of /setup, return to the setup flow now.
Otherwise, run /init-first-agent to create an agent and wire it to your Signal DM, or /manage-channels to wire this channel to an existing agent group. Signal is direct-addressable — your phone number is the platform ID.
signal+15555550123). Groups use group:<groupId> — find group IDs via signal-cli -a +1YOURNUMBER listGroups.**bold**, *italic* / _italic_, `code`, ```code fence```, ~~strike~~, ||spoiler|| (converted to Signal's offset-based text styles)replyTo* fields populated from Signal quotes(platformId, text) within a 10 s TTL to avoid syncMessage loopsisFromMe: true[Voice Message] placeholder text. Run /add-voice-transcription for local transcription via parakeet-mlxNot supported yet: outbound file attachments (logged and dropped), edit/delete messages, reactions.
grep "Signal" logs/nanoclaw.log | tail
If you see Signal daemon failed to start. Is signal-cli installed and your account linked?:
signal-cli is on PATH (or set SIGNAL_CLI_PATH)signal-cli -a +1YOURNUMBER listIdentities should succeed without promptingIf you see Signal daemon not reachable at 127.0.0.1:7583 and SIGNAL_MANAGE_DAEMON=false, start the daemon yourself: signal-cli -a +1YOURNUMBER daemon --tcp 127.0.0.1:7583.
grep "Signal channel connected" logs/nanoclaw.log | tail -1sqlite3 data/v2.db "SELECT mg.platform_id, mg.name FROM messaging_groups mg JOIN messaging_group_agents mga ON mg.id = mga.messaging_group_id WHERE mg.channel_type='signal'"launchctl print gui/$(id -u)/com.nanoclaw (macOS) / systemctl --user status nanoclaw (Linux)If you see Signal channel lost TCP connection to signal-cli daemon in the logs, the daemon dropped us. There's no auto-reconnect yet — restart the service to re-establish.