sddx-workflow 0.8.0 → 0.9.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.
package/dist/cli.js CHANGED
@@ -135,6 +135,20 @@ var PROVIDERS = {
135
135
  { src: "codex-skills/review/SKILL.md", dest: ".agents/skills/review/SKILL.md" },
136
136
  { src: "codex-skills/finish/SKILL.md", dest: ".agents/skills/finish/SKILL.md" }
137
137
  ]
138
+ },
139
+ gemini: {
140
+ name: "Gemini CLI",
141
+ dirs: [],
142
+ files: [
143
+ { src: "gemini.md", dest: "GEMINI.md" }
144
+ ]
145
+ },
146
+ zed: {
147
+ name: "Zed",
148
+ dirs: [],
149
+ files: [
150
+ { src: "zed-rules/sddx-workflow.md", dest: ".rules" }
151
+ ]
138
152
  }
139
153
  };
140
154
  var ALL_PROVIDER_IDS = Object.keys(PROVIDERS);
@@ -169,6 +183,7 @@ async function initCommand(options) {
169
183
  }
170
184
  }
171
185
  const claudeExisted = import_fs2.default.existsSync(import_path2.default.join(cwd, "CLAUDE.md"));
186
+ const geminiExisted = import_fs2.default.existsSync(import_path2.default.join(cwd, "GEMINI.md"));
172
187
  const agentsExisted = import_fs2.default.existsSync(import_path2.default.join(cwd, "AGENTS.md"));
173
188
  for (const file of CORE_FILES) {
174
189
  copyTemplate(file.src, import_path2.default.join(cwd, file.dest), force);
@@ -178,7 +193,6 @@ async function initCommand(options) {
178
193
  copyTemplate(file.src, import_path2.default.join(cwd, file.dest), force);
179
194
  }
180
195
  }
181
- const providerNames = selectedProviders.map((id) => PROVIDERS[id].name).join(", ");
182
196
  console.log("");
183
197
  console.log(" Done. Next steps:");
184
198
  console.log("");
@@ -189,6 +203,13 @@ async function initCommand(options) {
189
203
  } else {
190
204
  console.log(" 2. CLAUDE.md already exists \u2014 add a reference to .sdd/ files manually");
191
205
  }
206
+ if (selectedProviders.includes("gemini")) {
207
+ if (!geminiExisted) {
208
+ console.log(" GEMINI.md was created \u2014 Gemini CLI will read it automatically");
209
+ } else {
210
+ console.log(" GEMINI.md already exists \u2014 add a reference to .sdd/ files manually");
211
+ }
212
+ }
192
213
  if (selectedProviders.includes("codex")) {
193
214
  if (!agentsExisted) {
194
215
  console.log(" AGENTS.md was created \u2014 Codex will read it automatically");
@@ -196,8 +217,19 @@ async function initCommand(options) {
196
217
  console.log(" AGENTS.md already exists \u2014 add a reference to .sdd/ files manually");
197
218
  }
198
219
  }
199
- console.log(` 3. Slash commands are ready in: ${providerNames}. Type / to see them.
200
- `);
220
+ const commandProviders = ["claude-code", "copilot", "codex"];
221
+ const withCommands = selectedProviders.filter((id) => commandProviders.includes(id));
222
+ const rulesOnly = selectedProviders.filter((id) => !commandProviders.includes(id));
223
+ if (withCommands.length > 0) {
224
+ const names = withCommands.map((id) => PROVIDERS[id].name).join(", ");
225
+ console.log(` 3. Slash commands ready in: ${names}. Type / to see them.`);
226
+ }
227
+ if (rulesOnly.length > 0) {
228
+ const names = rulesOnly.map((id) => PROVIDERS[id].name).join(", ");
229
+ const step = withCommands.length === 0 ? "3." : " ";
230
+ console.log(` ${step} Context rules installed for: ${names}. The agent reads workflow.md on every task.`);
231
+ }
232
+ console.log("");
201
233
  }
