specweave 3.1.12 → 3.1.14

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 (69) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/README.md +7 -7
  3. package/bin/specweave.js +3 -3
  4. package/dist/src/cli/commands/create-increment.d.ts +2 -5
  5. package/dist/src/cli/commands/create-increment.d.ts.map +1 -1
  6. package/dist/src/cli/commands/create-increment.js +4 -2
  7. package/dist/src/cli/commands/create-increment.js.map +1 -1
  8. package/dist/src/cli/commands/project.d.ts.map +1 -1
  9. package/dist/src/cli/commands/project.js +2 -1
  10. package/dist/src/cli/commands/project.js.map +1 -1
  11. package/dist/src/cli/commands/skills.d.ts +2 -2
  12. package/dist/src/cli/commands/skills.d.ts.map +1 -1
  13. package/dist/src/cli/commands/skills.js +17 -9
  14. package/dist/src/cli/commands/skills.js.map +1 -1
  15. package/dist/src/cli/helpers/init/instruction-file-merger.d.ts.map +1 -1
  16. package/dist/src/cli/helpers/init/instruction-file-merger.js +19 -0
  17. package/dist/src/cli/helpers/init/instruction-file-merger.js.map +1 -1
  18. package/dist/src/core/doctor/checkers/instruction-files-checker.d.ts.map +1 -1
  19. package/dist/src/core/doctor/checkers/instruction-files-checker.js +19 -2
  20. package/dist/src/core/doctor/checkers/instruction-files-checker.js.map +1 -1
  21. package/dist/src/core/increment/template-creator.d.ts +8 -16
  22. package/dist/src/core/increment/template-creator.d.ts.map +1 -1
  23. package/dist/src/core/increment/template-creator.js +10 -32
  24. package/dist/src/core/increment/template-creator.js.map +1 -1
  25. package/dist/src/core/qa/types.d.ts +0 -50
  26. package/dist/src/core/qa/types.d.ts.map +1 -1
  27. package/dist/src/core/rubric/rubric-generator.d.ts.map +1 -1
  28. package/dist/src/core/rubric/rubric-generator.js +7 -5
  29. package/dist/src/core/rubric/rubric-generator.js.map +1 -1
  30. package/dist/src/core/skills/catalog.d.ts +1 -1
  31. package/dist/src/core/skills/catalog.d.ts.map +1 -1
  32. package/dist/src/core/skills/catalog.js +0 -2
  33. package/dist/src/core/skills/catalog.js.map +1 -1
  34. package/dist/src/core/skills/project-skills.d.ts +0 -10
  35. package/dist/src/core/skills/project-skills.d.ts.map +1 -1
  36. package/dist/src/core/skills/project-skills.js +6 -2
  37. package/dist/src/core/skills/project-skills.js.map +1 -1
  38. package/package.json +1 -1
  39. package/plugins/PLUGINS-INDEX.md +3 -3
  40. package/plugins/specweave/.claude-plugin/plugin.json +2 -2
  41. package/plugins/specweave/PLUGIN.md +7 -4
  42. package/plugins/specweave/agents/sw-closer.md +27 -16
  43. package/plugins/specweave/defaults/rubric-defaults.md +7 -5
  44. package/plugins/specweave/marketplace.json +7 -8
  45. package/plugins/specweave/skills/auto/SKILL.md +2 -1
  46. package/plugins/specweave/skills/auto/agents/openai.yaml +1 -1
  47. package/plugins/specweave/skills/do/SKILL.md +3 -2
  48. package/plugins/specweave/skills/do/agents/openai.yaml +3 -0
  49. package/plugins/specweave/skills/done/SKILL.md +7 -2
  50. package/plugins/specweave/skills/done/agents/openai.yaml +3 -0
  51. package/plugins/specweave/{skills-optional → skills}/grill-me/SKILL.md +5 -4
  52. package/plugins/specweave/skills/grill-me/agents/openai.yaml +3 -0
  53. package/plugins/specweave/skills/handoff/SKILL.md +8 -4
  54. package/plugins/specweave/skills/handoff/agents/openai.yaml +3 -0
  55. package/plugins/specweave/skills/increment/SKILL.md +3 -3
  56. package/plugins/specweave/skills/increment/agents/openai.yaml +3 -0
  57. package/plugins/specweave/skills/review/SKILL.md +8 -4
  58. package/plugins/specweave/skills/review/agents/openai.yaml +3 -0
  59. package/plugins/specweave/skills-catalog.json +15 -7
  60. package/plugins/specweave/skills-optional/glossary/SKILL.md +2 -1
  61. package/plugins/specweave/skills-optional/glossary/agents/openai.yaml +3 -0
  62. package/plugins/specweave/skills-optional/jev/SKILL.md +7 -4
  63. package/plugins/specweave/skills-optional/jev/agents/openai.yaml +3 -0
  64. package/plugins/specweave/skills-optional/project/SKILL.md +2 -1
  65. package/plugins/specweave/skills-optional/project/agents/openai.yaml +3 -0
  66. package/plugins/specweave/skills-optional/sync/SKILL.md +2 -1
  67. package/plugins/specweave/skills-optional/sync/agents/openai.yaml +3 -0
  68. package/src/templates/AGENTS.md.template +2 -18
  69. /package/plugins/specweave/{skills-optional → skills}/grill-me/references/credits.md +0 -0
