| name | harness-pickup |
| description | Phase skill: fetch Linear ticket or parse task description into structured context |
| user-invocable | false |
Purpose
Load the task context so all subsequent phases have a clear picture of what to build.
Steps
-
If ticket identifier (AGE-XX):
- Use
mcp__plugin_linear_linear__get_issue to fetch the full ticket
- Extract: title, description, acceptance criteria, labels, priority, assignee
- If the ticket has linked issues or parent, note them as context
-
If plain text description:
- Use the description as-is
- Note: no labels or priority available, downstream phases should infer from content
-
Update Linear ticket — assign to self and move to "In Progress" — if the task is a Linear ticket (AGE-XX pattern):
- Use a single
mcp__plugin_linear_linear__save_issue call with both:
state: "In Progress"
assignee: "me"
- This signals the team that work has started AND who is doing it, without manual board updates
- The
assignee: "me" resolves to the authenticated Linear user behind the MCP — safe to call even if already assigned to self (idempotent)
- Skip the state update silently if the ticket is already in
In Progress or a later state, but still set the assignee
- Skip the entire step for plain-text tasks (no Linear ticket)
-
Write to state outputs:
{
"ticket_id": "AGE-XX",
"title": "...",
"description": "...",
"labels": [],
"priority": "high|medium|low",
"acceptance_criteria": "..."
}
-
Initialize the conversation file at .harness/conversations/<task-id>.md (pickup owns file creation):
# <task-id>: <title>
## Pickup
**Ticket:** AGE-XX — <title>
**Priority:** <priority>
**Linear status:** moved to In Progress
**Linear assignee:** self
**Description:** <summary>
<!-- Subsequent phases append their sections below -->
## Harness Issues
<!--
Record any friction encountered during this implementation. Format per issue:
### [Phase] Brief title
- What happened: <attempt and failure>
- Root cause: <why the skill instruction was wrong/missing>
- Workaround: <what you did instead>
- Suggested fix: <specific edit to phase skill>
- Turns wasted: <count>
Leave empty if no friction occurred.
-->
Checklist
Escalation
- If the ticket doesn't exist or Linear MCP fails, stop and tell the human
- If the ticket description is empty or vague, note this and proceed — the understand phase will explore