@bitkentech/shipsmooth-opencode 0.3.28 → 0.3.29

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": "@bitkentech/shipsmooth-opencode",
3
- "version": "0.3.28",
3
+ "version": "0.3.29",
4
4
  "description": "Agent coding workflow with plan-before-implement discipline, TDD, vertical slices, Linear integration, and immutable git-based plan versioning.",
5
5
  "type": "module",
6
6
  "main": "plugin/index.js",
@@ -1,4 +1,4 @@
1
1
  {
2
- "version" : "0.3.28",
2
+ "version" : "0.3.29",
3
3
  "name" : "shipsmooth"
4
4
  }
@@ -55,7 +55,7 @@ This workflow supports two task tracking modes. Choose one at the start of each
55
55
 
56
56
  Throughout this skill, instructions marked `[Linear]` apply only in Linear mode; instructions marked `[Local]` apply only in Local mode. Unmarked instructions apply to both.
57
57
 
58
- `[Local]` Script invocations use `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth <subcommand>`. All scripts read/write `.shipsmooth/plans/plan-{N}-tasks.xml` relative to the repo root.
58
+ `[Local]` Script invocations use `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth <subcommand>`. All scripts read/write `.shipsmooth/plans/plan-{N}-tasks.xml` relative to the repo root.
59
59
 
60
60
  ---
61
61
 
@@ -90,19 +90,19 @@ Plans are markdown files. They contain: narrative, design decisions, architectur
90
90
  Every time a plan file is committed, immediately create and push a version tag:
91
91
 
92
92
  ```bash
93
- ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth plan tag --plan {N} --kind version
93
+ ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth plan tag --plan {N} --kind version
94
94
  # prints: git push origin plan-{N}-v{K} — run that line to push
95
95
  ```
96
96
 
97
97
  On clean completion:
98
98
  ```bash
99
- ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth plan tag --plan {N} --kind complete
99
+ ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth plan tag --plan {N} --kind complete
100
100
  # prints: git push origin plan-{N}-complete
101
101
  ```
102
102
 
103
103
  On abandonment:
104
104
  ```bash
105
- ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth plan tag --plan {N} --kind abandoned
105
+ ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth plan tag --plan {N} --kind abandoned
106
106
  # prints: git push origin plan-{N}-abandoned
107
107
  ```
108
108
 
@@ -151,16 +151,16 @@ one:
151
151
 
152
152
  - find the plans directory first — in **external** mode (the default) it is not
153
153
  `.shipsmooth/plans/` but a separate state dir. Ask the CLI:
154
- `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth store info --json` reports `plansDir` (when `status` is `ready`).
154
+ `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth store info --json` reports `plansDir` (when `status` is `ready`).
155
155
  List `plansDir`'s `plan-*-tasks.xml` (the highest plan number is the most likely
156
156
  candidate); if `status` is **not** `ready`, state is not set up yet — run the
157
157
  **first-run handshake** below before going further (there is no active plan to resume).
158
158
  - check that plan's state with
159
- `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth plan resume --plan {N}` — a plan-level status of `active` /
159
+ `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth plan resume --plan {N}` — a plan-level status of `active` /
160
160
  `in-review` with tasks still `pending` / in-progress means work is unfinished.
161
161
 
162
162
 
163
- > **First-run handshake `[Local]`.** When a `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth` command reports that state is
163
+ > **First-run handshake `[Local]`.** When a `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth` command reports that state is
164
164
  > not set up — `store info --json` returns a `status` other than `ready`, or a
165
165
  > state-dependent command exits with a `status:"needs-decision"` / `status:"unresolvable"`
166
166
  > JSON line (exit 10 / 11) — do **not** treat it as a normal error. Run this handshake. The
@@ -180,13 +180,13 @@ one:
180
180
  > option:
