specweave 3.0.23 → 3.1.1

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 (145) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/README.md +31 -16
  3. package/bin/specweave.js +35 -0
  4. package/dist/src/adapters/adapter-loader.d.ts +6 -1
  5. package/dist/src/adapters/adapter-loader.d.ts.map +1 -1
  6. package/dist/src/adapters/adapter-loader.js +17 -1
  7. package/dist/src/adapters/adapter-loader.js.map +1 -1
  8. package/dist/src/cli/commands/create-increment.js +1 -1
  9. package/dist/src/cli/commands/create-increment.js.map +1 -1
  10. package/dist/src/cli/commands/glossary.d.ts +16 -0
  11. package/dist/src/cli/commands/glossary.d.ts.map +1 -0
  12. package/dist/src/cli/commands/glossary.js +55 -0
  13. package/dist/src/cli/commands/glossary.js.map +1 -0
  14. package/dist/src/cli/commands/init.d.ts +1 -1
  15. package/dist/src/cli/commands/init.d.ts.map +1 -1
  16. package/dist/src/cli/commands/init.js +9 -7
  17. package/dist/src/cli/commands/init.js.map +1 -1
  18. package/dist/src/cli/commands/jev-helpers.d.ts.map +1 -1
  19. package/dist/src/cli/commands/jev-helpers.js +5 -10
  20. package/dist/src/cli/commands/jev-helpers.js.map +1 -1
  21. package/dist/src/cli/commands/pickup.js +1 -1
  22. package/dist/src/cli/commands/pickup.js.map +1 -1
  23. package/dist/src/cli/commands/project.d.ts.map +1 -1
  24. package/dist/src/cli/commands/project.js +4 -2
  25. package/dist/src/cli/commands/project.js.map +1 -1
  26. package/dist/src/cli/commands/refresh-plugins.d.ts.map +1 -1
  27. package/dist/src/cli/commands/refresh-plugins.js +7 -1
  28. package/dist/src/cli/commands/refresh-plugins.js.map +1 -1
  29. package/dist/src/cli/commands/review.d.ts +25 -0
  30. package/dist/src/cli/commands/review.d.ts.map +1 -0
  31. package/dist/src/cli/commands/review.js +148 -0
  32. package/dist/src/cli/commands/review.js.map +1 -0
  33. package/dist/src/cli/commands/skills.d.ts +18 -0
  34. package/dist/src/cli/commands/skills.d.ts.map +1 -0
  35. package/dist/src/cli/commands/skills.js +130 -0
  36. package/dist/src/cli/commands/skills.js.map +1 -0
  37. package/dist/src/cli/commands/update.d.ts.map +1 -1
  38. package/dist/src/cli/commands/update.js +10 -3
  39. package/dist/src/cli/commands/update.js.map +1 -1
  40. package/dist/src/cli/commands/verify.d.ts.map +1 -1
  41. package/dist/src/cli/commands/verify.js +4 -2
  42. package/dist/src/cli/commands/verify.js.map +1 -1
  43. package/dist/src/cli/helpers/init/claude-install-line.d.ts +6 -0
  44. package/dist/src/cli/helpers/init/claude-install-line.d.ts.map +1 -0
  45. package/dist/src/cli/helpers/init/claude-install-line.js +11 -0
  46. package/dist/src/cli/helpers/init/claude-install-line.js.map +1 -0
  47. package/dist/src/cli/helpers/init/directory-structure.js +1 -1
  48. package/dist/src/cli/helpers/init/directory-structure.js.map +1 -1
  49. package/dist/src/cli/helpers/init/instruction-file-writer.d.ts.map +1 -1
  50. package/dist/src/cli/helpers/init/instruction-file-writer.js +4 -3
  51. package/dist/src/cli/helpers/init/instruction-file-writer.js.map +1 -1
  52. package/dist/src/cli/helpers/init/next-steps.d.ts.map +1 -1
  53. package/dist/src/cli/helpers/init/next-steps.js +7 -6
  54. package/dist/src/cli/helpers/init/next-steps.js.map +1 -1
  55. package/dist/src/cli/helpers/init/plugin-installer.js +1 -1
  56. package/dist/src/cli/helpers/init/plugin-installer.js.map +1 -1
  57. package/dist/src/cli/helpers/issue-tracker/index.js +2 -2
  58. package/dist/src/core/config/types.d.ts +39 -6
  59. package/dist/src/core/config/types.d.ts.map +1 -1
  60. package/dist/src/core/config/types.js +2 -0
  61. package/dist/src/core/config/types.js.map +1 -1
  62. package/dist/src/core/glossary/check.d.ts +44 -0
  63. package/dist/src/core/glossary/check.d.ts.map +1 -0
  64. package/dist/src/core/glossary/check.js +203 -0
  65. package/dist/src/core/glossary/check.js.map +1 -0
  66. package/dist/src/core/glossary/parse.d.ts +40 -0
  67. package/dist/src/core/glossary/parse.d.ts.map +1 -0
  68. package/dist/src/core/glossary/parse.js +112 -0
  69. package/dist/src/core/glossary/parse.js.map +1 -0
  70. package/dist/src/core/hooks/handlers/stop.js +1 -1
  71. package/dist/src/core/hooks/handlers/stop.js.map +1 -1
  72. package/dist/src/core/increment/completion-validator.d.ts.map +1 -1
  73. package/dist/src/core/increment/completion-validator.js +7 -0
  74. package/dist/src/core/increment/completion-validator.js.map +1 -1
  75. package/dist/src/core/increment/status-commands.d.ts.map +1 -1
  76. package/dist/src/core/increment/status-commands.js +9 -9
  77. package/dist/src/core/increment/status-commands.js.map +1 -1
  78. package/dist/src/core/increment/template-creator.js +1 -1
  79. package/dist/src/core/increment/template-creator.js.map +1 -1
  80. package/dist/src/core/review/brief.d.ts +46 -0
  81. package/dist/src/core/review/brief.d.ts.map +1 -0
  82. package/dist/src/core/review/brief.js +152 -0
  83. package/dist/src/core/review/brief.js.map +1 -0
  84. package/dist/src/core/review/reviewer.d.ts +62 -0
  85. package/dist/src/core/review/reviewer.d.ts.map +1 -0
  86. package/dist/src/core/review/reviewer.js +166 -0
  87. package/dist/src/core/review/reviewer.js.map +1 -0
  88. package/dist/src/core/session/handoff-doc-format.d.ts +2 -0
  89. package/dist/src/core/session/handoff-doc-format.d.ts.map +1 -1
  90. package/dist/src/core/session/handoff-doc-format.js +5 -1
  91. package/dist/src/core/session/handoff-doc-format.js.map +1 -1
  92. package/dist/src/core/session/handoff-list.d.ts +2 -2
  93. package/dist/src/core/session/handoff-list.d.ts.map +1 -1
  94. package/dist/src/core/session/handoff-list.js +3 -3
  95. package/dist/src/core/session/handoff-list.js.map +1 -1
  96. package/dist/src/core/session/handoff-secret-scrub.d.ts.map +1 -1
  97. package/dist/src/core/session/handoff-secret-scrub.js +49 -9
  98. package/dist/src/core/session/handoff-secret-scrub.js.map +1 -1
  99. package/dist/src/core/session/pickup.d.ts.map +1 -1
  100. package/dist/src/core/session/pickup.js +9 -2
  101. package/dist/src/core/session/pickup.js.map +1 -1
  102. package/dist/src/core/session/session-checkpoint.d.ts.map +1 -1
  103. package/dist/src/core/session/session-checkpoint.js +5 -1
  104. package/dist/src/core/session/session-checkpoint.js.map +1 -1
  105. package/dist/src/core/session/work-handoff.d.ts.map +1 -1
  106. package/dist/src/core/session/work-handoff.js +4 -2
  107. package/dist/src/core/session/work-handoff.js.map +1 -1
  108. package/dist/src/core/skills/catalog.d.ts +49 -0
  109. package/dist/src/core/skills/catalog.d.ts.map +1 -0
  110. package/dist/src/core/skills/catalog.js +95 -0
  111. package/dist/src/core/skills/catalog.js.map +1 -0
  112. package/dist/src/core/skills/legacy-skill-hashes.d.ts +11 -0
  113. package/dist/src/core/skills/legacy-skill-hashes.d.ts.map +1 -0
  114. package/dist/src/core/skills/legacy-skill-hashes.js +83 -0
  115. package/dist/src/core/skills/legacy-skill-hashes.js.map +1 -0
  116. package/dist/src/core/skills/project-skills.d.ts +58 -16
  117. package/dist/src/core/skills/project-skills.d.ts.map +1 -1
  118. package/dist/src/core/skills/project-skills.js +169 -32
  119. package/dist/src/core/skills/project-skills.js.map +1 -1
  120. package/dist/src/core/tasks/closure-gate.d.ts +2 -1
  121. package/dist/src/core/tasks/closure-gate.d.ts.map +1 -1
  122. package/dist/src/core/tasks/closure-gate.js +36 -4
  123. package/dist/src/core/tasks/closure-gate.js.map +1 -1
  124. package/package.json +1 -1
  125. package/plugins/PLUGINS-INDEX.md +14 -12
  126. package/plugins/specweave/.claude-plugin/plugin.json +2 -2
  127. package/plugins/specweave/PLUGIN.md +24 -16
  128. package/plugins/specweave/marketplace.json +57 -38
  129. package/plugins/specweave/skills/auto/SKILL.md +8 -38
  130. package/plugins/specweave/skills/auto/agents/openai.yaml +5 -0
  131. package/plugins/specweave/skills/do/SKILL.md +46 -10
  132. package/plugins/specweave/skills/done/SKILL.md +6 -3
  133. package/plugins/specweave/skills/increment/SKILL.md +20 -11
  134. package/plugins/specweave/skills/review/SKILL.md +23 -4
  135. package/plugins/specweave/skills-catalog.json +32 -0
  136. package/plugins/specweave/skills-optional/glossary/SKILL.md +90 -0
  137. package/plugins/specweave/skills-optional/glossary/references/credits.md +33 -0
  138. package/plugins/specweave/skills-optional/grill-me/SKILL.md +99 -0
  139. package/plugins/specweave/{skills/brainstorm → skills-optional/grill-me}/references/credits.md +3 -3
  140. package/src/templates/AGENTS.md.template +7 -1
  141. package/plugins/specweave/skills/brainstorm/SKILL.md +0 -100
  142. package/plugins/specweave/skills/team/SKILL.md +0 -70
  143. /package/plugins/specweave/{skills → skills-optional}/jev/SKILL.md +0 -0
  144. /package/plugins/specweave/{skills → skills-optional}/project/SKILL.md +0 -0
  145. /package/plugins/specweave/{skills → skills-optional}/sync/SKILL.md +0 -0
