@smartsoft001-mobilems/claude-plugins 2.83.0 → 2.84.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartsoft001-mobilems/claude-plugins",
3
- "version": "2.83.0",
3
+ "version": "2.84.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "flow",
3
3
  "description": "Development flow skills for Linear-driven development workflow",
4
- "version": "2.83.0"
4
+ "version": "2.84.0"
5
5
  }
@@ -55,7 +55,7 @@ Execute each step in order. Do not skip any step marked as MANDATORY.
55
55
  - [ ] **8. Analyze external library deps** — check if `@smartsoft001` or `@smartsoft001-mobilems` changes are needed (mark as separate process)
56
56
  - [ ] **9. Create implementation plans** — generate structured plans per task/subtask with all required sections
57
57
  - [ ] **10. MANDATORY: Write plans in Polish** — all plan content must be in Polish language
58
- - [ ] **11. Show plans to user** — present plans for review and approval before saving (skipped in `--auto`; proceed directly to save)
58
+ - [ ] **11. MANDATORY: Get user approval of generated plan** — present the full plan content in the chat, then call `AskUserQuestion` with three options: save / regenerate / cancel. Save and label steps below MUST NOT run without approval. Skipped only in `--auto` (auto-approved; logged in audit comment).
59
59
  - [ ] **12. MANDATORY: Confirm old plan deletion** — if replacing existing `plan.md`, ask user to confirm deletion of old attachment before proceeding (skipped in `--auto`; delete old attachment automatically)
60
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.
61
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)
@@ -132,13 +132,13 @@ You create plans that are:
132
132
 
133
133
  | Default behavior | `--auto` override |
134
134
  | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
135
- | Show plans to user for review/approval before saving | Skip the review step; proceed directly to attachment save |
135
+ | Final approval of generated plan content before saving | Skip the approval gate; proceed directly to attachment save (auto-approve) |
136
136
  | Ask user to confirm deletion of old `plan.md` attachments | Delete old attachments automatically before saving new ones |
137
137
  | Ask "regenerate anyway?" when all plans are up-to-date | Exit cleanly with a Linear comment noting all plans are current; no regeneration |
138
138
  | Secondary signal prompt (keyword-triggered confirmation to regen) | Ignore the secondary signal; only the mtime rule decides regeneration |
139
139
  | `AskUserQuestion` for any decision | Use the option marked **(Recommended)**; if none, fail fast with a Linear comment explaining why |
140
140
 
141
- **Hard requirement in `--auto`**: every decision (save, replace, skip) MUST be logged as a Linear comment in Polish so the run remains auditable after the fact. The mtime rule remains authoritative — `--auto` does not change *what* gets regenerated, only that no human is asked.
141
+ **Hard requirement in `--auto`**: every decision (save, replace, skip) MUST be logged as a Linear comment in Polish so the run remains auditable after the fact. The mtime rule remains authoritative — `--auto` does not change _what_ gets regenerated, only that no human is asked.
142
142
 
143
143
  **Detection**: The flag `--auto` is provided as a positional/named arg. Treat any of `--auto`, `--ci`, `--non-interactive` as equivalent. Combinable with `--deep` (deep team mode runs without the final approval prompt).
144
144
 
@@ -675,13 +675,47 @@ When using `--deep` flag and the Planning Team has completed its analysis, appen
675
675
  - 2: Significant disagreements on approach
676
676
  - 1: Fundamental disagreements — plan needs revision
677
677
 