181
181
  > ```bash
182
182
  > # external (recommended) — accept the proposed folder:
183
- > ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth store init --choice external --json
183
+ > ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth store init --choice external --json
184
184
  > # external — a different folder the user named:
185
- > ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth store init --choice external --path <user's folder> --json
185
+ > ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth store init --choice external --path <user's folder> --json
186
186
  > # keep it inside this repo:
187
- > ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth store init --choice in-repo --json
187
+ > ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth store init --choice in-repo --json
188
188
  > # a configured external folder went missing — recreate it:
189
- > ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth store init --choice recreate --path <path from the option> --json
189
+ > ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth store init --choice recreate --path <path from the option> --json
190
190
  > ```
191
191
  > `store init` creates the chosen location, writes the config entry, and prints the
192
192
  > `ready` shape — read its `plansDir` for where plan files now live.
@@ -225,7 +225,7 @@ that he will add detail later or work exploratorily. **Do not slow him down.**
225
225
  Run **one** command and hand back:
226
226
 
227
227
  ```bash
228
- ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth plan quick --desc "{short-description}"
228
+ ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth plan quick --desc "{short-description}"
229
229
  # derives the next plan number, creates + checks out t/{N}-{slug},
230
230
  # and writes a stub .shipsmooth/plans/plan-{N}.md.
231
231
  # It does NOT commit — that is intentional.
@@ -259,7 +259,7 @@ fleshed out the stub.
259
259
 
260
260
  Kickoff: *"start a new plan, feature is X"* — no spec, no prior planning.
261
261
 
262
- - ✅ **Target:** run `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth plan quick --desc "X"` → relay its
262
+ - ✅ **Target:** run `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth plan quick --desc "X"` → relay its
263
263
  output (branch + stub created, uncommitted) → **stop**.
264
264
  - ❌ **Anti-target #1:** run several rounds of repo investigation, then fire a
265
265
  multi-part questionnaire asking the user to choose the approach, before
@@ -296,12 +296,12 @@ is already rich, or after the user has fleshed out a Phase 0 stub.
296
296
  ```
297
297
  6. **Verify Preconditions:**
298
298
  ```bash
299
- ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth plan preflight --plan {N}
299
+ ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth plan preflight --plan {N}
300
300
  # Exits 0 (PASS) or 1 (FAIL: dirty tree / missing version tag). Warns on unpushed branch.
301
301
  ```
302
302
  7. **Create Task Tracking Infrastructure:**
303
303
  - `[Linear]` Create the `[agent]` Linear project. Create Linear issues from the **risk-sorted** plan tasks. Each issue description must include the **Risk Level** ($L/M/H$) and the tag-based GitHub URL of the specific plan version that generated it.
304
- - `[Local]` Run `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth plan init --plan {N} --tasks-from .shipsmooth/plans/plan-{N}.md` to generate `.shipsmooth/plans/plan-{N}-tasks.xml`. Commit the XML file immediately after creation. **Never hand-write this XML file — always generate it via the CLI. The format uses child elements, not attributes.** The CLI requires task headings in the form `### Task N: Name [Risk]` where `N` is a positive integer — alphanumeric IDs (e.g. `01-A`) are not supported. To express a dependency between tasks, add a `*Depends-on: P[,Q...]*` line anywhere in the task body before the next heading (e.g. `*Depends-on: 1,3*`). The CLI parses this line and writes `<depends-on>` into the XML automatically.
304
+ - `[Local]` Run `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth plan init --plan {N} --tasks-from .shipsmooth/plans/plan-{N}.md` to generate `.shipsmooth/plans/plan-{N}-tasks.xml`. Commit the XML file immediately after creation. **Never hand-write this XML file — always generate it via the CLI. The format uses child elements, not attributes.** The CLI requires task headings in the form `### Task N: Name [Risk]` where `N` is a positive integer — alphanumeric IDs (e.g. `01-A`) are not supported. To express a dependency between tasks, add a `*Depends-on: P[,Q...]*` line anywhere in the task body before the next heading (e.g. `*Depends-on: 1,3*`). The CLI parses this line and writes `<depends-on>` into the XML automatically.
305
305
  - Organise tasks as **thin vertical slices** in both modes.
306
306
  8. **Final Review & Go-ahead:**
307
307
  - `[Linear]` **Stop.** Post to the Linear project that the risk-sorted plan is ready for review.
