Skip to main content

The Label System

Linear labels determine which agent handles the work:
LabelExecutorExample Task
delegate:cursorCursor Agent Mode”Create migration file for new table”
delegate:gptChatGPT”Research competitor pricing models”
delegate:claudeClaude Chat”Break down epic into sub-tasks”
delegate:blockedHuman required”Decide on pricing strategy”

The Workflow

1. HUMAN creates Linear ticket
   Title: "Build client dashboard"
   Labels: [epic, needs-breakdown]

2. CLAUDE analyzes and breaks down
   → Creates sub-issues with delegate: labels
   → Adds Cursor-ready prompts in descriptions
   → Marks dependencies between tasks

3. HUMAN reviews breakdown
   → Approves or adjusts
   → Assigns priority

4. CURSOR executes delegate:cursor tasks
   → Reads ticket description
   → Validates against SCHEMA.md
   → Writes code
   → Commits to feature branch

5. HUMAN reviews PR
   → Merges or requests changes

6. REPEAT until epic complete

What Each Agent Handles

Claude (Strategist)

Use for:
  • Breaking down epics into tasks
  • Writing technical specs
  • Architectural decisions
  • Code review feedback
  • Documentation
Label: delegate:claude

Cursor (Builder)

Use for:
  • Writing code
  • Running terminal commands
  • File operations
  • Git commits
  • Database migrations
  • Running tests
Label: delegate:cursor

ChatGPT (Researcher)

Use for:
  • Web research
  • Competitor analysis
  • Image generation
  • Broad knowledge questions
  • Market research
Label: delegate:gpt

Human (Decision Maker)

Use for:
  • Strategic decisions
  • Pricing choices
  • Design approvals
  • Client communication
  • Anything requiring judgment
Label: delegate:blocked

What Cursor CAN and CANNOT Do

✅ Cursor CAN

  • Read, write, edit any file in the codebase
  • Run terminal commands (install packages, run migrations, build)
  • Execute git operations (commit, branch, push)
  • Search code and navigate file system
  • Run database scripts and generate types
  • Create complete features from specific instructions

🚫 Cursor CANNOT

  • Browse the web or click UI elements
  • Access external APIs directly (must write code that does)
  • Make business decisions
  • Access Linear/Notion/Slack directly (unless MCP configured)
  • Understand vague requirements without context

The Implication

Cursor needs specific, scoped tasks with clear acceptance criteria. It cannot handle “build me an app”—but it excels at “create a React component in app/dashboard/page.tsx that fetches clients from Supabase and displays them in a grid.”

Parallel Execution

Multiple Cursor agents can work simultaneously if tasks don’t conflict:
Terminal 1 (Agent #1):
"Create client API in lib/api/clients.ts"

Terminal 2 (Agent #2):  
"Create project API in lib/api/projects.ts"

✅ Safe: Different files, no shared state
Terminal 1 (Agent #1):
"Update database schema"

Terminal 2 (Agent #2):
"Write migration for new tables"

❌ Unsafe: Both touch database, will conflict
Rule: Mark parallel_safe: true/false on every ticket.

Quick Reference

Starting a New Feature

  1. Create epic in Linear with [Epic] prefix
  2. Ask Claude to break down into delegate:cursor sub-tasks
  3. Review and approve breakdown
  4. Execute sub-tasks in Cursor Agent Mode
  5. Review PRs and merge

When Stuck

ProblemSolution
Cursor hallucinatesAdd validation step, reference SCHEMA.md
Task too complexBreak down further with Claude
Unclear requirementsCreate delegate:blocked ticket for human decision
Code conflictsCheck parallel_safe flags, sequence tasks

Prompt Templates

Cursor-ready prompt formats