sdd-mcp-server 2.0.3 → 2.2.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 (43) hide show
  1. package/README.md +65 -33
  2. package/atomicWrite.js +86 -0
  3. package/dist/adapters/cli/SDDToolAdapter.js +15 -5
  4. package/dist/adapters/cli/SDDToolAdapter.js.map +1 -1
  5. package/dist/application/services/ProjectContextService.js +4 -4
  6. package/dist/application/services/ProjectInitializationService.js +23 -23
  7. package/dist/application/services/ProjectService.js +2 -2
  8. package/dist/application/services/QualityGateService.js +4 -4
  9. package/dist/application/services/SteeringContextLoader.js +2 -2
  10. package/dist/application/services/SteeringDocumentService.js +4 -4
  11. package/dist/application/services/TemplateService.js +2 -2
  12. package/dist/application/services/WorkflowValidationService.js +4 -4
  13. package/dist/application/services/staticSteering.js +10 -10
  14. package/dist/cli/install-skills.d.ts +38 -2
  15. package/dist/cli/install-skills.js +221 -5
  16. package/dist/cli/install-skills.js.map +1 -1
  17. package/dist/cli/migrate-kiro.d.ts +2 -0
  18. package/dist/cli/migrate-kiro.js +91 -0
  19. package/dist/cli/migrate-kiro.js.map +1 -0
  20. package/dist/cli/sdd-mcp-cli.d.ts +3 -1
  21. package/dist/cli/sdd-mcp-cli.js +26 -6
  22. package/dist/cli/sdd-mcp-cli.js.map +1 -1
  23. package/dist/index.js +26 -17
  24. package/dist/index.js.map +1 -1
  25. package/dist/infrastructure/mcp/ResourceManager.js +2 -2
  26. package/dist/utils/atomicWrite.d.ts +55 -0
  27. package/dist/utils/atomicWrite.js +84 -0
  28. package/dist/utils/atomicWrite.js.map +1 -0
  29. package/dist/utils/documentGenerator.js +1 -1
  30. package/dist/utils/specGenerator.js +3 -3
  31. package/mcp-server.js +5 -4
  32. package/package.json +3 -1
  33. package/skills/sdd-commit/SKILL.md +14 -0
  34. package/skills/sdd-design/SKILL.md +15 -0
  35. package/skills/sdd-implement/SKILL.md +15 -0
  36. package/skills/sdd-requirements/SKILL.md +9 -2
  37. package/skills/sdd-tasks/SKILL.md +14 -0
  38. package/steering/AGENTS.md +281 -0
  39. package/steering/commit.md +59 -0
  40. package/steering/linus-review.md +153 -0
  41. package/steering/owasp-top10-check.md +49 -0
  42. package/steering/principles.md +639 -0
  43. package/steering/tdd-guideline.md +324 -0
