From linear-task
Create a Linear issue with industry-standard user story format, acceptance criteria (Gherkin/checklist), labels, project, cycle, and priority. Triggered when the user wants to create a task/issue in Linear.
How this skill is triggered — by the user, by Claude, or both
Slash command
/linear-task:linear-taskThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are creating a Linear issue following **industry-standard Agile/Scrum format**. Follow every step in order.
You are creating a Linear issue following industry-standard Agile/Scrum format. Follow every step in order.
Always write the entire issue — title, user story, acceptance criteria, and all sections — in English, regardless of the language used in the conversation.
Ask the user for any missing pieces. Required:
Required (always ask if not provided):
mcp__linear-server__list_issue_labels and suggest the most relevant ones. If no existing label fits, propose creating a new one — but ask the user for confirmation before creating it (see STEP 5).Optional (ask only if user hasn't mentioned them):
Do NOT invent these values — if the user doesn't provide them, omit optional fields.
Milestone and Labels are exceptions: always ask for them explicitly. For bugs/improvements, suggest "Improvements and Bugfixes" as milestone. For features, milestone is required.
Before drafting the issue body, evaluate whether the task is simple enough to be a single issue or complex enough to warrant splitting into sub-tasks. This is important because overly large issues are hard to estimate, hard to review, and block the team unnecessarily.
Ask yourself (based on what the user described):
If the answer to any of these is yes, the task is likely complex and should be split.
| Level | Criteria | Action |
|---|---|---|
| Simple | Single layer (only UI or only API), ≤ 1 day | Create a single issue |
| Medium | Touches 2 layers (e.g., API + UI), 2–3 days | Create a single issue with clear scope notes |
| Complex | Spans 3+ layers, multiple services, or > 3 days | Propose a parent issue + sub-tasks |
Present the proposed split to the user before drafting the full issue body. Use this format:
This task looks complex — it touches [X layers/modules]. I suggest splitting it:
📦 Parent: [parent title] — tracks the full feature, no code assigned directly
└─ Sub-task 1: [title] — [backend/frontend/infra] — est. [XS/S/M/L]
└─ Sub-task 2: [title] — [backend/frontend/infra] — est. [XS/S/M/L]
└─ Sub-task 3: [title] — [backend/frontend/infra] — est. [XS/S/M/L]
Should I create them this way, or would you like to adjust the breakdown?
Wait for user confirmation before proceeding. The user may:
If creating a parent + sub-tasks, follow the full STEP 3–7 flow for the parent first, then repeat for each sub-task, linking each to the parent via parentId.
Build the issue description using this exact template. Fill in every section from what the user provided. Never leave placeholder text.
## User Story
As a **[role]**, I want **[feature/action]**, so that **[benefit/outcome]**.
---
## Acceptance Criteria
<!-- Use Gherkin format for behavior-driven criteria -->
**Scenario 1: [Happy path name]**
- **Given** [initial context / precondition]
- **When** [action or trigger]
- **Then** [expected outcome]
- **And** [additional assertion, if needed]
**Scenario 2: [Edge case or error path name]**
- **Given** [initial context]
- **When** [action or trigger]
- **Then** [expected outcome]
<!-- Add more scenarios as needed based on the story complexity -->
---
## Definition of Done
- [ ] Code is written and peer-reviewed (PR approved)
- [ ] Unit tests cover the new behavior
- [ ] Acceptance criteria verified by QA or the author
- [ ] Documentation updated (if applicable)
- [ ] Feature deployed to staging and smoke-tested
- [ ] No new linting or build warnings introduced
---
## Technical Notes
<!-- Optional: implementation hints, API references, constraints, risks -->
[Add technical context if the user provided it, otherwise remove this section]
---
## Out of Scope
<!-- What this story explicitly does NOT cover -->
[List exclusions if the user specified them, otherwise remove this section]
Rules for Acceptance Criteria:
Present the full drafted issue (title, metadata, body) to the user. Ask:
"Does this look good? Any changes before I create it in Linear?"
Wait for approval. Apply any changes the user requests. Do not create the issue until explicitly confirmed.
Before creating, resolve IDs for any named entities the user provided:
mcp__linear-server__list_projects to find it and get its idmcp__linear-server__list_teams to find itmcp__linear-server__list_issue_labels (with teamId) to fetch existing labels[proposed-label] label?"mcp__linear-server__create_issue_label to create it before proceedingmcp__linear-server__list_cycles to find itmcp__linear-server__list_users to find their idmcp__linear-server__list_issue_statuses to resolve itRun all independent lookups in parallel.
Map priority names to Linear priority numbers:
Call mcp__linear-server__save_issue with all resolved fields:
title: [issue title]
description: [full markdown body from Step 3]
teamId: [resolved team ID]
priority: [0-4]
projectId: [if provided]
labelIds: [array of resolved label IDs, if provided]
assigneeId: [if provided]
cycleId: [if provided]
stateId: [if provided]
estimate: [if provided]
parentId: [if provided — required for sub-tasks]
After creation, report:
✅ Issue created in Linear
Title: [title]
ID: [issue identifier, e.g. ENG-123]
URL: [issue URL]
Project: [project name or —]
Priority: [priority label]
Labels: [label names or —]
Assignee: [name or Unassigned]
Cycle: [cycle name or —]
Sub-tasks: [list of sub-task IDs and titles, or —]
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub lety-ai/lety-skill-hub --plugin linear-task