@@ -1,13 +1,13 @@
1
1
  # SpecWeave plugins index
2
2
 
3
- **Plugins**: 1 (`sw`) · **Skills**: 11 · **Commands**: 0 · **Hooks**: 2 default
3
+ **Plugins**: 1 (`sw`) · **Skills**: 6 core + 5 optional · **Commands**: 0 · **Hooks**: 2 default
4
4
 
5
5
  The 1.x `commands/` namespace is gone: anything deterministic is a `specweave`
6
- CLI subcommand, and the model-judgement procedures are the 11 skills below.
6
+ CLI subcommand, and the model-judgement procedures are the skills below.
7
7
 
8
8
  | Plugin | Triggers | Description |
9
9
  |---|---|---|
10
- | **specweave** (`sw`) | increment, spec, tasks, plan, implement, close, review, team, handoff, sync, GitHub, Jira, ADO, auto, brainstorm, qa, project, jev, system one | Increment lifecycle: plan → work the ledger → verify → review → complete, with cross-tool handoff, tracker sync and closed-set decisions delegated to Jev |
10
+ | **specweave** (`sw`) | increment, spec, tasks, plan, implement, close, review, parallel, handoff, sync, GitHub, Jira, ADO, auto, grill me, glossary, ubiquitous language, project, jev, system one | Increment lifecycle: plan → work the ledger → verify → review → complete, with cross-tool handoff, tracker sync and closed-set decisions delegated to Jev |
11
11
 
