@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.
|
|
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",
|
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|