202
234
 
203
235
  // src/commands/add.ts
@@ -257,7 +289,8 @@ var WORKFLOW_FILES = [
257
289
  { src: "copilot-prompts/spec-tasks.prompt.md", dest: ".github/prompts/spec-tasks.prompt.md" },
258
290
  { src: "copilot-prompts/review.prompt.md", dest: ".github/prompts/review.prompt.md" },
259
291
  { src: "copilot-prompts/finish.prompt.md", dest: ".github/prompts/finish.prompt.md" },
260
- { src: "copilot-instructions.md", dest: ".github/copilot-instructions.md" }
292
+ { src: "copilot-instructions.md", dest: ".github/copilot-instructions.md" },
293
+ { src: "zed-rules/sddx-workflow.md", dest: ".rules" }
261
294
  ];
262
295
  function updateCommand() {
263
296
  const cwd = process.cwd();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sddx-workflow",
3
- "version": "0.8.0",
3
+ "version": "0.9.1",
4
4
  "description": "Spec-Driven Development CLI — installs an SDD system in any project",
5
5
  "keywords": [
6
6
  "sdd",
@@ -0,0 +1,38 @@
1
+ # Gemini — Project Context
2
+
3
+ This project uses the SDD Protocol. Read these files before starting any task:
4
+
5
+ 1. **[.sdd/workflow.md](.sdd/workflow.md)** — commands, ceremony levels, and stop points
6
+ 2. **[.sdd/project-overview.md](.sdd/project-overview.md)** — what this app is, its non-goals, domains, and definition of done
7
+ 3. **[.sdd/conventions.md](.sdd/conventions.md)** — project-specific conventions and patterns
8
+
9
+ ## Quick Reference
10
+
11
+ | Intent | Workflow |
12
+ |---|---|
13
+ | Initialize project context | `bootstrap` (new) · `bootstrap --scan` (existing) |
14
+ | Explore / research | `ask` |
15
+ | Surface and validate assumptions | `assume` |
16
+ | Fix a confirmed bug | `bugfix` → `finish` |
17
+ | Restructure without behavior change | `refactor` → `finish` |
18
+ | New feature | `spec-new` → `spec-plan` → `spec-tasks` → `review` → `finish` |
19
+ | Stage + commit after any work | `finish` |
20
+
21
+ Invoke any workflow by name (e.g., "run bootstrap", "start spec-new for auth-refresh").
22
+ Full definitions are in `.sdd/workflow.md`.
23
+
24
+ ## Active Specs
25
+
26
+ <!-- List specs currently in progress — completed specs live in specs/_done/ and are not active context.
27
+ - specs/auth-refresh/ — in spec-tasks (task 3 of 5)
28
+ - specs/payments-v2/ — plan pending approval
29
+ -->
30
+
31
+ ## Domain Files
32
+
33
+ Relevant domain context lives in `.sdd/domains/`. Read the relevant domain file before working in that area.
34
+
35
+ <!-- List domains present in this project, e.g.:
36
+ - [.sdd/domains/auth.md](.sdd/domains/auth.md)
37
+ - [.sdd/domains/payments.md](.sdd/domains/payments.md)
38
+ -->
@@ -1,5 +1,10 @@
1
1
  # Requirements: <Feature Name>
2
2
 
3
+ > **Decisions and trade-offs only — no implementation.** Code snippets are allowed
4
+ > only when they reduce ambiguity (e.g. a function signature, an example input/output,
5
+ > a concrete error shape). If a snippet is doing anything more than that, it belongs
6
+ > in `2-plan.md`, not here.
7
+
3
8
  ## Status
4
9
 
5
10
  - [ ] Draft
@@ -70,6 +75,24 @@ Scenario: <add one scenario per distinct behavior>
70
75
  Business: "Must ship before the Q2 demo on May 15."
71
76
  UX: "Must match the existing row layout in the info modal — no redesign." -->
72
77
 
78
+ ## Assumptions
79
+
80
+ <!-- What this document is taking as given about users, business rules, or scope.
81
+ Different from Constraints (hard rules from outside) and Open Questions (unresolved).
82
+ Each assumption must be **falsifiable** — something the reader could correct.
83
+ Generic filler ("users want a good experience") is not an assumption.
84
+
85
+ Format: what + why we're assuming it + what changes if it's wrong.
86
+
87
+ Example:
88
+ 1. **Users only need the most recent open timestamp, not a history.** — based on
89
+ the original feature request; nobody asked for history.
90
+ If wrong: the data model needs an access_log table, not a single column.
91
+
92
+ 2. **"Opening" means clicking into the file viewer, not previewing in a list.** —
93
+ list previews are passive, not deliberate access.
94
+ If wrong: the trigger surface expands and we'd record many more events. -->
95
+
73
96
  ## Open Questions
74
97
 
75
98
  <!-- Mark each question by whether it blocks planning or can be decided during it.
@@ -101,10 +101,10 @@ Rules:
101
101
  **Purpose:** Lightweight flow for confirmed bugs.
102
102
 
103
103
  Stages (in order, no skipping):
104
- 1. **Reproduce** — confirm the bug with a test or minimal repro case
105
- 2. **Diagnose** — identify root cause, not just symptoms; state any assumptions about the cause
106
- 3. **Fix** — minimal targeted change; do not refactor surrounding code
107
- 4. **Validate** — run tests, confirm the fix doesn't regress anything
104
+ 1. **Reproduce** — if the repo has a test suite, write a failing test that captures the bug before doing anything else. If no suite exists or a test is not feasible, document a deterministic minimal repro (exact steps, inputs, observed vs. expected output) and state explicitly why a test isn't viable. If the bug cannot be reproduced at all, STOP and report — do not guess at a fix.
105
+ 2. **Diagnose** — identify the root cause, not the symptom. State the root cause in one sentence before proposing any fix. If you cannot, run /assume and surface what's missing.
106
+ 3. **Fix** — the minimum change that addresses the stated root cause. Do not refactor surrounding code, rename adjacent symbols, tidy formatting, or fix unrelated issues you notice along the way (note them, don't fix them).
107
+ 4. **Validate** — the failing test from Reproduce now passes, and the full suite is green. If Reproduce used a manual repro, walk it again and confirm the original symptom is gone.
108
108
 
109
109
  Stop points:
110
110
  - After Reproduce: if unable to reproduce, STOP and report
@@ -0,0 +1,23 @@
1
+ This project uses the SDD Protocol. Before starting any task, read:
2
+
3
+ 1. `.sdd/workflow.md` — all commands, ceremony levels, and stop points
4
+ 2. `.sdd/project-overview.md` — what this app is, its non-goals, and domains
5
+ 3. `.sdd/conventions.md` — project-specific conventions and patterns
6
+
7
+ ## Workflows
8
+
9
+ | Workflow | Purpose |
10
+ |---|---|
11
+ | `bootstrap` | Populate project context — interview or codebase scan |
12
+ | `ask` | Research only — no code changes |
13
+ | `assume` | List assumptions and stop for confirmation |
14
+ | `bugfix` | Reproduce → diagnose → fix → validate |
15
+ | `refactor` | Restructure without behavior change |
16
+ | `spec-new` | Scaffold a spec folder |
17
+ | `spec-plan` | Generate technical plan — stop for approval |
18
+ | `spec-tasks` | Execute plan one task at a time, TDD-first |
19
+ | `review` | Final audit before closing |
20
+ | `finish` | Stage files and generate commit message |
21
+
22
+ Invoke by name (e.g., "run bootstrap", "start spec-new for auth-refresh").
23
+ Full definitions are in `.sdd/workflow.md`.