You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .agents/skills/linear-project-update/SKILL.md
+12-12Lines changed: 12 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,22 +18,22 @@ If the user provided a project (URL, slug, or UUID), pass whatever they gave you
18
18
19
19
If they did not provide one, help them pick:
20
20
21
-
1. Identify the current user. Try `mcp__claude_ai_Linear__list_users` with `query: "me"` first; if that doesn't return the authenticated user, fall back to whatever mechanism Linear's MCP exposes for the current user.
22
-
2. Fetch the user's projects via `mcp__claude_ai_Linear__list_projects`, filtered to ones they lead. If the MCP doesn't accept a direct `lead` filter, list projects and filter client-side by `lead.id == <current-user-id>`.
23
-
3. For each project, you need: name, status, target date, and the timestamp of the last status update. The last-update timestamp may not come back in the project payload — if not, call `mcp__claude_ai_Linear__get_status_updates` with `type: "project", project: <uuid>, limit: 1, orderBy: "createdAt"` per project. Do these in parallel.
24
-
4. Sort the projects:
25
-
-**In Progress / Started** first (the user is most likely to be updating one of these).
26
-
- Then other active statuses (Planned, Paused, Backlog).
27
-
- Completed / Canceled last — usually omit unless the user has nothing active.
28
-
5. Present the list with `AskUserQuestion`. Format each option so the user can see at a glance which projects need attention:
21
+
1.**Get the current user's ID.** Call `mcp__claude_ai_Linear__get_user` with `query: "me"` and extract the `id` field. You'll need it for filtering in step 3.
22
+
2.**List the user's projects.** Call `mcp__claude_ai_Linear__list_projects` with `member: "me"` and `orderBy: "updatedAt"`. The `member: "me"` filter returns projects the user is a member of _or_ leads — exactly the set you need, in a single call. In practice this returns a small list (usually <30 across all teams) and `hasNextPage` is false; paginate only if it isn't.
29
23
30
-
`<Project name> — target: <YYYY-MM-DD or "—"> · last update: <X days ago or "never">`
24
+
**Do not** list projects per team and filter client-side. `list_projects` has no direct `lead` filter, and big workspaces have hundreds of projects per team — paginating teams is slow, expensive, and unnecessary when `member: "me"` does the job in one call.
31
25
32
-
Put the project most likely to need an update first (e.g., longest since last update among In Progress projects).
26
+
3.**Filter to led + active projects.** From the response, keep only projects where `lead.id == <current-user-id>`. Then drop any with `status.type` of `completed` or `canceled` — updating a Done or Canceled project almost never makes sense, and surfacing them clutters the picker. (If after this filter you have zero projects, stop and tell the user; don't fabricate. Offer the URL fallback: "paste a project URL if you want to update one you don't lead.")
27
+
4.**Fetch the last-update timestamp per project, in parallel.** The project payload doesn't carry it. For each surviving project, call `mcp__claude_ai_Linear__get_status_updates` with `type: "project", project: <uuid>, limit: 1, orderBy: "createdAt"` — all in the same turn, not sequentially.
28
+
5.**Sort:**
29
+
-**In Progress / Started** first — most likely to be the target.
30
+
- Then other active statuses (Planned, Paused, Backlog).
31
+
- Within each band, put the project most likely to need an update first — typically the one with the longest gap since its last status update.
32
+
6.**Present the list with `AskUserQuestion`.** Format each option so the user can see at a glance which projects need attention:
33
33
34
-
6. Once picked, continue with that project's UUID.
34
+
`<Project name> — status: <Status> · target: <YYYY-MM-DD or "—"> · last update: <X days ago or "never">`
35
35
36
-
If `get_project` errors or the user has no led projects, stop and tell them — don't fabricate.
36
+
7. Once picked, continue with that project's UUID.
0 commit comments