12
12
  ## Quick lookup
13
13
 
@@ -17,13 +17,14 @@ CLI subcommand, and the model-judgement procedures are the 11 skills below.
17
17
  | "Implement" / "continue increment" | `sw:do` |
18
18
  | "We're done" / "close it" | `sw:done` |
19
19
  | "Review this" / "quality check" / "grill the code" | `sw:review` |
20
- | "Parallel agents" / "split this up" | `sw:team` |
20
+ | "Parallel agents" / "split this up" | `sw:do` (parallel lanes) |
21
21
  | "Hand off" / "pick up" / "out of tokens" | `sw:handoff` |
22
- | "Push to GitHub" / "import issues" | `sw:sync` |
22
+ | "Push to GitHub" / "import issues" (optional) | `sw:sync` |
23
23
  | "Run until done" | `sw:auto` |
24
- | "What are our options" | `sw:brainstorm` |
25
- | "Project brief" / "what is this project about" | `sw:project` |
26
- | "Jev" / "system one" / a decision whose answers can all be enumerated first | `sw:jev` |
24
+ | "Grill me" / "interview me" (optional) | `sw:grill-me` |
25
+ | "Glossary" / "what does Order mean here" (optional) | `sw:glossary` |
26
+ | "Project brief" / "what is this project about" (optional) | `sw:project` |
27
+ | "Jev" / "system one" / a decision whose answers can all be enumerated first (optional) | `sw:jev` |
27
28
 
28
29
  ## Hooks
29
30
 
@@ -34,10 +35,11 @@ Two by default, registered in `specweave/hooks/hooks.json` as exec-form
34
35
  `.specweave/state/jev-guard.enabled`, and a `PreToolUse` entry (matcher `Bash`) in that
35
36
  project's `.claude/settings.json`. `--no-guard-bash` removes all three.
36
37
 
37
- ## Not in the plugin
38
+ ## Optional skills
38
39
 
39
- `tdd-cycle`, `e2e`, `debug`, `diagrams`, `release-expert` live in `skills-optional/`
40
- and install per-project with vskill. See `skills-optional/README.md`.
40
+ `grill-me`, `glossary`, `sync`, `project` and `jev` ship in
41
+ `plugins/specweave/skills-optional/` and install per project when enabled or detected:
42
+ `specweave skills` lists them, `specweave skills enable <name>` turns one on.
41
43
 
