@skitterbyte/skitterspec-linear 10.8.0 → 12.0.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.
Files changed (40) hide show
  1. package/MIGRATION.md +88 -0
  2. package/README.md +3 -3
  3. package/assets/claude-md-section.md +20 -48
  4. package/assets/core/SETUP.md +1 -1
  5. package/assets/core/env.config.json.example +7 -1
  6. package/assets/core/env.config.md +56 -11
  7. package/assets/core/gating.config.json.example +4 -0
  8. package/assets/core/gating.config.md +81 -0
  9. package/assets/core/linear.config.md +12 -11
  10. package/assets/rules/spec-planning.md +53 -13
  11. package/assets/skills/spec/SKILL.md +46 -18
  12. package/assets/skills/spec-bug/SKILL.md +32 -27
  13. package/assets/skills/spec-cancel/SKILL.md +26 -0
  14. package/assets/skills/spec-complete/SKILL.md +70 -17
  15. package/assets/skills/spec-hotfix/SKILL.md +40 -19
  16. package/assets/skills/spec-init/SKILL.md +31 -8
  17. package/assets/skills/spec-linear-setup/SKILL.md +32 -7
  18. package/assets/skills/spec-next/SKILL.md +141 -0
  19. package/assets/skills/spec-push/SKILL.md +15 -16
  20. package/assets/skills/spec-review/SKILL.md +24 -11
  21. package/assets/skills/spec-start/SKILL.md +226 -0
  22. package/assets/skills/spec-status/SKILL.md +2 -2
  23. package/assets/skills/spec-sync/SKILL.md +8 -8
  24. package/assets/skills/spec-to-main/SKILL.md +21 -19
  25. package/package.json +1 -1
  26. package/src/cli.js +405 -15
  27. package/src/env/classify.js +91 -0
  28. package/src/env/config.js +39 -1
  29. package/src/env/integrate.js +61 -1
  30. package/src/env/live.js +27 -3
  31. package/src/env/provision.js +196 -5
  32. package/src/env/resolve.js +1 -0
  33. package/src/env/teardown.js +41 -3
  34. package/src/gating.js +155 -0
  35. package/src/init.js +45 -9
  36. package/src/prompts.js +41 -4
  37. package/src/vendor/linear/cli-sync.js +22 -2
  38. package/src/vendor/linear/config.js +1 -1
  39. package/src/vendor/sync-core/src/compare.js +25 -2
  40. package/assets/skills/spec-go/SKILL.md +0 -233
@@ -8,27 +8,29 @@ disable-model-invocation: true
8
8
 
9
9
  The **intermediate** landing. `/spec-complete` also lands the branch, but then
10
10
  verifies every phase, flips the status to Complete, `git mv`s the spec to
11
- `complete/`, and tears the environment down. **`/spec-to-main` stops after the
12
- land**: the worktree stays, the spec stays `In Progress`, and you can land again
13
- as you add commits.
11
+ `complete/`, and tears the environment down.
12
+ **`/spec-to-main` stops after the land**: the worktree stays, the spec stays
13
+ `In Progress`, and you can land again as you add commits.
14
14
 
15
15
  Use it when a later phase can only be done *after* the current work is on `main` —
16
16
  e.g. it needs to run in CI, a deploy pipeline, or a shared test environment that
17
17
  builds from `main`. Land what you have, run that step, then come back and finish
18
- the remaining phases with `/spec-go` and eventually `/spec-complete`.
18
+ the remaining phases with `/spec-next` and eventually `/spec-complete`.
19
19
 
20
20
  It reuses the **same engine** as `/spec-complete`'s landing (`spec-env integrate`
21
21
  — rebase + fast-forward), so it produces identical linear history. Because a
22
- fast-forward leaves `base == branch`, the operation is **idempotent and
23
- repeatable**: new commits put the branch ahead of base again, and you can run
24
- `/spec-to-main` as many times as you like.
22
+ fast-forward leaves `base == branch`, the operation is
23
+ **idempotent and repeatable**: new commits put the branch ahead of base again,
24
+ and you can run `/spec-to-main` as many times as you like.
25
25
 