678
+ ### Step 8a: User Approval of Generated Plan
679
+
680
+ **MANDATORY.** Before any Linear write (deletion of old `plan.md`, creation of new `plan.md`, label apply), the user MUST approve the generated plan content. This is the gate FRA-126 added.
681
+
682
+ **`--auto` mode**: Skip this entire step. The plan is auto-approved. Record the auto-approval in the final Linear audit comment (e.g. `Plan zaakceptowany automatycznie (--auto)`). Proceed to Step 9.
683
+
684
+ **Default mode** (interactive):
685
+
686
+ 1. **Render the full plan(s) in chat.** Print the markdown produced in Step 8 for every task/subtask that needs planning. The `AskUserQuestion` option labels alone do not give the user enough context — the full text must be visible above the prompt.
687
+
688
+ 2. **Ask for approval** via `AskUserQuestion`:
689
+
690
+ ```markdown
691
+ ## Akceptacja planu
692
+
693
+ Powyżej znajduje się wygenerowany plan dla zadania <linearTaskId> (oraz <N> podzadań, jeśli dotyczy).
694
+ Czy akceptujesz plan i mogę zapisać go jako załącznik `plan.md` w Linear?
695
+ ```
696
+
697
+ Options (use exactly these labels for consistency with Step 9):
698
+
699
+ - **"Tak, zapisz plan do Linear"** _(Recommended)_ — user accepts. Proceed to Step 9 (delete old attachment if replacing, then save). Existing flow continues unchanged from here.
700
+ - **"Wygeneruj plan ponownie"** — user wants a different plan. Go to step 3 (regeneration loop) below.
701
+ - **"Anuluj"** — user rejects. Stop the whole skill. Do NOT delete the existing `plan.md` attachment. Do NOT save a new one. Do NOT apply the `AI Plan` label. Print a short status in Polish (`Plan nie został zapisany. Anulowano na żądanie użytkownika.`) and exit.
702
+
703
+ 3. **Regeneration branch**: if the user chose "Wygeneruj plan ponownie":
704
+
705
+ - Ask a follow-up `AskUserQuestion` (or accept the free-text the user typed alongside the rejection) to capture what should change: scope, structure, missed files, wrong approach, etc.
706
+ - Loop back to **Step 7 (Create implementation plans)** with the user's feedback in mind. Do NOT re-run Steps 1–6 — the Linear task, comments, commits, and codebase analysis have not changed.
707
+ - On the regenerated plan, return to **Step 8a step 1** (render + ask again).
708
+ - **Cap the loop at 3 regenerations.** On the 3rd rejection, surface the situation to the user (`Plan został odrzucony 3 razy. Przerywam, abyś mógł doprecyzować wymagania.`) and exit without saving.
709
+
710
+ 4. **State invariants on entry to Step 9**: the only path that reaches Step 9 is the explicit "Tak, zapisz plan do Linear" choice (or `--auto`). Treat plan content as final.
711
+
678
712
  ### Step 9: Confirm and Delete Old Plan Attachments
679
713
 
680
714
  **This step applies only when replacing existing plans** (i.e., `oldPlanAttachments` from Step 3a is not empty).
681
715
 
682
716
  **`--auto` mode**: Skip the confirmation prompt. For each task in `oldPlanAttachments`, delete the Linear attachment via `mcp__linear__delete_attachment({ id: attachmentId })` and proceed directly to Step 9a. Log the deletions in the final summary comment.
683
717
 
684
- **Default mode** (interactive): Before saving new plans, ask the user to confirm deletion of old `plan.md` attachments:
718
+ **Default mode** (interactive): The plan content was already approved in Step 8a; this prompt is strictly about confirming deletion of the **existing** Linear attachment that will be overwritten. Ask the user:
685
719
 
686
720
  ```markdown
687
721
  ## Zastąpienie istniejących planów
@@ -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.83.0"
4
+ "version": "2.84.0"
5
5
  }
@@ -39,12 +39,12 @@ Create a structured implementation plan for a Linear task and save it as a `plan
39
39
 
40
40
  When `--auto` is set, the skill MUST run end-to-end without any human-in-the-loop prompts:
41
41
 
42
- | Default behavior | `--auto` override |
43
- | ------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
44
- | Ask user to confirm deletion of old `plan.md` attachment | Delete old attachment automatically before saving the new one |
45
- | Ask "regenerate?" when plan is up-to-date but keywords detect | Ignore the secondary signal; only the mtime rule decides regeneration |
46
- | Final approval prompt before user runs `/impl` | Skip the prompt; finish with a Linear comment confirming plan saved |
47
- | Any `AskUserQuestion` | Use the **(Recommended)** option; if none, fail fast with a Linear comment |
42
+ | Default behavior | `--auto` override |
43
+ | ------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
44
+ | Ask user to confirm deletion of old `plan.md` attachment | Delete old attachment automatically before saving the new one |
45
+ | Ask "regenerate?" when plan is up-to-date but keywords detect | Ignore the secondary signal; only the mtime rule decides regeneration |
46
+ | Final approval of generated plan content before saving | Skip the approval gate (Step 4a); proceed directly to attachment save (auto-approve) |
47
+ | Any `AskUserQuestion` | Use the **(Recommended)** option; if none, fail fast with a Linear comment |
48
48
 
