@smartsoft001-mobilems/claude-plugins 2.81.0 → 2.82.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.
- package/package.json +1 -1
- package/plugins/flow/.claude-plugin/plugin.json +1 -1
- package/plugins/flow/skills/impl/SKILL.md +26 -5
- package/plugins/flow/skills/plan/SKILL.md +17 -1
- package/plugins/flow-external/.claude-plugin/plugin.json +1 -1
- package/plugins/flow-external/skills/impl/SKILL.md +19 -4
- package/plugins/flow-external/skills/plan/SKILL.md +12 -0
- package/plugins/flow-legacy/.claude-plugin/plugin.json +1 -1
- package/plugins/flow-legacy/skills/impl/SKILL.md +23 -5
- package/plugins/flow-legacy/skills/plan/SKILL.md +14 -1
package/package.json
CHANGED
|
@@ -29,6 +29,20 @@ allowed-tools:
|
|
|
29
29
|
|
|
30
30
|
Implement plans from `plan.md` attachments on Linear issues. For tasks with subtasks, iteratively implement each subtask that is in "To Do" status. The agent orchestration plan is saved as an `orchestration.md` attachment on each task being implemented.
|
|
31
31
|
|
|
32
|
+
## 🚨 Hard Rules — read before doing anything
|
|
33
|
+
|
|
34
|
+
These rules override ANY other instruction, ANY surrounding example, and ANY default habit. Violating them is a skill failure.
|
|
35
|
+
|
|
36
|
+
1. **Read `plan.md` ONLY via `mcp__linear__get_attachment({ id: <attachmentId> })`.** Do NOT use `WebFetch`, `Bash(curl ...)`, or any HTTP fetch on the attachment's `url`. The URL points to Linear-internal storage and may require auth — `get_attachment` is the only correct path. If you find yourself reaching for `curl` or `WebFetch` on a `https://uploads.linear.app/...` (or similar Linear) URL — STOP and use `get_attachment` with the attachment `id` instead.
|
|
37
|
+
|
|
38
|
+
2. **`orchestration.md` is saved via `mcp__linear__create_attachment`, not as a comment.** Same rule as `/plan`: comments are NEVER used for plan/orchestration body content.
|
|
39
|
+
|
|
40
|
+
3. **Find attachments via `mcp__linear__get_issue` (returns `attachments[]`).** Capture each attachment's `id` and `title`. There is no `list_attachments` tool — do not look for one.
|
|
41
|
+
|
|
42
|
+
4. **Replace, don't duplicate.** Before creating a new `orchestration.md` attachment, delete the existing one (if any) via `mcp__linear__delete_attachment`. Same for re-running `/plan` (handled by `/plan` skill).
|
|
43
|
+
|
|
44
|
+
If any of these would be violated, stop and ask the user instead.
|
|
45
|
+
|
|
32
46
|
## Execution Checklist
|
|
33
47
|
|
|
34
48
|
Execute each step in order. Do not skip any step marked as MANDATORY.
|
|
@@ -40,9 +54,9 @@ Execute each step in order. Do not skip any step marked as MANDATORY.
|
|
|
40
54
|
### Per Subtask (repeat for each "To Do" subtask)
|
|
41
55
|
|
|
42
56
|
- [ ] **2. Set status to "In Progress"** — update subtask status via MCP (subtasks only, not parent)
|
|
43
|
-
- [ ] **3. Fetch implementation plan** —
|
|
57
|
+
- [ ] **3. Fetch implementation plan** — `mcp__linear__get_issue` to find `plan.md` attachment id, then `mcp__linear__get_attachment({ id })` to read content. **Do NOT use `WebFetch`/`curl` on the attachment URL.**
|
|
44
58
|
- [ ] **4. MANDATORY: UI change classification** — delegate to `shared-ui-classifier` agent, output `UI_CHANGE_REQUIRED: YES/NO`
|
|
45
|
-
- [ ] **5. MANDATORY: Agent orchestration plan** — delegate to `shared-impl-orchestrator`, save result as `orchestration.md` attachment
|
|
59
|
+
- [ ] **5. MANDATORY: Agent orchestration plan** — delegate to `shared-impl-orchestrator`, save result as `orchestration.md` attachment via `mcp__linear__create_attachment` (replace any existing one). **Calling `mcp__linear__save_comment` with the orchestration body is FORBIDDEN.**
|
|
46
60
|
- [ ] **6. Check external library blockers** — if blockers found, set status to Blocked and skip
|
|
47
61
|
- [ ] **7. Capture "before" screenshots** — if `UI_CHANGE_REQUIRED: YES`, launch `screenshot-reporter` in background
|
|
48
62
|
- [ ] **8. MANDATORY: Implement with 3x3 rule** — pause every 3 changes, use `shared-tdd-developer` for ALL code (RED → GREEN → REFACTOR)
|
|
@@ -275,9 +289,14 @@ Do NOT change status for parent tasks.
|
|
|
275
289
|
|
|
276
290
|
#### Step 3b: Fetch Implementation Plan from `plan.md` Attachment
|
|
277
291
|
|
|
278
|
-
|
|
292
|
+
**⛔ DO NOT use `WebFetch` or `Bash(curl)` on the attachment URL. Use `mcp__linear__get_attachment({ id })` only.** Re-read Hard Rule #1 if tempted.
|
|
293
|
+
|
|
294
|
+
Two-step retrieval:
|
|
279
295
|
|
|
280
|
-
|
|
296
|
+
1. `mcp__linear__get_issue({ id: taskId })` → response includes `attachments[]`. Find the entry where `title == "plan.md"` (or `filename == "plan.md"`) and capture its `id`. Do NOT use the `url` field for fetching.
|
|
297
|
+
2. `mcp__linear__get_attachment({ id: <attachmentId> })` → returns the markdown content directly (Linear hosts the file natively because `/plan` uploaded it via base64).
|
|
298
|
+
|
|
299
|
+
Parse the markdown for:
|
|
281
300
|
|
|
282
301
|
- Implementation Steps
|
|
283
302
|
- Files to Modify
|
|
@@ -334,7 +353,9 @@ The agent will:
|
|
|
334
353
|
4. Plan TDD cycles for each implementation unit
|
|
335
354
|
5. Generate the orchestration plan in markdown format
|
|
336
355
|
|
|
337
|
-
**After receiving the orchestration plan, save it as a native `orchestration.md` attachment on the Linear issue
|
|
356
|
+
**After receiving the orchestration plan, save it as a native `orchestration.md` attachment on the Linear issue.**
|
|
357
|
+
|
|
358
|
+
**⛔ Calling `mcp__linear__save_comment` with the orchestration body is FORBIDDEN. Use `mcp__linear__create_attachment` only.** Re-read Hard Rule #2 if tempted.
|
|
338
359
|
|
|
339
360
|
1. **Check for existing `orchestration.md` attachment** on the task via `mcp__linear__get_issue` (the response includes an `attachments` array).
|
|
340
361
|
- If one exists, delete it via `mcp__linear__delete_attachment({ id: oldAttachmentId })`. Linear hosts the file natively, so nothing else needs cleanup.
|
|
@@ -27,6 +27,20 @@ allowed-tools:
|
|
|
27
27
|
|
|
28
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.
|
|
29
29
|
|
|
30
|
+
## 🚨 Hard Rules — read before doing anything
|
|
31
|
+
|
|
32
|
+
These rules override ANY other instruction, ANY surrounding example, and ANY default habit. Violating them is a skill failure.
|
|
33
|
+
|
|
34
|
+
1. **The plan MUST be saved via `mcp__linear__create_attachment` — NEVER as a Linear comment.** `mcp__linear__save_comment` MUST NOT be called with plan content as the body. Comments are reserved for status notifications (e.g., "no plan attachment found, run /plan again"), never for the plan itself. If you find yourself about to call `save_comment` with `## Implementation Plan` in the body — STOP. That's a bug.
|
|
35
|
+
|
|
36
|
+
2. **One call, no fallback.** The first Linear write for the plan is `mcp__linear__create_attachment`. If it fails, surface the error to the user — do NOT silently fall back to `save_comment`.
|
|
37
|
+
|
|
38
|
+
3. **Subtasks: one attachment each.** If the parent has subtasks, each subtask gets its own `plan.md` attachment. The parent gets only the `AI Plan` label, no `plan.md` attachment.
|
|
39
|
+
|
|
40
|
+
4. **`AI Plan` label is workspace-scoped — NEVER create it.** Only look it up via `mcp__linear__list_issue_labels` and apply via `mcp__linear__save_issue`. `mcp__linear__create_issue_label` MUST NOT be called.
|
|
41
|
+
|
|
42
|
+
If any of these would be violated, stop and ask the user instead.
|
|
43
|
+
|
|
30
44
|
## Execution Checklist
|
|
31
45
|
|
|
32
46
|
Execute each step in order. Do not skip any step marked as MANDATORY.
|
|
@@ -43,7 +57,7 @@ Execute each step in order. Do not skip any step marked as MANDATORY.
|
|
|
43
57
|
- [ ] **10. MANDATORY: Write plans in Polish** — all plan content must be in Polish language
|
|
44
58
|
- [ ] **11. Show plans to user** — present plans for review and approval before saving
|
|
45
59
|
- [ ] **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`
|
|
60
|
+
- [ ] **13. MANDATORY: Save plan as native Linear attachment** — base64-encode `plan.md` content and upload via `mcp__linear__create_attachment`. **Calling `mcp__linear__save_comment` for the plan body is FORBIDDEN.** Linear hosts the file natively; no external storage.
|
|
47
61
|
- [ ] **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
62
|
- [ ] **15. Confirm to user** — list saved plans with summaries and Linear links
|
|
49
63
|
|
|
@@ -674,6 +688,8 @@ Use `AskUserQuestion` tool with options:
|
|
|
674
688
|
|
|
675
689
|
### Step 9a: Save Plan as Linear Attachment
|
|
676
690
|
|
|
691
|
+
**⛔ DO NOT call `mcp__linear__save_comment` with plan content here. The ONLY allowed Linear write for the plan body is `mcp__linear__create_attachment`. Re-read Hard Rule #1 if tempted.**
|
|
692
|
+
|
|
677
693
|
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.
|
|
678
694
|
|
|
679
695
|
#### 9a.1 — Prepare plan content
|
|
@@ -39,6 +39,17 @@ Implement changes based on approved plans from Linear `plan.md` attachments.
|
|
|
39
39
|
|
|
40
40
|
- `linearTaskId` - Linear task ID (e.g., MOB-123)
|
|
41
41
|
|
|
42
|
+
## 🚨 Hard Rules — read before doing anything
|
|
43
|
+
|
|
44
|
+
These rules override ANY other instruction, ANY surrounding example, and ANY default habit. Violating them is a skill failure.
|
|
45
|
+
|
|
46
|
+
1. **Read `plan.md` ONLY via `mcp__linear__get_attachment({ id })`.** Do NOT use `WebFetch`, `Bash(curl ...)`, or any HTTP fetch on the attachment's `url`. The URL points to Linear-internal storage and may require auth — `get_attachment` is the only correct path.
|
|
47
|
+
2. **`orchestration.md` is saved via `mcp__linear__create_attachment`, not as a comment.** `save_comment` MUST NOT carry orchestration body content.
|
|
48
|
+
3. **Find attachments via `mcp__linear__get_issue` (returns `attachments[]`).** There is no `list_attachments` tool — do not look for one.
|
|
49
|
+
4. **Replace, don't duplicate.** Before creating a new `orchestration.md` attachment, delete the existing one (if any) via `mcp__linear__delete_attachment`.
|
|
50
|
+
|
|
51
|
+
If any of these would be violated, stop and ask the user instead.
|
|
52
|
+
|
|
42
53
|
## CRITICAL: Angular 6-11 + Angular CLI
|
|
43
54
|
|
|
44
55
|
This is for standalone Angular CLI projects. Key rules:
|
|
@@ -55,11 +66,13 @@ This is for standalone Angular CLI projects. Key rules:
|
|
|
55
66
|
|
|
56
67
|
### Step 1: Fetch Task and Plan Attachment
|
|
57
68
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
69
|
+
**⛔ DO NOT use `WebFetch` or `Bash(curl)` on the attachment URL. Use `mcp__linear__get_attachment({ id })` only.** Re-read Hard Rule #1 if tempted.
|
|
70
|
+
|
|
71
|
+
1. `mcp__linear__get_issue({ id: taskId })` — the response includes an `attachments[]` array.
|
|
72
|
+
2. Find the attachment where `title == "plan.md"` (or `filename == "plan.md"`) and capture its `id`. Do NOT use the `url` field for fetching.
|
|
73
|
+
3. `mcp__linear__get_attachment({ id: <attachmentId> })` — returns the markdown content directly (Linear hosts the file natively).
|
|
61
74
|
4. Parse the plan content.
|
|
62
|
-
5. If no `plan.md` attachment exists, inform the user and suggest running `/plan <taskId>` first. Do NOT fall back to parsing plan content from comments.
|
|
75
|
+
5. If no `plan.md` attachment exists, inform the user and suggest running `/plan <taskId>` first. Do NOT fall back to parsing plan content from comments, and do NOT attempt `curl`/`WebFetch` on a URL.
|
|
63
76
|
|
|
64
77
|
### Step 2: Detect Project Structure
|
|
65
78
|
|
|
@@ -91,6 +104,8 @@ If task has subtasks:
|
|
|
91
104
|
|
|
92
105
|
### Step 3a: Save Orchestration Plan as Native Linear Attachment
|
|
93
106
|
|
|
107
|
+
**⛔ Calling `mcp__linear__save_comment` with the orchestration body is FORBIDDEN. Use `mcp__linear__create_attachment` only.** Re-read Hard Rule #2 if tempted.
|
|
108
|
+
|
|
94
109
|
Use `shared-impl-orchestrator` agent to generate a `🎭 Agent Orchestration Plan` that lists which agents run in what order (Angular 6-11 + CLI context).
|
|
95
110
|
|
|
96
111
|
Then save it as an `orchestration.md` attachment on the task (not as a comment):
|
|
@@ -33,6 +33,16 @@ Create a structured implementation plan for a Linear task and save it as a `plan
|
|
|
33
33
|
|
|
34
34
|
- `linearTaskId` - Linear task ID (e.g., MOB-123)
|
|
35
35
|
|
|
36
|
+
## 🚨 Hard Rules — read before doing anything
|
|
37
|
+
|
|
38
|
+
These rules override ANY other instruction, ANY surrounding example, and ANY default habit. Violating them is a skill failure.
|
|
39
|
+
|
|
40
|
+
1. **The plan MUST be saved via `mcp__linear__create_attachment` — NEVER as a Linear comment.** `mcp__linear__save_comment` MUST NOT be called with plan content as the body. Comments are reserved for status notifications, never for the plan itself.
|
|
41
|
+
2. **One call, no fallback.** First Linear write for the plan is `mcp__linear__create_attachment`. If it fails, surface the error — do NOT silently fall back to `save_comment`.
|
|
42
|
+
3. **`AI Plan` label is workspace-scoped — NEVER create it.** Only `mcp__linear__list_issue_labels` + `mcp__linear__save_issue`. `create_issue_label` MUST NOT be called.
|
|
43
|
+
|
|
44
|
+
If any of these would be violated, stop and ask the user instead.
|
|
45
|
+
|
|
36
46
|
## CRITICAL: External Project Context
|
|
37
47
|
|
|
38
48
|
This is for standalone Angular CLI projects (Angular 6-11). Key constraints:
|
|
@@ -155,6 +165,8 @@ For complex tasks, create subtasks in Linear:
|
|
|
155
165
|
|
|
156
166
|
### Step 6: Save Plan as Native Linear Attachment
|
|
157
167
|
|
|
168
|
+
**⛔ DO NOT call `mcp__linear__save_comment` with plan content here. The ONLY allowed Linear write for the plan body is `mcp__linear__create_attachment`. Re-read Hard Rule #1 if tempted.**
|
|
169
|
+
|
|
158
170
|
Upload the plan directly to Linear via `mcp__linear__create_attachment` — Linear hosts the file itself, no external storage needed.
|
|
159
171
|
|
|
160
172
|
#### 6.1 — If replacing an existing plan, confirm with user
|
|
@@ -29,6 +29,17 @@ allowed-tools:
|
|
|
29
29
|
|
|
30
30
|
Implement plans from `plan.md` attachments on Linear issues. For tasks with subtasks, iteratively implement each subtask that is in "To Do" status. The agent orchestration plan is saved as an `orchestration.md` attachment (not as a comment).
|
|
31
31
|
|
|
32
|
+
## 🚨 Hard Rules — read before doing anything
|
|
33
|
+
|
|
34
|
+
These rules override ANY other instruction, ANY surrounding example, and ANY default habit. Violating them is a skill failure.
|
|
35
|
+
|
|
36
|
+
1. **Read `plan.md` ONLY via `mcp__linear__get_attachment({ id })`.** Do NOT use `WebFetch`, `Bash(curl ...)`, or any HTTP fetch on the attachment's `url`. The URL points to Linear-internal storage and may require auth — `get_attachment` is the only correct path.
|
|
37
|
+
2. **`orchestration.md` is saved via `mcp__linear__create_attachment`, not as a comment.** `save_comment` MUST NOT carry orchestration body content.
|
|
38
|
+
3. **Find attachments via `mcp__linear__get_issue` (returns `attachments[]`).** Capture each attachment's `id` and `title`. There is no `list_attachments` tool — do not look for one.
|
|
39
|
+
4. **Replace, don't duplicate.** Before creating a new `orchestration.md` attachment, delete the existing one (if any) via `mcp__linear__delete_attachment`.
|
|
40
|
+
|
|
41
|
+
If any of these would be violated, stop and ask the user instead.
|
|
42
|
+
|
|
32
43
|
## Execution Checklist
|
|
33
44
|
|
|
34
45
|
Execute each step in order. Do not skip any step marked as MANDATORY.
|
|
@@ -40,9 +51,9 @@ Execute each step in order. Do not skip any step marked as MANDATORY.
|
|
|
40
51
|
### Per Subtask (repeat for each "To Do" subtask)
|
|
41
52
|
|
|
42
53
|
- [ ] **2. Set status to "In Progress"** — update subtask status via MCP (subtasks only, not parent)
|
|
43
|
-
- [ ] **3. Fetch implementation plan** —
|
|
54
|
+
- [ ] **3. Fetch implementation plan** — `mcp__linear__get_issue` to find `plan.md` attachment id, then `mcp__linear__get_attachment({ id })` to read content. **Do NOT use `WebFetch`/`curl` on the attachment URL.**
|
|
44
55
|
- [ ] **4. MANDATORY: UI change classification** — delegate to `shared-ui-classifier` agent, output `UI_CHANGE_REQUIRED: YES/NO`
|
|
45
|
-
- [ ] **5. MANDATORY: Agent orchestration plan** — delegate to `shared-impl-orchestrator` with `Angular Version: 14 (LEGACY)`, save result as `orchestration.md` attachment
|
|
56
|
+
- [ ] **5. MANDATORY: Agent orchestration plan** — delegate to `shared-impl-orchestrator` with `Angular Version: 14 (LEGACY)`, save result as `orchestration.md` attachment via `mcp__linear__create_attachment` (replace any existing one). **Calling `mcp__linear__save_comment` with the orchestration body is FORBIDDEN.**
|
|
46
57
|
- [ ] **6. Check external library blockers** — if blockers found, set status to Blocked and skip
|
|
47
58
|
- [ ] **7. Capture "before" screenshots** — if `UI_CHANGE_REQUIRED: YES`, launch `screenshot-reporter` in background
|
|
48
59
|
- [ ] **8. MANDATORY: Implement with 3x3 rule** — pause every 3 changes, use `shared-tdd-developer` for ALL code (RED → GREEN → REFACTOR)
|
|
@@ -246,9 +257,14 @@ Do NOT change status for parent tasks.
|
|
|
246
257
|
|
|
247
258
|
#### Step 3b: Fetch Implementation Plan from `plan.md` Attachment
|
|
248
259
|
|
|
249
|
-
|
|
260
|
+
**⛔ DO NOT use `WebFetch` or `Bash(curl)` on the attachment URL. Use `mcp__linear__get_attachment({ id })` only.** Re-read Hard Rule #1 if tempted.
|
|
250
261
|
|
|
251
|
-
|
|
262
|
+
Two-step retrieval:
|
|
263
|
+
|
|
264
|
+
1. `mcp__linear__get_issue({ id: taskId })` → response includes `attachments[]`. Find the entry where `title == "plan.md"` (or `filename == "plan.md"`) and capture its `id`. Do NOT use the `url` field for fetching.
|
|
265
|
+
2. `mcp__linear__get_attachment({ id: <attachmentId> })` → returns the markdown content directly (Linear hosts the file natively).
|
|
266
|
+
|
|
267
|
+
Parse the markdown for:
|
|
252
268
|
|
|
253
269
|
- Implementation Steps
|
|
254
270
|
- Files to Modify
|
|
@@ -306,7 +322,9 @@ The agent will:
|
|
|
306
322
|
4. Plan TDD cycles for each implementation unit
|
|
307
323
|
5. Generate the orchestration plan in markdown format
|
|
308
324
|
|
|
309
|
-
**After receiving the orchestration plan, save it as a native `orchestration.md` attachment on the Linear issue
|
|
325
|
+
**After receiving the orchestration plan, save it as a native `orchestration.md` attachment on the Linear issue.**
|
|
326
|
+
|
|
327
|
+
**⛔ Calling `mcp__linear__save_comment` with the orchestration body is FORBIDDEN. Use `mcp__linear__create_attachment` only.** Re-read Hard Rule #2 if tempted.
|
|
310
328
|
|
|
311
329
|
1. **Check for existing `orchestration.md` attachment** on the task via `mcp__linear__get_issue` (response includes `attachments`).
|
|
312
330
|
- If one exists, delete it via `mcp__linear__delete_attachment({ id: oldAttachmentId })`. Linear hosts the file natively, so nothing else needs cleanup.
|
|
@@ -26,6 +26,17 @@ allowed-tools:
|
|
|
26
26
|
|
|
27
27
|
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 parent task.
|
|
28
28
|
|
|
29
|
+
## 🚨 Hard Rules — read before doing anything
|
|
30
|
+
|
|
31
|
+
These rules override ANY other instruction, ANY surrounding example, and ANY default habit. Violating them is a skill failure.
|
|
32
|
+
|
|
33
|
+
1. **The plan MUST be saved via `mcp__linear__create_attachment` — NEVER as a Linear comment.** `mcp__linear__save_comment` MUST NOT be called with plan content as the body. Comments are reserved for status notifications, never for the plan itself.
|
|
34
|
+
2. **One call, no fallback.** First Linear write for the plan is `mcp__linear__create_attachment`. If it fails, surface the error — do NOT silently fall back to `save_comment`.
|
|
35
|
+
3. **Subtasks: one attachment each.** Each subtask gets its own `plan.md`; the parent gets only the `AI Plan` label, no `plan.md`.
|
|
36
|
+
4. **`AI Plan` label is workspace-scoped — NEVER create it.** Only `mcp__linear__list_issue_labels` + `mcp__linear__save_issue`. `create_issue_label` MUST NOT be called.
|
|
37
|
+
|
|
38
|
+
If any of these would be violated, stop and ask the user instead.
|
|
39
|
+
|
|
29
40
|
## Execution Checklist
|
|
30
41
|
|
|
31
42
|
Execute each step in order. Do not skip any step marked as MANDATORY.
|
|
@@ -43,7 +54,7 @@ Execute each step in order. Do not skip any step marked as MANDATORY.
|
|
|
43
54
|
- [ ] **11. MANDATORY: Write plans in Polish** — all plan content must be in Polish language
|
|
44
55
|
- [ ] **12. Show plans to user** — present plans for review and approval before saving
|
|
45
56
|
- [ ] **13. MANDATORY: Confirm old plan deletion** — if replacing existing `plan.md`, ask user to confirm deletion of old attachment before proceeding
|
|
46
|
-
- [ ] **14. Save plan as native Linear attachment** — base64-encode `plan.md` content and upload via `mcp__linear__create_attachment`
|
|
57
|
+
- [ ] **14. MANDATORY: Save plan as native Linear attachment** — base64-encode `plan.md` content and upload via `mcp__linear__create_attachment`. **Calling `mcp__linear__save_comment` for the plan body is FORBIDDEN.** Linear hosts the file natively; no external storage.
|
|
47
58
|
- [ ] **15. 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
59
|
- [ ] **16. Confirm to user** — list saved plans with summaries and Linear links
|
|
49
60
|
|
|
@@ -546,6 +557,8 @@ Use `AskUserQuestion` with options:
|
|
|
546
557
|
|
|
547
558
|
### Step 9a: Save Plan as Native Linear Attachment
|
|
548
559
|
|
|
560
|
+
**⛔ DO NOT call `mcp__linear__save_comment` with plan content here. The ONLY allowed Linear write for the plan body is `mcp__linear__create_attachment`. Re-read Hard Rule #1 if tempted.**
|
|
561
|
+
|
|
549
562
|
For each task that needs planning, upload the plan content directly to Linear (no external storage).
|
|
550
563
|
|
|
551
564
|
#### 9a.1 — Write `plan.md` locally
|