@@ -1,6 +1,6 @@
1
1
  # SpecWeave plugins index
2
2
 
3
- **Plugins**: 1 (`sw`) · **Skills**: 6 core + 5 optional · **Commands**: 0 · **Hooks**: 2 default
3
+ **Plugins**: 1 (`sw`) · **Skills**: 7 core + 4 optional · **Commands**: 0 · **Hooks**: 2 default
4
4
 
5
5
  The 1.x `commands/` namespace is gone: anything deterministic is a `specweave`
6
6
  CLI subcommand, and the model-judgement procedures are the skills below.
@@ -21,7 +21,7 @@ CLI subcommand, and the model-judgement procedures are the skills below.
21
21
  | "Hand off" / "pick up" / "out of tokens" | `sw:handoff` |
22
22
  | "Push to GitHub" / "import issues" (optional) | `sw:sync` |
23
23
  | "Run until done" | `sw:auto` |
24
- | "Grill me" / "interview me" (optional) | `sw:grill-me` |
24
+ | "Grill me" / "interview me" | `sw:grill-me` |
25
25
  | "Glossary" / "what does Order mean here" (optional) | `sw:glossary` |
26
26
  | "Project brief" / "what is this project about" (optional) | `sw:project` |
27
27
  | "Jev" / "system one" / a decision whose answers can all be enumerated first (optional) | `sw:jev` |
@@ -37,7 +37,7 @@ project's `.claude/settings.json`. `--no-guard-bash` removes all three.
37
37
 
38
38
  ## Optional skills
39
39
 
40
- `grill-me`, `glossary`, `sync`, `project` and `jev` ship in
40
+ `glossary`, `sync`, `project` and `jev` ship in
41
41
  `plugins/specweave/skills-optional/` and install per project when enabled or detected:
42
42
  `specweave skills` lists them, `specweave skills enable <name>` turns one on.