42
44
  Deterministic operations are CLI: `specweave pickup | task | verify | complete |
43
- handoff | note | report | sync | doctor | jev`.
45
+ handoff | note | report | sync | doctor | jev | skills | glossary | review`.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sw",
3
- "description": "Portable intent and verified progress across coding tools. Eleven focused workflow skills, two default lifecycle hooks, and a deterministic CLI and live local dashboard.",
4
- "version": "3.0.23",
3
+ "description": "Portable intent and verified progress across coding tools. Six core workflow skills plus opt-in grill-me, glossary, sync, project and jev, two default lifecycle hooks, and a deterministic CLI and live local dashboard.",
4
+ "version": "3.1.1",
5
5
  "author": {
6
6
  "name": "SpecWeave Team",
7
7
  "url": "https://spec-weave.com"
@@ -1,6 +1,7 @@
1
1
  # SpecWeave plugin (`sw`)
2
2
 
3
- The Claude Code surface for SpecWeave: **11 skills, 2 default hooks, 1 closer agent**.
3
+ The Claude Code surface for SpecWeave: **6 core skills, 5 optional skills, 2 default hooks,
4
+ 1 closer agent**.
4
5
  The skills are generated from `skills/sw-<name>/` at the repository root (the one source
5
6
  every tool shares); edit them there, never here.
6
7
  Everything deterministic lives in the `specweave` CLI; a skill exists only where a
@@ -8,23 +9,30 @@ procedure needs model judgement. There is no `commands/` namespace in 2.0.
8
9
 
9
10
  ## Skills
10
11
 
12
+ Core, loaded by the plugin:
13
+
11
14
  | Skill | What it does |
12
15
  |---|---|
13
- | `sw:increment` | Plan a unit of work → one `spec.md` (Problem, Scope, ACs, Approach, Tasks) |
14
- | `sw:do` | Work the increment task by task through the ledger, with evidence per task |
15
- | `sw:done` | Close it: ledger check → `specweave verify` → optional review → `specweave complete` |
16
- | `sw:review` | Adversarial fresh-context review and quality check; every finding cites `path:line` |
17
- | `sw:team` | Several agents on one increment: a worktree each, claims through the ledger |
16
+ | `sw:increment` | Settle the user's decisions, then plan one `spec.md` (Problem, Scope, ACs, Approach, Decisions, Tasks) |
17
+ | `sw:do` | Work the increment task by task through the ledger, alone, unattended or in parallel lanes |
18
+ | `sw:auto` | User-invoked entry to sw:do's unattended mode, driven by the Stop hook |
19
+ | `sw:done` | Close it: ledger check → `specweave verify` → review → `specweave complete` |
20
+ | `sw:review` | Adversarial review by a fresh context or another model family; every finding cites `path:line` |
18
21
  | `sw:handoff` | "Hand off" here, "pick up" in any other tool, account or machine |
19
- | `sw:sync` | GitHub / Jira / ADO: push, pull, status, setup |
20
- | `sw:auto` | Unattended loop driven by the Stop hook |
21
- | `sw:brainstorm` | Expand the option space before committing to one |
22
- | `sw:project` | Shared goal, memory, work items and briefs across tools |
23
- | `sw:jev` | Delegate closed-set decisions to Jev (TypeSafe System One): routing, command safety, screening |
24
22
 
25
- Optional procedures (tdd-cycle, e2e, debug, diagrams, release-expert) are **not** in the
26
- plugin — they ship from `skills-optional/` via
27
- `npx vskill install anton-abyzov/specweave/skills-optional/<name>`.
23
+ Optional, shipped in `skills-optional/` and installed into a project as `sw-<name>` only
24
+ when `.specweave/config.json` enables it (`specweave skills enable <name>`) or the project
25
+ detects it:
26
+
27
+ | Skill | What it does | Detected by |
28
+ |---|---|---|
29
+ | `sw:grill-me` | Interview the user in rounds until every decision is settled | `planning.deepInterview: deep` |
30
+ | `sw:glossary` | GLOSSARY.md: each domain term across business, data, code and UI | `GLOSSARY.md` |
31
+ | `sw:sync` | GitHub / Jira / ADO: push, pull, status, setup | a configured tracker |
32
+ | `sw:project` | Shared goal, memory, work items and briefs across tools | `.specweave/project/hub.json` |
33
+ | `sw:jev` | Delegate closed-set decisions to Jev (TypeSafe System One) | `jev.enabled` |
34
+
35
+ `skills-catalog.json` is the list (generated from `skills/catalog.json`).
28
36
 
29
37
  ## Hooks
30
38
 
@@ -33,7 +41,7 @@ Two by default, both exec-form `node hooks/run.mjs <event>` (no shell, Windows-s
33
41
  | Hook | Job |
34
42
  |---|---|
35
43
  | `SessionStart` | Inject the active increment + next task as context |
36
- | `Stop` | Drive the `sw:auto` loop; `{}` for every ordinary session |
44
+ | `Stop` | Drive the unattended loop (`sw:auto`); `{}` for every ordinary session |
37
45
 
38
46
  `PreToolUse` is **not** registered by default — `hooks.json` ships `SessionStart` and
39
47
  `Stop` only, exactly as in 2.1.0. `PreToolUse` and `PreCompact` stay callable
@@ -56,7 +64,7 @@ the marker and the project hook. This is a Claude Code surface only; other tools
56
64
 
57
65
  ## Requirements
58
66
 
59
- - Claude Code 2.1.0+, Node.js 18+, Git
67
+ - Claude Code 2.1.0+, Node.js 20.12+, Git
60
68
  - The `specweave` CLI on PATH (`npm i -g specweave`). Skills degrade to documented
61
69
  manual steps when it is absent; they never silently no-op.
62
70
 
@@ -1,18 +1,24 @@
1
1
  {
2
2
  "$schema": "https://spec-weave.com/schemas/skill-marketplace.v1.json",
3
3
  "plugin": "sw",
4
- "description": "Skill catalog for the specweave plugin. The skills are generated from skills/sw-<name>/ (scripts/build/generate-skills.mjs); the plugin version is tracked in .claude-plugin/plugin.json.",
4
+ "description": "Skill catalog for the specweave plugin. The skills are generated from skills/sw-<name>/ and skills/catalog.json (scripts/build/generate-skills.mjs): core skills in skills/, optional ones in skills-optional/, installed per project by specweave skills enable or detection. The plugin version is tracked in .claude-plugin/plugin.json.",
5
5
  "skills": [
6
6
  {
7
7
  "name": "sw:increment",
8
8
  "path": "skills/increment/SKILL.md",
9
- "description": "Plan a unit of work: one spec.md with Problem, Scope, numbered ACs, Approach and Tasks.",
9
+ "description": "Settle the user's critical decisions, then plan a unit of work: one spec.md with Problem, Scope, numbered ACs, Approach, Decisions and Tasks. Replaces brainstorm.",
10
10
  "deprecated": false
11
11
  },
12
12
  {
13
13
  "name": "sw:do",
14
14
  "path": "skills/do/SKILL.md",
15
- "description": "Work the increment task by task through the ledger: task next, claim, implement, commit, task done with evidence.",
15
+ "description": "Work the increment task by task through the ledger, alone, unattended or in parallel lanes: task next, claim, implement, commit, task done with evidence. Replaces team.",
16
+ "deprecated": false
17
+ },
18
+ {
19
+ "name": "sw:auto",
20
+ "path": "skills/auto/SKILL.md",
21
+ "description": "User-invoked entry to sw:do unattended mode: run an increment until every task is done, then verify and close.",
16
22
  "deprecated": false
17
23
  },
18
24
  {
@@ -24,13 +30,7 @@
24
30
  {
25
31
  "name": "sw:review",
26
32
  "path": "skills/review/SKILL.md",
27
- "description": "Adversarial fresh-context review and quality check; every finding cites path:line and is re-verified. Replaces qa, grill, code-reviewer and judge-llm.",
28
- "deprecated": false
29
- },
30
- {
31
- "name": "sw:team",
32
- "path": "skills/team/SKILL.md",
33
- "description": "Several agents on one increment: a worktree each, claims through the ledger, one closure. Replaces team-lead and team-merge.",
33
+ "description": "Adversarial review by a fresh context or another model family (specweave review); every finding cites path:line and is re-verified. Replaces qa, code-reviewer and judge-llm.",
34
34
  "deprecated": false
35
35
  },
36
36
  {
@@ -40,44 +40,49 @@
40
40
  "deprecated": false
41
41
  },
42
42
  {
43
- "name": "sw:sync",
44
- "path": "skills/sync/SKILL.md",
45
- "description": "One sync surface for GitHub, Jira and Azure DevOps: push, pull, status, setup. Replaces the per-provider sync, mapper, validator and import skills.",
46
- "deprecated": false
43
+ "name": "sw:grill-me",
44
+ "path": "skills-optional/grill-me/SKILL.md",
45
+ "description": "Interview the user in rounds until every decision in a plan is settled; records Decisions in spec.md.",
46
+ "deprecated": false,
47
+ "optional": true
47
48
  },
48
49
  {
49
- "name": "sw:auto",
50
- "path": "skills/auto/SKILL.md",
51
- "description": "Run an increment unattended until every task is done, then verify and close.",
52
- "deprecated": false
50
+ "name": "sw:glossary",
51
+ "path": "skills-optional/glossary/SKILL.md",
52
+ "description": "Build GLOSSARY.md: each domain term across business, data, code and UI; specweave glossary check finds drift.",
53
+ "deprecated": false,
54
+ "optional": true
53
55
  },
54
56
  {
55
- "name": "sw:brainstorm",
56
- "path": "skills/brainstorm/SKILL.md",
57
- "description": "Expand the option space before committing to one, ending in a pick handed to sw:increment.",
58
- "deprecated": false
57
+ "name": "sw:sync",
58
+ "path": "skills-optional/sync/SKILL.md",
59
+ "description": "One sync surface for GitHub, Jira and Azure DevOps: push, pull, status, setup. Replaces the per-provider sync, mapper, validator and import skills.",
60
+ "deprecated": false,
61
+ "optional": true
59
62
  },
60
63
  {
61
- "name": "sw:jev",
62
- "path": "skills/jev/SKILL.md",
63
- "description": "Delegate closed-set decisions to Jev (TypeSafe System One) instead of a frontier turn: routing, command safety, text screening, failure triage.",
64
- "deprecated": false
64
+ "name": "sw:project",
65
+ "path": "skills-optional/project/SKILL.md",
66
+ "deprecated": false,
67
+ "description": "Shared goal, memory, work items, artifacts and briefs, portable across AI tools and accounts.",
68
+ "optional": true
65
69
  },
66
70
  {
67
- "name": "sw:project",
68
- "path": "skills/project/SKILL.md",
71
+ "name": "sw:jev",
72
+ "path": "skills-optional/jev/SKILL.md",
73
+ "description": "Delegate closed-set decisions to Jev (TypeSafe System One) instead of a frontier turn: routing, command safety, text screening, failure triage.",
69
74
  "deprecated": false,
70
- "description": "Shared goal, memory, work items, artifacts and briefs, portable across AI tools and accounts."
75
+ "optional": true
71
76
  }
72
77
  ],
73
78
  "optionalSkills": {
74
- "note": "Not shipped in the plugin. Install with: npx vskill install anton-abyzov/specweave/skills-optional/<name>",
79
+ "note": "Shipped in plugins/specweave/skills-optional/, not loaded by the plugin. A project turns one on with: specweave skills enable <name>",
75
80
  "names": [
76
- "tdd-cycle",
77
- "e2e",
78
- "debug",
79
- "diagrams",
80
- "release-expert"
81
+ "grill-me",
82
+ "glossary",
83
+ "sync",
84
+ "project",
85
+ "jev"
81
86
  ]
82
87
  },
83
88
  "removedIn2_0": {
@@ -87,9 +92,9 @@
87
92
  "sw:code-reviewer": "sw:review",
88
93
  "sw:judge-llm": "sw:review",
89
94
  "sw:pr-review": "sw:review",
90
- "sw:team-lead": "sw:team",
91
- "sw:team-merge": "sw:team",
92
- "sw:team-build": "sw:team",
95
+ "sw:team-lead": "sw:do",
96
+ "sw:team-merge": "sw:do",
97
+ "sw:team-build": "sw:do",
93
98
  "sw:plan": "sw:increment",
94
99
  "sw:pm": "sw:increment",
95
100
  "sw:architect": "sw:increment",
@@ -132,5 +137,19 @@
132
137
  "sw:task": "sw:do",
133
138
  "sw-task": "sw-do"
134
139
  }
140
+ },
141
+ "removedIn3_1": {
142
+ "note": "Removed in 3.1. Use the replacement; there is no alias routing.",
143
+ "map": {
144
+ "sw:team": "sw:do",
145
+ "sw-team": "sw-do",
146
+ "sw:brainstorm": "sw:grill-me",
147
+ "sw-brainstorm": "sw-grill-me",
148
+ "skills-optional/tdd-cycle": "mattpocock/skills tdd",
149
+ "skills-optional/debug": "mattpocock/skills diagnosing-bugs",
150
+ "skills-optional/e2e": "sw:do (check each AC end to end)",
151
+ "skills-optional/diagrams": "none",
152
+ "skills-optional/release-expert": "none"
153
+ }
135
154
  }
136
155
  }
@@ -1,48 +1,18 @@
1
1
  ---
2
- description: Run a SpecWeave increment unattended until every task is done, then verify and close. Use for "auto mode", "run until done", "ship this while I sleep".
2
+ description: Run a SpecWeave increment unattended until every task is done, then verify and close - the Unattended section of sw-do. Use for "auto mode", "run until done".
3
3
  argument-hint: "[increment-ids...] [--dry-run|--reset]"
4
- version: 3.0.0
4
+ disable-model-invocation: true
5
+ version: 3.1.0
5
6
  ---
6
7
  <!-- Generated from skills/sw-auto/SKILL.md by scripts/build/generate-skills.mjs. Edit the source, then npm run build. -->
7
8
 
8
9
  # sw-auto: run until done
9
10
 
10
- Auto mode is the sw-do loop without stopping to ask. The bar does not drop: claim
11
- before editing, a passing test for every `done`, verify before closing.
12
-
13
- ## Start
14
-
15
- 1. The spec has nothing under `## Decisions` > `### Open` (or old `## Open questions`)
16
- and every task has `Files` and a `Test`. If not, fix the spec first.
17
- 2. `specweave auto 0042` records the session (`--dry-run` previews it, `--reset` clears
18
- stale state). In a tool that runs SpecWeave's Stop hook (Claude Code with the `sw`
19
- plugin) the hook hands you the remaining work after every turn until nothing is
20
- left. In any other tool, nothing feeds you back: keep looping yourself.
21
- 3. `specweave auto-status` shows progress; `specweave cancel-auto` stops it.
22
-
23
- ## Each turn
24
-
25
- 1. `specweave task next` → `specweave task claim T-NN` → implement inside its `Files` →
26
- commit `0042: ...` → `specweave task done T-NN --run "<Test>"`.
27
- 2. A failing test is fixed in the next turn, never marked done.
28
- 3. Genuinely blocked (missing secret, ambiguous spec, external dependency):
29
- `specweave task block T-NN --reason "<what is missing>"` and move on. Blocked tasks
30
- still count as work left: when only blocked tasks remain, run `specweave cancel-auto`
31
- and tell the user what each one needs, instead of looping until the turn limit.
32
- 4. Nothing claimable left: run sw-done (verify, review, complete).
33
-
34
- ## Running out of budget
35
-
36
- Before the session ends for tokens or time: `specweave handoff --reason "auto: out of
37
- tokens"`. The next session, in any tool or account, says "pick up" and continues.
11
+ Follow sw-do's "Unattended (auto mode)" section for the increments named, starting
12
+ with `specweave auto <ids>`, and close with sw-done when nothing claimable is left.
13
+ This entry exists so the command keeps its name; sw-do holds the rules.
38
14
 