49
49
  Every decision MUST be logged as a Linear comment in Polish (audit trail). The mtime rule remains authoritative.
50
50
 
@@ -173,6 +173,40 @@ Structure the plan as follows:
173
173
  | - | [Subtask 2] | Medium | 2 |
174
174
  ```
175
175
 
176
+ ### Step 4a: User Approval of Generated Plan
177
+
178
+ **MANDATORY.** Before any Linear write (subtask creation, attachment delete, attachment create, label apply), the user MUST approve the generated plan content. This is the gate FRA-126 added.
179
+
180
+ **`--auto` mode**: Skip this entire step. The plan is auto-approved. Record the auto-approval in the final Linear audit comment (e.g. `Plan zaakceptowany automatycznie (--auto)`). Proceed to Step 5.
181
+
182
+ **Default mode** (interactive):
183
+
184
+ 1. **Render the full plan in chat.** Print the markdown produced in Step 4. The `AskUserQuestion` option labels alone do not give the user enough context — the full text must be visible above the prompt.
185
+
186
+ 2. **Ask for approval** via `AskUserQuestion`:
187
+
188
+ ```markdown
189
+ ## Akceptacja planu
190
+
191
+ Powyżej znajduje się wygenerowany plan dla zadania <linearTaskId>.
192
+ Czy akceptujesz plan i mogę zapisać go jako załącznik `plan.md` w Linear?
193
+ ```
194
+
195
+ Options:
196
+
197
+ - **"Tak, zapisz plan do Linear"** _(Recommended)_ — user accepts. Proceed to Step 5 (create subtasks if needed) and Step 6 (save attachment).
198
+ - **"Wygeneruj plan ponownie"** — user wants a different plan. Go to step 3 (regeneration loop) below.
199
+ - **"Anuluj"** — user rejects. Stop the whole skill. Do NOT create subtasks. Do NOT delete the existing `plan.md` attachment. Do NOT save a new one. Do NOT apply the `AI Plan` label. Print a short status in Polish (`Plan nie został zapisany. Anulowano na żądanie użytkownika.`) and exit.
200
+
201
+ 3. **Regeneration branch**: if the user chose "Wygeneruj plan ponownie":
202
+
203
+ - Ask a follow-up `AskUserQuestion` (or accept the free-text the user typed alongside the rejection) to capture what should change: scope, structure, missed files, wrong approach, etc.
204
+ - Loop back to **Step 4 (Create Implementation Plan)** with the user's feedback in mind. Do NOT re-run Steps 1–3 — the Linear task, comments, and codebase analysis have not changed.
205
+ - On the regenerated plan, return to **Step 4a step 1** (render + ask again).
206
+ - **Cap the loop at 3 regenerations.** On the 3rd rejection, surface the situation to the user (`Plan został odrzucony 3 razy. Przerywam, abyś mógł doprecyzować wymagania.`) and exit without saving.
207
+
208
+ 4. **State invariant on entry to Step 5**: the only path that reaches Step 5 is the explicit "Tak, zapisz plan do Linear" choice (or `--auto`). Treat plan content as final.
209
+
176
210
  ### Step 5: Create Subtasks (if needed)
177
211
 
178
212
  For complex tasks, create subtasks in Linear:
@@ -191,10 +225,12 @@ Upload the plan directly to Linear via `mcp__linear__create_attachment` — Line
191
225
  If a `plan.md` attachment is being replaced:
192
226
 
193
227
  - **Default mode**: ask the user via `AskUserQuestion`:
228
+
194
229
  - "Tak, usuń stary plan i zapisz nowy" (Recommended)
195
230
  - "Anuluj"
196
231
 
197
232
  If confirmed, delete the Linear attachment via `mcp__linear__delete_attachment({ id: oldAttachmentId })`.
233
+
198
234
  - **`--auto` mode**: skip the prompt; delete the old Linear attachment via `mcp__linear__delete_attachment({ id: oldAttachmentId })` automatically and proceed.
199
235
 
200
236
  #### 6.2 — Write `plan.md` locally
@@ -236,6 +272,8 @@ Delete `/tmp/claude-plans/<taskId>-plan.md` after the attachment is created. `/p
236
272
 