43
43
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sw",
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.12",
3
+ "description": "Portable intent and verified progress across coding tools. Seven core workflow skills (grill-me among them) plus opt-in glossary, sync, project and jev, two default lifecycle hooks, and a deterministic CLI and live local dashboard.",
4
+ "version": "3.1.14",
5
5
  "author": {
6
6
  "name": "SpecWeave Team",
7
7
  "url": "https://spec-weave.com"
@@ -1,6 +1,6 @@
1
1
  # SpecWeave plugin (`sw`)
2
2
 
3
- The Claude Code surface for SpecWeave: **6 core skills, 5 optional skills, 2 default hooks,
3
+ The Claude Code surface for SpecWeave: **7 core skills, 4 optional skills, 2 default hooks,
4
4
  1 closer agent**.
5
5
  The skills are generated from `skills/sw-<name>/` at the repository root (the one source
6
6
  every tool shares); edit them there, never here.
@@ -9,11 +9,12 @@ procedure needs model judgement. There is no `commands/` namespace in 2.0.
9
9
 
10
10
  ## Skills
11
11
 
12
- Core, loaded by the plugin:
12
+ Core, loaded by the plugin. Run one as `/sw:<name>` in Claude Code or `$sw:<name>` in Codex:
13
13
 
14
14
  | Skill | What it does |
15
15
  |---|---|
16
16
  | `sw:increment` | Settle the user's decisions, then plan one `spec.md` (Problem, Scope, ACs, Approach, Decisions, Tasks) |
17
+ | `sw:grill-me` | Interview the user in rounds until every decision is settled; `sw:increment` runs it for every new increment when `planning.deepInterview` is `deep` |
17
18
  | `sw:do` | Work the increment task by task through the ledger, alone, unattended or in parallel lanes |
18
19
  | `sw:auto` | User-invoked entry to sw:do's unattended mode, driven by the Stop hook |
19
20
  | `sw:done` | Close it: ledger check → `specweave verify` → review → `specweave complete` |
@@ -26,13 +27,15 @@ detects it:
26
27
 
27
28
  | Skill | What it does | Detected by |
28
29
  |---|---|---|
29
- | `sw:grill-me` | Interview the user in rounds until every decision is settled | `planning.deepInterview: deep` |
30
30
  | `sw:glossary` | GLOSSARY.md: each domain term across business, data, code and UI | `GLOSSARY.md` |
31
31
  | `sw:sync` | GitHub / Jira / ADO: push, pull, status, setup | a configured tracker |
32
32
  | `sw:project` | Shared goal, memory, work items and briefs across tools | `.specweave/project/hub.json` |
33
33
  | `sw:jev` | Delegate closed-set decisions to Jev (TypeSafe System One) | `jev.enabled` |
34
34
 
35
- `skills-catalog.json` is the list (generated from `skills/catalog.json`).
35
+ `skills-catalog.json` is the list (generated from `skills/catalog.json`). Each skill folder
36
+ also carries `agents/openai.yaml`, the Codex UI metadata (display name "SpecWeave Do" and so
37
+ on); `auto` sets `policy.allow_implicit_invocation: false` there, the Codex twin of its
38
+ `disable-model-invocation: true`.
36
39
 
37
40
  ## Hooks
38
41
 
@@ -14,19 +14,30 @@ purpose: the session that wrote the code should not be the one judging it.
14
14
 
15
15
  Your prompt contains the increment id (and optionally its path).
16
16
 
17
- ## Workflow
18
-
19
- 1. `specweave task list <id>` — every task must be `done` or `skipped`. Anything still
20
- open or claimed → stop and report it; do not implement it yourself.
21
- 2. `specweave verify <id>` — writes `reports/verify.json`. Red → report the failure, do not close.
22
- 3. Optional but recommended: run `sw:review <id>` and fix nothing yourself — report
23
- critical/high findings back to the caller.
24
- 4. `specweave complete <id> --yes`. It refuses without a green `verify.json` unless the
25
- caller supplied a `--reason`; never edit `metadata.json` by hand.
26
- 5. Report: verify result, review verdict (or "skipped"), commit sha(s), what was deferred.
27
-
28
- ## Rules
29
-
30
- - Never mark tasks done, never write code, never re-run the implementation.
31
- - If `metadata.json` status is `planned`, the increment was never activated — say so
32
- instead of forcing a transition.
17
+ ## Overrides to the preloaded sw:done
18
+
19
+ Follow sw:done with these changes, and nothing else:
20
+
21
+ 1. Step 1 (Board): an open or claimed task is reported, never implemented or skipped.
22
+ 2. Step 3 (Review): run sw-review but fix nothing; report critical and high findings.
23
+ 3. Skip step 4 (Docs) and step 6 (Ship); the caller owns both.
24
+ 4. `metadata.json` status `planned`: the increment was never activated. Report it and
25
+ stop instead of forcing a transition.
26
+ 5. Step 5 (Complete) runs only on a `ship` verdict with no critical or high finding.
27
+ On `fix first`, or any critical or high finding, skip it: `completed:false`, and
28
+ list the findings under `blockers` so the caller fixes them and completes.
29
+
30
+ Never mark tasks done, write code or edit `metadata.json` by hand.
31
+
32
+ ## Return
33
+
34
+ Reply with this JSON only, so the caller can check it against the files:
35
+
36
+ ```json
37
+ {"increment":"0042","verify":{"ok":true,"path":"reports/verify.json"},
38
+ "review":{"verdict":"fix first","path":"reports/review.md","critical_high":[{"severity":"high","file":"src/a.ts","line":88,"summary":"..."}]},
39
+ "completed":false,"blockers":["review: high src/a.ts:88"],"deferred":[],"commits":["abc1234"]}
40
+ ```
41
+
42
+ `review.verdict` is `"skipped"` when no review ran; `blockers` names open tasks, a red
43
+ verify, a `planned` status or review findings that held back completion.
@@ -30,22 +30,24 @@ status: defaults
30
30
 
31
31
  ## Code Quality
32
32
 
33
- ### R-D02: No critical or high code review findings [blocking]
33
+ ### R-D02: No critical or high code review findings [advisory]
34
34
  - **Source**: project-default
35
35
  - **Evaluator**: sw:review
36
- - **Verify**: review.json findings
36
+ - **Verify**: newest reports/review*.md verdict and its critical/high findings (what closure-gate.ts reads)
37
37
  - **Threshold**: critical === 0 AND high === 0
38
+ - **Note**: `specweave complete` only reports this as a notice; `reports/verify.json` is the one blocking gate
38
39
  - **Result**: [ ] PENDING
39
40
 
40
41
  ---
41
42
 
42
43
  ## Independent Evaluation
43
44
 
44
- ### R-D03: Review verdict is ship [blocking]
45
+ ### R-D03: Review verdict is ship [advisory]
45
46
  - **Source**: project-default
46
47
  - **Evaluator**: sw:review
47
- - **Verify**: review.json ok
48
- - **Threshold**: ok !== false
48
+ - **Verify**: newest reports/review*.md verdict line (parseVerdict in closure-gate.ts)
49
+ - **Threshold**: verdict is not "fix first"
50
+ - **Note**: `specweave complete` only reports this as a notice; `reports/verify.json` is the one blocking gate
49
51
  - **Result**: [ ] PENDING
50
52
 
51
53
  ### R-D04: Independent reviewer was a fresh context [advisory]
@@ -9,6 +9,12 @@
9
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
+ {
13
+ "name": "sw:grill-me",
14
+ "path": "skills/grill-me/SKILL.md",
15
+ "description": "Interview the user in rounds until every decision in a plan is settled; records Decisions in spec.md.",
16
+ "deprecated": false
17
+ },
12
18
  {
13
19
  "name": "sw:do",
14
20
  "path": "skills/do/SKILL.md",
@@ -39,13 +45,7 @@
39
45
  "description": "\"Hand off\" in one tool, \"pick up\" in any other tool, account or machine: specweave handoff and specweave pickup.",
40
46
  "deprecated": false
41
47
  },
42
- {
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
48
- },
48
+
49
49
  {
50
50
  "name": "sw:glossary",
51
51
  "path": "skills-optional/glossary/SKILL.md",
@@ -78,7 +78,6 @@
78
78
  "optionalSkills": {
79
79
  "note": "Shipped in plugins/specweave/skills-optional/, not loaded by the plugin. A project turns one on with: specweave skills enable <name>",
80
80
  "names": [
81
- "grill-me",
82
81
  "glossary",
83
82
  "sync",
84
83
  "project",
@@ -2,7 +2,8 @@
2
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
4
  disable-model-invocation: true
5
- version: 3.1.0
5
+ metadata:
6
+ version: "3.1.0"
6
7
  ---
7
8
  <!-- Generated from skills/sw-auto/SKILL.md by scripts/build/generate-skills.mjs. Edit the source, then npm run build. -->
8
9
 
@@ -1,5 +1,5 @@
1
1
  interface:
2
- display_name: "SpecWeave auto"
2
+ display_name: "SpecWeave Auto"
3
3
  short_description: "Run an increment unattended until done"
4
4
  policy:
5
5
  allow_implicit_invocation: false
@@ -1,7 +1,8 @@
1
1
  ---
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".
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", "next task".
3
3
  argument-hint: "[increment-id] [--auto] [--lanes]"
4
- version: 3.1.0
4
+ metadata:
5
+ version: "3.1.0"
5
6
  ---
6
7
  <!-- Generated from skills/sw-do/SKILL.md by scripts/build/generate-skills.mjs. Edit the source, then npm run build. -->
7
8
 
@@ -0,0 +1,3 @@
1
+ interface:
2
+ display_name: "SpecWeave Do"
3
+ short_description: "Work an increment task by task, then close it"
@@ -1,7 +1,8 @@
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.1.0
4
+ metadata:
5
+ version: "3.1.0"
5
6
  ---
6
7
  <!-- Generated from skills/sw-done/SKILL.md by scripts/build/generate-skills.mjs. Edit the source, then npm run build. -->
7
8
 
@@ -23,7 +24,11 @@ Closing is verify, review, complete. The one hard gate is a passing
23
24
  `review.crossModel` on, also `specweave review`: another model family reviews the
24
25
  diff (exit 3 means fix first). If the project has a `GLOSSARY.md`, run
25
26
  `specweave glossary check` and rename new code that uses an avoided word. Fix
26
- critical and high findings, then verify again.
27
+ critical and high findings, then verify again. In a bloated context, spawn the
28
+ `sw-closer` agent as the fresh-context option; it returns JSON, fixes nothing and
29
+ completes only on a clean `ship` review, so re-read `reports/verify.json` and the
30
+ review report yourself rather than trusting its summary, fix any critical or high
31
+ finding here, then complete.
27
32
  4. **Docs.** If commands, config or user-facing behaviour changed, update README,
28
33
  CHANGELOG and the `## Commands` table in AGENTS.md in the same branch.
29
34
  5. **Complete.** `specweave complete 0042`. It refuses without a passing verify unless
@@ -0,0 +1,3 @@
1
+ interface:
2
+ display_name: "SpecWeave Done"
3
+ short_description: "Verify, review and close an increment"
@@ -1,7 +1,8 @@
1
1
  ---
2
2
  description: Interview the user relentlessly, in rounds, until every decision in a plan is settled; facts are your job, decisions are theirs. Use for "grill me", "interview me", "stress-test this plan".
3
3
  argument-hint: "[topic or increment-id]"
4
- version: 1.0.0
4
+ metadata:
5
+ version: "1.0.0"
5
6
  ---
6
7
  <!-- Generated from skills/sw-grill-me/SKILL.md by scripts/build/generate-skills.mjs. Edit the source, then npm run build. -->
7
8
 
@@ -86,9 +87,9 @@ while `### Open` has entries.
86
87
 
87
88
  ## Configuration
88
89
 
89
- `specweave skills enable grill-me` installs this skill; `planning.deepInterview: deep`
90
- in `.specweave/config.json` installs it too and makes sw-increment run it for every
91
- new increment. `critical` (the default) keeps sw-increment to at most 5 questions.
90
+ Every project has this skill. `planning.deepInterview: deep` in `.specweave/config.json`
91
+ makes sw-increment run it for every new increment; `critical` (the default) keeps
92
+ sw-increment to at most 5 questions.
92
93
 
93
94
  ## Manual path (no CLI)
94
95
 
@@ -0,0 +1,3 @@
1
+ interface:
2
+ display_name: "SpecWeave Grill Me"
3
+ short_description: "Settle every decision in a plan before building"
@@ -1,7 +1,8 @@
1
1
  ---
2
- description: Hand work to another tool, account or machine and pick it up there, in two words. Use when the user says "hand off", "hand off all", "out of tokens", "switching accounts", "pick up" or "continue".
2
+ description: Hand work to another tool, account or machine and pick it up there, in two words. Use when the user says "hand off", "hand off all", "out of tokens", "switching accounts" or "pick up".
3
3
  argument-hint: "[--reason \"...\"] [--next \"...\"]"
4
- version: 3.0.0
4
+ metadata:
5
+ version: "3.0.0"
5
6
  ---
6
7
  <!-- Generated from skills/sw-handoff/SKILL.md by scripts/build/generate-skills.mjs. Edit the source, then npm run build. -->
7
8
 
@@ -80,14 +81,17 @@ hooks and the last usage reading.
80
81
 
81
82
  Claude Code also warns the model itself near and at the 5-hour limit, with a note that
82
83
  starts "[Usage limit approaching" or "[Usage limit reached". "Approaching" is a
83
- heads-up: mention it in one line and keep working. "Reached" is the handoff moment:
84
+ heads-up: mention it in one line and keep working. "Reached" is the handoff moment
85
+ unless auto-handoff is in checkpoint mode (`--mode checkpoint` / `--checkpoint-only`) or
86
+ you are inside SpecWithCode; then mention it in one line and keep working. Otherwise
84
87
  finish the current edit, run `specweave handoff --reason "usage limit"` (one command; it
85
88
  needs no summary from you) and stop.
86
89
 
87
90
  Between handoffs every hook also saves a local checkpoint under
88
91
  `~/.specweave/checkpoints/` (no model, network, push or claim change; `pickup` does
89
92
  not apply it). `auto-handoff on --checkpoint-only` keeps only those checkpoints, for
90
- plans where credits or a proxy keep working past the limit. Inside SpecWithCode
93
+ plans where credits or a proxy keep working past the limit, and never hands off on a
94
+ usage note. Inside SpecWithCode
91
95
  (`SPECWEAVE_STUDIO_THREAD_ID` is set) do not hand off on a usage note: SpecWithCode switches
92
96
  the thread to another provider between turns, and a handoff would release its claims.
93
97
 
@@ -0,0 +1,3 @@
1
+ interface:
2
+ display_name: "SpecWeave Handoff"
3
+ short_description: "Hand work to another tool, account or machine"
@@ -1,7 +1,8 @@
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.1.0
4
+ metadata:
5
+ version: "3.1.0"
5
6
  ---
6
7
  <!-- Generated from skills/sw-increment/SKILL.md by scripts/build/generate-skills.mjs. Edit the source, then npm run build. -->
7
8
 
@@ -19,8 +20,7 @@ and one PR.
19
20
  ACs and tasks to its spec.md instead of opening another.
20
21
  - Read the code the change touches before writing Approach. If `GLOSSARY.md` exists,
21
22
  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).
23
+ - Unsure what to build at all, or the user says "grill me": run sw-grill-me first.
24
24
 
25
25
  ## Decide
26
26
 
@@ -0,0 +1,3 @@
1
+ interface:
2
+ display_name: "SpecWeave Increment"
3
+ short_description: "Plan work as a spec with numbered acceptance criteria"
@@ -1,7 +1,8 @@
1
1
  ---
2
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.1.0
4
+ metadata:
5
+ version: "3.1.0"
5
6
  ---
6
7
  <!-- Generated from skills/sw-review/SKILL.md by scripts/build/generate-skills.mjs. Edit the source, then npm run build. -->
7
8
 
@@ -35,9 +36,12 @@ This is also the quality check: its verdict says whether the increment is ready.
35
36
  restate the implementation) →
36
37
  portability (bash-only commands, `\` paths, BOMs, `>>` in PowerShell).
37
38
  `--full`: run the three lenses correctness, security and spec compliance separately
38
- (in parallel if your tool has subagents) and merge, dropping duplicates.
39
- 4. **Report** in the shape below. Optional machine form, `reports/review.json`:
40
- `{"ok":false,"findings":[{"severity":"high","file":"src/a.ts","line":88,"summary":"..."}]}`.
39
+ (in parallel if your tool has subagents). Each lens returns only a JSON list of
40
+ `{"severity","file","line","summary","verified"}`; merge by deduping on (file,line),
41
+ then re-open every line yourself before it goes in the report.
42
+ 4. **Report** in the shape below; `specweave complete` reads its verdict line. Optional
43
+ machine form, `reports/review.json`, nothing gates on it:
44
+ `{"ok":false,"findings":[{"severity":"high","file":"src/a.ts","line":88,"summary":"...","verified":true}]}`.
41
45
  5. **Hand back.** Each critical or high finding becomes a task in spec.md
42
46
  (`### T-09 Fix empty evidence` + `- AC: AC-02 | Files: ... | Test: ...`) for sw-do, or
43
47
  is fixed and re-tested now. Then verify again and close with sw-done.
@@ -0,0 +1,3 @@
1
+ interface:
2
+ display_name: "SpecWeave Review"
3
+ short_description: "Adversarial review of an increment before it ships"
@@ -1,12 +1,15 @@
1
1
  {
2
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"],
3
+ "core": [
4
+ "increment",
5
+ "grill-me",
6
+ "do",
7
+ "auto",
8
+ "done",
9
+ "review",
10
+ "handoff"
11
+ ],
4
12
  "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
13
  {
11
14
  "name": "glossary",
12
15
  "summary": "Build GLOSSARY.md: each domain term across business, data, code and UI",
@@ -28,5 +31,10 @@
28
31
  "detect": "jev"
29
32
  }
30
33
  ],
31
- "retired": ["qa", "task", "brainstorm", "team"]
34
+ "retired": [
35
+ "qa",
36
+ "task",
37
+ "brainstorm",
38
+ "team"
39
+ ]
32
40
  }
@@ -1,7 +1,8 @@
1
1
  ---
2
2
  description: Build the shared language - interview the user term by term and write GLOSSARY.md with what each term means in the business, the data, the code and the UI. Use for "glossary", "ubiquitous language".
3
3
  argument-hint: "[term...] [--check]"
4
- version: 1.0.0
4
+ metadata:
5
+ version: "1.0.0"
5
6
  ---
6
7
  <!-- Generated from skills/sw-glossary/SKILL.md by scripts/build/generate-skills.mjs. Edit the source, then npm run build. -->
7
8
 
@@ -0,0 +1,3 @@
1
+ interface:
2
+ display_name: "SpecWeave Glossary"
3
+ short_description: "Build GLOSSARY.md term by term with the user"
@@ -1,7 +1,8 @@
1
1
  ---
2
2
  description: Use Jev or optional OpenAI Decisions for bounded routing, shell-command risk, text screening and failure triage. Use for "jev", "system one", or "classify this".
3
3
  argument-hint: "[doctor|setup|ask|route|task|guard|screen|failure|browse|usage]"
4
- version: 3.0.1
4
+ metadata:
5
+ version: "3.0.1"
5
6
  ---
6
7
  <!-- Generated from skills/sw-jev/SKILL.md by scripts/build/generate-skills.mjs. Edit the source, then npm run build. -->
7
8
 
@@ -90,8 +91,10 @@ curl -sS https://openrouter.ai/api/v1/systemone -H "Content-Type: application/js
90
91
  ledger task) · `guard "<command>"` · `screen <file>` · `failure <file>` · `ask --state @s.json --questions @q.json`
91
92
  · `browse --goal "<goal>" --url "<url>"` (headless, allow-listed domains only, never types text Jev chose, skips
92
93
  pay/delete/sign-out controls unless `--allow-sensitive`) · `usage`. Each is `specweave jev <action>`; `--json` for
93
- machines. The guard can run as a Claude Code `PreToolUse` hook for one project: `specweave jev setup --guard-bash`
94
- (`--no-guard-bash` removes it). In every other tool, call `specweave jev guard` yourself.
94
+ machines. `specweave jev setup --guard-bash` writes the config flag, the `.specweave/state/jev-guard.enabled` marker
95
+ and a project `PreToolUse` hook (`--no-guard-bash` removes all three); in other tools call `jev guard` yourself.
96
+ Never send Jev code, prose, counting, date maths, another model's free text or a question whose answers you cannot
97
+ enumerate; below `jev.thresholds.route` treat the answer as no answer.
95
98
 
96
99
  ## Guard a shell command
97
100
 
@@ -108,7 +111,7 @@ arms: `destructive_remote` at confidence ≥ `guardDeny` (0.85); destructiveness
108
111
  scope; `local_irreversible` at confidence ≥ `guardDeny` *and* destructiveness ≥ `guardWarn` (0.5); or
109
112
  p(`local_irreversible`) + p(`destructive_remote`) ≥ `guardDeny` with destructiveness ≥ `guardWarn`. **Warn** when
110
113
  destructiveness ≥ `guardWarn` or the scope is `shared_or_remote`, `local_irreversible` or `destructive_remote` (a
111
- low-confidence remote reading never falls to allow). A denied command is the user's to approve.
114
+ low-confidence remote reading never falls to allow). A denied command is the user's to approve: stop and ask; do not reword it, wrap it or edit config around it.
112
115
 
