بنقرة واحدة
add-github
Add GitHub channel integration via Chat SDK. PR and issue comment threads as conversations.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Add GitHub channel integration via Chat SDK. PR and issue comment threads as conversations.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
| 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/github-registration.test.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
git show origin/channels:src/channels/github-registration.test.ts > src/channels/github-registration.test.ts
Append to src/channels/index.ts (skip if the line is already present):
import './github.js';
pnpm install @chat-adapter/github@4.29.0
pnpm run build
pnpm exec vitest run src/channels/github-registration.test.ts
Both must be clean before proceeding. github-registration.test.ts is the one integration test: it imports the real channel barrel and asserts the registry contains github. It goes red if the import './github.js'; line is deleted or drifts, if the barrel fails to evaluate, or if @chat-adapter/github isn't installed (the import throws) — so it also implicitly verifies the dependency from step 4. The adapter also calls core's createChatSdkBridge(...); that typed core-API consumption is guarded by pnpm run build.
End-to-end message delivery against a real GitHub repo is verified manually once the service is running — see Next Steps and the webhook setup above.
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, instance, name, is_group, unknown_sender_policy, created_at)
VALUES ('mg-github-myrepo', 'github', 'github:owner/repo', 'github', '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.Add persistent graph-based memory via mnemon. Agents recall past context before responding and remember insights after each turn.
Use OpenCode as an agent provider. OpenRouter, OpenAI, Google, DeepSeek, etc. via OpenCode config — not the Anthropic Agent SDK. Per group via `ncl groups config update --provider opencode`; host passes OPENCODE_* and XDG mount when spawning containers.
Configure which host directories agent containers can access. View, add, or remove mount allowlist entries. Triggers on "mounts", "mount allowlist", "agent access to directories", "container mounts".
Add clidash — a zero-dependency, read-only web dashboard that derives its tabs and tables at runtime from any CLI that lists resources as JSON. Ships pre-wired for NanoClaw's ncl CLI (agent groups, sessions, channels, users, roles), plus message-activity charts, a log tail, and a read-only file viewer for group skills/CLAUDE.md/profiles.
Distill a reusable skill from anything — a directory, a URL, pasted notes, or what you just did together — or refine an existing skill with new learnings. Use when the user says '/learn', 'learn this', 'turn this into a skill', 'capture this workflow', 'make a skill from <source>', or 'improve/update the <name> skill'. Produces or updates a .claude/skills/<name>/SKILL.md authored to NanoClaw's skill guidelines. (This CREATES or REFINES a skill from a source; it does not install existing skills from a registry.)
Add Discord bot channel integration via Chat SDK.