@smartsoft001-mobilems/claude-plugins 2.80.0 → 2.81.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/package.json +1 -1
  2. package/plugins/flow/.claude-plugin/README.md +13 -4
  3. package/plugins/flow/.claude-plugin/plugin.json +1 -1
  4. package/plugins/flow/.claude-plugin/settings.template.json +11 -8
  5. package/plugins/flow/agents/shared-impl-orchestrator.md +1 -1
  6. package/plugins/flow/agents/shared-impl-teammate.md +2 -2
  7. package/plugins/flow/agents/ui-screenshot-reporter.md +3 -3
  8. package/plugins/flow/skills/commit/SKILL.md +2 -2
  9. package/plugins/flow/skills/impl/SKILL.md +41 -32
  10. package/plugins/flow/skills/linear-suggestion/SKILL.md +1 -1
  11. package/plugins/flow/skills/plan/SKILL.md +128 -77
  12. package/plugins/flow/skills/push/SKILL.md +6 -6
  13. package/plugins/flow/skills/review/SKILL.md +3 -3
  14. package/plugins/flow-external/.claude-plugin/README.md +1 -1
  15. package/plugins/flow-external/.claude-plugin/plugin.json +1 -1
  16. package/plugins/flow-external/.claude-plugin/settings.template.json +11 -8
  17. package/plugins/flow-external/agents/shared-linear-subtask-iterator.md +9 -9
  18. package/plugins/flow-external/skills/commit/SKILL.md +11 -10
  19. package/plugins/flow-external/skills/impl/SKILL.md +52 -29
  20. package/plugins/flow-external/skills/linear-suggestion/SKILL.md +8 -8
  21. package/plugins/flow-external/skills/plan/SKILL.md +95 -29
  22. package/plugins/flow-external/skills/push/SKILL.md +27 -18
  23. package/plugins/flow-legacy/.claude-plugin/README.md +1 -1
  24. package/plugins/flow-legacy/.claude-plugin/plugin.json +1 -1
  25. package/plugins/flow-legacy/.claude-plugin/settings.template.json +11 -8
  26. package/plugins/flow-legacy/agents/shared-impl-orchestrator.md +4 -2
  27. package/plugins/flow-legacy/skills/commit/SKILL.md +2 -2
  28. package/plugins/flow-legacy/skills/impl/SKILL.md +36 -27
  29. package/plugins/flow-legacy/skills/linear-suggestion/SKILL.md +1 -1
  30. package/plugins/flow-legacy/skills/plan/SKILL.md +104 -79
  31. package/plugins/flow-legacy/skills/push/SKILL.md +6 -6
@@ -1,9 +1,10 @@
1
1
  ---
2
2
  name: plan
3
- description: Create an implementation plan for a Linear task and save it as a comment. Analyzes codebase, previous commits, and external dependencies to generate detailed plans for tasks and subtasks.
3
+ description: Create an implementation plan for a Linear task and save it as a `plan.md` attachment. Analyzes codebase, previous commits, and external dependencies to generate detailed plans for tasks and subtasks.
4
4
  allowed-tools:
5
5
  - Bash
6
6
  - Read
7
+ - Write
7
8
  - Glob
8
9
  - Grep
9
10
  - AskUserQuestion
@@ -12,16 +13,19 @@ allowed-tools:
12
13
  - TaskUpdate
13
14
  - TaskList
14
15
  - TaskGet
15
- - mcp__linear-server__get_issue
16
- - mcp__linear-server__list_issues
17
- - mcp__linear-server__list_comments
18
- - mcp__linear-server__create_comment
19
- - mcp__linear-server__delete_comment
16
+ - mcp__linear__get_issue
17
+ - mcp__linear__list_issues
18
+ - mcp__linear__list_comments
19
+ - mcp__linear__save_comment
20
+ - mcp__linear__save_issue
21
+ - mcp__linear__create_attachment
22
+ - mcp__linear__delete_attachment
23
+ - mcp__linear__list_issue_labels
20
24
  ---
