@specsafe/cli 0.3.5 → 0.4.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 (53) hide show
  1. package/dist/commands/complete.d.ts.map +1 -1
  2. package/dist/commands/complete.js +4 -1
  3. package/dist/commands/complete.js.map +1 -1
  4. package/dist/commands/done.d.ts +3 -0
  5. package/dist/commands/done.d.ts.map +1 -0
  6. package/dist/commands/done.js +237 -0
  7. package/dist/commands/done.js.map +1 -0
  8. package/dist/commands/explore.d.ts +3 -0
  9. package/dist/commands/explore.d.ts.map +1 -0
  10. package/dist/commands/explore.js +236 -0
  11. package/dist/commands/explore.js.map +1 -0
  12. package/dist/commands/new.d.ts.map +1 -1
  13. package/dist/commands/new.js +312 -27
  14. package/dist/commands/new.js.map +1 -1
  15. package/dist/commands/spec.d.ts.map +1 -1
  16. package/dist/commands/spec.js +257 -25
  17. package/dist/commands/spec.js.map +1 -1
  18. package/dist/commands/test-apply.d.ts +3 -0
  19. package/dist/commands/test-apply.d.ts.map +1 -0
  20. package/dist/commands/test-apply.js +228 -0
  21. package/dist/commands/test-apply.js.map +1 -0
  22. package/dist/commands/test-create.d.ts +3 -0
  23. package/dist/commands/test-create.d.ts.map +1 -0
  24. package/dist/commands/{test.js → test-create.js} +79 -30
  25. package/dist/commands/test-create.js.map +1 -0
  26. package/dist/commands/verify.d.ts +3 -0
  27. package/dist/commands/verify.d.ts.map +1 -0
  28. package/dist/commands/verify.js +288 -0
  29. package/dist/commands/verify.js.map +1 -0
  30. package/dist/index.d.ts +1 -0
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +46 -6
  33. package/dist/index.js.map +1 -1
  34. package/dist/rules/registry.js +1 -1
  35. package/dist/rules/registry.js.map +1 -1
  36. package/dist/utils/detectTools.js +2 -2
  37. package/dist/utils/detectTools.js.map +1 -1
  38. package/dist/utils/generateToolConfig.d.ts +1 -1
  39. package/dist/utils/generateToolConfig.d.ts.map +1 -1
  40. package/dist/utils/generateToolConfig.js +990 -207
  41. package/dist/utils/generateToolConfig.js.map +1 -1
  42. package/dist/utils/testRunner.d.ts +39 -0
  43. package/dist/utils/testRunner.d.ts.map +1 -0
  44. package/dist/utils/testRunner.js +325 -0
  45. package/dist/utils/testRunner.js.map +1 -0
  46. package/package.json +3 -3
  47. package/dist/commands/code.d.ts +0 -3
  48. package/dist/commands/code.d.ts.map +0 -1
  49. package/dist/commands/code.js +0 -53
  50. package/dist/commands/code.js.map +0 -1
  51. package/dist/commands/test.d.ts +0 -3
  52. package/dist/commands/test.d.ts.map +0 -1
  53. package/dist/commands/test.js.map +0 -1
@@ -4,12 +4,14 @@ import ora from 'ora';
4
4
  import { writeFile, mkdir, readdir } from 'fs/promises';
5
5
  import { join, basename } from 'path';
6
6
  import { Workflow, ProjectTracker } from '@specsafe/core';
7
+ import { input, editor, select } from '@inquirer/prompts';
7
8
  export const newCommand = new Command('new')
8
- .description('Create a new spec')
9
- .argument('<name>', 'Spec name (kebab-case)')
9
+ .description('Create a new spec with interactive PRD creation')
10
+ .argument('[name]', 'Spec name (kebab-case)')
10
11
  .option('-d, --description <desc>', 'Spec description')
11
12
  .option('-a, --author <author>', 'Author name', 'developer')
12
13
  .option('-n, --dry-run', 'Preview changes without writing files')
