specweave 3.0.23 → 3.1.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 (101) 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/cli/commands/create-increment.js +1 -1
  5. package/dist/src/cli/commands/create-increment.js.map +1 -1
  6. package/dist/src/cli/commands/glossary.d.ts +16 -0
  7. package/dist/src/cli/commands/glossary.d.ts.map +1 -0
  8. package/dist/src/cli/commands/glossary.js +55 -0
  9. package/dist/src/cli/commands/glossary.js.map +1 -0
  10. package/dist/src/cli/commands/init.d.ts +1 -1
  11. package/dist/src/cli/commands/init.d.ts.map +1 -1
  12. package/dist/src/cli/commands/init.js +7 -6
  13. package/dist/src/cli/commands/init.js.map +1 -1
  14. package/dist/src/cli/commands/jev-helpers.d.ts.map +1 -1
  15. package/dist/src/cli/commands/jev-helpers.js +5 -10
  16. package/dist/src/cli/commands/jev-helpers.js.map +1 -1
  17. package/dist/src/cli/commands/project.d.ts.map +1 -1
  18. package/dist/src/cli/commands/project.js +4 -2
  19. package/dist/src/cli/commands/project.js.map +1 -1
  20. package/dist/src/cli/commands/refresh-plugins.d.ts.map +1 -1
  21. package/dist/src/cli/commands/refresh-plugins.js +7 -1
  22. package/dist/src/cli/commands/refresh-plugins.js.map +1 -1
  23. package/dist/src/cli/commands/review.d.ts +24 -0
  24. package/dist/src/cli/commands/review.d.ts.map +1 -0
  25. package/dist/src/cli/commands/review.js +124 -0
  26. package/dist/src/cli/commands/review.js.map +1 -0
  27. package/dist/src/cli/commands/skills.d.ts +18 -0
  28. package/dist/src/cli/commands/skills.d.ts.map +1 -0
  29. package/dist/src/cli/commands/skills.js +130 -0
  30. package/dist/src/cli/commands/skills.js.map +1 -0
  31. package/dist/src/cli/commands/update.d.ts.map +1 -1
  32. package/dist/src/cli/commands/update.js +10 -3
  33. package/dist/src/cli/commands/update.js.map +1 -1
  34. package/dist/src/cli/helpers/init/instruction-file-writer.d.ts.map +1 -1
  35. package/dist/src/cli/helpers/init/instruction-file-writer.js +4 -3
  36. package/dist/src/cli/helpers/init/instruction-file-writer.js.map +1 -1
  37. package/dist/src/cli/helpers/init/plugin-installer.js +1 -1
  38. package/dist/src/cli/helpers/init/plugin-installer.js.map +1 -1
  39. package/dist/src/cli/helpers/issue-tracker/index.js +2 -2
  40. package/dist/src/core/config/types.d.ts +39 -6
  41. package/dist/src/core/config/types.d.ts.map +1 -1
  42. package/dist/src/core/config/types.js +2 -0
  43. package/dist/src/core/config/types.js.map +1 -1
  44. package/dist/src/core/glossary/check.d.ts +44 -0
  45. package/dist/src/core/glossary/check.d.ts.map +1 -0
  46. package/dist/src/core/glossary/check.js +203 -0
  47. package/dist/src/core/glossary/check.js.map +1 -0
  48. package/dist/src/core/glossary/parse.d.ts +40 -0
  49. package/dist/src/core/glossary/parse.d.ts.map +1 -0
  50. package/dist/src/core/glossary/parse.js +112 -0
  51. package/dist/src/core/glossary/parse.js.map +1 -0
  52. package/dist/src/core/hooks/handlers/stop.js +1 -1
  53. package/dist/src/core/hooks/handlers/stop.js.map +1 -1
  54. package/dist/src/core/increment/template-creator.js +1 -1
  55. package/dist/src/core/increment/template-creator.js.map +1 -1
  56. package/dist/src/core/review/brief.d.ts +46 -0
  57. package/dist/src/core/review/brief.d.ts.map +1 -0
  58. package/dist/src/core/review/brief.js +151 -0
  59. package/dist/src/core/review/brief.js.map +1 -0
  60. package/dist/src/core/review/reviewer.d.ts +62 -0
  61. package/dist/src/core/review/reviewer.d.ts.map +1 -0
  62. package/dist/src/core/review/reviewer.js +166 -0
  63. package/dist/src/core/review/reviewer.js.map +1 -0
  64. package/dist/src/core/skills/catalog.d.ts +49 -0
  65. package/dist/src/core/skills/catalog.d.ts.map +1 -0
  66. package/dist/src/core/skills/catalog.js +95 -0
  67. package/dist/src/core/skills/catalog.js.map +1 -0
  68. package/dist/src/core/skills/legacy-skill-hashes.d.ts +11 -0
  69. package/dist/src/core/skills/legacy-skill-hashes.d.ts.map +1 -0
  70. package/dist/src/core/skills/legacy-skill-hashes.js +83 -0
  71. package/dist/src/core/skills/legacy-skill-hashes.js.map +1 -0
  72. package/dist/src/core/skills/project-skills.d.ts +58 -16
  73. package/dist/src/core/skills/project-skills.d.ts.map +1 -1
  74. package/dist/src/core/skills/project-skills.js +169 -32
  75. package/dist/src/core/skills/project-skills.js.map +1 -1
  76. package/dist/src/core/tasks/closure-gate.d.ts +2 -1
  77. package/dist/src/core/tasks/closure-gate.d.ts.map +1 -1
  78. package/dist/src/core/tasks/closure-gate.js +36 -4
  79. package/dist/src/core/tasks/closure-gate.js.map +1 -1
  80. package/package.json +1 -1
  81. package/plugins/PLUGINS-INDEX.md +14 -12
  82. package/plugins/specweave/.claude-plugin/plugin.json +2 -2
  83. package/plugins/specweave/PLUGIN.md +24 -16
  84. package/plugins/specweave/marketplace.json +57 -38
  85. package/plugins/specweave/skills/auto/SKILL.md +8 -38
  86. package/plugins/specweave/skills/auto/agents/openai.yaml +5 -0
  87. package/plugins/specweave/skills/do/SKILL.md +46 -10
  88. package/plugins/specweave/skills/done/SKILL.md +6 -3
  89. package/plugins/specweave/skills/increment/SKILL.md +20 -11
  90. package/plugins/specweave/skills/review/SKILL.md +23 -4
  91. package/plugins/specweave/skills-catalog.json +32 -0
  92. package/plugins/specweave/skills-optional/glossary/SKILL.md +90 -0
  93. package/plugins/specweave/skills-optional/glossary/references/credits.md +33 -0
  94. package/plugins/specweave/skills-optional/grill-me/SKILL.md +99 -0
  95. package/plugins/specweave/{skills/brainstorm → skills-optional/grill-me}/references/credits.md +3 -3
  96. package/src/templates/AGENTS.md.template +7 -1
  97. package/plugins/specweave/skills/brainstorm/SKILL.md +0 -100
  98. package/plugins/specweave/skills/team/SKILL.md +0 -70
  99. /package/plugins/specweave/{skills → skills-optional}/jev/SKILL.md +0 -0
  100. /package/plugins/specweave/{skills → skills-optional}/project/SKILL.md +0 -0
  101. /package/plugins/specweave/{skills → skills-optional}/sync/SKILL.md +0 -0