237
273
  ### Step 8: Confirm to User
238
274
 
275
+ The plan has been approved in Step 4a (or auto-approved in `--auto`). Step 8 is purely informational — **do NOT ask another question here**, just print the status.
276
+
239
277
  **Default mode**:
240
278
 
241
279
  ```markdown
@@ -244,7 +282,7 @@ Delete `/tmp/claude-plans/<taskId>-plan.md` after the attachment is created. `/p
244
282
  Plan implementacji został dodany jako załącznik `plan.md` do zadania [linearTaskId].
245
283
  Etykieta `AI Plan` została dodana.
246
284
 
247
- Czy plan jest zaakceptowany? Po akceptacji uruchom `/impl [linearTaskId]` aby rozpocząć implementację.
285
+ Uruchom `/impl [linearTaskId]` aby rozpocząć implementację.
248
286
  ```
249
287
 
250
288
  **`--auto` mode**: post a Linear comment confirming the plan was saved (no question asked) and exit. The comment is the audit trail for the CI run.
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "flow-legacy",
3
3
  "description": "Development flow skills for legacy Angular 14 projects with Linear-driven workflow",
4
- "version": "2.83.0"
4
+ "version": "2.84.0"
5
5
  }
@@ -52,7 +52,7 @@ Execute each step in order. Do not skip any step marked as MANDATORY.
52
52
  - [ ] **9. Analyze external library deps** — check if `@smartsoft001` or `@smartsoft001-mobilems` changes are needed (mark as separate process)
53
53
  - [ ] **10. Create implementation plans** — generate structured plans per task/subtask with all required sections, using Angular 14 patterns
54
54
  - [ ] **11. MANDATORY: Write plans in Polish** — all plan content must be in Polish language
55
- - [ ] **12. Show plans to user** — present plans for review and approval before saving (skipped in `--auto`; proceed directly to save)
55
+ - [ ] **12. MANDATORY: Get user approval of generated plan** — present the full plan content in the chat, then call `AskUserQuestion` with three options: save / regenerate / cancel. Save and label steps below MUST NOT run without approval. Skipped only in `--auto` (auto-approved; logged in audit comment).
56
56
  - [ ] **13. MANDATORY: Confirm old plan deletion** — if replacing existing `plan.md`, ask user to confirm deletion of old attachment before proceeding (skipped in `--auto`; delete old attachment automatically)
57
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.
58
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)
@@ -129,13 +129,13 @@ You create plans that are:
129
129
 
130
130
  | Default behavior | `--auto` override |
131
131
  | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
132
- | Show plans to user for review/approval before saving | Skip the review step; proceed directly to attachment save |
132
+ | Final approval of generated plan content before saving | Skip the approval gate; proceed directly to attachment save (auto-approve) |
133
133
  | Ask user to confirm deletion of old `plan.md` attachments | Delete old attachments automatically before saving new ones |
134
134
  | Ask "regenerate anyway?" when all plans are up-to-date | Exit cleanly with a Linear comment noting all plans are current; no regeneration |
135
135
  | Secondary signal prompt (keyword-triggered confirmation to regen) | Ignore the secondary signal; only the mtime rule decides regeneration |
136
136
  | `AskUserQuestion` for any decision | Use the option marked **(Recommended)**; if none, fail fast with a Linear comment explaining why |
137
137
 
138
- **Hard requirement in `--auto`**: every decision (save, replace, skip) MUST be logged as a Linear comment in Polish so the run remains auditable after the fact. The mtime rule remains authoritative — `--auto` does not change *what* gets regenerated, only that no human is asked.
138
+ **Hard requirement in `--auto`**: every decision (save, replace, skip) MUST be logged as a Linear comment in Polish so the run remains auditable after the fact. The mtime rule remains authoritative — `--auto` does not change _what_ gets regenerated, only that no human is asked.
139
139
 
140
140
  **Detection**: The flag `--auto` is provided as a positional/named arg. Treat any of `--auto`, `--ci`, `--non-interactive` as equivalent.
141
141
 
@@ -546,13 +546,47 @@ _Plan generated by Claude Code (flow-legacy)_
546
546
  _Plan generated by Claude Code (flow-legacy)_
547
547
  ```
