@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.
- package/MIGRATION.md +88 -0
- package/README.md +3 -3
- package/assets/claude-md-section.md +20 -48
- package/assets/core/SETUP.md +1 -1
- package/assets/core/env.config.json.example +7 -1
- package/assets/core/env.config.md +56 -11
- package/assets/core/gating.config.json.example +4 -0
- package/assets/core/gating.config.md +81 -0
- package/assets/core/linear.config.md +12 -11
- package/assets/rules/spec-planning.md +53 -13
- package/assets/skills/spec/SKILL.md +46 -18
- package/assets/skills/spec-bug/SKILL.md +32 -27
- package/assets/skills/spec-cancel/SKILL.md +26 -0
- package/assets/skills/spec-complete/SKILL.md +70 -17
- package/assets/skills/spec-hotfix/SKILL.md +40 -19
- package/assets/skills/spec-init/SKILL.md +31 -8
- package/assets/skills/spec-linear-setup/SKILL.md +32 -7
- package/assets/skills/spec-next/SKILL.md +141 -0
- package/assets/skills/spec-push/SKILL.md +15 -16
- package/assets/skills/spec-review/SKILL.md +24 -11
- package/assets/skills/spec-start/SKILL.md +226 -0
- package/assets/skills/spec-status/SKILL.md +2 -2
- package/assets/skills/spec-sync/SKILL.md +8 -8
- package/assets/skills/spec-to-main/SKILL.md +21 -19
- package/package.json +1 -1
- package/src/cli.js +405 -15
- package/src/env/classify.js +91 -0
- package/src/env/config.js +39 -1
- package/src/env/integrate.js +61 -1
- package/src/env/live.js +27 -3
- package/src/env/provision.js +196 -5
- package/src/env/resolve.js +1 -0
- package/src/env/teardown.js +41 -3
- package/src/gating.js +155 -0
- package/src/init.js +45 -9
- package/src/prompts.js +41 -4
- package/src/vendor/linear/cli-sync.js +22 -2
- package/src/vendor/linear/config.js +1 -1
- package/src/vendor/sync-core/src/compare.js +25 -2
- 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.
|
|
12
|
-
land**: the worktree stays, the spec stays
|
|
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-
|
|
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
|
|
23
|
-
repeatable**: new commits put the branch ahead of base again,
|
|
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
|
-
|
|
30
|
-
|
|
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
|
|
60
|
-
worktree**; the suite must be **green**. For a **Bug** spec, confirm
|
|
61
|
-
originally-failing test now passes. If anything is red, stop and report —
|
|
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
|
|
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.
|
|
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-
|
|
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": "
|
|
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",
|