21
25
 
22
26
  # Plan Skill
23
27
 
24
- Create an implementation plan for a Linear task and save it as a comment. If the task has subtasks, create individual plans for each subtask.
28
+ Create an implementation plan for a Linear task and save it as a `plan.md` attachment on the issue. If the task has subtasks, create individual `plan.md` attachments on each subtask. After saving the plan, add the `AI Plan` label to the issue.
25
29
 
26
30
  ## Execution Checklist
27
31
 
@@ -29,8 +33,8 @@ Execute each step in order. Do not skip any step marked as MANDATORY.
29
33
 
30
34
  - [ ] **1. Fetch Linear task** — get title, description, labels, priority, estimate from MCP Linear server
31
35
  - [ ] **2. Fetch subtasks** — check for children; if present, plan each subtask individually
32
- - [ ] **3. Fetch existing comments** — check parent task and each subtask for existing context
33
- - [ ] **4. Determine planning needs** — check for existing plans and plan change requests; record old plan comment IDs for replacement; skip tasks with valid plans
36
+ - [ ] **3. Fetch existing attachments and comments** — list `plan.md` attachments and all comments per task/subtask
37
+ - [ ] **4. Determine planning needs** — compare `plan.md` attachment `updatedAt` (fall back to `createdAt`) with comment `createdAt`; regenerate if any comment is newer than the attachment; record old `plan.md` attachment IDs for replacement
34
38
  - [ ] **5. Analyze previous commits** — `git log --all --grep="<taskId>"` for each task/subtask
35
39
  - [ ] **6. Analyze staged changes** — `git status` and `git diff --cached` for work in progress
36
40
  - [ ] **7. MANDATORY: Analyze codebase** — explore affected files, patterns, dependencies, and test coverage
@@ -38,9 +42,10 @@ Execute each step in order. Do not skip any step marked as MANDATORY.
38
42
  - [ ] **9. Create implementation plans** — generate structured plans per task/subtask with all required sections
39
43
  - [ ] **10. MANDATORY: Write plans in Polish** — all plan content must be in Polish language
40
44
  - [ ] **11. Show plans to user** — present plans for review and approval before saving
41
- - [ ] **12. MANDATORY: Confirm old plan deletion** — if replacing existing plans, ask user to confirm deletion of old plan comments before proceeding
42
- - [ ] **13. Delete old plan comments and save new ones** — delete outdated plan comments from Linear, then post new plans via MCP
43
- - [ ] **14. Confirm to user** — list saved plans with summaries and Linear links
45
+ - [ ] **12. MANDATORY: Confirm old plan deletion** — if replacing existing `plan.md`, ask user to confirm deletion of old attachment before proceeding
46
+ - [ ] **13. Save plan as native Linear attachment** — base64-encode `plan.md` content and upload via `mcp__linear__create_attachment` (Linear hosts the file; no external storage)
47
+ - [ ] **14. MANDATORY: Add "AI Plan" label** — ensure `AI Plan` label exists on the team and apply it to the invoked issue (the `linearTaskId` passed to `/plan` — parent task or subtask, whichever was called)
48
+ - [ ] **15. Confirm to user** — list saved plans with summaries and Linear links
44
49
 
45
50
  ### Task Progress Tracking
46
51
 
@@ -130,60 +135,53 @@ Use the MCP Linear server to check if the task has subtasks (children). If subta
130
135
 
131
136
  **Important**: If subtasks exist, you will create individual plans for each subtask, not for the parent task.
132
137
 
133
- ### Step 3: Fetch Task Comments
138
+ ### Step 3: Fetch Task Attachments and Comments
134
139
 
135
- Use the MCP Linear server to fetch all existing comments for:
140
+ Use the MCP Linear server to fetch, for the parent task and each subtask (if any):
136
141
 
137
- - The parent task
138
- - Each subtask (if subtasks exist)
142
+ - Attachments via `mcp__linear__get_issue({ id })` — the response includes an `attachments` array; look for one where `title == "plan.md"` (or filename — whichever field the MCP surfaces)
143
+ - Comments via `mcp__linear__list_comments({ issueId })` — keep `id`, `createdAt`, body text
139
144
 