548
548
 
549
+ ### Step 8a: User Approval of Generated Plan
550
+
551
+ **MANDATORY.** Before any Linear write (deletion of old `plan.md`, creation of new `plan.md`, label apply), the user MUST approve the generated plan content. This is the gate FRA-126 added.
552
+
553
+ **`--auto` mode**: Skip this entire step. The plan is auto-approved. Record the auto-approval in the final Linear audit comment (e.g. `Plan zaakceptowany automatycznie (--auto)`). Proceed to Step 9.
554
+
555
+ **Default mode** (interactive):
556
+
557
+ 1. **Render the full plan(s) in chat.** Print the markdown produced in Step 8 for every task/subtask that needs planning. The `AskUserQuestion` option labels alone do not give the user enough context — the full text must be visible above the prompt.
558
+
559
+ 2. **Ask for approval** via `AskUserQuestion`:
560
+
561
+ ```markdown
562
+ ## Akceptacja planu
563
+
564
+ Powyżej znajduje się wygenerowany plan dla zadania <linearTaskId> (oraz <N> podzadań, jeśli dotyczy).
565
+ Czy akceptujesz plan i mogę zapisać go jako załącznik `plan.md` w Linear?
566
+ ```
567
+
568
+ Options (use exactly these labels for consistency with Step 9):
569
+
570
+ - **"Tak, zapisz plan do Linear"** _(Recommended)_ — user accepts. Proceed to Step 9 (delete old attachment if replacing, then save). Existing flow continues unchanged from here.
571
+ - **"Wygeneruj plan ponownie"** — user wants a different plan. Go to step 3 (regeneration loop) below.
572
+ - **"Anuluj"** — user rejects. Stop the whole skill. Do NOT delete the existing `plan.md` attachment. Do NOT save a new one. Do NOT apply the `AI Plan` label. Print a short status in Polish (`Plan nie został zapisany. Anulowano na żądanie użytkownika.`) and exit.
573
+
574
+ 3. **Regeneration branch**: if the user chose "Wygeneruj plan ponownie":
575
+
576
+ - Ask a follow-up `AskUserQuestion` (or accept the free-text the user typed alongside the rejection) to capture what should change: scope, structure, missed files, wrong approach, etc.
577
+ - Loop back to **Step 7 (Create Implementation Plans)** with the user's feedback in mind. Do NOT re-run Steps 1–6 — the Linear task, comments, commits, and codebase analysis have not changed.
578
+ - On the regenerated plan, return to **Step 8a step 1** (render + ask again).
579
+ - **Cap the loop at 3 regenerations.** On the 3rd rejection, surface the situation to the user (`Plan został odrzucony 3 razy. Przerywam, abyś mógł doprecyzować wymagania.`) and exit without saving.
580
+
581
+ 4. **State invariants on entry to Step 9**: the only path that reaches Step 9 is the explicit "Tak, zapisz plan do Linear" choice (or `--auto`). Treat plan content as final.
582
+
549
583
  ### Step 9: Confirm and Delete Old Plan Attachments
550
584
 
551
585
  **This step applies only when replacing existing plans** (`oldPlanAttachments` from Step 3a is not empty).
552
586
 
553
587
  **`--auto` mode**: Skip the confirmation prompt. For each task in `oldPlanAttachments`, delete the Linear attachment via `mcp__linear__delete_attachment({ id: attachmentId })` and proceed directly to Step 9a. Log the deletions in the final summary comment.
554
588
 
555
- **Default mode** (interactive): Before saving new plans, ask the user to confirm deletion of old `plan.md` attachments:
589
+ **Default mode** (interactive): The plan content was already approved in Step 8a; this prompt is strictly about confirming deletion of the **existing** Linear attachment that will be overwritten. Ask the user:
556
590
 
557
591
  ```markdown
558
592
  ## Zastąpienie istniejących planów