linear-agents-aig-signals-interaction

star 16

This skill should be used when building or registering an agent that operates inside Linear — agent signals, agent interaction, OAuth actor mode, AIG (Agent Intelligence Gateway). Activates on "linear agent", "agent signal", "agent interaction", "linear aig", "agents in linear".

markus41 By markus41 schedule Updated 4/30/2026

name: Linear Agents (AIG, Signals, Interaction) description: This skill should be used when building or registering an agent that operates inside Linear — agent signals, agent interaction, OAuth actor mode, AIG (Agent Intelligence Gateway). Activates on "linear agent", "agent signal", "agent interaction", "linear aig", "agents in linear". version: 1.0.0 allowed-tools: - Read - Grep - Glob - Bash

Linear Agents

References:

Agent model

A Linear agent is an OAuth app with the agents:create and agents:signal scopes that:

  • Can be assigned to issues (treated as a first-class assignee)
  • Posts comments / status changes on behalf of users (via OAuth actor authorization)
  • Emits signals — short status messages rendered inline on the issue ("running tests", "75% complete", "needs input")
  • Receives interaction events — when a user @-mentions the agent or assigns it

Registration

Settings → API → Agents → New agent. Or via API once granted agents:create. Capture:

  • agentId
  • agent_oauth_token (long-lived)
  • Webhook URL for interaction events

Agent interaction

When a user assigns the agent to an issue:

  • Linear sends a webhook event of type Agent with action interaction
  • Body includes issue.id, actor (user who triggered), kind (assigned, mentioned, replied)
  • Agent should respond by:
    1. Acknowledging via agentSignalCreate({ kind: "progress", message: "Working on it…" })
    2. Doing the work
    3. Reporting completion via agentSignalCreate({ kind: "completion", message: "Done — see comment" })
    4. Posting a comment with the result

Agent signals

Signals are lightweight status pings that render in the Linear UI as a small badge:

  • progress — "Running tests..." (yellow)
  • completion — "Tests passed" (green)
  • request_input — "Need approval" (blue, with button)
  • error — "Failed: ..." (red)
await client.agentSignalCreate({
  agentId,
  issueId,
  kind: "progress",
  message: "Compiling…",
  metadata: { jobId: "..." }
});

Signals are NOT comments — they're ephemeral. Use them for in-progress updates; use comments for permanent results.

AIG (Agent Intelligence Gateway)

The AIG (https://linear.app/developers/aig) is Linear's gateway for agent-to-agent communication. Use cases:

  • Pass context between agents (e.g. linear-issue-curator hands off to harness-linear-bridge)
  • Negotiate which agent should handle a multi-agent task
  • Aggregate signals from multiple sub-agents

The plugin's lib/aig.ts provides:

export async function aigPublish(channel: string, msg: AIGMessage): Promise<void>;
export function aigSubscribe(channel: string, handler: (msg: AIGMessage) => void): () => void;

Actor authorization in agents

When an agent posts on behalf of a user:

  1. Mint an actor token via your backend (signs a JWT with userId, 5-min expiry)
  2. Include in Linear-Actor-Token header
  3. The action shows up in Linear's UI as performed by the user, with a small "via Agent: " badge
const headers = { "Linear-Actor-Token": actorToken };
await fetch("https://api.linear.app/graphql", {
  method: "POST",
  headers: { ...headers, Authorization: `Bearer ${agentToken}` },
  body: JSON.stringify({ query, variables })
});

Best practices

  • Idempotency: agents may receive the same interaction event twice (e.g. on retry). Dedupe by event ID.
  • Timeouts: emit a progress signal at least every 30s if the work is long-running, otherwise Linear shows "Agent unresponsive".
  • Failure surfaces: on error, emit agentSignalCreate({ kind: "error" }) AND post a comment with the failure details. Don't silently fail.
  • Scope minimisation: don't request admin scope unless you genuinely manage workflows.
Install via CLI
npx skills add https://github.com/markus41/claude --skill linear-agents-aig-signals-interaction
Repository Details
star Stars 16
call_split Forks 1
navigation Branch main
article Path SKILL.md
More from Creator