$npx -y skills add kv0906/pm-kit --skill linearInteract with Linear for issue tracking — search, create, sync, and link issues to vault notes. Use when the user says "/linear", "linear issues", "sync linear", "create issue", "link to linear", "check linear", "what's assigned to me", "my linear tasks", mentions Linear in any p
| 1 | # /linear — Linear Integration |
| 2 | |
| 3 | Bridge your PM-Kit vault with Linear issue tracking. Search, create, sync issues and link them to vault notes. |
| 4 | |
| 5 | ## Context |
| 6 | |
| 7 | Today's date: `!date +%Y-%m-%d` |
| 8 | Config: @_core/config.yaml |
| 9 | Active projects: `!ls 01-index/*.md 2>/dev/null | sed 's|01-index/||;s|\.md||'` |
| 10 | |
| 11 | ## Input |
| 12 | |
| 13 | User input: $ARGUMENTS |
| 14 | |
| 15 | ## Sub-commands |
| 16 | |
| 17 | Parse the first word of `$ARGUMENTS` to determine the sub-command: |
| 18 | |
| 19 | | Input starts with | Sub-command | Purpose | |
| 20 | |---|---|---| |
| 21 | | `setup` | Setup | Guide MCP connection + auth | |
| 22 | | `sync` | Sync | Pull recent updates into vault | |
| 23 | | `create` | Create | Create Linear issue from vault context | |
| 24 | | `search` or a question | Search | Find Linear issues | |
| 25 | | `link` | Link | Connect vault note ↔ Linear issue | |
| 26 | | *(empty)* | Status | Show connection status + recent activity | |
| 27 | |
| 28 | ## Step 0: Connection Check |
| 29 | |
| 30 | Before any sub-command (except `setup`), verify Linear MCP is available: |
| 31 | |
| 32 | 1. Try calling any Linear MCP tool (e.g., list viewer's issues with a small limit) |
| 33 | 2. If the tool call fails or `mcp__linear-server__*` tools are not available: |
| 34 | |
| 35 | ``` |
| 36 | Linear MCP is not connected yet. |
| 37 | |
| 38 | Run `/linear setup` to connect — it takes about 30 seconds. |
| 39 | ``` |
| 40 | |
| 41 | Then stop. Don't attempt other operations without a working connection. |
| 42 | |
| 43 | --- |
| 44 | |
| 45 | ## setup — Connect Linear MCP |
| 46 | |
| 47 | Guide the user through connecting Linear's remote MCP server to Claude Code. |
| 48 | |
| 49 | ### Steps to present to user: |
| 50 | |
| 51 | ``` |
| 52 | ## Linear MCP Setup |
| 53 | |
| 54 | Linear's MCP server is hosted by Linear — no local install needed. |
| 55 | |
| 56 | ### Step 1: Add the server |
| 57 | Run this in your terminal: |
| 58 | |
| 59 | claude mcp add --transport http linear-server https://mcp.linear.app/mcp |
| 60 | |
| 61 | ### Step 2: Authenticate |
| 62 | In a Claude Code session, run: |
| 63 | |
| 64 | /mcp |
| 65 | |
| 66 | Then follow the OAuth flow — it'll open your browser to authorize Linear access. |
| 67 | |
| 68 | ### Step 3: Verify |
| 69 | Once authenticated, try: |
| 70 | |
| 71 | /linear |
| 72 | |
| 73 | You should see your recent Linear activity. |
| 74 | ``` |
| 75 | |
| 76 | After presenting, ask if the user wants help running these commands now. |
| 77 | |
| 78 | If the user confirms, run the `claude mcp add` command via Bash, then inform them they need to run `/mcp` themselves (it requires interactive browser auth that can't be automated). |
| 79 | |
| 80 | --- |
| 81 | |
| 82 | ## sync — Pull Linear Updates |
| 83 | |
| 84 | Fetch recent Linear activity and optionally write it into today's daily note. |
| 85 | |
| 86 | ### Processing |
| 87 | |
| 88 | 1. **Fetch assigned issues** — Get issues assigned to the current user, sorted by updated date |
| 89 | - Filter to recently updated (last 7 days by default, or user-specified window) |
| 90 | - Group by status: In Progress, Todo, Done |
| 91 | |
| 92 | 2. **Fetch recent comments** — Get comments on the user's assigned issues from the last few days |
| 93 | |
| 94 | 3. **Summarize** — Present a clean summary: |
| 95 | |
| 96 | ``` |
| 97 | ## Linear Sync — {date} |
| 98 | |
| 99 | ### In Progress ({count}) |
| 100 | - [{identifier}] {title} — {team} ({priority}) |
| 101 | ... |
| 102 | |
| 103 | ### Recently Updated ({count}) |
| 104 | - [{identifier}] {title} — moved to {state} ({date}) |
| 105 | ... |
| 106 | |
| 107 | ### Recent Comments ({count}) |
| 108 | - [{identifier}] {commenter}: "{snippet}..." |
| 109 | ... |
| 110 | ``` |
| 111 | |
| 112 | 4. **Daily note integration** (if `--save` flag or user confirms) |
| 113 | - Check if today's daily note exists (`daily/{date}.md`) |
| 114 | - Append a `### Linear` subsection under the relevant project heading |
| 115 | - Use `[[wikilinks]]` for any vault notes already linked to Linear issues |
| 116 | |
| 117 | ### Flags |
| 118 | |
| 119 | - `--save` — Auto-append to daily note without asking |
| 120 | - `--days N` — Look back N days (default: 7) |
| 121 | - `--project {name}` — Filter to issues matching a specific project/team |
| 122 | |
| 123 | --- |
| 124 | |
| 125 | ## create — Create Linear Issue from Vault |
| 126 | |
| 127 | Create a Linear issue using context from a vault note (blocker, doc, decision, or freeform text). |
| 128 | |
| 129 | ### Processing |
| 130 | |
| 131 | 1. **Determine source** — Check if user provided: |
| 132 | - A vault file path or wikilink → Read that note for context |
| 133 | - Freeform text → Use directly |
| 134 | - Nothing → Ask what to create |
| 135 | |
| 136 | 2. **Extract issue fields** from source: |
| 137 | - **Title**: From note's H1 or frontmatter title, or user-provided |
| 138 | - **Description**: From note body (convert wikilinks to plain text for Linear) |
| 139 | - **Team**: Match from `project` frontmatter → Linear team (ask user if ambiguous) |
| 140 | - **Priority**: Map from blocker severity (high→urgent, medium→high, low→medium) or ask |
| 141 | - **Labels**: Infer from note type (blocker→bug, doc→feature, decision→discussion) or ask |
| 142 | |
| 143 | 3. **Confirm with user** before creating: |
| 144 | |
| 145 | ``` |
| 146 | Creating Linear issue: |
| 147 | Title: {title} |
| 148 | Team: {team} |
| 149 | Priority: {priority} |
| 150 | Labels: {labels} |
| 151 | |
| 152 | Proceed? (y/n) |
| 153 | ``` |
| 154 | |
| 155 | 4. **Create the issue** via Linear |