113
116
  ## Screen pulled text, triage a red run
114
117
 
@@ -0,0 +1,3 @@
1
+ interface:
2
+ display_name: "SpecWeave Jev"
3
+ short_description: "Bounded decisions through Jev (System One)"
@@ -1,7 +1,8 @@
1
1
  ---
2
2
  description: Keep a project's goal, decisions, work items, artifacts and briefs portable across AI tools and accounts. Use for project coordination, "project brief", "what is this project about".
3
3
  argument-hint: "[show|init|set|brief|work-add|artifact-add|routine-add]"
4
- version: 3.0.0
4
+ metadata:
5
+ version: "3.0.0"
5
6
  ---
6
7
  <!-- Generated from skills/sw-project/SKILL.md by scripts/build/generate-skills.mjs. Edit the source, then npm run build. -->
7
8
 
@@ -0,0 +1,3 @@
1
+ interface:
2
+ display_name: "SpecWeave Project"
3
+ short_description: "Keep a project's goal and briefs portable across tools"
@@ -1,7 +1,8 @@
1
1
  ---
2
2
  description: Sync SpecWeave increments with GitHub, Jira or Azure DevOps - push progress, pull or import issues, check token and health, run setup. Use for "sync", "push to GitHub", "import issues".
3
3
  argument-hint: "push|pull|status|setup [increment-id]"
