@smartsoft001-mobilems/claude-plugins 2.80.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/README.md +13 -4
- package/plugins/flow/.claude-plugin/plugin.json +1 -1
- package/plugins/flow/.claude-plugin/settings.template.json +11 -8
- package/plugins/flow/agents/shared-impl-orchestrator.md +1 -1
- package/plugins/flow/agents/shared-impl-teammate.md +2 -2
- package/plugins/flow/agents/ui-screenshot-reporter.md +3 -3
- package/plugins/flow/skills/commit/SKILL.md +2 -2
- package/plugins/flow/skills/impl/SKILL.md +60 -30
- package/plugins/flow/skills/linear-suggestion/SKILL.md +1 -1
- package/plugins/flow/skills/plan/SKILL.md +144 -77
- package/plugins/flow/skills/push/SKILL.md +6 -6
- package/plugins/flow/skills/review/SKILL.md +3 -3
- package/plugins/flow-external/.claude-plugin/README.md +1 -1
- package/plugins/flow-external/.claude-plugin/plugin.json +1 -1
- package/plugins/flow-external/.claude-plugin/settings.template.json +11 -8
- package/plugins/flow-external/agents/shared-linear-subtask-iterator.md +9 -9
- package/plugins/flow-external/skills/commit/SKILL.md +11 -10
- package/plugins/flow-external/skills/impl/SKILL.md +67 -29
- package/plugins/flow-external/skills/linear-suggestion/SKILL.md +8 -8
- package/plugins/flow-external/skills/plan/SKILL.md +107 -29
- package/plugins/flow-external/skills/push/SKILL.md +27 -18
- package/plugins/flow-legacy/.claude-plugin/README.md +1 -1
- package/plugins/flow-legacy/.claude-plugin/plugin.json +1 -1
- package/plugins/flow-legacy/.claude-plugin/settings.template.json +11 -8
- package/plugins/flow-legacy/agents/shared-impl-orchestrator.md +4 -2
- package/plugins/flow-legacy/skills/commit/SKILL.md +2 -2
- package/plugins/flow-legacy/skills/impl/SKILL.md +52 -25
- package/plugins/flow-legacy/skills/linear-suggestion/SKILL.md +1 -1
- package/plugins/flow-legacy/skills/plan/SKILL.md +117 -79
- package/plugins/flow-legacy/skills/push/SKILL.md +6 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: impl
|
|
3
|
-
description: Implement plans from Linear
|
|
3
|
+
description: Implement plans from `plan.md` attachments on Linear issues. Reads approved plan attachment, orchestrates agents (saving `orchestration.md` attachment), and executes changes step by step.
|
|
4
4
|
allowed-tools:
|
|
5
5
|
- Bash
|
|
6
6
|
- Read
|
|
@@ -9,12 +9,15 @@ allowed-tools:
|
|
|
9
9
|
- Glob
|
|
10
10
|
- Grep
|
|
11
11
|
- AskUserQuestion
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
12
|
+
- mcp__linear__get_issue
|
|
13
|
+
- mcp__linear__list_issues
|
|
14
|
+
- mcp__linear__list_comments
|
|
15
|
+
- mcp__linear__save_comment
|
|
16
|
+
- mcp__linear__save_issue
|
|
17
|
+
- mcp__linear__list_issue_statuses
|
|
18
|
+
- mcp__linear__create_attachment
|
|
19
|
+
- mcp__linear__get_attachment
|
|
20
|
+
- mcp__linear__delete_attachment
|
|
18
21
|
- mcp__playwright__browser_navigate
|
|
19
22
|
- mcp__playwright__browser_snapshot
|
|
20
23
|
- mcp__playwright__browser_take_screenshot
|
|
@@ -24,7 +27,7 @@ allowed-tools:
|
|
|
24
27
|
|
|
25
28
|
# Implementation Skill
|
|
26
29
|
|
|
27
|
-
Implement changes based on approved plans from Linear
|
|
30
|
+
Implement changes based on approved plans from Linear `plan.md` attachments.
|
|
28
31
|
|
|
29
32
|
## Usage
|
|
30
33
|
|
|
@@ -36,6 +39,17 @@ Implement changes based on approved plans from Linear task comments.
|
|
|
36
39
|
|
|
37
40
|
- `linearTaskId` - Linear task ID (e.g., MOB-123)
|
|
38
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
|
+
|
|
39
53
|
## CRITICAL: Angular 6-11 + Angular CLI
|
|
40
54
|
|
|
41
55
|
This is for standalone Angular CLI projects. Key rules:
|
|
@@ -50,12 +64,15 @@ This is for standalone Angular CLI projects. Key rules:
|
|
|
50
64
|
|
|
51
65
|
## Execution Steps
|
|
52
66
|
|
|
53
|
-
### Step 1: Fetch Task and Plan
|
|
67
|
+
### Step 1: Fetch Task and Plan Attachment
|
|
68
|
+
|
|
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.
|
|
54
70
|
|
|
55
|
-
1.
|
|
56
|
-
2.
|
|
57
|
-
3.
|
|
58
|
-
4.
|
|
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).
|
|
74
|
+
4. Parse the plan content.
|
|
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.
|
|
59
76
|
|
|
60
77
|
### Step 2: Detect Project Structure
|
|
61
78
|
|
|
@@ -70,6 +87,7 @@ cat package.json 2>/dev/null || cat app/package.json 2>/dev/null
|
|
|
70
87
|
```
|
|
71
88
|
|
|
72
89
|
Key things to detect:
|
|
90
|
+
|
|
73
91
|
- Angular version (6-11)
|
|
74
92
|
- CSS framework (Bootstrap 4 / custom SCSS / none)
|
|
75
93
|
- NgRx version and patterns
|
|
@@ -80,10 +98,30 @@ Key things to detect:
|
|
|
80
98
|
|
|
81
99
|
If task has subtasks:
|
|
82
100
|
|
|
83
|
-
1. Fetch subtasks using `
|
|
101
|
+
1. Fetch subtasks using `mcp__linear__list_issues` with parent filter
|
|
84
102
|
2. Sort by priority/creation order
|
|
85
103
|
3. Process each subtask in order
|
|
86
104
|
|
|
105
|
+
### Step 3a: Save Orchestration Plan as Native Linear Attachment
|
|
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
|
+
|
|
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).
|
|
110
|
+
|
|
111
|
+
Then save it as an `orchestration.md` attachment on the task (not as a comment):
|
|
112
|
+
|
|
113
|
+
1. **Replace existing orchestration**: use `mcp__linear__get_issue` to list attachments; if one titled `orchestration.md` exists, delete it via `mcp__linear__delete_attachment({ id: oldAttachmentId })`. Linear hosts the file natively, so nothing else needs cleanup.
|
|
114
|
+
2. **Write locally**: `Write` the orchestration markdown to `/tmp/claude-plans/<taskId>-orchestration.md`.
|
|
115
|
+
3. **Base64-encode**: `b64=$(base64 -i /tmp/claude-plans/<taskId>-orchestration.md)`.
|
|
116
|
+
4. **Create Linear attachment** via `mcp__linear__create_attachment`:
|
|
117
|
+
- `issue`: the task ID
|
|
118
|
+
- `filename`: `orchestration.md`
|
|
119
|
+
- `contentType`: `text/markdown`
|
|
120
|
+
- `title`: `orchestration.md` (exact)
|
|
121
|
+
- `subtitle`: `Plan orkiestracji wygenerowany przez Claude Code (external)`
|
|
122
|
+
- `base64Content`: the base64 string from step 3
|
|
123
|
+
5. **Clean up** local `/tmp/claude-plans/<taskId>-orchestration.md` file after the attachment is created.
|
|
124
|
+
|
|
87
125
|
### Step 4: Implement Each Step
|
|
88
126
|
|
|
89
127
|
For each step in the plan:
|
|
@@ -114,16 +152,16 @@ Create a summary comment on the Linear task:
|
|
|
114
152
|
|
|
115
153
|
### Zrealizowane
|
|
116
154
|
|
|
117
|
-
| Podzadanie | Tytul
|
|
118
|
-
|
|
119
|
-
| MOB-549
|
|
155
|
+
| Podzadanie | Tytul | Status |
|
|
156
|
+
| ---------- | ------- | ------------ |
|
|
157
|
+
| MOB-549 | [title] | Zrealizowane |
|
|
120
158
|
|
|
121
159
|
### Zmiany
|
|
122
160
|
|
|
123
|
-
| Plik
|
|
124
|
-
|
|
125
|
-
| `src/app/components/feature.component.ts` | Nowy
|
|
126
|
-
| `src/app/components/feature.module.ts`
|
|
161
|
+
| Plik | Typ | Opis |
|
|
162
|
+
| ----------------------------------------- | ------------- | ----------------- |
|
|
163
|
+
| `src/app/components/feature.component.ts` | Nowy | Komponent |
|
|
164
|
+
| `src/app/components/feature.module.ts` | Zmodyfikowany | Dodano deklaracje |
|
|
127
165
|
|
|
128
166
|
### Build
|
|
129
167
|
|
|
@@ -136,15 +174,15 @@ _Raport wygenerowany przez Claude Code_
|
|
|
136
174
|
|
|
137
175
|
## Agent Selection
|
|
138
176
|
|
|
139
|
-
| Task Type
|
|
140
|
-
|
|
141
|
-
| New component
|
|
142
|
-
| New service
|
|
143
|
-
| NgRx state
|
|
144
|
-
| New directive
|
|
145
|
-
| New pipe
|
|
177
|
+
| Task Type | Agent |
|
|
178
|
+
| -------------- | ---------------------------------------------------- |
|
|
179
|
+
| New component | `angular-component-scaffolder` |
|
|
180
|
+
| New service | `angular-service-builder` |
|
|
181
|
+
| NgRx state | `angular-state-builder` |
|
|
182
|
+
| New directive | `angular-directive-builder` |
|
|
183
|
+
| New pipe | `angular-pipe-builder` |
|
|
146
184
|
| Guard/resolver | `angular-guard-builder` / `angular-resolver-builder` |
|
|
147
|
-
| Styling
|
|
185
|
+
| Styling | `ui-web-designer` |
|
|
148
186
|
|
|
149
187
|
## Guidelines
|
|
150
188
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: linear-suggestion
|
|
3
3
|
description: Create a Linear issue in the "MobileMS Framework" project with a suggestion for agent or skill improvements.
|
|
4
|
-
allowed-tools:
|
|
4
|
+
allowed-tools: mcp__linear__save_issue
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Linear Suggestion
|
|
@@ -16,13 +16,13 @@ Create a Linear issue in the **MobileMS Framework** project containing a suggest
|
|
|
16
16
|
|
|
17
17
|
## Input Parameters
|
|
18
18
|
|
|
19
|
-
| Parameter
|
|
20
|
-
|
|
21
|
-
| `title`
|
|
22
|
-
| `description` | YES
|
|
23
|
-
| `source`
|
|
24
|
-
| `targetFile`
|
|
25
|
-
| `category`
|
|
19
|
+
| Parameter | Required | Description |
|
|
20
|
+
| ------------- | -------- | --------------------------------------------------------------- |
|
|
21
|
+
| `title` | YES | Short summary (max 100 chars) |
|
|
22
|
+
| `description` | YES | Full markdown description with rationale |
|
|
23
|
+
| `source` | YES | Agent that generated the suggestion |
|
|
24
|
+
| `targetFile` | NO | Path to the file to be modified |
|
|
25
|
+
| `category` | NO | One of: `OPTIMIZATION`, `NEW_RULE`, `PATTERN_UPDATE`, `BUG_FIX` |
|
|
26
26
|
|
|
27
27
|
## Issue Format
|
|
28
28
|
|
|
@@ -1,23 +1,27 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plan
|
|
3
|
-
description: Create implementation plan and save
|
|
3
|
+
description: Create implementation plan and save it as a `plan.md` attachment on the Linear issue. Analyzes codebase, understands task requirements, and generates structured plan.
|
|
4
4
|
allowed-tools:
|
|
5
5
|
- Bash
|
|
6
6
|
- Read
|
|
7
|
+
- Write
|
|
7
8
|
- Glob
|
|
8
9
|
- Grep
|
|
9
10
|
- AskUserQuestion
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
11
|
+
- mcp__linear__get_issue
|
|
12
|
+
- mcp__linear__list_issues
|
|
13
|
+
- mcp__linear__list_comments
|
|
14
|
+
- mcp__linear__save_comment
|
|
15
|
+
- mcp__linear__save_issue
|
|
16
|
+
- mcp__linear__save_issue
|
|
17
|
+
- mcp__linear__create_attachment
|
|
18
|
+
- mcp__linear__delete_attachment
|
|
19
|
+
- mcp__linear__list_issue_labels
|
|
16
20
|
---
|
|
17
21
|
|
|
18
22
|
# Plan Skill
|
|
19
23
|
|
|
20
|
-
Create a structured implementation plan for a Linear task and save it as a
|
|
24
|
+
Create a structured implementation plan for a Linear task and save it as a `plan.md` attachment on the issue. After saving, add the `AI Plan` label to the task.
|
|
21
25
|
|
|
22
26
|
## Usage
|
|
23
27
|
|
|
@@ -29,6 +33,16 @@ Create a structured implementation plan for a Linear task and save it as a comme
|
|
|
29
33
|
|
|
30
34
|
- `linearTaskId` - Linear task ID (e.g., MOB-123)
|
|
31
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
|
+
|
|
32
46
|
## CRITICAL: External Project Context
|
|
33
47
|
|
|
34
48
|
This is for standalone Angular CLI projects (Angular 6-11). Key constraints:
|
|
@@ -41,11 +55,21 @@ This is for standalone Angular CLI projects (Angular 6-11). Key constraints:
|
|
|
41
55
|
|
|
42
56
|
## Execution Steps
|
|
43
57
|
|
|
44
|
-
### Step 1: Fetch Task Details
|
|
58
|
+
### Step 1: Fetch Task Details, Attachments and Comments
|
|
59
|
+
|
|
60
|
+
1. Fetch the Linear task using `mcp__linear__get_issue`.
|
|
61
|
+
2. Fetch task attachments with `mcp__linear__get_issue` (attachments included in response). Look for one titled exactly `plan.md`.
|
|
62
|
+
3. Fetch comments with `mcp__linear__list_comments` — keep `id`, `createdAt`, body.
|
|
45
63
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
64
|
+
#### Regeneration decision (mtime rule)
|
|
65
|
+
|
|
66
|
+
- If no `plan.md` attachment exists → generate a new plan.
|
|
67
|
+
- If `plan.md` exists AND at least one comment's `createdAt` is greater than `plan.md.updatedAt` (fall back to `createdAt`) → regenerate (the comment is treated as feedback on the plan).
|
|
68
|
+
- Otherwise skip — the plan is still fresh.
|
|
69
|
+
|
|
70
|
+
Secondary signal: if `plan.md` is fresh but the user's latest prompt uses plan-change keywords ("zmień plan", "zaktualizuj plan", "popraw plan", etc.), ask explicitly before regenerating.
|
|
71
|
+
|
|
72
|
+
When regenerating, record the old `plan.md` attachment ID so it can be deleted via `mcp__linear__delete_attachment` before the new one is created.
|
|
49
73
|
|
|
50
74
|
### Step 2: Analyze Codebase
|
|
51
75
|
|
|
@@ -71,6 +95,7 @@ ls -la src/app/ 2>/dev/null || ls -la app/src/app/ 2>/dev/null
|
|
|
71
95
|
### Step 3: Identify Affected Areas
|
|
72
96
|
|
|
73
97
|
Based on the task:
|
|
98
|
+
|
|
74
99
|
1. Find relevant existing files
|
|
75
100
|
2. Identify what needs to be created vs modified
|
|
76
101
|
3. Check for existing patterns to follow
|
|
@@ -101,14 +126,15 @@ Structure the plan as follows:
|
|
|
101
126
|
|
|
102
127
|
**Pliki do zmiany:**
|
|
103
128
|
|
|
104
|
-
| Plik
|
|
105
|
-
|
|
106
|
-
| `src/app/components/feature.component.ts`
|
|
107
|
-
| `src/app/components/feature.component.html` | Nowy
|
|
108
|
-
| `src/app/components/feature.component.scss` | Nowy
|
|
109
|
-
| `src/app/feature.module.ts`
|
|
129
|
+
| Plik | Akcja | Opis |
|
|
130
|
+
| ------------------------------------------- | ----------- | ------------------ |
|
|
131
|
+
| `src/app/components/feature.component.ts` | Nowy | Komponent widoku |
|
|
132
|
+
| `src/app/components/feature.component.html` | Nowy | Szablon |
|
|
133
|
+
| `src/app/components/feature.component.scss` | Nowy | Style |
|
|
134
|
+
| `src/app/feature.module.ts` | Modyfikacja | Dodanie deklaracji |
|
|
110
135
|
|
|
111
136
|
**Wzorce:**
|
|
137
|
+
|
|
112
138
|
- Constructor DI
|
|
113
139
|
- *ngIf/*ngFor
|
|
114
140
|
- [CSS approach from project]
|
|
@@ -124,40 +150,92 @@ Structure the plan as follows:
|
|
|
124
150
|
|
|
125
151
|
### Podzadania
|
|
126
152
|
|
|
127
|
-
| ID
|
|
128
|
-
|
|
129
|
-
| -
|
|
130
|
-
| -
|
|
153
|
+
| ID | Tytul | Priorytet | Krok |
|
|
154
|
+
| --- | ----------- | --------- | ---- |
|
|
155
|
+
| - | [Subtask 1] | High | 1 |
|
|
156
|
+
| - | [Subtask 2] | Medium | 2 |
|
|
131
157
|
```
|
|
132
158
|
|
|
133
159
|
### Step 5: Create Subtasks (if needed)
|
|
134
160
|
|
|
135
161
|
For complex tasks, create subtasks in Linear:
|
|
136
|
-
|
|
162
|
+
|
|
163
|
+
- Use `mcp__linear__save_issue` with parent task ID
|
|
137
164
|
- Each subtask should map to a plan step
|
|
138
165
|
|
|
139
|
-
### Step 6:
|
|
166
|
+
### Step 6: Save Plan as Native Linear Attachment
|
|
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
|
+
|
|
170
|
+
Upload the plan directly to Linear via `mcp__linear__create_attachment` — Linear hosts the file itself, no external storage needed.
|
|
171
|
+
|
|
172
|
+
#### 6.1 — If replacing an existing plan, confirm with user
|
|
173
|
+
|
|
174
|
+
If a `plan.md` attachment is being replaced, ask the user via `AskUserQuestion`:
|
|
175
|
+
|
|
176
|
+
- "Tak, usuń stary plan i zapisz nowy" (Recommended)
|
|
177
|
+
- "Anuluj"
|
|
178
|
+
|
|
179
|
+
If confirmed, delete the Linear attachment via `mcp__linear__delete_attachment({ id: oldAttachmentId })`.
|
|
180
|
+
|
|
181
|
+
#### 6.2 — Write `plan.md` locally
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
mkdir -p /tmp/claude-plans
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
Use `Write` to save the plan content to `/tmp/claude-plans/<taskId>-plan.md`.
|
|
188
|
+
|
|
189
|
+
#### 6.3 — Base64-encode
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
b64=$(base64 -i /tmp/claude-plans/<taskId>-plan.md)
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
#### 6.4 — Create Linear attachment
|
|
196
|
+
|
|
197
|
+
Call `mcp__linear__create_attachment` with:
|
|
198
|
+
|
|
199
|
+
- `issue`: the task ID
|
|
200
|
+
- `filename`: `plan.md`
|
|
201
|
+
- `contentType`: `text/markdown`
|
|
202
|
+
- `title`: `plan.md` (exact — required for detection)
|
|
203
|
+
- `subtitle`: `Plan wygenerowany przez Claude Code (external)`
|
|
204
|
+
- `base64Content`: the base64 string from 6.3
|
|
205
|
+
|
|
206
|
+
#### 6.5 — Clean up local file
|
|
207
|
+
|
|
208
|
+
Delete `/tmp/claude-plans/<taskId>-plan.md` after the attachment is created. `/push` leaves the Linear attachment in place.
|
|
209
|
+
|
|
210
|
+
### Step 7: Add "AI Plan" Label
|
|
211
|
+
|
|
212
|
+
**`AI Plan` is a workspace-level (organization-wide) label that already exists** — do NOT create it.
|
|
140
213
|
|
|
141
|
-
|
|
214
|
+
1. Look up the `AI Plan` label via `mcp__linear__list_issue_labels` (workspace-wide). If not found, surface the error — do NOT create a team-scoped duplicate.
|
|
215
|
+
2. Apply via `mcp__linear__save_issue({ id: taskId, labelIds: [...existingLabelIds, aiPlanLabelId] })`. Preserve existing labels; skip if already present.
|
|
216
|
+
3. If label operations fail, surface the error but do not roll back the plan attachment.
|
|
142
217
|
|
|
143
|
-
### Step
|
|
218
|
+
### Step 8: Confirm to User
|
|
144
219
|
|
|
145
220
|
```markdown
|
|
146
221
|
## Plan zapisany
|
|
147
222
|
|
|
148
|
-
Plan implementacji
|
|
223
|
+
Plan implementacji został dodany jako załącznik `plan.md` do zadania [linearTaskId].
|
|
224
|
+
Etykieta `AI Plan` została dodana.
|
|
149
225
|
|
|
150
|
-
Czy plan jest zaakceptowany? Po akceptacji uruchom `/impl [linearTaskId]` aby
|
|
226
|
+
Czy plan jest zaakceptowany? Po akceptacji uruchom `/impl [linearTaskId]` aby rozpocząć implementację.
|
|
151
227
|
```
|
|
152
228
|
|
|
153
229
|
## Guidelines
|
|
154
230
|
|
|
155
231
|
1. **Always analyze existing code first** before planning
|
|
156
232
|
2. **Follow existing project patterns** - don't introduce new patterns
|
|
157
|
-
3. **Write plan in Polish**
|
|
233
|
+
3. **Write plan in Polish** (content inside the `plan.md` attachment)
|
|
158
234
|
4. **Keep steps small and focused** - one logical change per step
|
|
159
235
|
5. **Don't plan tests** unless explicitly requested in the task
|
|
160
236
|
6. **Don't plan deployment** steps
|
|
161
237
|
7. **Identify the CSS approach** before planning UI changes
|
|
162
238
|
8. **Include build verification** as the final step (`ng build --prod`)
|
|
163
239
|
9. **Use Angular CLI commands** not Nx commands
|
|
240
|
+
10. **Mtime rule is authoritative**: only regenerate `plan.md` when the attachment is missing or a comment is newer than `plan.md.updatedAt`. Keyword detection triggers an explicit user confirmation only.
|
|
241
|
+
11. **Always add "AI Plan" label** after saving the `plan.md` attachment. The label is workspace-level and pre-configured organization-wide — do NOT create a team-scoped duplicate.
|
|
@@ -7,12 +7,12 @@ allowed-tools:
|
|
|
7
7
|
- Glob
|
|
8
8
|
- Grep
|
|
9
9
|
- AskUserQuestion
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
10
|
+
- mcp__linear__get_issue
|
|
11
|
+
- mcp__linear__list_issues
|
|
12
|
+
- mcp__linear__list_comments
|
|
13
|
+
- mcp__linear__save_comment
|
|
14
|
+
- mcp__linear__save_issue
|
|
15
|
+
- mcp__linear__list_issue_statuses
|
|
16
16
|
---
|
|
17
17
|
|
|
18
18
|
# Push Skill
|
|
@@ -39,6 +39,7 @@ git log origin/$(git branch --show-current)..HEAD --oneline
|
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
Check for:
|
|
42
|
+
|
|
42
43
|
- Uncommitted changes (warn user)
|
|
43
44
|
- Commits ahead of remote (list them)
|
|
44
45
|
- Current branch name
|
|
@@ -46,12 +47,14 @@ Check for:
|
|
|
46
47
|
### Step 2: Detect Linear Task
|
|
47
48
|
|
|
48
49
|
If `linearTaskId` not provided, try to extract from branch name:
|
|
50
|
+
|
|
49
51
|
- Branch `MOB-123` → task `MOB-123`
|
|
50
52
|
- Branch `feature/MOB-123-description` → task `MOB-123`
|
|
51
53
|
|
|
52
54
|
### Step 3: Fetch Task Details
|
|
53
55
|
|
|
54
56
|
If Linear task ID is available:
|
|
57
|
+
|
|
55
58
|
1. Fetch parent task details
|
|
56
59
|
2. Fetch subtasks if any
|
|
57
60
|
3. Analyze completion status
|
|
@@ -66,14 +69,15 @@ If Linear task ID is available:
|
|
|
66
69
|
|
|
67
70
|
### Commits
|
|
68
71
|
|
|
69
|
-
| Hash
|
|
70
|
-
|
|
71
|
-
| abc1234 | feat(gallery): add lightbox
|
|
72
|
+
| Hash | Message |
|
|
73
|
+
| ------- | ------------------------------ |
|
|
74
|
+
| abc1234 | feat(gallery): add lightbox |
|
|
72
75
|
| def5678 | fix(gallery): fix image sizing |
|
|
73
76
|
|
|
74
77
|
### Linear Task: [ID] - [Title]
|
|
75
78
|
|
|
76
79
|
**Subtasks**:
|
|
80
|
+
|
|
77
81
|
- [x] MOB-549: Completed subtask
|
|
78
82
|
- [x] MOB-550: Another completed
|
|
79
83
|
- [ ] MOB-551: Incomplete (reason)
|
|
@@ -86,12 +90,14 @@ Do you want to push and update Linear status to "In Review"?
|
|
|
86
90
|
```
|
|
87
91
|
|
|
88
92
|
Use `AskUserQuestion` with options:
|
|
93
|
+
|
|
89
94
|
- "Tak, push i zaktualizuj status"
|
|
90
95
|
- "Nie, anuluj"
|
|
91
96
|
|
|
92
97
|
### Step 6: Update Linear Status
|
|
93
98
|
|
|
94
99
|
If confirmed:
|
|
100
|
+
|
|
95
101
|
1. Update parent task status to "In Review"
|
|
96
102
|
2. Update completed subtasks to "In Review"
|
|
97
103
|
3. Create summary comment on parent task (in Polish):
|
|
@@ -101,21 +107,21 @@ If confirmed:
|
|
|
101
107
|
|
|
102
108
|
### Zrealizowane Podzadania
|
|
103
109
|
|
|
104
|
-
| Podzadanie | Tytul
|
|
105
|
-
|
|
106
|
-
| MOB-549
|
|
107
|
-
| MOB-550
|
|
110
|
+
| Podzadanie | Tytul | Status |
|
|
111
|
+
| ---------- | ------- | ------------ |
|
|
112
|
+
| MOB-549 | [title] | Zrealizowane |
|
|
113
|
+
| MOB-550 | [title] | Zrealizowane |
|
|
108
114
|
|
|
109
115
|
### Niezrealizowane Podzadania
|
|
110
116
|
|
|
111
|
-
| Podzadanie | Tytul
|
|
112
|
-
|
|
113
|
-
| MOB-551
|
|
117
|
+
| Podzadanie | Tytul | Powod |
|
|
118
|
+
| ---------- | ------- | -------- |
|
|
119
|
+
| MOB-551 | [title] | [reason] |
|
|
114
120
|
|
|
115
121
|
### Commity
|
|
116
122
|
|
|
117
|
-
| Commit
|
|
118
|
-
|
|
123
|
+
| Commit | Opis |
|
|
124
|
+
| ------- | --------------------------- |
|
|
119
125
|
| abc1234 | feat(gallery): add lightbox |
|
|
120
126
|
|
|
121
127
|
### Status
|
|
@@ -140,11 +146,13 @@ git push
|
|
|
140
146
|
If on a feature branch (not `development` or `main`):
|
|
141
147
|
|
|
142
148
|
1. Check if PR exists:
|
|
149
|
+
|
|
143
150
|
```bash
|
|
144
151
|
gh pr list --head <branch-name> --base development --json number,title,state,url
|
|
145
152
|
```
|
|
146
153
|
|
|
147
154
|
2. If no PR, ask user:
|
|
155
|
+
|
|
148
156
|
```markdown
|
|
149
157
|
## Create Pull Request?
|
|
150
158
|
|
|
@@ -178,6 +186,7 @@ Zmiany wyslane do `origin/<branch-name>`
|
|
|
178
186
|
## Push Failed
|
|
179
187
|
|
|
180
188
|
Updates were rejected. Options:
|
|
189
|
+
|
|
181
190
|
1. `git pull --rebase` then push again
|
|
182
191
|
2. `git pull` and merge
|
|
183
192
|
```
|
|
@@ -57,7 +57,7 @@ Or manually copy permissions from `settings.template.json` to your project's `.c
|
|
|
57
57
|
|
|
58
58
|
Configure these in your `.mcp.json`:
|
|
59
59
|
|
|
60
|
-
- `linear
|
|
60
|
+
- `linear` - Linear API integration (MCP prefix `mcp__linear__`)
|
|
61
61
|
- `playwright` - Browser automation for screenshots
|
|
62
62
|
|
|
63
63
|
## Permission Strategy
|
|
@@ -34,14 +34,17 @@
|
|
|
34
34
|
"Bash(for:*)",
|
|
35
35
|
"Bash(node:*)",
|
|
36
36
|
"Bash(mkdir:*)",
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
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",
|
|
@@ -158,11 +158,13 @@ _Orchestration plan generated by flow-legacy_
|
|
|
158
158
|
|
|
159
159
|
## Output
|
|
160
160
|
|
|
161
|
-
Return the orchestration plan
|
|
161
|
+
Return the orchestration plan as a complete, standalone markdown document. The plan will be:
|
|
162
162
|
|
|
163
|
-
1.
|
|
163
|
+
1. Saved as an `orchestration.md` attachment on the Linear task (not posted as a comment)
|
|
164
164
|
2. Used to guide implementation
|
|
165
165
|
|
|
166
|
+
Avoid comment-thread framing (greetings, replies); the document must read as a standalone file.
|
|
167
|
+
|
|
166
168
|
## Checklist
|
|
167
169
|
|
|
168
170
|
- [ ] All Angular agents are legacy-compatible
|