linear-webhook

Comment @mason or @eureka in Linear issues to dispatch tasks to agents. Webhook receives Linear comments and routes to correct agent.

7 stars

Best use case

linear-webhook is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Comment @mason or @eureka in Linear issues to dispatch tasks to agents. Webhook receives Linear comments and routes to correct agent.

Teams using linear-webhook should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/linear-webhook/SKILL.md --create-dirs "https://raw.githubusercontent.com/Demerzels-lab/elsamultiskillagent/main/public/skills/arnarsson/linear-webhook/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/linear-webhook/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How linear-webhook Compares

Feature / Agentlinear-webhookStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Comment @mason or @eureka in Linear issues to dispatch tasks to agents. Webhook receives Linear comments and routes to correct agent.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Linear Webhook Skill

Enables Linear issue comment @mentions to dispatch tasks to Clawdbot agents.

## How It Works

1. **Comment in Linear:** `@mason implement user authentication` or `@eureka plan Q2 roadmap`
2. **Linear webhook fires** on comment creation
3. **Clawdbot receives webhook** via exposed endpoint
4. **Transform parses payload:**
   - Extracts @mason or @eureka mention
   - Gets issue context (title, description, labels)
   - Prepares task prompt
5. **Routes to agent session:**
   - @mason → `mason` agent (code/implementation)
   - @eureka → `eureka` agent (planning/strategy)
6. **Agent processes task** and returns result
7. **Result posted back** as Linear comment

## Setup

### 1. Configure Clawdbot Webhooks

Add to your `config.json5`:

```json5
{
  hooks: {
    enabled: true,
    token: "your-secret-token-here", // Generate with: openssl rand -base64 32
    path: "/hooks",
    transformsDir: "/home/sven/clawd-mason/skills/linear-webhook",
    mappings: [
      {
        name: "linear",
        match: {
          path: "/linear",
          method: "POST"
        },
        action: "agent",
        transform: {
          module: "./linear-transform.js",
          export: "transformLinearWebhook"
        },
        deliver: false, // Don't auto-deliver to chat - Linear comments handle responses
      }
    ]
  }
}
```

### 2. Expose Webhook Endpoint

Use Cloudflare Tunnel or Tailscale Funnel to make webhook publicly accessible:

**Option A: Cloudflare Tunnel** (Recommended)
```bash
# Install if needed
brew install cloudflared

# Start tunnel (replace with your domain)
cloudflared tunnel --url http://localhost:18789
```

**Option B: Tailscale Funnel**
```bash
# Enable funnel
tailscale funnel 18789
```

Note the public URL (e.g., `https://your-tunnel.trycloudflare.com`)

### 3. Configure Linear Webhook

1. Go to Linear Settings → API → Webhooks
2. Click "Create new webhook"
3. Set URL: `https://your-tunnel.trycloudflare.com/hooks/linear`
4. Add custom header: `x-clawdbot-token: your-secret-token-here`
5. Select events: **Comment → Created**
6. Save webhook

### 4. Test

Comment in a Linear issue:
```
@mason add user authentication to the login page
```

Expected flow:
1. Webhook fires to Clawdbot
2. Mason agent receives task
3. Mason implements or responds
4. Result posted back to Linear issue as comment

## Agent Routing

- **@mason** → Code implementation, debugging, technical tasks
- **@eureka** → Planning, strategy, research, communication
- Other mentions → Ignored (not handled)

## Issue Context Provided

The agent receives:
- Issue title
- Issue description
- Issue labels
- Comment text (the @mention)
- Issue URL
- Commenter name

## Customization

### Add More Agents

Edit `linear-transform.js`:

```javascript
const AGENT_MENTIONS = {
  '@mason': 'mason',
  '@eureka': 'eureka',
  '@designer': 'designer', // Add your own agents
};
```

### Change Response Behavior

Modify `deliver` and `channel` in config:

```json5
{
  deliver: true,
  channel: "telegram",
  to: "1878354815", // Your Telegram chat ID
}
```

This will also send agent responses to Telegram.

## Security

- **Never commit hook token** to version control
- Use environment variables: `CLAWDBOT_HOOK_TOKEN`
- Verify webhook source (Linear's IP ranges if needed)
- Use HTTPS only (Cloudflare Tunnel provides this)

## Troubleshooting

### Webhook not firing
- Check Linear webhook logs (Settings → API → Webhooks → View logs)
- Verify tunnel is running: `curl https://your-tunnel.trycloudflare.com/hooks/linear`
- Check Clawdbot logs: `clawdbot gateway logs`

### Agent not responding
- Check transform is loading: Look for errors in gateway logs
- Verify agent session exists: `clawdbot sessions list`
- Test transform manually: `node linear-transform.js`

### Response not posting to Linear
- Implement Linear API comment posting in transform
- Add Linear API token to config
- See `linear-transform.js` for example

## Linear API Access

To post comments back to Linear, you need a Linear API token:

1. Go to Linear Settings → API → Personal API keys
2. Create new token with `write` scope
3. Add to environment: `CLAWDBOT_LINEAR_API_KEY=lin_api_...`
4. Transform will use this to post responses

## Files

- `SKILL.md` - This documentation
- `linear-transform.js` - Webhook payload parser and agent router
- `linear-api.js` - Linear GraphQL API client (for posting comments)
- `example-payload.json` - Sample Linear webhook payload for testing

## References

- [Clawdbot Webhook Docs](/automation/webhook)
- [Linear Webhooks API](https://developers.linear.app/docs/graphql/webhooks)
- [Cloudflare Tunnel](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/)

Related Skills

linear

7
from Demerzels-lab/elsamultiskillagent

Interact with Linear for issue tracking. Use when creating, updating, listing, or searching issues. Supports viewing assigned issues, changing status, adding comments, and managing tasks.

native-linear

7
from Demerzels-lab/elsamultiskillagent

Query and manage Linear issues, projects, cycles, and teams via the Linear GraphQL API.

paylock

7
from Demerzels-lab/elsamultiskillagent

Non-custodial SOL escrow for AI agent deals.

agent-reputation

7
from Demerzels-lab/elsamultiskillagent

summary: Cross-platform AI agent reputation checker with trust scoring and PayLock escrow recommendations.

Telecom Agent Skill

7
from Demerzels-lab/elsamultiskillagent

Turn your AI Agent into a Telecom Operator. Bulk calling, ChatOps, and Field Monitoring.

OpenClaw-Finnhub

7
from Demerzels-lab/elsamultiskillagent

OpenClaw skill for real-time stock quote, and financials via Finnhub API.

```markdown

7
from Demerzels-lab/elsamultiskillagent

# OpenClaw-Last.fm

security-operator

7
from Demerzels-lab/elsamultiskillagent

Runtime security guardrails for OpenClaw agents.

operator-humanizer

7
from Demerzels-lab/elsamultiskillagent

Transform AI-generated text into authentic human writing.

kit-email-operator

7
from Demerzels-lab/elsamultiskillagent

**AI-powered email marketing for Kit (ConvertKit)**.

agora

7
from Demerzels-lab/elsamultiskillagent

Trade prediction markets on Agora — the prediction market exclusively for AI agents. Register, browse markets, trade YES/NO, create markets, earn reputation via Brier scores.

surf-check

7
from Demerzels-lab/elsamultiskillagent

Surf forecast decision engine.