39
15
  ## Manual path (no CLI)
40
16
 
41
- Without the CLI there is no hook and no session file: follow the manual path of sw-do
42
- in a loop until every task in spec.md has a `done` or `skip` line, then sw-done.
43
-
44
- ## Rules
45
-
46
- - Never edit `.specweave/state/auto-mode.json` by hand; `specweave auto --reset` clears it.
47
- - One auto session per project; check `specweave auto-status` before starting another.
48
- - Never widen a task's `Files` or weaken a test to keep the loop moving.
17
+ Without the CLI there is no hook and no session file: follow sw-do's manual path in a
18
+ loop until every task in spec.md has a `done` or `skip` line, then sw-done.
@@ -0,0 +1,5 @@
1
+ interface:
2
+ display_name: "SpecWeave auto"
3
+ short_description: "Run an increment unattended until done"
4
+ policy:
5
+ allow_implicit_invocation: false
@@ -1,7 +1,7 @@
1
1
  ---
2
- description: Work a SpecWeave increment task by task - claim, implement inside the task's Files, test, commit, done with evidence - then verify and close. Use for "implement", "continue", "keep going".
3
- argument-hint: "[increment-id]"
4
- version: 3.0.0
2
+ description: Work a SpecWeave increment task by task - claim, implement inside its Files, test, commit, done with evidence - alone, unattended or in lanes, then close. Use for "implement", "continue", "auto".
3
+ argument-hint: "[increment-id] [--auto] [--lanes]"
4
+ version: 3.1.0
5
5
  ---