@@ -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
+ }
@@ -0,0 +1,90 @@
1
+ ---
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
+ argument-hint: "[term...] [--check]"
4
+ version: 1.0.0
5
+ ---
6
+ <!-- Generated from skills/sw-glossary/SKILL.md by scripts/build/generate-skills.mjs. Edit the source, then npm run build. -->
7
+
8
+ # sw-glossary: one word for one thing, everywhere
9
+
10
+ Domain-driven design's ubiquitous language: an Order should be an Order when the
11
+ client talks about it, in the database, in the code and on the screen. When the words
12
+ drift ("purchase" table, `Order` type, "basket" button), agents spend tokens decoding
13
+ jargon, name new code inconsistently and build the wrong thing. A short glossary fixes
14
+ that for every session after it. Run this at a project's start, when a new domain area
15
+ arrives, or whenever one word means two things or two words mean one.
16
+
17
+ ## GLOSSARY.md
18
+
19
+ One file at the repository root. A repo with several bounded contexts keeps a
20
+ `GLOSSARY-MAP.md` at the root that links one `GLOSSARY.md` per context; follow it.
21
+ Create the file when the first term settles, never empty.
22
+
23
+ ```markdown
24
+ # Glossary
25
+
26
+ A shop that sells refurbished laptops to small businesses.
27
+
28
+ ## Ordering
29
+
30
+ ### Order
31
+ A customer's request to buy one or more products, placed at checkout and paid once.
32
+ - Avoid: purchase, basket, transaction
33
+ - Data: `orders` table; its lines in `order_lines`
34
+ - Code: `Order` in `src/orders/order.ts`; `POST /orders`
35
+ - UI: "Order", "My orders"
36
+ - Rules: never deleted; cancelling sets the status to cancelled
37
+ ```
38
+
39
+ - The definition says what the thing **is**, in the client's words, in one or two
40
+ sentences. No implementation detail there.
41
+ - `Avoid` lists the synonyms nobody should use for it. Be opinionated: one term wins.
42
+ - `Data`, `Code` and `UI` say where the term lives at each level. Put table, column,
43
+ type and file names in backticks so `specweave glossary check` can find them. Leave
44
+ out a level the term does not have.
45
+ - `Rules` (optional) holds the invariants the business states about it.
46
+ - Only terms specific to this domain. Timeouts, caches and retries are not glossary
47
+ terms even if the code uses them everywhere.
48
+ - Group terms under `##` headings when clusters appear; a flat list is fine.
49
+
50
+ ## The interview
51
+
52
+ 1. **Harvest.** Read the README, the schema or migrations, the models and types, the
53
+ routes and the UI strings. List the nouns that recur, and every mismatch: one
54
+ concept with several names (`purchases` table, `Order` type, "Basket" label) and
55
+ one name with several meanings ("account" as login and as billing account).
56
+ 2. **Ask in rounds**, as sw-grill-me does: a few terms per round, each question with
57
+ your recommended answer, worded so "yes" accepts it. "The table is `purchases`, the
58
+ type is `Order`, the button says Basket. Call all three an Order?" Use your tool's
59
+ structured question tool when it has one.
60
+ 3. **Sharpen with scenarios.** "A customer pays for 3 items and one ships late: one
61
+ Order or two?" Invent the edge case that forces a boundary.
62
+ 4. **Check the code.** When the user says how something works, read the code. If it
63
+ disagrees ("the code cancels whole Orders; you said a single line can be
64
+ cancelled"), say so and settle which one is right.
65
+ 5. **Write each term as it settles**, not in a batch at the end.
66
+ 6. **Drift is work, not an edit.** Where the code or data uses an avoided word, do not
67
+ rename silently. List it for the user, and plan the renames as an increment
68
+ (sw-increment): a table rename is a migration and the user's call.
69
+
70
+ ## Using it
71
+
72
+ - Every skill writes specs, names, commits and replies in the glossary's terms.
73
+ - `specweave glossary check` lists avoided words used as identifiers in tracked files
74
+ and backticked `Data` or `Code` names that no longer exist, with `file:line`.
75
+ `--strict` exits 1 when it finds any, for CI. `--json` for tools.
76
+ - A new term or a changed meaning comes back here, or into sw-grill-me's interview.
77
+
78
+ ## Configuration
79
+
80
+ `specweave skills enable glossary` installs this skill. A `GLOSSARY.md` or
81
+ `GLOSSARY-MAP.md` at the root installs it too, and adds a short "Shared language"
82
+ section to AGENTS.md on the next `specweave update`.
83
+
84
+ ## Manual path (no CLI)
85
+
86
+ Write GLOSSARY.md by hand in the format above. Without the check, search the code for
87
+ each avoided word yourself (`git grep -n -i -w purchase`) and read the hits.
88
+
89
+ Adapted from mattpocock/skills `domain-modeling` (MIT, Copyright (c) 2026 Matt Pocock);
90
+ see `references/credits.md`.
@@ -0,0 +1,33 @@
1
+ # Credits
2
+
3
+ sw-glossary adapts [mattpocock/skills](https://github.com/mattpocock/skills)
4
+ `skills/engineering/domain-modeling` (MIT): the GLOSSARY.md and GLOSSARY-MAP.md layout,
5
+ `_Avoid_` synonyms, definitions that say what a term is, challenging terms against the
6
+ glossary and the code, and edge-case scenarios that force a boundary. The Data, Code,
7
+ UI and Rules levels and `specweave glossary check` are SpecWeave's.
8
+
9
+ ## mattpocock/skills
10
+
11
+ MIT License
12
+
13
+ Copyright (c) 2026 Matt Pocock
14
+
15
+ ## Permission notice
16
+
17
+ Permission is hereby granted, free of charge, to any person obtaining a copy
18
+ of this software and associated documentation files (the "Software"), to deal
19
+ in the Software without restriction, including without limitation the rights
20
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
21
+ copies of the Software, and to permit persons to whom the Software is
22
+ furnished to do so, subject to the following conditions:
23
+
24
+ The above copyright notice and this permission notice shall be included in all
25
+ copies or substantial portions of the Software.
26
+
27
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
28
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
29
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
30
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
31
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
32
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
33
+ SOFTWARE.
@@ -0,0 +1,99 @@
1
+ ---
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
+ argument-hint: "[topic or increment-id]"
4
+ version: 1.0.0
5
+ ---
6
+ <!-- Generated from skills/sw-grill-me/SKILL.md by scripts/build/generate-skills.mjs. Edit the source, then npm run build. -->
7
+
8
+ # sw-grill-me: settle every decision before building
9
+
10
+ No one knows exactly what they want. The gap between the user and the agent is where
11
+ wrong builds come from, and a model never closes it alone: it fills the gaps with
12
+ guesses. This skill walks the plan's decision tree with the user until nothing is left
13
+ silently assumed. Use it at a project's start, before a change whose shape is unclear,
14
+ or whenever the user asks to be grilled. A clear, small request does not need it.
15
+
16
+ ## How it runs
17
+
18
+ 1. **Read first.** The code the plan touches, `.specweave/config.json`, the open
19
+ increment's spec.md (`specweave task list`) and `GLOSSARY.md` if it exists. Draft
20
+ the problem, the scope and the approach yourself.
21
+ 2. **Map the tree.** List every open decision and what it depends on. Probe the
22
+ things users forget: scope and non-goals; users and flows; the data and the words
23
+ for it; integrations, installs, accounts and keys; failures and edge cases;
24
+ security and privacy; performance and scale; rollout and migration; how a machine
25
+ will check that it works.
26
+ 3. **Facts are yours.** Anything the code, docs, config or a quick command can answer,
27
+ look up (in a subagent if your tool has them). Never ask the user what you could
28
+ find. A lookup still running blocks only the questions that depend on it.
29
+ 4. **Ask in rounds.** Each round asks the whole frontier: every decision whose
30
+ prerequisites are already settled. Number the questions; give each one clause on
31
+ why it matters and your recommended answer, worded so "yes" accepts it. A question
32
+ that depends on another one in the same round waits for the next round.
33
+ 5. **Recompute** after every answer: settled decisions unlock new ones, and some
34
+ answers make others moot. Then ask the next round.
35
+ 6. **Stop** when the frontier is empty and the user confirms you share one picture.
36
+ "Enough" or "your call" stops early: every decision left gets your recommendation
37
+ as a stated default.
38
+
39
+ Plain text, one round per message:
40
+
41
+ ```text
42
+ Q1 Auth provider: who signs users in? Changes the data model and pricing.
43
+ Recommended: Clerk, since the app already uses its React components.
44
+ Q2 Rate limits: per API key or per IP? NAT users share IPs.
45
+ Recommended: per API key.
46
+ ```
47
+
48
+ If your tool has a structured question tool (as Claude Code and Codex do), ask the
49
+ round through it so apps such as SpecWithCode show a card: up to 4 questions per card,
50
+ header `Q1 Auth`, your recommendation first, free answers allowed, multi-select only
51
+ for "which of these services or installs". Split a larger frontier over several cards.
52
+ Never ask for a secret in a question: name the env var or use the app's secret request.
53
+
54
+ ## The words (when GLOSSARY.md exists)
55
+
56
+ - When the user uses a term that conflicts with the glossary, say so at once: "The
57
+ glossary says an Order is one checkout; you mean one shipment. Which is it?"
58
+ - When a word is fuzzy ("account" for both the login and the billing account), propose
59
+ one precise term each.
60
+ - Test a boundary with a concrete scenario: "A customer pays for 3 items and one ships
61
+ late: one Order or two?"
62
+ - When the user states how something works, check the code agrees and surface any
63
+ contradiction.
64
+ - Write each settled term into `GLOSSARY.md` as sw-glossary describes, when it settles.
65
+
66
+ ## Record
67
+
68
+ In the increment's spec.md, under `## Decisions` (before spec.md exists, hold them
69
+ until sw-increment creates it with `specweave create-increment`):
70
+
71
+ ```markdown
72
+ ## Decisions
73
+ ### Asked
74
+ - D-01 Auth provider? → Clerk (user). Changes the data model and pricing.
75
+ ### Defaulted (change any before sw-do)
76
+ - D-04 Rate-limit store → in-memory, Redis later (reversible).
77
+ ### Open
78
+ - none
79
+ ```
80
+
81
+ Apply every answer to Scope, the acceptance criteria and Approach, replacing any text
82
+ it contradicts. Keep a Decision line only when a later change could contradict it:
83
+ hard to reverse, surprising without context, or a real trade-off. Everything else is
84
+ just applied. Do not build until the user confirms; sw-do refuses to run unattended
85
+ while `### Open` has entries.
86
+
87
+ ## Configuration
88
+
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.
92
+
93
+ ## Manual path (no CLI)
94
+
95
+ Nothing here needs the CLI: read the files by hand, ask in rounds, and write the
96
+ decisions into spec.md yourself.
97
+
98
+ Adapted from mattpocock/skills `grilling` and `domain-modeling` (MIT, Copyright (c) 2026
99
+ Matt Pocock); see `references/credits.md`.
@@ -1,12 +1,12 @@
1
1
  # Credits
2
2
 
3
- The Decide part of sw-brainstorm adapts ideas from these MIT-licensed projects. Their
3
+ sw-grill-me, sw-glossary and the Decide step of sw-increment adapt ideas from these MIT-licensed projects. Their
4
4
  copyright and permission notices are kept below, as the MIT license requires.
5
5
 
6
6
  | Project | What we adapted |
7
7
  |---|---|
8
- | [obra/superpowers](https://github.com/obra/superpowers) `skills/brainstorming` | One question at a time; sorting questions into answered, my call and theirs; "a default they never heard is one they couldn't reject"; asking for a description before offering options |
9
- | [mattpocock/skills](https://github.com/mattpocock/skills) `skills/productivity/grilling` | Facts are the agent's job, decisions are the user's; a recommended answer for every question; walking the decision tree until shared understanding ("grill me") |
8
+ | [obra/superpowers](https://github.com/obra/superpowers) `skills/brainstorming` | Sorting questions into answered, my call and theirs; "a default they never heard is one they couldn't reject" |
9
+ | [mattpocock/skills](https://github.com/mattpocock/skills) `skills/productivity/grilling`, `skills/engineering/domain-modeling` | Facts are the agent's job, decisions are the user's; rounds over the frontier of the decision tree, each question with a recommended answer worded so "yes" accepts it ("grill me"); the GLOSSARY.md with _Avoid_ words; challenging terms against the glossary and the code; the three-part test for recording a decision |
10
10
  | [github/spec-kit](https://github.com/github/spec-kit) `templates/commands/clarify.md` | The coverage categories, ranking by impact times uncertainty, the 5-question cap, multiple choice with a recommended option, and writing each answer back into the spec |
11
11
 
12
12
  ## obra/superpowers
@@ -8,7 +8,7 @@ This project uses SpecWeave. Plan increments in `.specweave/increments/NNNN-slug
8
8
  ## The loop
9
9
 
10
10
  1. `specweave pickup`: applies the latest handoff and prints the open increment, next task and ACs, other claims, branch state, notes and project memory.
11
- 2. New work needing ACs or handoff: `specweave create-increment "title"`, then fill spec.md. First ask the user only their critical decisions, one at a time with a recommended answer, and record them under `## Decisions` (sw-brainstorm). If an open increment owns the files, add ACs and tasks there. Small fixes need no increment.
11
+ 2. New work needing ACs or handoff: `specweave create-increment "title"`, then fill spec.md. First ask the user only their critical decisions, one at a time with a recommended answer, and record them under `## Decisions` (sw-increment). If an open increment owns the files, add ACs and tasks there. Small fixes need no increment.
12
12
  3. `specweave task claim T-NN`, edit only that task's Files, commit as `NNNN: what changed`, then `specweave task done T-NN --run "<its Test>"`.
13
13
  4. `specweave verify`, a review in a fresh session for anything that ships, then `specweave complete NNNN`.
14
14
  5. Before stopping or switching tools/accounts: `specweave handoff --reason "<why>"`.
@@ -33,6 +33,12 @@ Tasks in spec.md: `### T-01 Title`, then `- AC: AC-01 | Files: src/a.ts, tests/e
33
33
  Umbrella project: nested repos live under `repositories/<org>/<repo>/`; commit inside each nested repo, then the umbrella.
34
34
  <!-- /SECTION -->
35
35
 
36
+ <!-- SECTION:glossary when="glossary" -->
37
+ ## Shared language
38
+
39
+ `GLOSSARY.md` defines this project's domain terms and what each means in the business, the data, the code and the UI. Use its words in specs, names, commits and replies; never a word a term lists under Avoid. `specweave glossary check` lists drift. A new term or a changed meaning goes into the glossary first (sw-glossary).
40
+ <!-- /SECTION -->
41
+
36
42
  <!-- SECTION:hub when="hub" -->
37
43
  ## Project hub
38
44
 
@@ -1,100 +0,0 @@
1
- ---
2
- description: Widen options, then settle the user's critical decisions one question at a time, each with a recommended answer, before the spec. Use for "brainstorm", "what are our options", "grill me".
3
- argument-hint: "<topic> [--depth quick|standard|deep] [--decide off|critical|deep]"
4
- version: 3.1.0
5
- ---
6
- <!-- Generated from skills/sw-brainstorm/SKILL.md by scripts/build/generate-skills.mjs. Edit the source, then npm run build. -->
7
-
8
- # sw-brainstorm: options, then decisions
9
-
10
- Two parts, used alone or in order. **Options** picks which thing to build. **Decide**
11
- settles the calls only the user can make. sw-increment runs Decide as its own step.
12
- Neither replaces the spec.
13
-
14
- ## Options
15
-
16
- | Depth | Options | Output |
17
- |---|---|---|
18
- | `quick` (default for a narrow question) | 3 | a table and a pick, in the conversation |
19
- | `standard` | 4 to 5 | table, trade-offs, `reports/brainstorm.md` if an increment exists |
20
- | `deep` | 5 to 7, including "do nothing" and one contrarian | written doc, rejected alternatives, risks |
21
-
22
- 1. **Frame.** One sentence: the decision and what makes an answer good. Write 3 to 5
23
- criteria first (cost, time to ship, blast radius, reversibility, who maintains it).
24
- Choosing criteria after seeing the options is how bias gets in.
25
- 2. **Diverge.** Generate before judging, and force variety: the obvious one, the cheap
26
- one (80% for 20%), buy instead of build, do nothing or defer (with its cost), and one
27
- that inverts an assumption everyone makes. Name each in 3 to 6 words.
28
- 3. **Converge.** One table, option by criteria, with a "kills it if" per option. Then a
29
- short paragraph per survivor: how it works, what it costs, what breaks.
30
- 4. **Pick.** The recommendation, the runner-up, and the one fact that would flip it. If
31
- the honest answer is "we need data", name the experiment.
32
-
33
- Contested decisions: run three lenses over the same options, advocate (strongest case),
34
- critic (how each fails in production), pragmatist (what ships this week). In parallel if
35
- your tool supports subagents, otherwise three labelled passes. Merge.
36
-
37
- ## Decide
38
-
39
- Mode comes from `--decide`, else `planning.deepInterview` in `.specweave/config.json`:
40
- `off` skips, `critical` (also when unset) asks at most 5, `deep` has no cap. "Grill me",
41
- "interview me" or "think hard" means `deep` for this run; "just build it" means `off`.
42
-
43
- 1. **Think first.** Read the code the change touches, project config and any draft.
44
- Draft Problem, Scope and Approach yourself, then list every open decision across:
45
- scope and non-goals; users and flows; data model; integrations, installs, accounts
46
- and keys; failures and edge cases; security and privacy; performance and scale;
47
- rollout and migration; how we will know it works.
48
- 2. **Triage.** *Fact*: look it up (code, docs, a subagent if your tool has them), never
49
- ask. *My call*: reversible or low impact, so pick a default. *Theirs*: hard to
50
- reverse, costly, or taste. Only "theirs" reaches the user.
51
- 3. **Ask, one question at a time.** Rank "theirs" by impact times uncertainty and ask
52
- the top one, wait, then the next: an answer often settles or changes the rest.
53
- `critical` stops after 5; a clear request asks nothing and says so. Each question
54
- gets one clause on why it matters and 2 to 4 options, the first your recommendation
55
- marked "(Recommended)" with its trade-off, plus a free answer. "Yes" accepts the
56
- recommendation; "your call" accepts it for every question left.
57
- 4. **Deep ("grill me").** Walk the decision tree: after each answer, ask what it
58
- unlocks, until no "theirs" remains and the user agrees you share one picture. No cap,
59
- still one question at a time with a recommendation. "Enough" stops it; whatever is
60
- left gets a default. Optional extra for longer grilling sessions:
61
- `npx vskill@latest install mattpocock/skills/grilling`.
62
- 5. **Record** in spec.md under `## Decisions`, then apply each answer to Scope, ACs and
63
- Approach, replacing any text it contradicts. Before spec.md exists, hold them and
64
- write them when sw-increment creates it.
65
-
66
- ```markdown
67
- ## Decisions
68
- ### Asked
69
- - D-01 Auth provider? → Clerk (user). Changes the data model and pricing.
70
- ### Defaulted (change any before sw-do)
71
- - D-04 Rate-limit store → in-memory, Redis later (reversible).
72
- ### Open
73
- - none
74
- ```
75
-
76
- **Question cards.** If your tool has a structured question tool (Claude Code's
77
- ask-user-question tool, Codex `request_user_input`), ask through it so apps such as
78
- SpecWithCode show a card: header `D-01 Auth`, the recommended option first, custom
79
- answers allowed, multi-select only for "which of these services or installs". Without
80
- one, write `D-01 <question>` with numbered options and `Recommended: <option>`. Never
81
- ask for a secret in a question; use the app's secret request or name the env var.
82
-
83
- Rules: facts are your job, decisions are the user's. A default the user never saw is
84
- one they could not reject, so list every default. When the user has no shape for the
85
- idea yet, ask them to describe it before offering options; options steer.
86
-
87
- ## Hand off
88
-
89
- `specweave create-increment "<the pick>"` (sw-increment), paste the rejected
90
- alternatives into Approach and the decisions into `## Decisions`. If the user already
91
- knows what they want, skip Options and say why. sw-auto will not start while
92
- `### Open` has entries.
93
-
94
- ## Manual path (no CLI)
95
-
96
- Nothing here needs the CLI: read `.specweave/config.json` by hand and create the
97
- increment folder as sw-increment describes.
98
-
99
- Decide adapts ideas from obra/superpowers `brainstorming`, mattpocock/skills
100
- `grilling` and GitHub Spec Kit `/clarify` (all MIT); see `references/credits.md`.
@@ -1,70 +0,0 @@
1
- ---
2
- description: Run one SpecWeave increment with several agents in parallel - any tool or account, a worktree each, claims through the ledger, one close. Use for "team", "parallel agents", 3+ disjoint lanes.
3
- argument-hint: "[increment-id]"
4
- version: 3.0.0
5
- ---
6
- <!-- Generated from skills/sw-team/SKILL.md by scripts/build/generate-skills.mjs. Edit the source, then npm run build. -->
7
-
8
- # sw-team: several agents, one increment
9
-
10
- Agents can be Claude Code, Codex, Cursor, Grok, another account or a person. They
11
- coordinate only through committed files: spec.md (tasks), `ledger.jsonl` (claims and
12
- evidence) and handoffs. No message bus is needed; your tool's subagents or agent teams
13
- are an accelerator, never a requirement.
14
-
15
- ## You are the lead
16
-
17
- You split, start, watch, merge and close. You do not implement. Fan out only with three
18
- or more disjoint lanes or 15+ tasks; otherwise use sw-do.
19
-
20
- ## 1. Split
21
-
22
- 1. `Files` is the ownership unit. Two tasks that touch one file cannot run in parallel:
23
- merge them, or put `**Dependencies**: T-01` under the later one. Shared contracts
24
- (types, schema, migrations) go in an early task the others depend on.
25
- 2. Group tasks into lanes with disjoint `Files`: 2 to 5 lanes, one agent each.
26
- 3. `specweave task list 0042` shows every task open. Commit spec.md.
27
-
28
- ## 2. Start each agent
29
-
30
- One worktree and branch per agent:
31
- `git worktree add ../0042-api -b inc/0042-api`. Then give that agent (a subagent, a
32
- terminal in the worktree, another tool or account) this brief:
33
-
34
- ```text
35
- You are agent "api" on increment 0042 in ../0042-api (branch inc/0042-api).
36
- Your tasks: T-01, T-02. Run the sw-do loop (`specweave task next 0042`, claim, ...)
37
- on your tasks only. Edit only their Files. Commit as "0042: ...". `task done --run`
38
- needs exit 0. When done or blocked: `specweave task release --all-mine`,
39
- `specweave note "api: <done | blocked: why>" 0042`, commit and push your branch.
40
- ```
41
-
42
- Set `SPECWEAVE_AGENT=api` in that agent's environment so its claims are distinct.
43
- In Claude Code, `specweave team` opens agent-team panes for the same setup.
44
-
45
- ## 3. Watch cheaply
46
-
47
- Poll `specweave task list 0042` instead of chatting. `blocked` rows are your queue:
48
- unblock (supply the secret, split the task, decide) and tell only that agent. A claim
49
- older than 2 hours with no progress is stale; a replacement agent claims it with
50
- `specweave task claim T-NN --force`. Agents' notes show in `specweave pickup --no-apply`.
51
- Lane agents do not use `specweave handoff`: it moves the one shared handoff pointer.
52
-
53
- ## 4. Merge and close
54
-
55
- 1. Merge the lane branches in dependency order. `ledger.jsonl` conflicts resolve by
56
- keeping every line from both sides.
57
- 2. `specweave verify 0042` on the merged tree; red becomes a fix task for one agent.
58
- 3. sw-review on the merged diff, then `specweave complete 0042`. Only the lead closes.
59
- 4. `git worktree remove ../0042-api` for each lane.
60
-
61
- ## Manual path (no CLI)
62
-
63
- Same split and brief; each agent appends its own `claim`, `done` and `release` lines to
64
- `ledger.jsonl` as in sw-do's manual path, plus a `note` line as in sw-handoff's.
65
-
66
- ## Anti-patterns
67
-
68
- - An agent editing outside its tasks' `Files`. Add a task instead.
69
- - One increment per agent: you lose the single ledger and the single verify.
70
- - The lead implementing "just this small piece", or closing while a claim is live.