ワンクリックで
add-github
// Add GitHub channel integration via Chat SDK. PR and issue comment threads as conversations.
// Add GitHub channel integration via Chat SDK. PR and issue comment threads as conversations.
Add iMessage channel integration via Chat SDK. Local (macOS) or remote (Photon API) mode.
Add Microsoft Teams channel integration via Chat SDK.
Install rtk token-compression proxy into agent containers. Routes Bash tool calls through rtk for 60–90% token savings on dev commands (git, cargo, pytest, docker, kubectl, etc.).
Format messages for WhatsApp, including mentions that render as real WhatsApp tags. Use when responding in a WhatsApp conversation (platform_id / chatJid ends with @s.whatsapp.net or @g.us).
Add WhatsApp channel via native Baileys adapter. Direct connection — no Chat SDK bridge. Uses QR code or pairing code for authentication.
Add Google Calendar as an MCP tool (list calendars, list/search/create events, free/busy queries) using OneCLI-managed OAuth. Multi-calendar and multi-account supported. Mirrors /add-gmail-tool's stub pattern — no raw credentials ever reach the container; OneCLI injects real tokens at request time.
| name | add-github |
| description | Add GitHub channel integration via Chat SDK. PR and issue comment threads as conversations. |
Adds GitHub support via the Chat SDK bridge. The agent participates in PR and issue comment threads.
You need a dedicated GitHub bot account (not your personal account). The adapter uses this account to post replies and filters out its own messages to avoid loops. Create a free GitHub account for your bot (e.g. my-org-bot), then invite it as a collaborator with write access to the repos you want monitored.
NanoClaw doesn't ship channels in trunk. This skill copies the GitHub adapter in from the channels branch.
Skip to Credentials if all of these are already in place:
src/channels/github.ts existssrc/channels/index.ts contains import './github.js';@chat-adapter/github is listed in package.json dependenciesOtherwise continue. Every step below is safe to re-run.
git fetch origin channels
git show origin/channels:src/channels/github.ts > src/channels/github.ts
Append to src/channels/index.ts (skip if the line is already present):
import './github.js';
pnpm install @chat-adapter/github@4.27.0
pnpm run build
Log in as your bot account, then:
On each repo (logged in as the repo owner/admin):
https://your-domain/webhook/github (the shared webhook server, default port 3000)application/jsonopenssl rand -hex 20)Add to .env:
GITHUB_TOKEN=github_pat_...
GITHUB_WEBHOOK_SECRET=your-webhook-secret
GITHUB_BOT_USERNAME=your-bot-username
GITHUB_BOT_USERNAME must match the bot account's GitHub username exactly. This is used for @-mention detection — the agent responds when someone writes @your-bot-username in a PR or issue comment.
Sync to container: mkdir -p data/env && cp .env data/env/env
Ask the user: Is this a private or public repo?
unknown_sender_policy: 'public'. Only collaborators can comment anyway, so it's safe to let all comments through.unknown_sender_policy: 'strict'. Only registered members can trigger the agent, preventing strangers from consuming agent resources. Add trusted collaborators as members (see below).Run /manage-channels to wire the GitHub channel to an agent group, or insert manually:
-- Create messaging group (one per repo)
INSERT INTO messaging_groups (id, channel_type, platform_id, name, is_group, unknown_sender_policy, created_at)
VALUES ('mg-github-myrepo', 'github', 'github:owner/repo', 'owner/repo', 1, '<policy>', datetime('now'));
-- Wire to agent group
INSERT INTO messaging_group_agents (id, messaging_group_id, agent_group_id, trigger_rules, response_scope, session_mode, priority, created_at)
VALUES ('mga-github-myrepo', 'mg-github-myrepo', '<your-agent-group-id>', '', 'all', 'per-thread', 10, datetime('now'));
Replace <policy> with public or strict based on the user's choice above.
When using strict, add each GitHub user who should be able to trigger the agent:
-- Add user (kind = 'github', id = 'github:<numeric-user-id>')
INSERT OR IGNORE INTO users (id, kind, display_name, created_at)
VALUES ('github:<user-id>', 'github', '<username>', datetime('now'));
-- Grant membership to the agent group
INSERT OR IGNORE INTO agent_group_members (user_id, agent_group_id)
VALUES ('github:<user-id>', '<agent-group-id>');
To find a GitHub user's numeric ID: gh api users/<username> --jq .id
Use per-thread session mode so each PR/issue gets its own agent session.
If you're in the middle of /setup, return to the setup flow now.
Otherwise, restart the service to pick up the new channel.
Run from your NanoClaw project root:
source setup/lib/install-slug.sh
launchctl kickstart -k gui/$(id -u)/$(launchd_label) # macOS
systemctl --user restart $(systemd_unit) # Linux
githubgithub:owner/repo (e.g. github:acme/backend). Each PR/issue becomes its own thread automatically.per-thread session mode. Each PR or issue gets its own isolated agent session. Typically wire to a dedicated agent group if the repo contains sensitive code.