26
26
  ## 0. Preconditions — when this applies
27
27
 
28
28
  - **Isolation must be on** (`specs/.core/env.config.json` exists **and** the spec
29
- is on a worktree provisioned by `/spec-go`). If isolation is absent, there is
30
- nothing to land the spec is authored directly on `main` already. Say so and
31
- stop.
29
+ was provisioned by `/spec-start` a worktree, or its branch in the checkout under
30
+ `mode: checkout`). If isolation is absent, there is nothing to land the spec
31
+ is authored directly on `main` already. Say so and stop. `spec-env integrate`
32
+ reads `mode` and emits the matching plan; in checkout mode it rebases in place,
33
+ switches to base and fast-forwards, all in the one repo.
32
34
  - **Feature / Bug specs only.** A **Hotfix** (`Type: Hotfix`) is built on a
33
35
  release *tag* and cannot fast-forward onto `main` — refuse it and point the user
34
36
  at `/spec-complete` (it lands a hotfix via tag + cherry-pick). Check the header
@@ -56,10 +58,10 @@ primary checkout is dirty, or if a *different* spec holds it (release that one w
56
58
 
57
59
  ## 3. Tests must be green before landing
58
60
 
59
- Don't push red to `main`. Run the project's typecheck and test commands **in the
60
- worktree**; the suite must be **green**. For a **Bug** spec, confirm the
61
- originally-failing test now passes. If anything is red, stop and report — landing
62
- broken code onto `main` defeats the purpose.
61
+ Don't push red to `main`. Run the project's typecheck and test commands
62
+ **in the worktree**; the suite must be **green**. For a **Bug** spec, confirm
63
+ the originally-failing test now passes. If anything is red, stop and report —
64
+ landing broken code onto `main` defeats the purpose.
63
65
 
64
66
  (Note this is the *worktree* suite. The whole point of this skill is often to run
65
67
  a *further* check that only exists on `main` / in CI — that one runs **after** the
@@ -67,8 +69,8 @@ land, in step 5.)
67
69
 
68
70
  ## 4. Land — rebase + fast-forward
69
71
 
70
- Run `skitterspec spec-env integrate <name>` and run the printed commands **in
71
- order**:
72
+ Run `skitterspec spec-env integrate <name>` and run the printed commands
73
+ **in order**:
72
74
 
73
75
  - `git -C <worktree> rebase <base>` — replay the branch onto base.
74
76
  - `git -C <mainRepoPath> merge --ff-only <branch>` — fast-forward base.
@@ -89,12 +91,12 @@ and continue — the branch has no commits base doesn't already have.
89
91
  `- <YYYY-MM-DD> — Landed intermediate work onto <base> to <run CI / deploy to
90
92
  test env / …>; spec stays In Progress.`
91
93
  - Do **NOT**: add a State-log row (status doesn't change), flip any phase/status
92
- to Complete, `git mv` the spec, or tear down the worktree/stack. **The spec
93
- stays `In Progress` and the worktree stays put.**
94
+ to Complete, `git mv` the spec, or tear down the worktree/stack.
95
+ **The spec stays `In Progress` and the worktree stays put.**
94
96
  - Report: the base branch, the fast-forward result, and the green base test. It
95
97
  **never pushes** — mention the user can `git push` the base branch themselves to
96
98
  trigger CI / the shared env.
97
- - Point the way forward: `/spec-go` to continue the remaining phases (you'll keep
99
+ - Point the way forward: `/spec-next` to continue the remaining phases (you'll keep
98
100
  committing on the same branch and can `/spec-to-main` again), and `/spec-complete`
99
101
  when every phase is genuinely done — it will land the final commits, finalise,
100
102
  and tear down.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skitterbyte/skitterspec-linear",
3
- "version": "10.8.0",
3
+ "version": "12.0.0",
4
4
  "description": "Spec-driven development for Claude Code, with one-way Linear sync — a superset of @skitterbyte/skitterspec: the base filesystem workflow plus /spec-status · /spec-push and the spec-sync CLI. The repo is canonical; Linear is a generated mirror. Install this OR the base, not both.",
5
5
  "keywords": [
6
6
  "claude",