Linear Tickets via Orca
stablyai/orca
Linear ticket work through Orca's CLI. Use when working from a linked Linear issue, finishing work with a PR/MR link and a completion comment, moving a ticket…
Lets a NanoClaw agent answer every comment on Linear issues, using an OAuth application identity or a personal API key and the Chat SDK bridge.
$ npx skills add nanocoai/nanoclaw --skill add-linear -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install nanocoai/nanoclaw add-linear --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/nanocoai/nanoclaw.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/add-linear .claude/skills/add-linear && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "add-linear" agent skill from https://github.com/nanocoai/nanoclaw/tree/main/.claude/skills/add-linear into .claude/skills/add-linear/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-linear", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/nanocoai/nanoclaw/tree/main/.claude/skills/add-linearType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add nanocoai/nanoclaw --skill add-linear -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install nanocoai/nanoclaw add-linear --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nanocoai/nanoclaw.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/add-linear .agents/skills/add-linear && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "add-linear" agent skill from https://github.com/nanocoai/nanoclaw/tree/main/.claude/skills/add-linear into .agents/skills/add-linear/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-linear", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nanocoai/nanoclaw --skill add-linear -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install nanocoai/nanoclaw add-linear --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nanocoai/nanoclaw.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/add-linear .cursor/skills/add-linear && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "add-linear" agent skill from https://github.com/nanocoai/nanoclaw/tree/main/.claude/skills/add-linear into .cursor/skills/add-linear/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-linear", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/nanocoai/nanoclaw.git --path .claude/skills/add-linear--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add nanocoai/nanoclaw --skill add-linear -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install nanocoai/nanoclaw add-linear --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nanocoai/nanoclaw.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/add-linear .gemini/skills/add-linear && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "add-linear" agent skill from https://github.com/nanocoai/nanoclaw/tree/main/.claude/skills/add-linear into .gemini/skills/add-linear/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-linear", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install nanocoai/nanoclaw add-linearInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add nanocoai/nanoclaw --skill add-linear -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/nanocoai/nanoclaw.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/add-linear .github/skills/add-linear && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "add-linear" agent skill from https://github.com/nanocoai/nanoclaw/tree/main/.claude/skills/add-linear into .github/skills/add-linear/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-linear", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nanocoai/nanoclaw --skill add-linear -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install nanocoai/nanoclaw add-linear --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nanocoai/nanoclaw.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/add-linear .opencode/skills/add-linear && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "add-linear" agent skill from https://github.com/nanocoai/nanoclaw/tree/main/.claude/skills/add-linear into .opencode/skills/add-linear/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "add-linear", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
add-linearLets a NanoClaw agent answer every comment on Linear issues, using an OAuth application identity or a personal API key and the Chat SDK bridge.
Every comment on a Linear issue triggers the agent, with no @-mention needed, so issue threads become conversations. The recommended setup is a Linear OAuth application with client credentials enabled, which lets the agent post under an app identity and stops the adapter from filtering your own comments as self-messages. A personal API key in `LINEAR_API_KEY` is the simpler alternative, but the agent then posts as you and your own comments are filtered out.
Because an OAuth app cannot be mentioned, the channel is set to respond to plain comments. Installation copies the Linear adapter and its registration test from the `channels` branch, appends the import to the channel barrel, installs `@chat-adapter/linear` at a pinned version, then builds and runs the test.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 66f0823. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pnpmFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comAlso links to:
linear.appFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
LINEAR_API_KEYLINEAR_TEAM_KEYLINEAR_WEBHOOK_SECRETTEAM_KEYLINEAR_CLIENT_SECRETFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Linear Channel for NanoClaw loads about 2.6k tokens when it runs. Until then it costs about 24 tokens; SKILL.md has 1,184 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
directive consumes it. Here they go to `.env`in `.env` by hand (commented in the template below). `LINEAR_BOT_USERNAME` is theersonal API key route, add this line to `.env` instead of theuth prompts and set `LINEAR_API_KEY` in `.env` by hand.ice (see Next Steps) so the adapter and `.env` values are live.Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from nanocoai/nanoclaw at commit 66f0823, republished under its MIT licence (© nanocoai). 1,184 words, ~2,553 tokens.
.claude/skills/add-linear/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Adds Linear support via the Chat SDK bridge. The agent participates in issue
comment threads. Every comment on a Linear issue triggers the agent — no
@-mention needed. NanoClaw doesn't ship channels in trunk — this skill copies the
Linear adapter in from the channels branch.
The mechanical steps under Apply carry nc: directive fences: an agent reads
the prose and applies them, and a parser can apply them deterministically from
the same document. Every directive is idempotent, so the whole skill is safe to
re-run; anything a parser can't apply falls back to the prose beside it.
Recommended: Create a Linear OAuth application so the agent posts as an app identity, not as you. This prevents the adapter from filtering your own comments as self-messages.
https://github.com/your-org/nanoclaw)http://localhostAlternative: Use a Personal API Key (LINEAR_API_KEY) for simpler setup. The agent will post as you, and your own comments will be filtered (other team members' comments still work).
Linear OAuth apps post and read comments under an app identity that can't be @-mentioned; the adapter's declared channel defaults therefore respond to plain comments rather than mention-only, and the wiring below sets that same pattern mode explicitly.
Fetch the channels branch and copy the Linear adapter and its registration
test into src/channels/ (overwrite — the branch is canonical):
src/channels/linear.ts
src/channels/linear-registration.test.tsAppend 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 the channel registry:
import './linear.js';Pinned to an exact version — the supply-chain policy rejects ranges and latest:
@chat-adapter/linear@4.29.0Build first: it guards the typed createChatSdkBridge(...) core call and proves
the dependency is installed. Then run the one integration test.
pnpm run buildpnpm exec vitest run src/channels/linear-registration.test.tsBoth must be clean before proceeding. linear-registration.test.ts imports the
real channel barrel and asserts the registry contains linear. It goes red if
the import './linear.js'; line is deleted or drifts, if the barrel fails to
evaluate, or if @chat-adapter/linear isn't installed (the import throws) — so
it also covers the dependency from step 3. End-to-end message delivery against a
real Linear workspace is verified manually once the service is running — see
Wiring and Next Steps.
Linear app and webhook setup is human and interactive — these steps are prose (no parser can click through the Linear UI), except the final env write.
NanoClawhttps://your-domain/webhook/linear (the shared webhook server, default port 3000)Note: Linear webhook delivery may be delayed 1-5 minutes for new webhooks. This is normal.
Capture the values, then write them. prompt only asks and binds the answer
to a name; a separate directive consumes it. Here they go to .env
(set-if-absent — a value you've already filled in is never overwritten) and sync
to the container.
Use either the OAuth app credentials (recommended) or a Personal API key.
For the API-key path, paste none at the OAuth prompts and set LINEAR_API_KEY
in .env by hand (commented in the template below). LINEAR_BOT_USERNAME is the
display name for the bot, used for self-message detection when using a Personal
API Key. LINEAR_TEAM_KEY is the Linear team key (e.g. ENG, NAN) — find it
in Linear under Settings > Teams; all issues in this team route to one messaging
group.
Paste the OAuth Client ID — Linear Settings > API > OAuth Applications. Paste `none` if using a Personal API key instead.Paste the OAuth Client Secret. Paste `none` if using a Personal API key instead.Paste the webhook signing secret from the webhook you just created.Enter the Linear team key (e.g. `ENG`, `NAN`) — Settings > Teams.Enter the bot display name (e.g. `NanoClaw Bot`).LINEAR_CLIENT_ID={{linear_client_id}}
LINEAR_CLIENT_SECRET={{linear_client_secret}}
LINEAR_WEBHOOK_SECRET={{linear_webhook_secret}}
LINEAR_TEAM_KEY={{linear_team_key}}
LINEAR_BOT_USERNAME={{linear_bot_username}}If you went the Personal API key route, add this line to .env instead of the
OAuth pair (agent posts as you, your own comments are filtered):
LINEAR_API_KEY=lin_api_...Linear is team-routed: the assistant watches one team and answers every comment
on its issues (it can't be @-mentioned). Wire the team you set up to an agent —
pick which one should answer (ncl groups list shows their folders). The host
service must be running — ncl connects to it over a Unix socket.
The sender policy depends on the workspace: a private workspace can use public
(only workspace members can comment anyway); a public workspace should use
strict so only registered members may talk to the agent.
Which agent should answer Linear comments? Enter its folder (run `ncl groups list`).Is this a private or public Linear workspace? Enter `public` for a private workspace (only members can comment) or `strict` for a public workspace (only registered members may talk to the agent).ncl messaging-groups create --channel-type linear --platform-id linear:{{linear_team_key}} --is-group 1 --unknown-sender-policy {{linear_sender_policy}} --name {{linear_team_key}}
ncl wirings create --channel-type linear --platform-id linear:{{linear_team_key}} --agent-group {{agent_folder}} --engage-mode pattern --engage-pattern . --session-mode per-threadThe explicit pattern engage mode with pattern . matches the Linear adapter's
declared channel defaults — Linear can't be @-mentioned, so the agent answers
every comment. Each issue thread becomes its own conversation. There's no
welcome — Linear has no direct message, so the assistant greets people when it
first answers a comment. If you chose strict, register the people who may talk
to the agent (see the GitHub skill for adding members).
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) # Linuxlinearlinear:<TEAM_KEY> (e.g. linear:ENG). Find your team key in Linear under Settings > Teams. Each issue becomes its own thread automatically.per-thread session mode. Each issue comment thread gets its own isolated agent session.Comments never reach the agent. New Linear webhooks can lag 1–5 minutes, so wait before digging. Then check the webhook in Linear Settings → API → Webhooks: the URL must be your public host at /webhook/linear (shared webhook server, port 3000), the right team selected, and the Comment event checked. A mismatch between the webhook's signing secret and LINEAR_WEBHOOK_SECRET makes deliveries fail signature verification silently — re-copy the secret from the webhook page.
OAuth credentials rejected. The Client ID and Secret come from Linear Settings → API → OAuth Applications, and the app must have Client credentials enabled under grant types after creation — without that toggle the token exchange 401s. If you meant to use a Personal API key instead, answer none at both OAuth prompts and set LINEAR_API_KEY in .env by hand.
The agent ignores your own comments. That's Personal-API-key mode working as designed: comments from the key's account are filtered as self-messages so the bot doesn't answer itself. Other members' comments still trigger it; if it must answer you too, switch to the OAuth app identity.
Sender-policy answer rejected, or issues route nowhere. The policy must be exactly public or strict (lowercase), and LINEAR_TEAM_KEY must be the short team key (e.g. ENG) from Settings → Teams — all issues in that one team route to the messaging group.
Wired but dead. Run pnpm exec vitest run src/channels/linear-registration.test.ts — red means the barrel import or the @chat-adapter/linear install drifted, so re-run the Apply steps. If green, restart the service (see Next Steps) so the adapter and .env values are live.
© nanocoai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files in .claude/skills/add-linear of nanocoai/nanoclaw.
Open the folder on GitHubat commit 66f0823
Linear Channel for NanoClaw next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Linear Channel for NanoClaw this skillnanocoai/nanoclaw | 31k | — | ~2.6k | Automated safety check: Notes | MIT | |
| Linear Tickets via Orcastablyai/orca | 87k | — | ~558 | Automated safety check: Pass | MIT | |
| Openloomi Connectorsmelandlabs/openloomi | 1k | — | ~3.3k | Automated safety check: Pass | Apache-2.0 | |
| Linear Automationdavila7/claude-code-templates | 32k | 8 repos | ~1.5k | Automated safety check: Pass | MIT | |
| OpenWork Slack Setupdifferent-ai/openwork | 24k | — | ~1.2k | Automated safety check: Pass | Custom licence | |
| Superset Integration Toolssuperset-sh/superset | 15k | — | ~1.6k | Automated safety check: Warn | Custom licence |
stablyai/orca
Linear ticket work through Orca's CLI. Use when working from a linked Linear issue, finishing work with a PR/MR link and a completion comment, moving a ticket…
melandlabs/openloomi
openloomi Connectors tools - manage the native 7 messaging integrations and pair with the composio skill for the 1000+ apps OAuth layer (Slack, Discord, X, Gmail, Outlook, Google…
davila7/claude-code-templates
Automate Linear tasks via Rube MCP (Composio): issues, projects, cycles, teams, labels.
different-ai/openwork
Configures and verifies the OpenWork Slack assistant for an approved private-alpha organization, merging manifest changes into its existing Slack app.
superset-sh/superset
Lists and calls the tools of connected integrations such as Linear, GitHub, Sentry or Notion through the superset mcp command, without storing a token on the machine.
davepoon/buildwithclaude
Automate Telegram tasks via Rube MCP (Composio): send messages, manage chats, share photos/documents, and handle bot commands.
nanocoai/nanoclaw
Installs or refreshes Iron Proxy and its Iron Control web console for NanoClaw, with a local Docker setup, database, credentials and a human approval bridge.
nanocoai/nanoclaw
Drives a web browser from the shell with the agent-browser CLI: open pages, read an element snapshot, click and fill by reference, grab text and screenshots.
nanocoai/nanoclaw
Installs or refreshes OneCLI as the gateway provider for NanoClaw, copying the adapter files, registering the provider and running the setup script.
nanocoai/nanoclaw
Guides a conversational migration from an OpenClaw install to NanoClaw v2, carrying over identity, channel credentials, scheduled tasks and workspace files.
nanocoai/nanoclaw
Wires up an additional phone number onto an already-installed Dial channel, so one NanoClaw install answers SMS and AI voice calls on more than one line.
nanocoai/nanoclaw
Adds a persistent wiki knowledge base to a NanoClaw group following Karpathy's LLM Wiki pattern, with folders, a tailored container skill and a CLAUDE.md section.
Works with
Categories
Lets a NanoClaw agent answer every comment on Linear issues, using an OAuth application identity or a personal API key and the Chat SDK bridge. Every comment on a Linear issue triggers the agent, with no @-mention needed, so issue threads become conversations. The recommended setup is a Linear OAuth application with client credentials enabled, which lets the agent post under an app identity and stops the adapter from filtering your own comments as self-messages.
Linear Channel for NanoClaw fits situations like: having an agent respond in Linear issue comment threads; choosing between an OAuth app identity and a personal API key for the bot; adding the Linear adapter to an existing NanoClaw install.
Run `npx skills add nanocoai/nanoclaw --skill add-linear -a claude-code`. Or copy the skill folder (.claude/skills/add-linear in nanocoai/nanoclaw) into .claude/skills/add-linear in your project. Claude Code loads it when a task matches its description.
Run `npx skills add nanocoai/nanoclaw --skill add-linear -a codex`. Or copy the skill folder (.claude/skills/add-linear in nanocoai/nanoclaw) into .agents/skills/add-linear in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add nanocoai/nanoclaw --skill add-linear -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/add-linear, .gemini/skills/add-linear, .github/skills/add-linear and .opencode/skills/add-linear in your project.
Going by SKILL.md and its folder, Linear Channel for NanoClaw needs the command-line tools its instructions call (pnpm) and credentials named LINEAR_API_KEY, LINEAR_TEAM_KEY, LINEAR_WEBHOOK_SECRET and TEAM_KEY. Our summary lists: A NanoClaw installation with pnpm; A Linear OAuth application or a personal API key.
SKILL.md names 2 domains. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. As links in the text: linear.app. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Linear Channel for NanoClaw is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Linear Channel for NanoClaw: Linear Tickets via Orca (stablyai/orca, 87k stars), Openloomi Connectors (melandlabs/openloomi, 1k stars), Linear Automation (davila7/claude-code-templates, 32k stars) and OpenWork Slack Setup (different-ai/openwork, 24k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
nanocoai (a GitHub organization) maintains it in nanocoai/nanoclaw, which has 30,883 GitHub stars. The repository holds 59 skills in this directory. The repository was last updated on October 6, 2026.
Source: nanocoai/nanoclaw on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.