6
6
  <!-- Generated from skills/sw-do/SKILL.md by scripts/build/generate-skills.mjs. Edit the source, then npm run build. -->
7
7
 
@@ -19,23 +19,57 @@ hold, and notes left for you. No increment yet? Run sw-increment first.
19
19
  ## The loop
20
20
 
21
21
  1. `specweave task next` prints the next claimable task with its AC text.
22
- 2. `specweave task claim T-03`. Exit 3: someone holds it; 4: its Files overlap a live
23
- claim; 6: its dependencies are not done. Pick another. Never edit before claiming.
22
+ 2. `specweave task claim T-03`. Exit 3: someone holds it (your own earlier claim from
23
+ a crashed session: say so, then `--force`); 4: its Files overlap a live claim;
24
+ 6: its dependencies are not done. Otherwise pick another. Never edit before claiming.
24
25
  3. Implement inside that task's `Files` only. Need another file? Claim the task that
25
- owns it, or add a task to spec.md `## Tasks`.
26
+ owns it, or add a task to spec.md `## Tasks`. Use the words in `GLOSSARY.md`, if
27
+ the project has one, for every new name.
26
28
  4. Run the task's `Test`. Red means fix the code; never skip, weaken or delete a test.
27
29
  Don't write tests first or add unit tests the task did not ask for (unless the
28
30
  project's `testing` config or conventions require them): check the AC end to end,
29
31
  the way a user would hit it.
30
32
  5. Commit with the increment id first: `git commit -m "0042: fold the ledger"`.
31
- 6. `specweave task done T-03 --run "npm run test:e2e -- double-claim"`. Exit 5: the command failed and
32
- the task stays open. No `Test`? `--evidence "<sha> + what you checked"`.
33
+ 6. `specweave task done T-03 --run "npm run test:e2e -- double-claim"`. Exit 5: the
34
+ command failed and the task stays open. No `Test`? `--evidence "<sha> + what you checked"`.
33
35
  7. Stuck: `specweave task block T-03 --reason "<what is missing>"`. Not needed:
34
36
  `specweave task skip T-03 --reason "<why>"`. Then back to 1.
35
37
 
36
38
  Commands take the increment id last (`specweave task next 0042`) when more than one
37
39
  increment is active. `specweave task list` shows the whole board.
38
40
 
41
+ ## Unattended (auto mode)
42
+
43
+ "Auto", "run until done", "ship this while I sleep": the same loop without stopping
44
+ to ask. The bar does not drop.
45
+
46
+ 1. Start only when the spec has nothing under `## Decisions` > `### Open` and every
47
+ task has `Files` and a `Test`; otherwise fix the spec first.
48
+ 2. `specweave auto 0042` records the session (`--dry-run` previews, `--reset` clears
49
+ stale state). A tool that runs SpecWeave's Stop hook hands you the remaining work
50
+ after every turn; in any other tool, keep looping yourself.
51
+ 3. Blocked (missing secret, ambiguous spec, outside dependency): `task block` and move
52
+ on. When only blocked tasks remain, `specweave cancel-auto` and tell the user what
53
+ each one needs, instead of looping to the turn limit.
54
+ 4. `specweave auto-status` shows progress; one auto session per project.
55
+
56
+ ## Parallel lanes
57
+
58
+ Three or more disjoint lanes, or 15+ tasks: you are the lead. Split, start, watch,
59
+ merge and close; do not implement.
60
+
61
+ 1. Group tasks into 2 to 5 lanes whose `Files` do not overlap. Shared contracts
62
+ (types, schema) go in an early task the others list under `**Dependencies**: T-01`.
63
+ 2. One worktree and branch per lane agent (your tool's or app's worktree feature, or
64
+ `git worktree add ../0042-api -b inc/0042-api`), with `SPECWEAVE_AGENT=api` set.
65
+ Brief each one: its tasks, this loop, "edit only their Files", and on finish
66
+ `specweave task release --all-mine` plus `specweave note "api: done" 0042`.
67
+ 3. Watch with `specweave task list 0042`; `blocked` rows are your queue. A claim older
68
+ than 2 hours with no progress may be taken with `--force`.
69
+ 4. Merge the lane branches in dependency order (keep every `ledger.jsonl` line from both
70
+ sides), then close as below. Lane agents never run `specweave handoff`.
71
+ `specweave team` opens agent panes for the same setup in tools that have them.
72
+
39
73
  ## Finish without asking
