Linear Ticket Lifecycle
This skill wraps the general /linear skill with structured start/next/end workflows.
Always invoke the /linear skill for the actual MCP calls when using this skill.
Determining the Mode
Parse the user's request to determine which workflow to run:
| User says | Mode |
|---|---|
| "start KAT-N", "pick up KAT-N", "implement KAT-N", "work on KAT-N" | Start |
| "finish KAT-N", "complete KAT-N", "done with KAT-N", "close KAT-N" | Complete |
| "what's next", "what should I work on", "next ticket", "next issue" | Next |
If ambiguous, ask.
Identifying the Project
- Check the current working directory's AGENTS.md for a Linear project reference.
- If not found, call
list_projectsand ask the user which project to use. - Cache the project name for the remainder of the session and update AGENTS.md for future reference.
Mode: Next
Find the next actionable issue.
- Query
list_issuesfor the project with stateTodo. - If results exist, present them. The first
Todoissue is the recommended next pick. - If no
Todoissues, resolve from blocking relations: a. Querylist_issuesfor the project with stateBacklog. b. For each Backlog issue, callget_issuewithincludeRelations: true. c. Find issues whoseblockedByentries are allDone(or have no blockers). - If multiple candidates, determine if they can be run concurrently in isolated worktrees in two ways: a. Re-check Linear tickets (scope + blockers); then b. Inspect the current code boundaries they would touch to see if there’s hidden coupling.
- Present unblocked issues as candidates, including concurrency guidance/risks.
- If the project has Linear documents (execution model, workflow contract), fetch them
with
list_documentsandget_documentto understand pillar/phase ordering.
Mode: Start
Step 1 — Validate the issue
- Call
get_issuefor the requested issue withincludeRelations: true. - Check every entry in
blockedBy. For each blocker, confirm its status isDone. - If any blocker is not
Done, stop and report which blockers remain open.
Step 2 — Move to In Progress
- Call
update_issueto set state toIn Progress.
Step 3 — Load context
- Read the issue description for references to specs, mocks, docs, or design files.
- Read Linear documents (execution model, workflow contract) for project-specific guidance.
- Read relevant spec files, mock images, or design references found in steps 1 and 2.
- Check existing source code in the areas the issue will touch.
Step 4 — Create feature branch
- Use the
gitBranchNamefield from the issue response as the branch name. - Create the branch from the main branch.
Step 5 — Summarize
Present to the user:
- Issue title and acceptance criteria
- Blocker status (all clear)
- Context loaded (specs, mocks, relevant code)
- Branch name created
- Any project-specific workflow reminders from AGENTS.md (e.g., TDD mandate)
Mode: Complete
Step 1 — Gather evidence
Gather evidence:
- PR link or branch with changes
- Test results (unit and/or E2E)
- Screenshots/video or spec-state references demonstrating acceptance criteria
If a PR already exists on the current branch, detect it with gh pr view.
Step 2 — Validate completion gate
Check if the project's CLAUDE.md or Linear workflow contract defines a hard gate. Common gates:
- Referenced spec states/interactions are verified
- Evidence links are attached (tests, screenshots, or traceable PR notes)
- Gap analysis items are either closed or split into follow-up issues
- Acceptance criteria are all marked as verified in the issue checklist
- Definition of Done checklist is completed
If evidence is insufficient, list what's missing and stop.
Step 3 — Attach evidence to the issue & PR
- Call
create_commenton the issue with a structured evidence summary:## Completion Evidence - PR: [link] - Tests: [pass/fail summary] - Acceptance coverage: [which criteria verified] - Screenshots/video: [if applicable] - Add the same summary as a comment on the PR.
Step 4 — Promote next in chain
- Call
get_issuewithincludeRelations: trueon the completed issue. - For each issue in the
blockslist: a. Callget_issuewithincludeRelations: trueon that downstream issue. b. Check if ALL of itsblockedByentries are nowDone. c. If yes, callupdate_issueto move it toTodo. d. Report which issue was promoted.
(Note: the current ticket will automatically move to Done when the PR is merged).
Step 5 — Summarize
Present:
- Issue marked Done with evidence link
- Which downstream issue(s) were promoted to Todo
- Suggested next action
Important Reminders
- Always pass
includeRelations: truewhen callingget_issueto see blocking dependencies. - Always reference the attached media as the source of truth for design specs and mocks.