@smartsoft001/pro-claude-plugins 0.2.0 → 0.4.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,8 +1,8 @@
1
1
  {
2
2
  "name": "@smartsoft001/pro-claude-plugins",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "publishConfig": {
5
- "access": "restricted"
5
+ "access": "public"
6
6
  },
7
7
  "scripts": {
8
8
  "postinstall": "claude plugin update smart-pro@smart-pro flow@smart-pro flow-legacy@smart-pro flow-external@smart-pro --scope project || true"
@@ -383,8 +383,8 @@ The agent will:
383
383
 
384
384
  1. **Check for existing `orchestration.md` attachment** on the task via `mcp__linear__get_issue` (the response includes an `attachments` array).
385
385
  - If one exists, delete it via `mcp__linear__delete_attachment({ id: oldAttachmentId })`. Linear hosts the file natively, so nothing else needs cleanup.
386
- 2. **Write locally**: use `Write` to save the orchestration markdown to `/tmp/claude-plans/<taskId>-orchestration.md`.
387
- 3. **Base64-encode**: `b64=$(base64 -i /tmp/claude-plans/<taskId>-orchestration.md)`.
386
+ 2. **Write locally**: ensure `.ai/tasks/` is gitignored (idempotent — `.ai/tasks` must NOT be synced to git): `grep -qxF '.ai/tasks/' .gitignore 2>/dev/null || echo '.ai/tasks/' >> .gitignore`. Then `mkdir -p .ai/tasks/<taskId>` and use `Write` to save the orchestration markdown to `.ai/tasks/<taskId>/orchestration.md` (sibling of `plan.md`).
387
+ 3. **Base64-encode**: `b64=$(base64 -i .ai/tasks/<taskId>/orchestration.md)`.
388
388
  4. **Create Linear attachment** via `mcp__linear__create_attachment`:
389
389
  - `issue`: the task/subtask ID
390
390
  - `filename`: `orchestration.md`
@@ -392,7 +392,7 @@ The agent will:
392
392
  - `title`: `orchestration.md` (exact — used for detection/replacement on the next `/impl` run)
393
393
  - `subtitle`: `Plan orkiestracji wygenerowany przez Claude Code`
394
394
  - `base64Content`: the base64 string from step 3
395
- 5. **Clean up** the local `/tmp/claude-plans/<taskId>-orchestration.md` file after a successful attachment.
395
+ 5. **Keep the local file**: do NOT delete `.ai/tasks/<taskId>/orchestration.md` it persists as a gitignored local artifact.
396
396
  6. **Follow the plan** — execute agents in the defined order.
397
397
  7. **Use TDD strictly** — `shared-tdd-developer` is MANDATORY for ALL code implementation.
398
398
 
@@ -679,7 +679,18 @@ When using `--deep` flag and the Planning Team has completed its analysis, appen
679
679
 
680
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
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.
682
+ **Persist the plan locally first (both modes).** For each task/subtask that needs planning:
683
+
684
+ - Ensure `.ai/tasks/` is gitignored (idempotent — `.ai/tasks` must NOT be synced to git):
685
+ ```bash
686
+ grep -qxF '.ai/tasks/' .gitignore 2>/dev/null || echo '.ai/tasks/' >> .gitignore
687
+ ```
688
+ - `mkdir -p .ai/tasks/<taskId>`
689
+ - Use the `Write` tool to save the Step 8 plan markdown to `.ai/tasks/<taskId>/plan.md`.
690
+
691
+ This file is the source for the Linear attachment in Step 9a and is NOT deleted — it persists as a gitignored local artifact. On regeneration (below) the `Write` overwrites it with the new plan.
692
+
693
+ **`--auto` mode**: Skip the approval prompt below — the plan is auto-approved and already persisted above. Record the auto-approval in the final Linear audit comment (e.g. `Plan zaakceptowany automatycznie (--auto)`). Proceed to Step 9.
683
694
 
684
695
  **Default mode** (interactive):
685
696
 
@@ -749,20 +760,14 @@ Use `AskUserQuestion` tool with options:
749
760
 
750
761
  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.
751
762
 
752
- #### 9a.1 — Prepare plan content
753
-
754
- The plan content is exactly the markdown produced in Step 8 (the same block that would previously have been posted as a comment). Write it to the temp file:
755
-
756
- ```bash
757
- mkdir -p /tmp/claude-plans
758
- ```
763
+ #### 9a.1 — Locate plan content
759
764
 
760
- Use the `Write` tool to save the plan markdown to `/tmp/claude-plans/<taskId>-plan.md`.
765
+ The plan content was already written to `.ai/tasks/<taskId>/plan.md` in Step 8a (before acceptance). No temp file is needed — that persistent, gitignored file is the source for the attachment below.
761
766
 
762
767
  #### 9a.2 — Base64-encode the content
763
768
 
764
769
  ```bash
765
- b64=$(base64 -i /tmp/claude-plans/<taskId>-plan.md)
770
+ b64=$(base64 -i .ai/tasks/<taskId>/plan.md)
766
771
  ```
767
772
 
768
773
  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.
@@ -780,9 +785,9 @@ Call `mcp__linear__create_attachment` with:
780
785
 
781
786
  Linear stores the file on its own infrastructure and surfaces it in the issue's Attachments pane.
782
787
 
783
- #### 9a.4 — Clean up local file
788
+ #### 9a.4 — Keep the local file
784
789
 
785
- 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.
790
+ Do NOT delete `.ai/tasks/<taskId>/plan.md` it is intentionally kept as a gitignored local artifact. `/push` leaves Linear attachments in place — they stay on the issue as permanent artifacts.
786
791
 
787
792
  #### Scope rule
788
793
 
@@ -1030,4 +1035,4 @@ _Plan generated by Claude Code_
1030
1035
  - **Default mode**: Before saving the plans as attachments, show them to the user for review and approval.
1031
1036
  - **`--auto` mode**: Skip the review step; proceed directly to saving the attachments.
1032
1037
 
1033
- 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.
1038
+ The plan content is written to `.ai/tasks/<taskId>/plan.md` (before acceptance, gitignored), 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.
@@ -133,8 +133,8 @@ Use `shared-impl-orchestrator` agent to generate a `🎭 Agent Orchestration Pla
133
133
  Then save it as an `orchestration.md` attachment on the task (not as a comment):
134
134
 
135
135
  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.
136
- 2. **Write locally**: `Write` the orchestration markdown to `/tmp/claude-plans/<taskId>-orchestration.md`.
137
- 3. **Base64-encode**: `b64=$(base64 -i /tmp/claude-plans/<taskId>-orchestration.md)`.
136
+ 2. **Write locally**: ensure `.ai/tasks/` is gitignored (idempotent — `.ai/tasks` must NOT be synced to git): `grep -qxF '.ai/tasks/' .gitignore 2>/dev/null || echo '.ai/tasks/' >> .gitignore`. Then `mkdir -p .ai/tasks/<taskId>` and `Write` the orchestration markdown to `.ai/tasks/<taskId>/orchestration.md` (sibling of `plan.md`).
137
+ 3. **Base64-encode**: `b64=$(base64 -i .ai/tasks/<taskId>/orchestration.md)`.
138
138
  4. **Create Linear attachment** via `mcp__linear__create_attachment`:
139
139
  - `issue`: the task ID
140
140
  - `filename`: `orchestration.md`
@@ -142,7 +142,7 @@ Then save it as an `orchestration.md` attachment on the task (not as a comment):
142
142
  - `title`: `orchestration.md` (exact)
143
143
  - `subtitle`: `Plan orkiestracji wygenerowany przez Claude Code (external)`
144
144
  - `base64Content`: the base64 string from step 3
145
- 5. **Clean up** local `/tmp/claude-plans/<taskId>-orchestration.md` file after the attachment is created.
145
+ 5. **Keep the local file**: do NOT delete `.ai/tasks/<taskId>/orchestration.md` it persists as a gitignored local artifact.
146
146
 
147
147
  ### Step 4: Implement Each Step
148
148
 
@@ -177,7 +177,18 @@ Structure the plan as follows:
177
177
 
178
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
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.
180
+ **Persist the plan locally first (both modes this is the "przed akceptacją" save).**
181
+
182
+ - Ensure `.ai/tasks/` is gitignored (idempotent — `.ai/tasks` must NOT be synced to git):
183
+ ```bash
184
+ grep -qxF '.ai/tasks/' .gitignore 2>/dev/null || echo '.ai/tasks/' >> .gitignore
185
+ ```
186
+ - `mkdir -p .ai/tasks/<taskId>`
187
+ - Use the `Write` tool to save the Step 4 plan markdown to `.ai/tasks/<taskId>/plan.md`.
188
+
189
+ This file is the source for the Linear attachment in Step 6 and is NOT deleted — it persists as a gitignored local artifact. On regeneration (below) the `Write` overwrites it with the new plan.
190
+
191
+ **`--auto` mode**: Skip the approval prompt below — the plan is auto-approved and already persisted above. Record the auto-approval in the final Linear audit comment (e.g. `Plan zaakceptowany automatycznie (--auto)`). Proceed to Step 5.
181
192
 
182
193
  **Default mode** (interactive):
183
194
 
@@ -233,20 +244,14 @@ If a `plan.md` attachment is being replaced:
233
244
 
234
245
  - **`--auto` mode**: skip the prompt; delete the old Linear attachment via `mcp__linear__delete_attachment({ id: oldAttachmentId })` automatically and proceed.
235
246
 
236
- #### 6.2 — Write `plan.md` locally
237
-
238
- The plan content is exactly the markdown produced in Step 4. Write it to the temp file:
239
-
240
- ```bash
241
- mkdir -p /tmp/claude-plans
242
- ```
247
+ #### 6.2 — Locate plan content
243
248
 
244
- Use `Write` to save the plan content to `/tmp/claude-plans/<taskId>-plan.md`.
249
+ The plan content was already written to `.ai/tasks/<taskId>/plan.md` in Step 4a (before acceptance). No temp file is needed — that persistent, gitignored file is the source for the attachment below.
245
250
 
246
251
  #### 6.3 — Base64-encode
247
252
 
248
253
  ```bash
249
- b64=$(base64 -i /tmp/claude-plans/<taskId>-plan.md)
254
+ b64=$(base64 -i .ai/tasks/<taskId>/plan.md)
250
255
  ```
251
256
 
252
257
  #### 6.4 — Create Linear attachment
@@ -260,9 +265,9 @@ Call `mcp__linear__create_attachment` with:
260
265
  - `subtitle`: `Plan wygenerowany przez Claude Code (external)`
261
266
  - `base64Content`: the base64 string from 6.3
262
267
 
263
- #### 6.5 — Clean up local file
268
+ #### 6.5 — Keep the local file
264
269
 
265
- Delete `/tmp/claude-plans/<taskId>-plan.md` after the attachment is created. `/push` leaves the Linear attachment in place.
270
+ Do NOT delete `.ai/tasks/<taskId>/plan.md` it is intentionally kept as a gitignored local artifact. `/push` leaves the Linear attachment in place.
266
271
 
267
272
  ### Step 7: Add "AI Plan" Label
268
273
 
@@ -352,8 +352,8 @@ The agent will:
352
352
 
353
353
  1. **Check for existing `orchestration.md` attachment** on the task via `mcp__linear__get_issue` (response includes `attachments`).
354
354
  - If one exists, delete it via `mcp__linear__delete_attachment({ id: oldAttachmentId })`. Linear hosts the file natively, so nothing else needs cleanup.
355
- 2. **Write locally**: `Write` the orchestration markdown to `/tmp/claude-plans/<taskId>-orchestration.md`.
356
- 3. **Base64-encode**: `b64=$(base64 -i /tmp/claude-plans/<taskId>-orchestration.md)`.
355
+ 2. **Write locally**: ensure `.ai/tasks/` is gitignored (idempotent — `.ai/tasks` must NOT be synced to git): `grep -qxF '.ai/tasks/' .gitignore 2>/dev/null || echo '.ai/tasks/' >> .gitignore`. Then `mkdir -p .ai/tasks/<taskId>` and `Write` the orchestration markdown to `.ai/tasks/<taskId>/orchestration.md` (sibling of `plan.md`).
356
+ 3. **Base64-encode**: `b64=$(base64 -i .ai/tasks/<taskId>/orchestration.md)`.
357
357
  4. **Create Linear attachment** via `mcp__linear__create_attachment`:
358
358
  - `issue`: the task/subtask ID
359
359
  - `filename`: `orchestration.md`
@@ -361,7 +361,7 @@ The agent will:
361
361
  - `title`: `orchestration.md` (exact — used for detection/replacement on the next `/impl` run)
362
362
  - `subtitle`: `Plan orkiestracji wygenerowany przez Claude Code (legacy)`
363
363
  - `base64Content`: the base64 string from step 3
364
- 5. **Clean up** local `/tmp/claude-plans/<taskId>-orchestration.md`.
364
+ 5. **Keep the local file**: do NOT delete `.ai/tasks/<taskId>/orchestration.md` — it persists as a gitignored local artifact.
365
365
  6. **Follow the plan** — execute agents in the defined order.
366
366
  7. **Use TDD strictly** — `shared-tdd-developer` is MANDATORY for ALL code implementation.
367
367
 
@@ -550,7 +550,18 @@ _Plan generated by Claude Code (flow-legacy)_
550
550
 
551
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
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.
553
+ **Persist the plan locally first (both modes this is the "przed akceptacją" save).** For each task/subtask that needs planning:
554
+
555
+ - Ensure `.ai/tasks/` is gitignored (idempotent — `.ai/tasks` must NOT be synced to git):
556
+ ```bash
557
+ grep -qxF '.ai/tasks/' .gitignore 2>/dev/null || echo '.ai/tasks/' >> .gitignore
558
+ ```
559
+ - `mkdir -p .ai/tasks/<taskId>`
560
+ - Use the `Write` tool to save the Step 8 plan markdown to `.ai/tasks/<taskId>/plan.md`.
561
+
562
+ This file is the source for the Linear attachment in Step 9a and is NOT deleted — it persists as a gitignored local artifact. On regeneration (below) the `Write` overwrites it with the new plan.
563
+
564
+ **`--auto` mode**: Skip the approval prompt below — the plan is auto-approved and already persisted above. Record the auto-approval in the final Linear audit comment (e.g. `Plan zaakceptowany automatycznie (--auto)`). Proceed to Step 9.
554
565
 
555
566
  **Default mode** (interactive):
556
567
 
@@ -618,20 +629,14 @@ Use `AskUserQuestion` with options:
618
629
 
619
630
  For each task that needs planning, upload the plan content directly to Linear (no external storage).
620
631
 
621
- #### 9a.1 — Write `plan.md` locally
622
-
623
- The plan content is exactly the markdown produced in Step 8. Write it to the temp file:
624
-
625
- ```bash
626
- mkdir -p /tmp/claude-plans
627
- ```
632
+ #### 9a.1 — Locate plan content
628
633
 
629
- Use `Write` to save the plan content to `/tmp/claude-plans/<taskId>-plan.md`.
634
+ The plan content was already written to `.ai/tasks/<taskId>/plan.md` in Step 8a (before acceptance). No temp file is needed — that persistent, gitignored file is the source for the attachment below.
630
635
 
631
636
  #### 9a.2 — Base64-encode
632
637
 
633
638
  ```bash
634
- b64=$(base64 -i /tmp/claude-plans/<taskId>-plan.md)
639
+ b64=$(base64 -i .ai/tasks/<taskId>/plan.md)
635
640
  ```
636
641
 
637
642
  On macOS `base64 -i <file>` outputs without line-wrapping. On Linux, pipe through `tr -d '\n'` if needed.
@@ -649,9 +654,9 @@ Call `mcp__linear__create_attachment` with:
649
654
 
650
655
  Linear hosts the file on its own infrastructure.
651
656
 
652
- #### 9a.4 — Clean up local file
657
+ #### 9a.4 — Keep the local file
653
658
 
654
- Delete `/tmp/claude-plans/<taskId>-plan.md` after the attachment is created. `/push` does NOT delete Linear attachments — they stay on the issue.
659
+ Do NOT delete `.ai/tasks/<taskId>/plan.md` it is intentionally kept as a gitignored local artifact. `/push` does NOT delete Linear attachments — they stay on the issue.
655
660
 
656
661
  #### Scope rule
657
662
 
@@ -739,4 +744,4 @@ After saving:
739
744
  - **Default mode**: Before saving the plans as attachments, show them to the user for review and approval.
740
745
  - **`--auto` mode**: Skip the review step; proceed directly to saving the attachments.
741
746
 
742
- 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.
747
+ The plan content is written to `.ai/tasks/<taskId>/plan.md` (before acceptance, gitignored), 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.