.agents/skills/linear/SKILL.md
Before using Linear workflows, search for linear MCP tools. If not found, treat as not installed.
When creating a PR that references Linear issues (LOBE-xxx), you MUST:
Fixes LOBE-xxx)This is NON-NEGOTIABLE. Skipping Linear comments is a workflow violation.
mcp__linear-server__get_issuemcp__linear-server__extract_images to read image content for full contextmcp__linear-server__list_issues with parentId filtermcp__linear-server__update_issuemcp__linear-server__update_issuemcp__linear-server__create_commentWhen creating issues with mcp__linear-server__create_issue, MUST add the claude code label.
When breaking a parent issue into a tree of sub-issues (e.g., task decomposition for LOBE-xxx), follow these rules — they work around real limitations of the Linear MCP tools.
The Linear Sub-issues panel displays children by sortOrder, which defaults to newest-first (most recently created appears on top). Neither parallel nor serial creation will produce the intended top-to-bottom reading order, and the MCP save_issue tool does not expose a sortOrder parameter — you cannot set order at create time.
Workaround: encode execution order in the title itself:
[1] [db] add schema fields
[2] [db] new table + repository
[3] [service] business logic layer
[4] [api] REST endpoints
[4.1] [sdk] client SDK wrapper
[4.1.1] [app] consumer integration
[4.1.2] [app] UI surface
[4.2] [ui] dashboard page
Even when the panel shuffles, the reader can mentally reconstruct the dependency graph at a glance. Dotted numbering [n.m.k] should mirror the parent-child nesting so the index and the tree agree.
Linear supports unlimited sub-issue depth. A flat list of 8+ siblings under one root is hard to scan. Group by main-subordinate logic:
Use parentId: "LOBE-xxxx" at creation (or save_issue to move). Moving an issue's parent does not disturb its blockedBy relations.
blockedByblockedBy requires the blocker to exist first (you need its LOBE-id). So:
blockedBy is append-only; passing it again does not overwrite — safe to re-runMCP tool calls in a single message look parallel but execute sequentially on the server, and you still need blocker IDs from earlier responses. Just issue calls in dependency order; optimizing for parallelism gains nothing here.
Each sub-issue should state:
LOBE-xxxx)The implementer may open only the sub-issue, not the parent — don't rely on context that lives only in the parent description.
Every completed issue MUST have a comment summarizing work done:
## Changes Summary
- **Feature**: Brief description of what was implemented
- **Files Changed**: List key files modified
- **PR**: #xxx or PR URL
### Key Changes
- Change 1
- Change 2
- ...
This is critical for:
When creating PRs for Linear issues, include magic keywords in PR body:
Fixes LOBE-123Closes LOBE-123Resolves LOBE-123When working on multiple issues, update EACH issue IMMEDIATELY after completing it:
bun run type-checkNote: Status → "In Review" when PR created. "Done" only after PR merged.
❌ Wrong: Complete all → Create PR → Forget Linear comments
✅ Correct: Complete → Create PR → Add Linear comments → Task done