140
- This helps to:
145
+ This is used to:
141
146
 
142
- - Understand any additional context or discussions
143
- - Avoid duplicating information already discussed
144
- - Identify any blockers or dependencies mentioned
147
+ - Detect whether a plan already exists (attachment `plan.md`)
148
+ - Determine whether the plan is stale (any comment is newer than the attachment)
149
+ - Record old attachment IDs for replacement
145
150
 
146
151
  ### Step 3a: Determine Which Tasks Need Planning
147
152
 
148
- For each task/subtask, analyze the comments to determine if a new plan should be created:
149
-
150
- #### Check for existing plan:
153
+ For each task/subtask, use the following decision logic driven by **attachment modification time vs comment creation time**:
151
154
 
152
- Look for comments containing:
155
+ #### Inputs per task
153
156
 
154
- - `## Implementation Plan` (for parent tasks)
155
- - `## Implementation Plan for Subtask` (for subtasks)
157
+ - `planAttachment`: the Linear attachment titled `plan.md` (or `null` if none)
158
+ - `planAttachment.createdAt` / `planAttachment.updatedAt`: when the plan was last written
159
+ - `comments`: list of all comments with `createdAt`
156
160
 
157
- #### Decision logic:
161
+ #### Decision logic
158
162
 
159
163
  **Create a NEW plan if:**
160
164
 
161
- 1. **No plan exists**: The task/subtask has no comment with an implementation plan
162
- 2. **Plan change requested**: An existing plan exists, BUT there is a **newer comment** (created after the plan) that requests changes to the plan. Look for keywords like:
163
- - "zmień plan" / "change plan"
164
- - "zaktualizuj plan" / "update plan"
165
- - "popraw plan" / "fix plan"
166
- - "nowy plan" / "new plan"
167
- - "proszę o zmianę" / "please change"
168
- - "do zmiany" / "needs change"
169
- - "uwagi do planu" / "comments on plan"
165
+ 1. **No plan attachment exists**: `planAttachment == null`
166
+ 2. **Plan is stale**: there is at least one comment where `comment.createdAt > planAttachment.updatedAt` (use `updatedAt`; fall back to `createdAt` if `updatedAt` is unavailable). Every comment newer than the attachment counts as "feedback on the plan" — we intentionally do NOT try to filter acknowledgments, because the filesystem-style mtime rule is the source of truth the user asked for.
170
167
 
171
168
  **SKIP planning if:**
172
169
 
173
- 1. **Plan exists and no change requested**: The task/subtask already has an implementation plan AND there are no newer comments requesting changes
174
- 2. **Plan exists with only acknowledgment comments**: Newer comments exist but they are just acknowledgments (e.g., "ok", "dzięki", "rozumiem")
170
+ 1. `planAttachment` exists AND no comment is newer than it.
171
+
172
+ #### Secondary signal (optional, do not override mtime rule)
173
+
174
+ If `planAttachment` exists and no comment is newer than it, but the user's latest message mentions plan-change keywords ("zmień plan", "zaktualizuj plan", "popraw plan", "nowy plan", "uwagi do planu", etc.), ask the user explicitly whether to regenerate. Do **not** regenerate silently based on keywords alone.
175
175
 
176
176
  #### Output:
177
177
 
178
178
  Create a list of tasks/subtasks that need planning:
179
179
 
180
180
  - `tasksNeedingPlan`: Array of task IDs that need a new or updated plan
181
- - `tasksWithExistingPlan`: Array of task IDs that already have valid plans (skip these)
182
- - `oldPlanCommentIds`: Map of task ID → comment ID for existing plan comments that will be replaced (needed for deletion in Step 9)
181
+ - `tasksWithExistingPlan`: Array of task IDs with valid, up-to-date plans (skip these)
182
+ - `oldPlanAttachments`: Map of task ID → `attachmentId` for plans that will be replaced (needed for deletion in Step 9)
183
183
 
