npx claudepluginhub wotai-dev/woterclipLinear-backed agent orchestration with persona-based task routing for Claude Code
Share bugs, ideas, or general feedback.
Linear-backed agent orchestration for Claude Code. A single Claude instance wears different "hats" (personas) based on Linear issue labels – an Orchestrator routes work, a CEO makes strategic calls, and worker personas execute.
Linear Issues → /heartbeat → Persona Matching → Work → Report Back
backend, frontend, etc.)/scheduleThe human is the Board – the ultimate escalation target when the agent is blocked.
In Claude Code, run /plugin → Add Marketplace → enter wotai-dev/woterclip, then install the plugin.
Or for local development:
git clone https://github.com/wotai-dev/woterclip.git
claude --plugin-dir /path/to/woterclip
.mcp.json or global MCP config:
{
"mcpServers": {
"linear": {
"type": "url",
"url": "https://mcp.linear.app/sse"
}
}
}
assignee: "me")# 1. Initialize WoterClip in your repo (creates config + personas + Linear labels)
/woterclip-init
# 2. Run a single heartbeat cycle
/heartbeat
# 3. Or schedule recurring heartbeats
/schedule 30m /heartbeat
# 4. Check status
/woterclip-status
Each /heartbeat runs an 11-step cycle:
.woterclip/config.yaml, check lockfileagent-working labelUse --dry-run to see what would be picked without doing work. Use --persona backend to force a specific persona.
Each persona gets its own directory with three files:
| File | Purpose |
|---|---|
SOUL.md | Identity, posture, voice, decision framework |
TOOLS.md | Available tools and integrations |
config.yaml | Runtime config (model, thinking effort, max turns) |
| Persona | Role | Model | Turns | Label |
|---|---|---|---|---|
| Orchestrator | Route issues, decompose work | Haiku | 50 | (default – no label) |
| CEO | Strategy, prioritization, architecture | Sonnet | 100 | ceo |
| Backend | API, database, server-side | Opus | 300 | backend |
| Frontend | UI, components, styling | Sonnet | 200 | frontend |
Create custom personas with /persona-create or copy directories between repos.
After /woterclip-init, your repo gets:
.woterclip/
├── config.yaml # Linear settings, heartbeat behavior, persona routing
├── heartbeat-log.jsonl # Append-only heartbeat history (created at runtime)
└── personas/
├── orchestrator/
│ ├── SOUL.md
│ ├── TOOLS.md
│ └── config.yaml
├── ceo/
│ ├── SOUL.md
│ ├── TOOLS.md
│ └── config.yaml
├── backend/
│ ├── SOUL.md
│ ├── TOOLS.md
│ └── config.yaml
└── frontend/
├── SOUL.md
├── TOOLS.md
└── config.yaml
| Command | Description |
|---|---|
/heartbeat | Run one heartbeat cycle |
/heartbeat --dry-run | Show what would be picked up |
/heartbeat --persona backend | Force a specific persona |
/woterclip-init | Initialize WoterClip in a repo |
/woterclip-status | Current state, queue, blocked issues |
/woterclip-status --history | Recent heartbeat history |
/persona-create | Create a new persona interactively |
/persona-list | List configured personas |
WoterClip uses Linear labels for state management:
| Label | Purpose |
|---|---|
agent-working | Agent is actively working this issue |
agent-blocked | Agent is blocked, needs Board attention |
backend, frontend, etc. | Routes issue to the matching persona |