@@ -50,7 +50,7 @@ let WorkflowValidationService = class WorkflowValidationService {
50
50
  let readinessScore = 0;
51
51
  try {
52
52
  // Check if requirements document exists
53
- const requirementsPath = `${project.path}/.kiro/specs/${project.name}/requirements.md`;
53
+ const requirementsPath = `${project.path}/.spec/specs/${project.name}/requirements.md`;
54
54
  if (!(await this.fileSystem.exists(requirementsPath))) {
55
55
  missingItems.push('requirements.md file not found');
56
56
  }
@@ -168,7 +168,7 @@ let WorkflowValidationService = class WorkflowValidationService {
168
168
  let readinessScore = 0;
169
169
  try {
170
170
  // Check if design document exists
171
- const designPath = `${project.path}/.kiro/specs/${project.name}/design.md`;
171
+ const designPath = `${project.path}/.spec/specs/${project.name}/design.md`;
172
172
  if (!(await this.fileSystem.exists(designPath))) {
173
173
  missingItems.push('design.md file not found');
174
174
  }
@@ -292,7 +292,7 @@ let WorkflowValidationService = class WorkflowValidationService {
292
292
  let readinessScore = 0;
293
293
  try {
294
294
  // Check if tasks document exists
295
- const tasksPath = `${project.path}/.kiro/specs/${project.name}/tasks.md`;
295
+ const tasksPath = `${project.path}/.spec/specs/${project.name}/tasks.md`;
296
296
  if (!(await this.fileSystem.exists(tasksPath))) {
297
297
  missingItems.push('tasks.md file not found');
298
298
  }
@@ -414,7 +414,7 @@ let WorkflowValidationService = class WorkflowValidationService {
414
414
  const traceabilityIssues = [];
415
415
  const coverageGaps = [];
416
416
  try {
417
- const basePath = `${project.path}/.kiro/specs/${project.name}`;
417
+ const basePath = `${project.path}/.spec/specs/${project.name}`;
418
418
  // Read all phase documents
419
419
  const documents = {};
420
420
  const files = ['requirements.md', 'design.md', 'tasks.md'];
@@ -6,7 +6,7 @@ export async function ensureStaticSteeringDocuments(projectPath, steeringService
6
6
  const fs = await import('fs');
7
7
  const path = await import('path');
8
8
  // Linus review (always-on quality guardrail)
9
- const linusReviewPath = path.join(projectPath, '.kiro', 'steering', 'linus-review.md');
9
+ const linusReviewPath = path.join(projectPath, '.spec', 'steering', 'linus-review.md');
10
10
  if (!fs.existsSync(linusReviewPath)) {
11
11
  const linusReviewContent = `# Linus Torvalds Code Review Steering Document
12
12
 
@@ -170,7 +170,7 @@ Remember: "Good taste" comes from experience. Question everything. Simplify ruth
170
170
  });
171
171
  }
172
172
  // Commit guidelines
173
- const commitPath = path.join(projectPath, '.kiro', 'steering', 'commit.md');
173
+ const commitPath = path.join(projectPath, '.spec', 'steering', 'commit.md');
174
174
  if (!fs.existsSync(commitPath)) {
175
175
  const commitContent = `# Commit Message Guidelines
176
176
 
@@ -240,7 +240,7 @@ These guidelines help maintain a clean and useful git history that makes it easi
240
240
  });
241
241
  }
242
242
  // Security checklist (OWASP baseline)
243
- const securityPath = path.join(projectPath, '.kiro', 'steering', 'security-check.md');
243
+ const securityPath = path.join(projectPath, '.spec', 'steering', 'security-check.md');
244
244
  if (!fs.existsSync(securityPath)) {
245
245
  const securityContent = `# Security Check (OWASP Top 10 Aligned)
246
246
 
@@ -300,7 +300,7 @@ Use this checklist during code generation and review. Avoid OWASP Top 10 issues
300
300
  });
301
301
  }
302
302
  // TDD guideline reinforcement
303
- const tddPath = path.join(projectPath, '.kiro', 'steering', 'tdd-guideline.md');
303
+ const tddPath = path.join(projectPath, '.spec', 'steering', 'tdd-guideline.md');
304
304
  if (!fs.existsSync(tddPath)) {
305
305
  const tddContent = `# Test-Driven Development (TDD) Guideline
306
306
 
@@ -422,7 +422,7 @@ This document is **always** active and applies to all development phases. Every
422
422
  });
423
423
  }
424
424
  // Core coding principles (SOLID, DRY, etc.)
425
- const principlesPath = path.join(projectPath, '.kiro', 'steering', 'principles.md');
425
+ const principlesPath = path.join(projectPath, '.spec', 'steering', 'principles.md');
426
426
  if (!fs.existsSync(principlesPath)) {
427
427
  const principlesContent = `# Core Coding Principles and Patterns
428
428
 
@@ -491,17 +491,17 @@ Kiro-style Spec Driven Development implementation using MCP tools.
491
491
  ## Project Context
492
492
 
493
493
  ### Paths
494
- - Steering: \`.kiro/steering/\`
495
- - Specs: \`.kiro/specs/\`
494
+ - Steering: \`.spec/steering/\`
495
+ - Specs: \`.spec/specs/\`
496
496
  - Commands: \`.ai agent/commands/\`
497
497
 
498
498
  ### Steering vs Specification
499
499
 
500
- **Steering** (\`.kiro/steering/\`) - Guide AI with project-wide rules and context
501
- **Specs** (\`.kiro/specs/\`) - Formalize development process for individual features
500
+ **Steering** (\`.spec/steering/\`) - Guide AI with project-wide rules and context
501
+ **Specs** (\`.spec/specs/\`) - Formalize development process for individual features
502
502
 
503
503
  ### Active Specifications
504
- - Check \`.kiro/specs/\` for active specifications
504
+ - Check \`.spec/specs/\` for active specifications
505
505
  - Use \`sdd-status\` to check progress
506
506
 
507
507
  **Current Specifications:**
@@ -5,25 +5,37 @@
5
5
  export interface CLIOptions {
6
6
  /** Target path for skill installation */
7
7
  targetPath: string;
8
+ /** Target path for steering installation */
9
+ steeringPath: string;
8
10
  /** Only list skills, don't install */
9
11
  listOnly: boolean;
10
12
  /** Show help message */
11
13
  showHelp: boolean;
14
+ /** Install skills only (for unified install) */
15
+ skillsOnly: boolean;
16
+ /** Install steering only (for unified install) */
17
+ steeringOnly: boolean;
12
18
  }
13
19
  /**
14
20
  * CLI for installing SDD skills to a project
15
21
  */
16
22
  export declare class InstallSkillsCLI {
17
23
  private skillManager;
24
+ private steeringPath;
18
25
  /**
19
26
  * Create CLI instance
20
27
  * @param skillsPath - Optional path to skills directory (for testing)
28
+ * @param steeringPath - Optional path to steering directory (for testing)
21
29
  */
22
- constructor(skillsPath?: string);
30
+ constructor(skillsPath?: string, steeringPath?: string);
23
31
  /**
24
32
  * Get the default skills path based on package location
25
33
  */
26
34
  private getDefaultSkillsPath;
35
+ /**
36
+ * Get the default steering path based on package location
37
+ */
38
+ private getDefaultSteeringPath;
27
39
  /**
28
40
  * Parse command line arguments
29
41
  * @param args - Command line arguments (process.argv.slice(2))
@@ -31,23 +43,47 @@ export declare class InstallSkillsCLI {
31
43
  */
32
44
  parseArgs(args: string[]): CLIOptions;
33
45
  /**
34
- * Run the CLI with given options
46
+ * Run the CLI with given options (legacy skills-only mode)
35
47
  * @param options - CLI options
36
48
  */
37
49
  run(options: CLIOptions): Promise<void>;
50
+ /**
51
+ * Run unified install (skills + steering)
52
+ * @param options - CLI options
53
+ */
54
+ runUnified(options: CLIOptions): Promise<void>;
38
55
  /**
39
56
  * List available skills
40
57
  */
41
58
  private listSkills;
59
+ /**
60
+ * List available steering documents
61
+ */
62
+ private listSteering;
63
+ /**
64
+ * List all available skills and steering documents
65
+ */
66
+ private listAll;
42
67
  /**
43
68
  * Install skills to target directory
44
69
  * @param targetPath - Target directory
45
70
  */
46
71
  private installSkills;
72
+ /**
73
+ * Install steering documents to target directory
74
+ * @param targetPath - Target directory (e.g., .spec/steering)
75
+ */
76
+ private installSteering;
47
77
  /**
48
78
  * Get help text
49
79
  * @returns Help message
50
80
  */
51
81
  getHelp(): string;
82
+ /**
83
+ * Get unified install help text
84
+ * @returns Help message for unified install
85
+ */
86
+ getUnifiedHelp(): string;
52
87
  }
53
88
  export declare function main(): Promise<void>;
89
+ export declare function mainInstall(): Promise<void>;
@@ -11,14 +11,18 @@ const __dirname = path.dirname(__filename);
11
11
  */
12
12
  export class InstallSkillsCLI {
13
13
  skillManager;
14
+ steeringPath;
14
15
  /**
15
16
  * Create CLI instance
16
17
  * @param skillsPath - Optional path to skills directory (for testing)
18
+ * @param steeringPath - Optional path to steering directory (for testing)
17
19
  */
18
- constructor(skillsPath) {
20
+ constructor(skillsPath, steeringPath) {
19
21
  // If no path provided, determine from package location
20
- const resolvedPath = skillsPath || this.getDefaultSkillsPath();
21
- this.skillManager = new SkillManager(resolvedPath);
22
+ const resolvedSkillsPath = skillsPath || this.getDefaultSkillsPath();
23
+ const resolvedSteeringPath = steeringPath || this.getDefaultSteeringPath();
24
+ this.skillManager = new SkillManager(resolvedSkillsPath);
25
+ this.steeringPath = resolvedSteeringPath;
22
26
  }
23
27
  /**
24
28
  * Get the default skills path based on package location
@@ -45,6 +49,31 @@ export class InstallSkillsCLI {
45
49
  // Fallback to first path (will error in SkillManager if not found)
46
50
  return possiblePaths[0];
47
51
  }
52
+ /**
53
+ * Get the default steering path based on package location
54
+ */
55
+ getDefaultSteeringPath() {
56
+ // Try multiple paths and return the first one that exists
57
+ const possiblePaths = [
58
+ // Relative to this file (dist/cli/install-skills.js -> steering/)
59
+ path.resolve(__dirname, '../../steering'),
60
+ // Alternative: one level up
61
+ path.resolve(__dirname, '../steering'),
62
+ // From package root when installed globally or via npx
63
+ path.resolve(__dirname, '../../../steering'),
64
+ // From current working directory
65
+ path.resolve(process.cwd(), 'node_modules/sdd-mcp-server/steering'),
66
+ path.resolve(process.cwd(), 'steering'),
67
+ ];
68
+ // Return the first path that exists
69
+ for (const p of possiblePaths) {
70
+ if (fs.existsSync(p)) {
71
+ return p;
72
+ }
73
+ }
74
+ // Fallback to first path
75
+ return possiblePaths[0];
76
+ }
48
77
  /**
49
78
  * Parse command line arguments
50
79
  * @param args - Command line arguments (process.argv.slice(2))
@@ -53,8 +82,11 @@ export class InstallSkillsCLI {
53
82
  parseArgs(args) {
54
83
  const options = {
55
84
  targetPath: '.claude/skills',
85
+ steeringPath: '.spec/steering',
56
86
  listOnly: false,
57
87
  showHelp: false,
88
+ skillsOnly: false,
89
+ steeringOnly: false,
58
90
  };
59
91
  for (let i = 0; i < args.length; i++) {
60
92
  const arg = args[i];
@@ -64,6 +96,11 @@ export class InstallSkillsCLI {
64
96
  options.targetPath = args[++i];
65
97
  }
66
98
  break;
99
+ case '--steering-path':
100
+ if (i + 1 < args.length) {
101
+ options.steeringPath = args[++i];
102
+ }
103
+ break;
67
104
  case '--list':
68
105
  case '-l':
69
106
  options.listOnly = true;
@@ -72,12 +109,18 @@ export class InstallSkillsCLI {
72
109
  case '-h':
73
110
  options.showHelp = true;
74
111
  break;
112
+ case '--skills':
113
+ options.skillsOnly = true;
114
+ break;
115
+ case '--steering':
116
+ options.steeringOnly = true;
117
+ break;
75
118
  }
76
119
  }
77
120
  return options;
78
121
  }
79
122
  /**
80
- * Run the CLI with given options
123
+ * Run the CLI with given options (legacy skills-only mode)
81
124
  * @param options - CLI options
82
125
  */
83
126
  async run(options) {
@@ -91,6 +134,29 @@ export class InstallSkillsCLI {
91
134
  }
92
135
  await this.installSkills(options.targetPath);
93
136
  }
137
+ /**
138
+ * Run unified install (skills + steering)
139
+ * @param options - CLI options
140
+ */
141
+ async runUnified(options) {
142
+ if (options.showHelp) {
143
+ console.log(this.getUnifiedHelp());
144
+ return;
145
+ }
146
+ if (options.listOnly) {
147
+ await this.listAll();
148
+ return;
149
+ }
150
+ // Determine what to install
151
+ const installSkills = !options.steeringOnly;
152
+ const installSteering = !options.skillsOnly;
153
+ if (installSkills) {
154
+ await this.installSkills(options.targetPath);
155
+ }
156
+ if (installSteering) {
157
+ await this.installSteering(options.steeringPath);
158
+ }
159
+ }
94
160
  /**
95
161
  * List available skills
96
162
  */
@@ -111,6 +177,56 @@ export class InstallSkillsCLI {
111
177
  console.log(`Total: ${skills.length} skills\n`);
112
178
  console.log('Run "npx sdd-mcp install-skills" to install all skills.\n');
113
179
  }
180
+ /**
181
+ * List available steering documents
182
+ */
183
+ async listSteering() {
184
+ const steeringDocs = [];
185
+ try {
186
+ const entries = await fs.promises.readdir(this.steeringPath);
187
+ for (const entry of entries) {
188
+ if (entry.endsWith('.md')) {
189
+ steeringDocs.push(entry);
190
+ }
191
+ }
192
+ }
193
+ catch {
194
+ // Return empty array if steering directory doesn't exist
195
+ }
196
+ return steeringDocs;
197
+ }
198
+ /**
199
+ * List all available skills and steering documents
200
+ */
201
+ async listAll() {
202
+ const skills = await this.skillManager.listSkills();
203
+ const steeringDocs = await this.listSteering();
204
+ console.log('\nšŸ“š Available Skills:\n');
205
+ if (skills.length === 0) {
206
+ console.log(' (none)\n');
207
+ }
208
+ else {
209
+ for (const skill of skills) {
210
+ console.log(` • ${skill.name}`);
211
+ if (skill.description) {
212
+ console.log(` ${skill.description}`);
213
+ }
214
+ console.log('');
215
+ }
216
+ console.log(` Total: ${skills.length} skills\n`);
217
+ }
218
+ console.log('šŸ“„ Available Steering Documents:\n');
219
+ if (steeringDocs.length === 0) {
220
+ console.log(' (none)\n');
221
+ }
222
+ else {
223
+ for (const doc of steeringDocs) {
224
+ console.log(` • ${doc}`);
225
+ }
226
+ console.log(`\n Total: ${steeringDocs.length} steering documents\n`);
227
+ }
228
+ console.log('Run "npx sdd-mcp install" to install all skills and steering documents.\n');
229
+ }
114
230
  /**
115
231
  * Install skills to target directory
116
232
  * @param targetPath - Target directory
@@ -138,6 +254,60 @@ export class InstallSkillsCLI {
138
254
  console.log(' Use /sdd-requirements, /sdd-design, etc. in Claude Code.\n');
139
255
  }
140
256
  }
257
+ /**
258
+ * Install steering documents to target directory
259
+ * @param targetPath - Target directory (e.g., .spec/steering)
260
+ */
261
+ async installSteering(targetPath) {
262
+ console.log(`\nšŸ“„ Installing steering documents to: ${targetPath}\n`);
263
+ const installed = [];
264
+ const failed = [];
265
+ try {
266
+ // Create target directory
267
+ await fs.promises.mkdir(targetPath, { recursive: true });
268
+ // Read source steering directory
269
+ const entries = await fs.promises.readdir(this.steeringPath);
270
+ for (const entry of entries) {
271
+ if (entry.endsWith('.md')) {
272
+ try {
273
+ const sourceFile = path.join(this.steeringPath, entry);
274
+ const destFile = path.join(targetPath, entry);
275
+ await fs.promises.copyFile(sourceFile, destFile);
276
+ installed.push(entry);
277
+ }
278
+ catch (error) {
279
+ failed.push({
280
+ name: entry,
281
+ error: error instanceof Error ? error.message : String(error),
282
+ });
283
+ }
284
+ }
285
+ }
286
+ }
287
+ catch (error) {
288
+ console.error(`āŒ Failed to read steering directory: ${error instanceof Error ? error.message : String(error)}`);
289
+ return;
290
+ }
291
+ if (installed.length > 0) {
292
+ const plural = installed.length === 1 ? 'document' : 'documents';
293
+ console.log(`āœ… Installed ${installed.length} steering ${plural}:`);
294
+ for (const name of installed) {
295
+ console.log(` • ${name}`);
296
+ }
297
+ console.log('');
298
+ }
299
+ if (failed.length > 0) {
300
+ console.error(`āŒ Failed to install ${failed.length} document(s):`);
301
+ for (const failure of failed) {
302
+ console.error(` • ${failure.name}: ${failure.error}`);
303
+ }
304
+ console.log('');
305
+ }
306
+ if (installed.length > 0) {
307
+ console.log('šŸŽ‰ Steering documents installed successfully!');
308
+ console.log(' These provide project-wide guidance for AI interactions.\n');
309
+ }
310
+ }
141
311
  /**
142
312
  * Get help text
143
313
  * @returns Help message
@@ -166,15 +336,61 @@ After installation, you can use them in Claude Code with:
166
336
  /sdd-implement <feature-name>
167
337
  /sdd-steering
168
338
  /sdd-commit
339
+ `;
340
+ }
341
+ /**
342
+ * Get unified install help text
343
+ * @returns Help message for unified install
344
+ */
345
+ getUnifiedHelp() {
346
+ return `
347
+ SDD Unified Installer
348
+
349
+ Usage: npx sdd-mcp install [options]
350
+
351
+ Installs both SDD skills and steering documents to your project.
352
+
353
+ Options:
354
+ --skills Install skills only (to .claude/skills)
355
+ --steering Install steering documents only (to .spec/steering)
356
+ --path <dir> Target directory for skills (default: .claude/skills)
357
+ --steering-path <dir> Target directory for steering (default: .spec/steering)
358
+ --list, -l List available skills and steering documents
359
+ --help, -h Show this help message
360
+
361
+ Examples:
362
+ npx sdd-mcp install # Install both skills and steering
363
+ npx sdd-mcp install --skills # Install skills only
364
+ npx sdd-mcp install --steering # Install steering only
365
+ npx sdd-mcp install --list # List available content
366
+
367
+ Skills are installed to .claude/skills/ and provide workflow guidance.
368
+ Steering documents are installed to .spec/steering/ and provide project-wide rules.
369
+
370
+ After installation, use skills in Claude Code:
371
+ /sdd-requirements <feature-name>
372
+ /sdd-design <feature-name>
373
+ /sdd-tasks <feature-name>
374
+ /sdd-implement <feature-name>
375
+ /sdd-steering
376
+ /sdd-commit
377
+
378
+ Steering documents are automatically loaded by the SDD MCP server.
169
379
  `;
170
380
  }
171
381
  }
172
- // Main entry point when run directly
382
+ // Main entry point when run directly (legacy install-skills)
173
383
  export async function main() {
174
384
  const cli = new InstallSkillsCLI();
175
385
  const options = cli.parseArgs(process.argv.slice(2));
176
386
  await cli.run(options);
177
387
  }
388
+ // Main entry point for unified install command
389
+ export async function mainInstall() {
390
+ const cli = new InstallSkillsCLI();
391
+ const options = cli.parseArgs(process.argv.slice(2));
392
+ await cli.runUnified(options);
393
+ }
178
394
  // ESM main module detection: check if this file is the entry point
179
395
  const isMainModule = process.argv[1] && (process.argv[1] === __filename ||
180
396
  process.argv[1].endsWith('/install-skills.js') ||
@@ -1 +1 @@
1
- {"version":3,"file":"install-skills.js","sourceRoot":"","sources":["../../src/cli/install-skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install-skills.js","sourceRoot":"","sources":["../../src/cli/install-skills.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export declare function main(): Promise<void>;
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/env node
2
+ import * as fs from 'fs';
3
+ import * as path from 'path';
4
+ const HELP = `
5
+ SDD Directory Migration Tool
6
+
7
+ Migrates .kiro directory to .spec for updated SDD workflow.
8
+
9
+ Usage: npx sdd-mcp migrate-kiro [options]
10
+
11
+ Options:
12
+ --path <dir> Project directory (default: current directory)
13
+ --dry-run, -n Preview without making changes
14
+ --force, -f Overwrite existing .spec directory
15
+ --help, -h Show this help
16
+
17
+ Examples:
18
+ npx sdd-mcp migrate-kiro
19
+ npx sdd-mcp migrate-kiro --dry-run
20
+ npx sdd-mcp migrate-kiro --path ./my-project
21
+ `;
22
+ function getAllFiles(dir) {
23
+ const files = [];
24
+ for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
25
+ const fullPath = path.join(dir, entry.name);
26
+ if (entry.isDirectory()) {
27
+ files.push(...getAllFiles(fullPath));
28
+ }
29
+ else {
30
+ files.push(fullPath);
31
+ }
32
+ }
33
+ return files;
34
+ }
35
+ export async function main() {
36
+ const args = process.argv.slice(2);
37
+ // Parse args
38
+ let projectPath = process.cwd();
39
+ let dryRun = false;
40
+ let force = false;
41
+ for (let i = 0; i < args.length; i++) {
42
+ switch (args[i]) {
43
+ case '--path':
44
+ projectPath = path.resolve(args[++i] || '.');
45
+ break;
46
+ case '--dry-run':
47
+ case '-n':
48
+ dryRun = true;
49
+ break;
50
+ case '--force':
51
+ case '-f':
52
+ force = true;
53
+ break;
54
+ case '--help':
55
+ case '-h':
56
+ console.log(HELP);
57
+ return;
58
+ }
59
+ }
60
+ const kiroPath = path.join(projectPath, '.kiro');
61
+ const specPath = path.join(projectPath, '.spec');
62
+ console.log('\nšŸ”„ SDD Directory Migration: .kiro → .spec\n');
63
+ if (!fs.existsSync(kiroPath)) {
64
+ console.log('āœ… No .kiro directory found. Nothing to migrate.\n');
65
+ return;
66
+ }
67
+ if (fs.existsSync(specPath) && !force) {
68
+ console.log('āš ļø .spec already exists. Use --force to overwrite.\n');
69
+ return;
70
+ }
71
+ const files = getAllFiles(kiroPath);
72
+ console.log(dryRun ? 'šŸ“‹ Would migrate:\n' : 'šŸ“¦ Migrating:\n');
73
+ for (const file of files) {
74
+ const rel = path.relative(kiroPath, file);
75
+ const newPath = path.join(specPath, rel);
76
+ if (dryRun) {
77
+ console.log(` .kiro/${rel} → .spec/${rel}`);
78
+ }
79
+ else {
80
+ fs.mkdirSync(path.dirname(newPath), { recursive: true });
81
+ fs.copyFileSync(file, newPath);
82
+ console.log(` āœ“ .kiro/${rel} → .spec/${rel}`);
83
+ }
84
+ }
85
+ if (!dryRun && files.length > 0) {
86
+ fs.rmSync(kiroPath, { recursive: true });
87
+ console.log('\n āœ“ Removed .kiro directory');
88
+ }
89
+ console.log(`\nāœ… ${dryRun ? 'Preview' : 'Migration'} complete! (${files.length} files)\n`);
90
+ }
91
+ //# sourceMappingURL=migrate-kiro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-kiro.js","sourceRoot":"","sources":["../../src/cli/migrate-kiro.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;CAiBZ,CAAC;AAEF,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,aAAa;IACb,IAAI,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAChC,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,KAAK,QAAQ;gBACX,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;gBAC7C,MAAM;YACR,KAAK,WAAW,CAAC;YACjB,KAAK,IAAI;gBACP,MAAM,GAAG,IAAI,CAAC;gBACd,MAAM;YACR,KAAK,SAAS,CAAC;YACf,KAAK,IAAI;gBACP,KAAK,GAAG,IAAI,CAAC;gBACb,MAAM;YACR,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI;gBACP,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAClB,OAAO;QACX,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAEjD,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAE7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IAED,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;QACrE,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAEhE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAEzC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,YAAY,GAAG,EAAE,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,YAAY,GAAG,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,eAAe,KAAK,CAAC,MAAM,WAAW,CAAC,CAAC;AAC7F,CAAC"}
@@ -3,7 +3,9 @@
3
3
  * Main CLI entry point for sdd-mcp commands
4
4
  *
5
5
  * Usage:
6
- * npx sdd-mcp install-skills [options]
6
+ * npx sdd-mcp install [options] # Install skills AND steering (unified)
7
+ * npx sdd-mcp install-skills [options] # Install skills only (legacy)
8
+ * npx sdd-mcp migrate-kiro [options]
7
9
  * npx sdd-mcp --help
8
10
  */
9
11
  export {};