184
- **Important**: When a plan change is requested, record the **comment ID** of the existing plan comment. This ID is needed later to delete the old plan before saving the new one.
185
-
186
- **Important**: If ALL tasks already have valid plans and no changes are requested, inform the user and ask if they want to regenerate plans anyway.
184
+ **Important**: If ALL tasks already have up-to-date plans, inform the user and ask if they want to regenerate anyway.
187
185
 
188
186
  ### Step 4: Analyze Previous Commits
189
187
 
@@ -378,9 +376,9 @@ Check if the task requires changes to external library packages:
378
376
  ```markdown
379
377
  ### Ryzyka i mitygacje
380
378
 
381
- | Ryzyko | Ważność | Źródło | Mitygacja |
382
- | --- | --- | --- | --- |
383
- | [opis ryzyka] | HIGH | Adwokat Diabła | [strategia mitygacji] |
379
+ | Ryzyko | Ważność | Źródło | Mitygacja |
380
+ | ------------- | ------- | -------------- | --------------------- |
381
+ | [opis ryzyka] | HIGH | Adwokat Diabła | [strategia mitygacji] |
384
382
  ```
385
383
 
386
384
  - Add **"Consensus Rating"**: 1-5 scale based on agreement between teammates
@@ -625,9 +623,9 @@ When using `--deep` flag and the Planning Team has completed its analysis, appen
625
623
 
626
624
  ### Ryzyka i mitygacje
627
625
 
628
- | Ryzyko | Ważność | Źródło | Mitygacja |
629
- | --- | --- | --- | --- |
630
- | [opis ryzyka] | HIGH | Adwokat Diabła | [strategia mitygacji] |
626
+ | Ryzyko | Ważność | Źródło | Mitygacja |
627
+ | ------------- | ------- | -------------- | --------------------- |
628
+ | [opis ryzyka] | HIGH | Adwokat Diabła | [strategia mitygacji] |
631
629
 
632
630
  ### Ocena konsensusu: [1-5] / Pewność: [WYSOKA/ŚREDNIA/NISKA]
633
631
 
@@ -642,20 +640,20 @@ When using `--deep` flag and the Planning Team has completed its analysis, appen
642
640
  - 2: Significant disagreements on approach
643
641
  - 1: Fundamental disagreements — plan needs revision
644
642
 
645
- ### Step 9: Confirm and Delete Old Plan Comments
643
+ ### Step 9: Confirm and Delete Old Plan Attachments
646
644
 
647
- **This step applies only when replacing existing plans** (i.e., `oldPlanCommentIds` from Step 3a is not empty).
645
+ **This step applies only when replacing existing plans** (i.e., `oldPlanAttachments` from Step 3a is not empty).
648
646
 
649
- Before saving new plans, ask the user to confirm deletion of old plan comments:
647
+ Before saving new plans, ask the user to confirm deletion of old `plan.md` attachments:
650
648
 
651
649
  ```markdown
652
650
  ## Zastąpienie istniejących planów
653
651
 
654
- Następujące komentarze z planami zostaną usunięte i zastąpione nowymi:
652
+ Następujące załączniki `plan.md` zostaną usunięte i zastąpione nowymi:
655
653
 
656
- | Task | Stary komentarz (ID) |
654
+ | Task | Stary załącznik (ID) |
657
655
  | --------- | -------------------- |
658
- | <task-id> | <comment-id> |
656
+ | <task-id> | <attachment-id> |
659
657
 
660
658
  Czy potwierdzasz usunięcie starych planów i zapisanie nowych?
661
659
  ```
@@ -663,42 +661,94 @@ Czy potwierdzasz usunięcie starych planów i zapisanie nowych?
663
661
  Use `AskUserQuestion` tool with options:
664
662
 
665
663
  - "Tak, usuń stare plany i zapisz nowe" (Recommended)
666
- - "Nie, zachowaj stare plany (zapisz nowe obok)"
667
664
  - "Anuluj"
