Linear issue management. MUST USE when: (1) user mentions LOBE-xxx issue IDs (e.g. LOBE-4540), (2) user says 'linear', 'linear issue', or 'link linear', (3) creating PRs that reference Linear issues. Provides workflows for retrieving issues, updating status, and adding comments.
Before using Linear workflows, search for linear MCP tools. If not found, treat as not installed.
A PR that fixes a Linear issue has two separate jobs to do, and both matter:
Fixes LOBE-xxx in the PR body — Linear watches GitHub for these magic keywords and auto-links the PR and auto-closes the issue on merge. This is the machine-readable side.If you only do step 1, Linear watchers (often non-engineers) hit the issue and see no context. So pair PR creation with the Linear comment as part of the same task — finish both before considering the work done.
mcp__linear-server__get_issuemcp__linear-server__extract_images so you actually see them; reading raw markdown alone misses what the reporter was looking at.mcp__linear-server__list_issues with parentId filtermcp__linear-server__update_issueWhen creating issues with mcp__linear-server__create_issue, add the claude code label. Reason: the label is how the team filters/audits AI-generated issues; without it those issues vanish into the general backlog and the team loses visibility into AI contribution patterns.
Unless the user explicitly specifies another assignee or asks for the issue to remain unassigned, pass assignee: "me" so the issue is assigned to the authenticated Linear user. Always honor explicit assignment instructions over this default.
Match the issue language to the conversation that produced it — if you're discussing in 中文,write the issue in 中文;if discussing in English, write it in English. Reason: the issue is a continuation of the conversation, and forcing a language switch creates translation friction for the collaborator who started the thread.
Specifics:
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.
Linear itself supports sub-issue ordering: its public API exposes subIssueSortOrder on both IssueCreateInput and IssueUpdateInput, and the app offers per-user sub-issue sorting. The limitation is the current Linear MCP save_issue tool, which exposes neither subIssueSortOrder nor sortOrder; therefore, an agent cannot set sub-issue order through this MCP at create or update 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.
Each completed issue gets a comment summarizing the work, so reviewers and future readers don't have to reconstruct it from the PR diff:
## 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 gives team visibility, code-review context, and a paper trail for future reference.
When creating PRs for Linear issues, include magic keywords in the PR body:
Fixes LOBE-123Closes LOBE-123Resolves LOBE-123These trigger Linear's auto-link + auto-close on merge.
When working on multiple issues, close out each one before starting the next — don't batch all the Linear updates to the end. Batching is where comments get forgotten and issues stay stuck in "In Progress" days after the PR shipped.
For each issue:
bun run type-checkUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
Best practices for using the oracle CLI (prompt + file bundling, engines, sessions, and file attachment patterns).
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Query Google Places API (New) via the goplaces CLI for text search, place details, resolve, and reviews. Use for human-friendly place lookup or JSON output for scripts.
Delegate coding tasks to Codex, Claude Code, or Pi agents via background process. Use when: (1) building/creating new features or apps, (2) reviewing PRs (spawn in temp dir), (3) refactoring large codebases, (4) iterative coding that needs file exploration. NOT for: simple one-liner fixes (just edit), reading code (use read tool), thread-bound ACP harness requests in chat (for example spawn/run Codex or Claude Code in a Discord thread; use sessions_spawn with runtime:"acp"), or any work in ~/clawd workspace (never spawn agents here). Claude Code: use --print --permission-mode bypassPermissions (no PTY). Codex/Pi/OpenCode: pty:true required.
Start voice calls via the OpenClaw voice-call plugin.
Category:developer