sddx-workflow 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +37 -4
- package/package.json +1 -1
- package/templates/gemini.md +38 -0
- package/templates/zed-rules/sddx-workflow.md +23 -0
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
|
-
|
|
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
|
@@ -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
|
+
-->
|
|
@@ -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`.
|