668
665
 
669
666
  **If user confirms deletion:**
670
667
 
671
- 1. For each task in `oldPlanCommentIds`, delete the old plan comment using `mcp__linear-server__delete_comment`
672
- 2. If `delete_comment` is not available, add a strikethrough header to the old comment body: `~~## Implementation Plan~~ (Zastąpiony nowym planem)` — use `mcp__linear-server__update_comment` as fallback
673
- 3. Then proceed to save new plan comments
668
+ 1. For each task in `oldPlanAttachments`, delete the Linear attachment via `mcp__linear__delete_attachment({ id: attachmentId })`.
669
+ 2. Then proceed to Step 9a.
670
+
671
+ **If user cancels:**
674
672
 
675
- **If user chooses to keep old plans:**
673
+ - Stop the entire process, do not save any plans.
676
674
 
677
- - Skip deletion, save new plans as additional comments (old plans remain)
675
+ ### Step 9a: Save Plan as Linear Attachment
678
676
 
679
- **If user cancels:**
677
+ For each task that needs planning, upload the plan content directly to Linear via `mcp__linear__create_attachment` — Linear hosts the file itself, no intermediate storage.
680
678
 
681
- - Stop the entire process, do not save any plans
679
+ #### 9a.1 — Prepare plan content
682
680
 
683
- ### Step 9a: Save New Plans as Comments
681
+ The plan content is exactly the markdown produced in Step 8 (the same block that would previously have been posted as a comment).
684
682
 
685
- Use the MCP Linear server to create comments:
683
+ Write it to a temp file so it can be base64-encoded:
686
684
 
687
- #### If NO subtasks:
685
+ ```bash
686
+ mkdir -p /tmp/claude-plans
687
+ ```
688
688
 
689
- - Create a single comment on the parent task with the implementation plan
689
+ Use the `Write` tool to save the plan markdown to `/tmp/claude-plans/<taskId>-plan.md`.
690
690
 
691
- #### If subtasks exist:
691
+ #### 9a.2 — Base64-encode the content
692
+
693
+ ```bash
694
+ b64=$(base64 -i /tmp/claude-plans/<taskId>-plan.md)
695
+ ```
696
+
697
+ On macOS `base64 -i <file>` outputs without line-wrapping (which is what the Linear MCP expects). If you ever switch to GNU coreutils, pipe through `tr -d '\n'` to strip wraps.
698
+
699
+ #### 9a.3 — Create the Linear attachment
700
+
701
+ Call `mcp__linear__create_attachment` with:
702
+
703
+ - `issue`: the task or subtask ID (e.g. `MOB-123`)
704
+ - `filename`: `plan.md`
705
+ - `contentType`: `text/markdown`
706
+ - `title`: `plan.md` (exact — used for detection in Step 3 and by `/impl`)
707
+ - `subtitle`: `Plan wygenerowany przez Claude Code`
708
+ - `base64Content`: the base64 string from 9a.2
709
+
710
+ Linear stores the file on its own infrastructure and surfaces it in the issue's Attachments pane.
711
+
712
+ #### 9a.4 — Clean up local file
713
+
714
+ Delete `/tmp/claude-plans/<taskId>-plan.md` after the attachment is created successfully. `/push` leaves Linear attachments in place — they stay on the issue as permanent artifacts.
715
+
716
+ #### Scope rule
717
+
718
+ - If the parent task has **no subtasks** → create one `plan.md` attachment on the parent task.
719
+ - If the parent task **has subtasks** → create a `plan.md` attachment on **each subtask** that needs planning. Do NOT create a `plan.md` on the parent task.
720
+
721
+ ### Step 9b: Add "AI Plan" Label
722
+
723
+ After all plan attachments are saved, apply the `AI Plan` label to the **invoked issue** — i.e. the exact `linearTaskId` passed to `/plan`:
724
+
725
+ - `/plan MOB-123` (parent) → label goes on `MOB-123`. Subtasks receive `plan.md` attachments but no label.
726
+ - `/plan MOB-123-1` (subtask) → label goes on `MOB-123-1` directly. Do NOT touch the parent.
727
+
728
+ **`AI Plan` is a workspace-level (organization-wide) label that already exists in this Linear workspace** — it must NOT be created. Do not call `create_issue_label`.
729
+
730
+ Steps:
731
+
732
+ 1. **Locate the label**:
733
+
734
+ - Use `mcp__linear__list_issue_labels` (no team filter, or workspace-wide scope) to find the label named exactly `AI Plan`.
735
+ - If for any reason the label cannot be located (rate limit, unexpected API response), surface the error and stop the labeling step — do NOT create a team-scoped duplicate.
736
+
737
+ 2. **Apply to the invoked issue**:
738
+
739
+ - Use `mcp__linear__save_issue({ id: invokedTaskId, labelIds: [...existingLabelIds, aiPlanLabelId] })`.
740
+ - Preserve existing labels — do NOT replace them. Fetch current labels first if needed and concatenate.
741
+ - If the label is already on the issue, skip the update.
692
742
 