40
74
 
41
75
  When `task next` has nothing left, run sw-done: verify, review, complete.
@@ -66,11 +100,13 @@ PowerShell never uses `>>` here: it writes UTF-16 and every other tool fails to
66
100
  Events: `claim`, `done` (needs `evidence`), `release`, `block` and `skip` (both need
67
101
  `note`), for example
68
102
  `{"t":"T-02","e":"skip","by":"codex@mbp","at":"2026-09-02T12:00:00Z","note":"covered by T-01"}`.
69
- `by` is `SPECWEAVE_AGENT` if set, else `<tool>@<host>`.
103
+ `by` is `SPECWEAVE_AGENT` if set, else `<tool>@<host>`. Unattended or in lanes, follow
104
+ the same steps by hand: there is no hook and no session file.
70
105
 
71
106
  ## Rules
72
107
 
73
108
  - A claim older than 2 hours with no `done` is stale and may be taken over.
74
109
  - Append only: never edit, reorder or delete a ledger line. On a merge conflict in
75
110
  `ledger.jsonl` keep every line from both sides.
76
- - Several agents on one increment: one worktree and branch each (sw-team).
111
+ - Never widen a task's `Files` or weaken a test to keep a loop moving.
112
+ - Never edit `.specweave/state/auto-mode.json` by hand; `specweave auto --reset` clears it.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  description: Close a SpecWeave increment - every task done or skipped, specweave verify green, a fresh-context review, then specweave complete. Use for "close it", "we are done", "finish up".
3
3
  argument-hint: "[increment-id] [--reason \"...\"]"
4
- version: 3.0.0
4
+ version: 3.1.0
5
5
  ---
6
6
  <!-- Generated from skills/sw-done/SKILL.md by scripts/build/generate-skills.mjs. Edit the source, then npm run build. -->
7
7
 
@@ -19,8 +19,11 @@ Closing is verify, review, complete. The one hard gate is a passing
19
19
  against the ledger (an AC is met when all its tasks are done) and writes
20
20
  `reports/verify.md` and `reports/verify.json`. Red: fix and re-run. Do not tick
21
21
  AC boxes; they are derived.
22
- 3. **Review.** For anything that ships, run sw-review in a fresh context. Fix critical
23
- and high findings, then verify again.
22
+ 3. **Review.** For anything that ships, run sw-review in a fresh context. With
23
+ `review.crossModel` on, also `specweave review`: another model family reviews the
24
+ diff (exit 3 means fix first). If the project has a `GLOSSARY.md`, run
25
+ `specweave glossary check` and rename new code that uses an avoided word. Fix
26
+ critical and high findings, then verify again.
24
27
  4. **Docs.** If commands, config or user-facing behaviour changed, update README,
25
28
  CHANGELOG and the `## Commands` table in AGENTS.md in the same branch.
26
29
  5. **Complete.** `specweave complete 0042`. It refuses without a passing verify unless
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  description: Plan work as a SpecWeave increment - one spec.md with Problem, Scope, numbered ACs, Approach and Tasks - before writing code. Use for "plan a feature", "new increment", "let's build X".
3
3
  argument-hint: "\"<title>\" [--supersedes NNNN]"
4
- version: 3.0.0
4
+ version: 3.1.0
5
5
  ---
6
6
  <!-- Generated from skills/sw-increment/SKILL.md by scripts/build/generate-skills.mjs. Edit the source, then npm run build. -->
7
7
 
@@ -17,18 +17,27 @@ and one PR.
17
17
  - A small self-contained fix needs no increment. Just do it.
18
18
  - An open increment already owns the files this touches (`specweave task list`)? Add
19
19
  ACs and tasks to its spec.md instead of opening another.
20
- - Read the code the change touches before writing Approach.
21
- - Unsure what to build at all? Run sw-brainstorm's Options first.
20
+ - Read the code the change touches before writing Approach. If `GLOSSARY.md` exists,
21
+ write the spec in its terms.
22
+ - Unsure what to build at all, or the user says "grill me": run sw-grill-me first
23
+ (`specweave skills enable grill-me` installs it).
22
24
 
23
25
  ## Decide
24
26
 
25
- Run sw-brainstorm's Decide step before writing ACs: think first, settle facts yourself,
26
- then ask the user only the decisions that are theirs, one question at a time, each with
27
- a recommended answer. `planning.deepInterview` sets the depth: `critical` (default) asks
28
- at most 5, `deep` ("grill me") has no cap, `off` skips. A clear request asks nothing.
29
- Record every answer and default in spec.md `## Decisions` and apply it to Scope, ACs
30
- and Approach. Without sw-brainstorm installed: ask at most 5, each with your
31
- recommendation, and record them the same way.
27
+ Intent first: settle what the user wants and how a machine will check it before
28
+ writing ACs. `planning.deepInterview` sets the depth: `critical` (default) as below,
29
+ `deep` runs sw-grill-me, `off` states defaults and asks nothing.
30
+
31
+ 1. **Think first.** Read the code and config; settle every fact yourself.
32
+ 2. **Triage** each open decision: *fact* (look it up, never ask), *my call*
33
+ (reversible or low impact: pick a default), *theirs* (hard to reverse, costly, taste).
34
+ 3. **Ask** only "theirs", at most 5, highest impact first. Each gets one clause on why
35
+ it matters and 2 to 4 options, your recommendation first; "yes" accepts it. Use your
36
+ tool's structured question tool when it has one. A clear request asks nothing.
37
+ 4. **Record** in `## Decisions`: Asked, Defaulted (list every default: one the user
38
+ never saw is one they could not reject) and Open. Keep a line only when a later
39
+ change could contradict it: hard to reverse, surprising without context, or a real
40
+ trade-off. Apply each answer to Scope, ACs and Approach.
32
41
 
