
Add Signal
Add Signal channel integration via signal-cli device-link.
Install
npx skills add nanocoai/nanoclaw --skill add-signal -g -a claude-code -y- Repository
- nanocoai/nanoclaw31.1k
- Category
- Engineering
- Updated
- 5d ago
- License
- MIT
- Context cost
- Mediumabout 3,000 tokens
- Runs scripts
- No, instructions only
What it does
Add Signal channel integration via signal-cli device-link. Native adapter, no Chat SDK bridge.
Add Signal Channel
Adds Signal support via a native adapter that speaks JSON-RPC to a signal-cli daemon, no Chat SDK bridge, only Node.js builtins. NanoClaw links to Signal as a secondary device on your existing phone: no new number, no bot API. Your assistant sends and receives as the number on the phone that scans the link.
Apply
1. Install signal-cli
NanoClaw talks to Signal through signal-cli, which has no bot API of its own. Install it if it isn't on PATH yet, Homebrew on macOS, the native release binary on Linux (neither needs Java). If it's already installed this is a no-op:
command -v signal-cli >/dev/null 2>&1 || bash setup/install-signal-cli.sh
2. Copy the adapter and its registration test
Fetch the channels branch and copy the Signal adapter and its registration test
into src/channels/ (overwrite, the branch is canonical):
src/channels/signal.ts
src/channels/signal-registration.test.ts
3. Register the adapter
Append the self-registration import to the channel barrel (skipped if the line is already present). This one line is the skill's only reach-in into core:
import './signal.js';
4. Install the QR-rendering dependency
The device-link step renders the linking URL as a terminal QR via qrcode.
Pinned to exact versions, the supply-chain policy rejects ranges and latest:
qrcode@1.5.4
@types/qrcode@1.5.6
The adapter itself consumes only Node.js builtins, so there is no adapter package
to install, qrcode is purely for rendering the link during setup.
5. Build and validate
Build first: it guards the adapter's typed core-API consumption. Then run the one integration test.
pnpm run build
pnpm exec vitest run src/channels/signal-registration.test.ts