693
- - Create a comment on **each subtask** with its specific implementation plan
694
- - Do NOT create a plan comment on the parent task (subtask plans are sufficient)
743
+ 3. **Failure handling**: if label lookup/apply fails, surface the error but do not roll back the plan attachment. The plan is the primary deliverable; the label is a marker.
695
744
 
696
745
  ### Step 10: Confirm to User
697
746
 
698
747
  After successfully saving the plans, confirm to the user:
699
748
 
700
- - List all tasks/subtasks where plans were saved
749
+ - List all tasks/subtasks where `plan.md` was attached (include Linear attachment URL)
701
750
  - Show a summary of each plan
751
+ - Confirm that `AI Plan` label was added to the parent task
702
752
  - Provide Linear task links
703
753
  - Mention any important considerations or questions
704
754
 
@@ -716,9 +766,10 @@ After successfully saving the plans, confirm to the user:
716
766
  10. **Keep subtask plans focused**: Each subtask plan should only cover that subtask's scope
717
767
  11. **Identify cross-subtask dependencies**: Note which subtasks depend on or block others
718
768
  12. **Identify external library changes**: Always check if task requires changes in `@smartsoft001` (repo: `../smartsoft001`) or `@smartsoft001-mobilems` (repo: `../mobilems-framework`). Mark these as separate process items, not part of current implementation