14
+ .option('--skip-interactive', 'Skip interactive prompts and use defaults')
13
15
  .action(async (name, options) => {
14
16
  const spinner = ora('Creating new spec...').start();
15
17
  try {
@@ -45,27 +47,170 @@ export const newCommand = new Command('new')
45
47
  // Directory doesn't exist yet, that's fine
46
48
  }
47
49
  const id = `SPEC-${date}-${String(maxSuffix + 1).padStart(3, '0')}`;
50
+ // Interactive mode or defaults
51
+ spinner.stop();
52
+ // Get feature name if not provided
53
+ let featureName = name;
54
+ if (!featureName && !options.skipInteractive) {
55
+ featureName = await input({
56
+ message: 'Feature name (kebab-case):',
57
+ validate: (value) => value.length > 0 || 'Feature name is required'
58
+ });
59
+ }
60
+ else if (!featureName) {
61
+ featureName = 'untitled-feature';
62
+ }
63
+ // Interactive PRD + BRD creation
64
+ let problemStatement = '';
65
+ let userStories = '';
66
+ let acceptanceCriteria = '';
67
+ let technicalConsiderations = '';
68
+ let businessJustification = '';
69
+ let successMetrics = '';
70
+ let stakeholders = '';
71
+ let timeline = '';
72
+ let priority = 'P1';
73
+ if (!options.skipInteractive && !options.dryRun) {
74
+ console.log(chalk.blue('\nšŸ“‹ Let\'s create a Product Requirements Document (PRD)\n'));
75
+ problemStatement = await editor({
76
+ message: 'Problem Statement (what problem does this solve?):',
77
+ default: '<!-- Describe the problem this feature solves -->'
78
+ });
79
+ userStories = await editor({
80
+ message: 'User Stories (who benefits and how?):',
81
+ default: `As a [type of user]
82
+ I want [some goal]
83
+ So that [some reason]
84
+
85
+ <!-- Add more user stories as needed -->`
86
+ });
87
+ acceptanceCriteria = await editor({
88
+ message: 'Acceptance Criteria (how do we know it\'s done?):',
89
+ default: `- [ ] Criterion 1
90
+ - [ ] Criterion 2
91
+ - [ ] Criterion 3`
92
+ });
93
+ const technicalConsiderations = await editor({
94
+ message: 'Technical Requirements (dependencies, constraints, stack):',
95
+ default: `<!-- Technical constraints, dependencies, integrations needed -->
96
+ - Required APIs:
97
+ - Data storage:
98
+ - Security requirements:`
99
+ });
100
+ console.log(chalk.blue('\nšŸ’¼ Now let\'s create a Business Requirements Document (BRD)\n'));
101
+ businessJustification = await editor({
102
+ message: 'Business Justification (why invest in this?):',
103
+ default: `<!-- Why should we build this? Business value, market need, strategic alignment -->`
104
+ });
105
+ successMetrics = await editor({
106
+ message: 'Success Metrics (how do we measure success?):',
107
+ default: `- Metric 1: [e.g., "Reduce processing time by 50%"]
108
+ - Metric 2: [e.g., "Increase user engagement by 20%"]
109
+ - Metric 3: [e.g., "Zero critical bugs in production"]`
110
+ });
111
+ stakeholders = await editor({
112
+ message: 'Stakeholders (who cares about this?):',
113
+ default: `| Role | Name/Team | Responsibility |
114
+ |------|-----------|----------------|
115
+ | Product Owner | | Decision maker |
116
+ | Engineering Lead | | Technical oversight |
117
+ | QA Lead | | Quality assurance |`
118
+ });
119
+ timeline = await editor({
120
+ message: 'Timeline (key milestones):',
121
+ default: `| Phase | Milestone | Target Date |
122
+ |-------|-----------|-------------|
123
+ | 1 | Requirements final | |
124
+ | 2 | Development complete | |
125
+ | 3 | QA complete | |
126
+ | 4 | Release | |`
127
+ });
128
+ priority = await select({
129
+ message: 'Priority:',
130
+ choices: [
131
+ { name: 'P0 - Critical (blocks release)', value: 'P0' },
132
+ { name: 'P1 - High (should have)', value: 'P1' },
133
+ { name: 'P2 - Medium (nice to have)', value: 'P2' },
134
+ ],
135
+ default: 'P1'
136
+ });
137
+ }
138
+ spinner.start('Creating spec files...');
48
139
  // Create spec
49
- const spec = workflow.createSpec(id, name, options.description || `Spec for ${name}`, options.author, basename(process.cwd()));
50
- // Create spec content
51
- const specContent = `# ${name} Specification
140
+ const spec = workflow.createSpec(id, featureName, options.description || `Spec for ${featureName}`, options.author, basename(process.cwd()));
141
+ // Create PRD + BRD-enhanced spec content
142
+ const specContent = `# ${featureName} Specification
52
143
 
53
- **ID:** ${id}
54
- **Status:** SPEC
55
- **Created:** ${new Date().toISOString().split('T')[0]}
144
+ **ID:** ${id}
145
+ **Status:** SPEC
146
+ **Created:** ${new Date().toISOString().split('T')[0]}
56
147
  **Author:** ${options.author}
148
+ **Priority:** ${priority}
149
+
150
+ ---
151
+
152
+ ## PRD (Product Requirements Document)
153
+
154
+ ### Problem Statement
155
+ ${problemStatement || '<!-- Describe the problem this feature solves -->'}
156
+
157
+ ### User Stories
158
+ ${userStories || `As a [type of user]
159
+ I want [some goal]
160
+ So that [some reason]
161
+
162
+ <!-- Add more user stories as needed -->`}
163
+
164
+ ### Acceptance Criteria
165
+ ${acceptanceCriteria || `- [ ] Criterion 1
166
+ - [ ] Criterion 2
167
+ - [ ] Criterion 3`}
168
+
169
+ ### Technical Requirements
170
+ ${technicalConsiderations || `<!-- Technical constraints, dependencies, integrations needed -->
171
+ - Required APIs:
172
+ - Data storage:
173
+ - Security requirements:`}
174
+
175
+ ---
176
+
177
+ ## BRD (Business Requirements Document)
178
+
179
+ ### Business Justification
180
+ ${businessJustification || '<!-- Why should we build this? Business value, market need, strategic alignment -->'}
181
+
182
+ ### Success Metrics
183
+ ${successMetrics || `- Metric 1: [e.g., "Reduce processing time by 50%"]
184
+ - Metric 2: [e.g., "Increase user engagement by 20%"]
185
+ - Metric 3: [e.g., "Zero critical bugs in production"]`}
186
+
187
+ ### Stakeholders
188
+ ${stakeholders || `| Role | Name/Team | Responsibility |
189
+ |------|-----------|----------------|
190
+ | Product Owner | | Decision maker |
191
+ | Engineering Lead | | Technical oversight |
192
+ | QA Lead | | Quality assurance |`}
193
+
194
+ ### Timeline
195
+ ${timeline || `| Phase | Milestone | Target Date |
196
+ |-------|-----------|-------------|
197
+ | 1 | Requirements final | |
198
+ | 2 | Development complete | |
199
+ | 3 | QA complete | |
200
+ | 4 | Release | |`}
57
201
 
58
- ## 1. Purpose (WHY)
59
- <!-- Why are we building this? -->
202
+ ---
203
+
204
+ ## Scope (WHAT)
60
205
 
61
- ## 2. Scope (WHAT)
62
206
  ### In Scope
63
- -
207
+ -
64
208
 
65
209
  ### Out of Scope
66
- -
210
+ -
211
+
212
+ ## Requirements
67
213
 
68
- ## 3. Requirements
69
214
  ### Functional Requirements
70
215
  | ID | Requirement | Priority | Acceptance Criteria |
71
216
  |----|-------------|----------|---------------------|
@@ -76,32 +221,53 @@ export const newCommand = new Command('new')
76
221
  |----|-------------|--------|
77
222
  | NFR-1 | | |
78
223
 
79
- ## 4. Technical Approach (HOW)
224
+ ## Scenarios (Given/When/Then)
225
+
226
+ ### Scenario 1: [Name]
227
+ - **Given** [initial context]
228
+ - **When** [action/event occurs]
229
+ - **Then** [expected outcome]
230
+
231
+ ## Technical Approach (HOW)
232
+
233
+ ### Tech Stack
234
+ <!-- Refer to .specsafe/tech-stack.md -->
235
+
236
+ ### Architecture
237
+
238
+ ### Dependencies
239
+
240
+ ## Test Strategy (TDD)
80
241
 
81
- ## 5. Test Strategy (TDD)
82
242
  ### Unit Tests
83
- -
243
+ -
84
244
 
85
245
  ### Integration Tests
86
- -
246
+ -
247
+
248
+ ## Implementation Plan
87
249
 
88
- ## 6. Implementation Plan
89
250
  | Phase | Task | Est. Time | Dependencies |
90
251
  |-------|------|-----------|--------------|
91
252
  | 1 | | | |
92
253
 
93
- ## 7. Success Criteria
254
+ ## Success Criteria
94
255
  - [ ] All P0 requirements met
95
256
  - [ ] All tests passing
96
257
  - [ ] Documentation complete
97
258
 
98
- ## 8. Risks & Mitigations
259
+ ## Risks & Mitigations
260
+
99
261
  | Risk | Probability | Impact | Mitigation |
100
262
  |------|-------------|--------|------------|
101
263
  | | | | |
102
264
 
103
- ## 9. Notes & References
104
- -
265
+ ## Notes & References
266
+ -
267
+
268
+ ---
269
+
270
+ *Generated by SpecSafe v0.4.0 - OpenSpec Workflow*
105
271
  `;
106
272
  const specPath = join('specs/active', `${id}.md`);
107
273
  // Handle dry-run mode
@@ -109,23 +275,138 @@ export const newCommand = new Command('new')
109
275
  spinner.stop();
110
276
  console.log(chalk.cyan('[DRY RUN] Would create the following files:\n'));
111
277
  console.log(chalk.cyan(` ${specPath}`));
112
- console.log(chalk.cyan(`\nContent preview (first 20 lines):\n`));
113
- const previewLines = specContent.split('\n').slice(0, 20).join('\n');
278
+ console.log(chalk.cyan(`\nContent preview (first 30 lines):\n`));
279
+ const previewLines = specContent.split('\n').slice(0, 30).join('\n');
114
280
  console.log(chalk.gray(previewLines));
115
- if (specContent.split('\n').length > 20) {
281
+ if (specContent.split('\n').length > 30) {
116
282
  console.log(chalk.gray(' ... (truncated)'));
117
283
  }
118
284
  console.log(chalk.cyan(`\nWould update PROJECT_STATE.md with spec: ${id}`));
119
285
  process.exit(0);
120
286
  }
287
+ // Create .specsafe directory and supporting files
288
+ await mkdir('.specsafe', { recursive: true });
289
+ // Create tech-stack.md if it doesn't exist
290
+ const techStackPath = join('.specsafe', 'tech-stack.md');
291
+ const techStackContent = `# Tech Stack
292
+
293
+ **Project:** ${basename(process.cwd())}
294
+ **Last Updated:** ${new Date().toISOString().split('T')[0]}
295
+
296
+ ## Core Technologies
297
+
298
+ | Category | Technology | Version | Purpose |
299
+ |----------|------------|---------|---------|
300
+ | Language | TypeScript | ^5.0 | Primary language |
301
+ | Testing | Vitest | ^1.0 | Unit testing |
302
+ | Linting | ESLint | ^8.0 | Code quality |
303
+
304
+ ## Project Structure
305
+
306
+ \`\`\`
307
+ src/
308
+ ā”œā”€ā”€ components/ # UI components
309
+ ā”œā”€ā”€ utils/ # Utility functions
310
+ └── index.ts # Entry point
311
+
312
+ tests/
313
+ └── *.test.ts # Test files
314
+
315
+ specs/
316
+ ā”œā”€ā”€ active/ # Active specs
317
+ ā”œā”€ā”€ completed/ # Completed specs
318
+ └── archive/ # Archived specs
319
+ \`\`\`
320
+
321
+ ## Dependencies
322
+
323
+ ### Production
324
+ - None yet
325
+
326
+ ### Development
327
+ - @specsafe/core
328
+ - @specsafe/cli
329
+ - @specsafe/test-gen
330
+
331
+ ## Guidelines
332
+
333
+ 1. Follow existing code patterns
334
+ 2. Write tests before implementation
335
+ 3. Update specs as requirements change
336
+ 4. Use TypeScript strict mode
337
+
338
+ ---
339
+
340
+ *Auto-generated by specsafe new*
341
+ `;
342
+ // Create rules.md if it doesn't exist
343
+ const rulesContent = `# Project Rules
344
+
345
+ **Project:** ${basename(process.cwd())}
346
+ **Last Updated:** ${new Date().toISOString().split('T')[0]}
347
+
348
+ ## Coding Standards
349
+
350
+ 1. **TypeScript First**: All code must be TypeScript with strict mode enabled
351
+ 2. **Test-Driven**: Write tests before implementation
352
+ 3. **Documentation**: Document all public APIs
353
+ 4. **Error Handling**: Always handle errors gracefully
354
+
355
+ ## SpecSafe Workflow Rules
356
+
357
+ 1. **SPEC Stage**: Requirements must be clear and testable
358
+ 2. **TEST Stage**: All tests must be written before code
359
+ 3. **CODE Stage**: Implementation follows tests exactly
360
+ 4. **QA Stage**: All tests must pass before completion
361
+ 5. **COMPLETE Stage**: Archive spec after completion
362
+
363
+ ## AI Assistant Guidelines
364
+
365
+ When assisting with this project:
366
+
367
+ 1. Always read the relevant spec before making changes
368
+ 2. Follow the acceptance criteria in the PRD
369
+ 3. Update spec status as work progresses
370
+ 4. Suggest running \`specsafe verify\` after changes
371
+ 5. Respect the out-of-scope section
372
+
373
+ ## Communication Style
374
+
375
+ - Be concise but thorough
376
+ - Provide code examples when helpful
377
+ - Explain the "why" behind suggestions
378
+ - Flag any spec violations immediately
379
+
380
+ ---
381
+
382
+ *Auto-generated by specsafe new*
383
+ `;
121
384
  // Create spec file
122
385
  await mkdir('specs/active', { recursive: true });
123
386
  await writeFile(specPath, specContent);
387
+ // Create supporting files (only if they don't exist)
388
+ try {
389
+ await writeFile(techStackPath, techStackContent, { flag: 'wx' });
390
+ }
391
+ catch {
392
+ // File already exists, skip
393
+ }
394
+ try {
395
+ await writeFile(join('.specsafe', 'rules.md'), rulesContent, { flag: 'wx' });
396
+ }
397
+ catch {
398
+ // File already exists, skip
399
+ }
124
400
  // Update project state
125
401
  await tracker.addSpec(spec);
126
402
  spinner.succeed(chalk.green(`Created spec: ${id}`));
127
403
  console.log(chalk.blue(` Location: ${specPath}`));
128
- console.log(chalk.gray(' Edit the spec to add requirements, then run: specsafe spec <id>'));
404
+ console.log(chalk.blue(` Tech Stack: .specsafe/tech-stack.md`));
405
+ console.log(chalk.blue(` Rules: .specsafe/rules.md`));
406
+ console.log(chalk.gray('\n Next steps:'));
407
+ console.log(chalk.gray(` 1. Edit ${specPath} to refine requirements`));
408
+ console.log(chalk.gray(` 2. Run: specsafe spec ${id}`));
409
+ console.log(chalk.gray(` 3. Or explore: specsafe explore`));
129
410
  }
130
411
  catch (error) {
131
412
  spinner.fail(chalk.red(`Failed to create spec: ${error.message}`));
@@ -135,6 +416,10 @@ export const newCommand = new Command('new')
135
416
  else if (error.message.includes('already exists')) {
136
417
  console.log(chalk.gray('šŸ’” Tip: Use a different spec name or delete the existing spec first.'));
137
418
  }
419
+ else if (error.message.includes('User force closed')) {
420
+ console.log(chalk.gray('šŸ’” Tip: Creation was cancelled.'));
421
+ process.exit(0);
422
+ }
138
423
  process.exit(1);
139
424
  }
140
425
  });
@@ -1 +1 @@
1
- {"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../src/commands/spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,WAAW,SA4EpB,CAAC"}
1
+ {"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../src/commands/spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,WAAW,SA2NpB,CAAC"}