33
42
  ## Create it
34
43
 
@@ -98,4 +107,4 @@ Files that change and in what order, decisions, rejected alternatives, risks.
98
107
  ## Then
99
108
 
100
109
  Show the ACs and tasks. Unless the user asked to review the plan first, carry on with
101
- sw-do (one agent) or sw-team (three or more disjoint lanes).
110
+ sw-do (one agent, or parallel lanes for three or more disjoint groups of tasks).
@@ -1,7 +1,7 @@
1
1
  ---
2
- description: Adversarial fresh-context review and risk check of an increment before it ships; every finding cites path:line and is re-verified. Use for "review", "qa", "quality check", "critique this".
2
+ description: Adversarial review of an increment before it ships, by a fresh context or another model family; every finding cites path:line and is re-verified. Use for "review", "qa", "critique this".
3
3
  argument-hint: "[increment-id] [--full]"
4
- version: 3.0.0
4
+ version: 3.1.0
5
5
  ---
6
6
  <!-- Generated from skills/sw-review/SKILL.md by scripts/build/generate-skills.mjs. Edit the source, then npm run build. -->
7
7
 
@@ -14,8 +14,8 @@ This is also the quality check: its verdict says whether the increment is ready.
14
14
  ## Non-negotiables
15
15
 
16
16
  - **Fresh context.** The session that wrote the code never approves it. Use a new
17
- session, or a subagent if your tool supports them. If you wrote this code here and
18
- cannot get a fresh context, say so in the report.
17
+ session, a subagent if your tool supports them, or another model (below). If you
18
+ wrote this code here and cannot get a fresh context, say so in the report.
19
19
  - **Every finding cites `path:line`** and a concrete failure: input or state leads to
20
20
  wrong output, a crash, a hang, data loss or a leak. "Consider refactoring" is not one.
21
21
  - **Re-verify.** Re-open the lines and, where a test can show it, run one. Drop what
@@ -42,6 +42,24 @@ This is also the quality check: its verdict says whether the increment is ready.
42
42
  (`### T-09 Fix empty evidence` + `- AC: AC-02 | Files: ... | Test: ...`) for sw-do, or
43
43
  is fixed and re-tested now. Then verify again and close with sw-done.
44
44
 
45
+ ## Another model
46
+
47
+ A model reviewing code its own family wrote shares that code's blind spots.
48
+ `specweave review` hands the increment to a reviewer from another family: it reads who
49
+ finished the tasks from the ledger (`claude@mbp` is Claude), runs Codex with GPT-6.1-Sol
50
+ on Claude-written code (Claude Opus on OpenAI-written code), and writes
51
+ `reports/review-codex.md` in the shape below plus a ledger note. Exit 0: ship; 3: fix
52
+ first, or no verdict; 1: no reviewer installed, or it failed.
53
+
54
+ - Run it when `review.crossModel` is true in `.specweave/config.json`, when the user
55
+ asks for another model, or when you wrote the code and have no fresh context.
56
+ - `--brief` prints the brief (ACs, tasks and their Files, the diff) to paste into any
57
+ model by hand; `--reviewer claude`, `--base origin/main` and `--timeout 45` override.
58
+ - `review.reviewer` pins one reviewer; `review.reviewers.<name>.command` adds a CLI that
59
+ reads the brief on stdin and answers on stdout, or into `{out}` when it names one.
60
+
61
+ Its findings get the same treatment as yours: re-open each line before acting on it.
62
+
45
63
  ## reports/review.md
46
64
 
47
65
  ```markdown
@@ -57,6 +75,7 @@ Nits: naming in ledger.ts:31.
57
75
  ```
58
76
 
59
77
  Verdict is `fix first` while any critical or high finding survives, else `ship`.
78
+ `specweave complete` notes a `fix first` verdict in the newest review report.
60
79
 
61
80
  ## Manual path (no CLI)
62
81
 
@@ -0,0 +1,32 @@
1
+ {
2
+ "$comment": "The one list of SpecWeave skills. Core skills ship in the sw plugin and in every project. Optional skills install into a project only when listed under skills.enabled in .specweave/config.json, or when their detect rule matches and they are not under skills.disabled. Retired skills are removed from projects on update. scripts/build/generate-skills.mjs copies this file to plugins/specweave/skills-catalog.json.",
3
+ "core": ["increment", "do", "auto", "done", "review", "handoff"],
4
+ "optional": [
5
+ {
6
+ "name": "grill-me",
7
+ "summary": "Interview you in rounds until every decision in a plan is settled",
8
+ "detect": "deep-interview"
9
+ },
10
+ {
11
+ "name": "glossary",
12
+ "summary": "Build GLOSSARY.md: each domain term across business, data, code and UI",
13
+ "detect": "glossary-file"
14
+ },
15
+ {
16
+ "name": "sync",
17
+ "summary": "Push progress to and pull issues from GitHub, Jira or Azure DevOps",
18
+ "detect": "tracker"
19
+ },
20
+ {
21
+ "name": "project",
22
+ "summary": "Shared goal, work items and briefs in .specweave/project/hub.json",
23
+ "detect": "hub"
24
+ },
25
+ {
26
+ "name": "jev",
27
+ "summary": "Closed-set decisions through Jev (System One)",
28
+ "detect": "jev"
29
+ }
30
+ ],
31
+ "retired": ["qa", "task", "brainstorm", "team"]
32
+ }