719
- 13. **Skip tasks with existing plans**: Only create plans for tasks that don't have a plan yet, or where a newer comment requests plan changes. Don't regenerate plans unnecessarily.
720
- 14. **Detect plan change requests**: Look for keywords in newer comments that indicate a plan change is needed (e.g., "zmień plan", "zaktualizuj plan", "popraw plan", "uwagi do planu")
721
- 15. **Delete old plans when replacing**: When creating a replacement plan, always ask user to confirm deletion of the old plan comment. Delete old comment before saving new one to keep Linear comments clean. Record old plan comment IDs during Step 3a for use in Step 9
769
+ 13. **Skip tasks with up-to-date plans**: Only regenerate when the `plan.md` attachment is missing or stale (any comment newer than `plan.md`'s `updatedAt`). Don't regenerate plans unnecessarily.
770
+ 14. **Mtime rule is authoritative**: Regeneration is driven by comparing `plan.md` attachment `updatedAt` against comment `createdAt`. Keyword detection in comments is only a secondary hint that triggers an explicit user confirmation — never a silent regen.
771
+ 15. **Delete old plans cleanly**: When replacing, ask the user to confirm, then delete the old Linear attachment via `mcp__linear__delete_attachment`. Record attachment IDs during Step 3a for use in Step 9.
772
+ 16. **Always add "AI Plan" label**: After saving plan attachments, apply the workspace-level `AI Plan` label (already configured organization-wide — do NOT create a team-scoped duplicate) to the invoked issue.
722
773
 
723
774
  ## Example with Subtasks
724
775
 
@@ -728,7 +779,7 @@ For Linear task "ENG-456: User profile improvements" with subtasks:
728
779
  - ENG-456-2: Add profile bio field
729
780
  - ENG-456-3: Add social links section
730
781
 
731
- **Comment saved to ENG-456-1:**
782
+ **Attachment `plan.md` saved on ENG-456-1:**
732
783
 
733
784
  ```markdown
734
785
  ## Implementation Plan for Subtask
@@ -804,7 +855,7 @@ Medium
804
855
  _Plan generated by Claude Code_
805
856
  ```
806
857
 
807
- **Comment saved to ENG-456-2:**
858
+ **Attachment `plan.md` saved on ENG-456-2:**
808
859
 
809
860
  ```markdown
810
861
  ## Implementation Plan for Subtask
@@ -871,4 +922,4 @@ _Plan generated by Claude Code_
871
922
 
872
923
  ---
873
924
 
874
- **Important**: Before saving the plans, show them to the user for review and approval.
925
+ **Important**: Before saving the plans as attachments, show them to the user for review and approval. The plan content is written to `/tmp/claude-plans/<taskId>-plan.md`, base64-encoded, and uploaded as a native Linear attachment via `mcp__linear__create_attachment`. After that, the `AI Plan` label is applied to the invoked issue.
@@ -12,12 +12,12 @@ allowed-tools:
12
12
  - TaskUpdate
13
13
  - TaskList
14
14
  - TaskGet
15
- - mcp__linear-server__get_issue
16
- - mcp__linear-server__list_issues
17
- - mcp__linear-server__list_comments
18
- - mcp__linear-server__create_comment
19
- - mcp__linear-server__update_issue
20
- - mcp__linear-server__list_issue_statuses
15
+ - mcp__linear__get_issue
16
+ - mcp__linear__list_issues
17
+ - mcp__linear__list_comments
18
+ - mcp__linear__save_comment
19
+ - mcp__linear__save_issue
20
+ - mcp__linear__list_issue_statuses
21
21
  ---
22
22
 
23
23
  # Push Skill
@@ -12,9 +12,9 @@ allowed-tools:
12
12
  - TaskList
13
13
  - TaskGet
14
14
  - AskUserQuestion
15
- - mcp__linear-server__get_issue
16
- - mcp__linear-server__list_comments
17
- - mcp__linear-server__create_comment
15
+ - mcp__linear__get_issue
16
+ - mcp__linear__list_comments
17
+ - mcp__linear__save_comment
18
18
  ---
19
19
 
20
20
  # Review Skill
@@ -68,7 +68,7 @@ node node_modules/@smartsoft001-mobilems/claude-plugins/plugins/flow-external/.c
68
68
 
69
69
  Configure these in your `.mcp.json`:
70
70
 
71
- - `linear-server` - Linear API integration
71
+ - `linear` - Linear API integration (MCP prefix `mcp__linear__`)
72
72
  - `playwright` - Browser automation for screenshots
73
73
 
74
74
  ## Permission Strategy
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "flow-external",
3
3
  "description": "Development flow skills for standalone Angular 6-11 museum projects without framework (Angular CLI, Karma/Jasmine, Bootstrap 4)",
4
- "version": "2.80.0"
4
+ "version": "2.81.0"
5
5
  }
@@ -34,14 +34,17 @@
34
34
  "Bash(for:*)",
35
35
  "Bash(node:*)",
36
36
  "Bash(mkdir:*)",
37
- "mcp__linear-server__get_issue",
38
- "mcp__linear-server__list_issues",
39
- "mcp__linear-server__list_comments",
40
- "mcp__linear-server__create_comment",
41
- "mcp__linear-server__delete_comment",
42
- "mcp__linear-server__update_issue",
43
- "mcp__linear-server__list_issue_statuses",
44
- "mcp__linear-server__create_issue",
37
+ "mcp__linear__get_issue",
38
+ "mcp__linear__list_issues",
39
+ "mcp__linear__list_comments",
40
+ "mcp__linear__save_comment",
41
+ "mcp__linear__delete_comment",
42
+ "mcp__linear__save_issue",
43
+ "mcp__linear__list_issue_statuses",
44
+ "mcp__linear__create_attachment",
45
+ "mcp__linear__get_attachment",
46
+ "mcp__linear__delete_attachment",
47
+ "mcp__linear__list_issue_labels",
45
48
  "mcp__playwright__browser_snapshot",
46
49
  "mcp__playwright__browser_take_screenshot",
47
50
  "mcp__playwright__browser_navigate",
@@ -3,7 +3,7 @@ name: shared-linear-subtask-iterator
3
3
  description: Manage Linear task and subtask iteration. Fetch tasks, update statuses, and iterate through subtasks in order.
4
4
  tools: Bash
5
5
  model: sonnet
6
- color: "#5E6AD2"
6
+ color: '#5E6AD2'
7
7
  ---
8
8
 
9
9
  You are a Linear subtask iterator that manages task and subtask workflows.
@@ -27,19 +27,19 @@ Fetch Linear tasks and their subtasks, manage status transitions, and iterate th
27
27
 
28
28
  ## Status Transitions
29
29
 
30
- | From | To | When |
31
- |------|----|------|
32
- | To Do | In Progress | Starting work on subtask |
33
- | In Progress | Done | Subtask implementation complete |
34
- | In Progress | Blocked | Cannot proceed |
35
- | Any | In Review | Ready for review |
30
+ | From | To | When |
31
+ | ----------- | ----------- | ------------------------------- |
32
+ | To Do | In Progress | Starting work on subtask |
33
+ | In Progress | Done | Subtask implementation complete |
34
+ | In Progress | Blocked | Cannot proceed |
35
+ | Any | In Review | Ready for review |
36
36
 
37
37
  ## Fetching Subtasks
38
38
 
39
39
  Use Linear MCP tools:
40
40
 
41
- 1. `mcp__linear-server__get_issue` - Get parent task details
42
- 2. `mcp__linear-server__list_issues` - List subtasks (filter by parent)
41
+ 1. `mcp__linear__get_issue` - Get parent task details
42
+ 2. `mcp__linear__list_issues` - List subtasks (filter by parent)
43
43
 
44
44
  ## Iteration Flow
45
45
 
@@ -7,8 +7,8 @@ allowed-tools:
7
7
  - Glob
8
8
  - Grep
9
9
  - AskUserQuestion
10
- - mcp__linear-server__get_issue
11
- - mcp__linear-server__list_comments
10
+ - mcp__linear__get_issue
11
+ - mcp__linear__list_comments
12
12
  ---
13
13
 
14
14
  # Commit Skill
@@ -47,15 +47,15 @@ Refs: <linearTaskId>
47
47
 
48
48
  ### Type
49
49
 
50
- | Type | Use when |
51
- |------|----------|
52
- | `feat` | New feature or functionality |
53
- | `fix` | Bug fix |
50
+ | Type | Use when |
51
+ | ---------- | ------------------------------------------ |
52
+ | `feat` | New feature or functionality |
53
+ | `fix` | Bug fix |
54
54
  | `refactor` | Code restructuring without behavior change |
55
- | `style` | Styling/CSS changes only |
56
- | `docs` | Documentation changes |
57
- | `chore` | Maintenance, config, dependencies |
58
- | `perf` | Performance improvements |
55
+ | `style` | Styling/CSS changes only |
56
+ | `docs` | Documentation changes |
57
+ | `chore` | Maintenance, config, dependencies |
58
+ | `perf` | Performance improvements |
59
59
 
60
60
  ### Scope
61
61
 
@@ -102,6 +102,7 @@ Run `git add` to stage your changes before committing.
102
102
  ### Linear Task Not Found
103
103
 
104
104
  If linearTaskId is not provided or task not found:
105
+
105
106
  - Try to detect from branch name
106
107
  - If still not found, proceed without Linear context
107
108