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_projects and 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_issues for the project with state Todo.
- If results exist, present them. The first
Todo issue is the recommended next pick.
- If no
Todo issues, resolve from blocking relations:
a. Query list_issues for the project with state Backlog.
b. For each Backlog issue, call get_issue with includeRelations: true.
c. Find issues whose blockedBy entries are all Done (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_documents and get_document to understand pillar/phase ordering.
Mode: Start
Step 1 — Validate the issue
- Call
get_issue for the requested issue with includeRelations: true.
- Check every entry in
blockedBy. For each blocker, confirm its status is Done.
- If any blocker is not
Done, stop and report which blockers remain open.
Step 2 — Move to In Progress
- Call
update_issue to set state to In 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
gitBranchName field 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_comment on 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_issue with includeRelations: true on the completed issue.
- For each issue in the
blocks list:
a. Call get_issue with includeRelations: true on that downstream issue.
b. Check if ALL of its blockedBy entries are now Done.
c. If yes, call update_issue to move it to Todo.
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: true when calling get_issue to see blocking dependencies.
- Always reference the attached media as the source of truth for design specs and mocks.
1---2name: kata-linear3description: Linear ticket lifecycle for any project. Use when starting work on a Linear issue, ending work on an issue, or asking what to work on next. Triggers include, start KAT-N, pick up, implement, finish, complete, done with, close, what's next, next ticket, next issue. Handles blocker validation, status transitions, context loading, branch creation, evidence gating, and chain promotion.4---56# Linear Ticket Lifecycle78This skill wraps the general `/linear` skill with structured start/next/end workflows.9Always invoke the `/linear` skill for the actual MCP calls when using this skill.1011## Determining the Mode1213Parse the user's request to determine which workflow to run:1415| User says | Mode |16| ------------------------------------------------------------------- | ------------ |17| "start KAT-N", "pick up KAT-N", "implement KAT-N", "work on KAT-N" | **Start** |18| "finish KAT-N", "complete KAT-N", "done with KAT-N", "close KAT-N" | **Complete** |19| "what's next", "what should I work on", "next ticket", "next issue" | **Next** |2021If ambiguous, ask.2223## Identifying the Project24251. Check the current working directory's AGENTS.md for a Linear project reference.262. If not found, call `list_projects` and ask the user which project to use.273. Cache the project name for the remainder of the session and update AGENTS.md for future reference.2829---3031## Mode: Next3233Find the next actionable issue.34351. Query `list_issues` for the project with state `Todo`.362. If results exist, present them. The first `Todo` issue is the recommended next pick.373. If no `Todo` issues, resolve from blocking relations:38 a. Query `list_issues` for the project with state `Backlog`.39 b. For each Backlog issue, call `get_issue` with `includeRelations: true`.40 c. Find issues whose `blockedBy` entries are all `Done` (or have no blockers).414. If multiple candidates, determine if they can be run concurrently in isolated worktrees in two ways:42 a. Re-check Linear tickets (scope + blockers); then43 b. Inspect the current code boundaries they would touch to see if there’s hidden coupling.445. Present unblocked issues as candidates, including concurrency guidance/risks.456. If the project has Linear documents (execution model, workflow contract), fetch them46 with `list_documents` and `get_document` to understand pillar/phase ordering.4748---4950## Mode: Start5152### Step 1 — Validate the issue53541. Call `get_issue` for the requested issue with `includeRelations: true`.552. Check every entry in `blockedBy`. For each blocker, confirm its status is `Done`.563. If any blocker is not `Done`, stop and report which blockers remain open.5758### Step 2 — Move to In Progress59601. Call `update_issue` to set state to `In Progress`.6162### Step 3 — Load context63641. Read the issue description for references to specs, mocks, docs, or design files.652. Read Linear documents (execution model, workflow contract) for project-specific guidance.663. Read relevant spec files, mock images, or design references found in steps 1 and 2.674. Check existing source code in the areas the issue will touch.6869### Step 4 — Create feature branch70711. Use the `gitBranchName` field from the issue response as the branch name.722. Create the branch from the main branch.7374### Step 5 — Summarize7576Present to the user:7778- Issue title and acceptance criteria79- Blocker status (all clear)80- Context loaded (specs, mocks, relevant code)81- Branch name created82- Any project-specific workflow reminders from AGENTS.md (e.g., TDD mandate)8384---8586## Mode: Complete8788### Step 1 — Gather evidence8990Gather evidence:9192- PR link or branch with changes93- Test results (unit and/or E2E)94- Screenshots/video or spec-state references demonstrating acceptance criteria9596If a PR already exists on the current branch, detect it with `gh pr view`.9798### Step 2 — Validate completion gate99100Check if the project's CLAUDE.md or Linear workflow contract defines a hard gate.101Common gates:102103- Referenced spec states/interactions are verified104- Evidence links are attached (tests, screenshots, or traceable PR notes)105- Gap analysis items are either closed or split into follow-up issues106- Acceptance criteria are all marked as verified in the issue checklist107- Definition of Done checklist is completed108109If evidence is insufficient, list what's missing and stop.110111### Step 3 — Attach evidence to the issue & PR1121131. Call `create_comment` on the issue with a structured evidence summary:114 ```115 ## Completion Evidence116 - PR: [link]117 - Tests: [pass/fail summary]118 - Acceptance coverage: [which criteria verified]119 - Screenshots/video: [if applicable]120 ```1212. Add the same summary as a comment on the PR.122123### Step 4 — Promote next in chain1241251. Call `get_issue` with `includeRelations: true` on the completed issue.1262. For each issue in the `blocks` list:127 a. Call `get_issue` with `includeRelations: true` on that downstream issue.128 b. Check if ALL of its `blockedBy` entries are now `Done`.129 c. If yes, call `update_issue` to move it to `Todo`.130 d. Report which issue was promoted.131132(Note: the current ticket will automatically move to `Done` when the PR is merged).133134### Step 5 — Summarize135136Present:137138- Issue marked Done with evidence link139- Which downstream issue(s) were promoted to Todo140- Suggested next action141142## Important Reminders143144- Always pass `includeRelations: true` when calling `get_issue` to see blocking dependencies.145- Always reference the attached media as the source of truth for design specs and mocks.