@@ -315,7 +315,7 @@ is already rich, or after the user has fleshed out a Phase 0 stub.
315
315
  **Session-resume pre-flight `[Local]`** — If you are picking up a plan that was started in a previous session, run this before doing anything else:
316
316
 
317
317
  ```bash
318
- ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth plan resume --plan {N}
318
+ ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth plan resume --plan {N}
319
319
  # Prints: XML file present check and task state summary.
320
320
  ```
321
321
 
@@ -327,7 +327,7 @@ repo stays untouched and the plan files live in a separate state directory. Ask
327
327
  where to read them — it is the source of truth — rather than guessing:
328
328
 
329
329
  ```bash
330
- ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth store info --json
330
+ ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth store info --json
331
331
  # -> {"status":"ready","mode":"external","stateRoot":"...","plansDir":"<dir>/plans"}
332
332
  # Read plan narratives (plan-{N}.md) and task XML from the reported `plansDir`.
333
333
  # If status is not "ready", state is not set up yet — handle per first-run (Phase 0).
@@ -342,7 +342,7 @@ as you would for an in-repo plan — `mode: in-repo` simply reports the in-repo
342
342
 
343
343
  Create a branch named after the primary issue for this plan:
344
344
  ```bash
345
- ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth plan branch --issue {issue-id} --desc "{short-description}"
345
+ ${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth plan branch --issue {issue-id} --desc "{short-description}"
346
346
  # prints: git push -u origin t/{issue-id}-{slug} — run that line to push
347
347
  ```
348
348
  All task commits go on this branch. The `t/` prefix stands for "task". Usernames are omitted — the task identity is what matters long-term.
@@ -352,7 +352,7 @@ All task commits go on this branch. The `t/` prefix stands for "task". Usernames
352
352
 
353
353
  > **Commit-message convention (code commits in the project repo).** How you word a code
354
354
  > commit depends on the resolved storage mode. Check it once per session with
355
- > `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth store info --json` and read `mode`.
355
+ > `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth store info --json` and read `mode`.
356
356
  >
357
357
  > - **`in-repo` mode:** keep the prefixed convention — `task(N): <short description>` and
358
358
  > `draft(N): de-risk <task name>`. The plan/task history is shipsmooth's own and lives
@@ -395,7 +395,7 @@ Core Invariant #6).
395
395
  - Implement just enough to prove the approach works. Focus on the core complexity.
396
396
  - Commit per the **commit-message convention**: `draft(N): de-risk [task name]` in in-repo mode; in standalone mode a plain feature message with no `draft(N)`/`task(N)` reference.
397
397
  - `[Linear]` Post a comment on the Linear issue notifying the human the draft is ready.
398
- - `[Local]` Run `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth task status --plan {N} --task {id} --status de-risked` and `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth task comment --plan {N} --task {id} --message "De-risk draft ready for review"`.
398
+ - `[Local]` Run `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth task status --plan {N} --task {id} --status de-risked` and `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth task comment --plan {N} --task {id} --message "De-risk draft ready for review"`.
399
399
  - **Wait for explicit approval of the approach.**
400
400
 
401
401
  ##### Step B: Hardening (Quality Phase)
@@ -419,7 +419,7 @@ quality conforms to its instructions):
419
419
  - `[Linear]` Mark the Linear issue **Agent Coded**.
420
420
 
421
421
 
422
- - `[Local]` Run `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth task status --plan {N} --task {id} --status agent-coded` and `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth task set-commit --plan {N} --task {id} --commit $(git rev-parse HEAD)`.
422
+ - `[Local]` Run `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth task status --plan {N} --task {id} --status agent-coded` and `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth task set-commit --plan {N} --task {id} --commit $(git rev-parse HEAD)`.
423
423
 
424
424
 
425
425
  #### Low risk tasks — Single-pass (current behavior)
@@ -440,17 +440,17 @@ quality conforms to its instructions):
440
440
  - `[Linear]` Mark the Linear issue **Agent Coded**. No draft review needed.
441
441
 
442
442
 
443
- - `[Local]` Run `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth task status --plan {N} --task {id} --status agent-coded` and `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth task set-commit --plan {N} --task {id} --commit $(git rev-parse HEAD)`. No draft review needed.
443
+ - `[Local]` Run `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth task status --plan {N} --task {id} --status agent-coded` and `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth task set-commit --plan {N} --task {id} --commit $(git rev-parse HEAD)`. No draft review needed.
444
444
 
445
445
 
446
446
  ---
447
447
 
448
448
  - **Minor deviation** (task split, reorder, clarification):
449
449
  - `[Linear]` Update the Linear issue(s), add a deviation comment explaining why, continue.
450
- - `[Local]` Run `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth task deviation --plan {N} --task {id} --type minor --message "..."`, continue.
450
+ - `[Local]` Run `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth task deviation --plan {N} --task {id} --type minor --message "..."`, continue.
451
451
  - **Major deviation** (fundamental plan problem, architecture issue, blocked): Stop immediately.
452
452
  - `[Linear]` Post a Linear project update. Set project health to **"At Risk"**.
453
- - `[Local]` Run `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth plan update --plan {N} --blocked --message "..."`.
453
+ - `[Local]` Run `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth plan update --plan {N} --blocked --message "..."`.
454
454
  - Wait for the human to revise the plan file, commit, push, and give a new go-ahead.
455
455
 
456
456
  Never autonomously modify the `.shipsmooth/plans/` file during execution. If a plan change is needed, surface it and wait.
@@ -465,11 +465,11 @@ git tag plan-07-complete
465
465
  git push origin plan-07-complete
466
466
  ```
467
467
  - `[Linear]` Close all Linear issues in the `[agent]` project. Mark `[agent]` project complete and archive it. Update the permanent backlog feature issue to reflect delivery (link to completing PR, note what was delivered).
468
- - `[Local]` Run `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth plan update --plan {N} --status complete --message "Plan complete."`. Commit the final XML state. Update the permanent backlog feature issue (if tracked externally) or note delivery in the plan file.
468
+ - `[Local]` Run `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth plan update --plan {N} --status complete --message "Plan complete."`. Commit the final XML state. Update the permanent backlog feature issue (if tracked externally) or note delivery in the plan file.
469
469
 
470
470
  ### Completion with Loose Ends
471
471
  - `[Linear]` Label unresolved issues `needs-triage`. Set `[agent]` project to **"In Review"**. Post a project update listing each open issue and why it's unresolved. Wait for human to review: they will promote worthy issues to the permanent backlog or discard them. Human marks the project complete and archives it.
472
- - `[Local]` Run `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth task status --plan {N} --task {id} --status needs-triage` for each unresolved task. Run `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth plan update --plan {N} --status in-review --message "..."`. Commit the XML. Wait for human to review.
472
+ - `[Local]` Run `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth task status --plan {N} --task {id} --status needs-triage` for each unresolved task. Run `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth plan update --plan {N} --status in-review --message "..."`. Commit the XML. Wait for human to review.
473
473
 
474
474
  ### Abandonment
475
475
  - Human commits a plan file deletion with a commit message referencing the superseding plan number
@@ -480,7 +480,7 @@ git push origin plan-07-complete
480
480
  ```
481
481
  - **Do not delete any earlier tags** (`plan-07-v1`, `plan-07-v2`, etc.) — they are the audit trail
482
482
  - `[Linear]` Surface all open tasks for human triage. Migrate worthy tasks to the permanent backlog with a note: "Partial delivery — see plan-07-abandoned, superseded by plan-{M}". Archive the `[agent]` project with a closing note referencing the deletion commit hash and the superseding plan.
483
- - `[Local]` Run `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.28/bin/shipsmooth plan update --plan {N} --status abandoned --message "Superseded by plan-{M}."`. Commit the final XML state.
483
+ - `[Local]` Run `${XDG_CACHE_HOME:-~/.cache}/shipsmooth/0.3.29/bin/shipsmooth plan update --plan {N} --status abandoned --message "Superseded by plan-{M}."`. Commit the final XML state.
484
484
 
485
485
  ---
486
486