4
- version: 3.0.0
4
+ metadata:
5
+ version: "3.0.0"
5
6
  ---
6
7
  <!-- Generated from skills/sw-sync/SKILL.md by scripts/build/generate-skills.mjs. Edit the source, then npm run build. -->
7
8
 
@@ -0,0 +1,3 @@
1
+ interface:
2
+ display_name: "SpecWeave Sync"
3
+ short_description: "Sync increments with GitHub, Jira or Azure DevOps"
@@ -13,7 +13,7 @@ SpecWeave increments live in `.specweave/increments/NNNN-slug/spec.md`: Problem,
13
13
  4. When the last task is done or skipped, without asking: `specweave verify`, a fresh-context review (subagent or new session) for anything that ships, `specweave complete NNNN`. PR-shipped work needs `task done` first.
14
14
  5. Stopping with tasks left, or switching tools: `specweave handoff --reason "<why>"`.
15
15
 
16
- **Handoff.** When the user says "hand off", "out of tokens" or "switching accounts", or "[Usage limit reached" appears (outside SpecWithCode), run `specweave handoff --reason "<why>"`; tell them to say "pick up" in the other tool. "[Usage limit approaching" or usage heads-ups mean keep working; say so. When the user says "pick up", run `specweave pickup`; continue through step 4, passing any given id/title. Take the newest handoff if several; say which.
16
+ **Handoff.** When the user says "hand off", "out of tokens" or "switching accounts", or "[Usage limit reached" appears (not in SpecWithCode or auto-handoff checkpoint mode), run `specweave handoff --reason "<why>"`; tell them to say "pick up" in the other tool. Other usage notes mean keep working; say so. When the user says "pick up", run `specweave pickup`; continue through step 4, passing any given id/title. Take the newest handoff if several; say which.
17
17
 
18
18
  Tasks in spec.md: `### T-01 Title`, then `- AC: AC-01 | Files: src/a.ts, tests/e2e/a.test.ts | Test: npm test -- e2e/a`. ACs derive from done tasks. Notes: `specweave note "<text>"`. Skills: `.agents/skills/sw-*` and `.claude/skills/sw-*`; other tools: `npx vskill install anton-abyzov/specweave/sw-do`.
19
19
  <!-- /SECTION -->
@@ -49,23 +49,7 @@ Umbrella project: nested repos live under `repositories/<org>/<repo>/`; commit i
49
49
  <!-- SECTION:jev when="jev" -->
50
50
  ## Jev (System One) — closed-set decisions
51
51
 
52
- Jev answers questions whose every possible answer can be written down in advance: about 250 ms, about $0.00002, calibrated probabilities, no generation. Delegate the decision, then act on it yourself.
53
-
54
- | Moment | Command |
55
- |---|---|
56
- | Before choosing a skill or a subagent model tier | `specweave jev route "<prompt>"` |
57
- | Picking the tier for one task already in the ledger | `specweave jev task T-NN` — a suggestion you act on; nothing re-routes models behind you |
58
- | Before an unattended risky shell command | `specweave jev guard "<command>"` — exit 0 allow, 2 warn, 3 deny |
59
- | Pulled issue / PR / web text, a red test run | `specweave jev screen <file>` · `specweave jev failure <file>` |
60
- | Any other closed set of your own | `specweave jev ask --state @state.json --questions @q.json` |
61
- | Mechanical browser navigation (headless only) | `specweave jev browse --goal "<goal>" --url "<url>"` |
62
- | Is it configured here, what has it cost | `specweave jev doctor` · `specweave jev usage` |
63
-
64
- Exit 4 means Jev is unavailable — continue without it. Never send Jev code, prose, compaction, counting or date maths, another model's free-text output, or a question whose answers you cannot enumerate. Below `jev.thresholds.route` treat the answer as no answer.
65
-
66
- Every call sends its state — prompt text, task titles and ACs, the shell command, test-output tails, screened text, page text and element names — to the configured provider under the user's own key; secret-shaped values are masked heuristically first, best-effort only.
67
-
68
- The Bash guard is per project (`specweave jev setup --guard-bash` writes the config flag, the `.specweave/state/jev-guard.enabled` marker and a project-level `PreToolUse` hook; `--no-guard-bash` removes all three). A regex prefilter skips Jev for `npm test`, `npm run build|test|lint`, `pnpm/yarn test`, `cargo test`, `go test` and plain read commands, so project-defined scripts are trusted by the guard. A denied command is the user's to approve — stop and ask; do not reword it, wrap it or edit config around it.
52
+ Before an unattended risky shell command, run `specweave jev guard "<command>"`: exit 0 allow, 2 warn, 3 deny. Exit 4 means Jev is unavailable; continue without it. A denied command is the user's to approve: stop and ask, never reword or wrap it. Route, task, screen, failure, ask and browse, what each call sends to the provider, and the guard hook and prefilter are in the sw-jev skill.
69
53
  <!-- /SECTION -->
70
54
 
71
55
  ## Commands