specsmd 0.0.0-dev.35 → 0.0.0-dev.37

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.
@@ -182,10 +182,10 @@ During execution, only one task per interaction. Review before continuing.
182
182
  ## Tips for Success
183
183
 
184
184
  1. **Be specific** - "User auth with email/password and session management" beats "Login feature"
185
- 2. **Use the glossary** - Define domain terms for consistent language
186
- 3. **Check INCOSE rules** - Singular, Complete, Verifiable, Unambiguous, Consistent
187
- 4. **Include edge cases** - Error scenarios in acceptance criteria
188
- 5. **Review checkpoints** - Verify tests pass during execution
185
+ 2. **Check INCOSE rules** - Singular, Complete, Verifiable, Unambiguous, Consistent
186
+ 3. **Include edge cases** - Error scenarios in acceptance criteria
187
+ 4. **Review checkpoints** - Verify tests pass during execution
188
+ 5. **One task at a time** - Agent pauses after each task. Tell it to keep going (e.g., "continue until done", "go yolo")
189
189
 
190
190
  ---
191
191
 
@@ -43,9 +43,14 @@ class KiroInstaller extends ToolInstaller {
43
43
  const kiroSpecsPath = path.join('.kiro', 'specs');
44
44
  const specsPath = 'specs';
45
45
 
46
- // Only create if .kiro/specs doesn't exist
46
+ // Check if .kiro/specs already exists
47
47
  if (await fs.pathExists(kiroSpecsPath)) {
48
- console.log(theme.dim(` .kiro/specs already exists, skipping symlink`));
48
+ const stats = await fs.lstat(kiroSpecsPath);
49
+ if (stats.isSymbolicLink()) {
50
+ console.log(theme.dim(` .kiro/specs symlink already exists, skipping`));
51
+ } else {
52
+ console.log(theme.dim(` .kiro/specs already exists as folder, skipping symlink`));
53
+ }
49
54
  return;
50
55
  }
51
56
 
@@ -57,7 +62,14 @@ class KiroInstaller extends ToolInstaller {
57
62
  await fs.ensureSymlink(path.join('..', specsPath), kiroSpecsPath);
58
63
  CLIUtils.displayStatus('', 'Created .kiro/specs symlink for Kiro compatibility', 'success');
59
64
  } catch (err) {
60
- console.log(theme.warning(` Failed to create specs symlink: ${err.message}`));
65
+ // Handle specific error cases
66
+ if (err.code === 'EPERM' || err.code === 'EACCES') {
67
+ console.log(theme.warning(` Cannot create symlink (permission denied). On Windows, try running as Administrator.`));
68
+ } else if (err.code === 'EEXIST') {
69
+ console.log(theme.dim(` .kiro/specs already exists, skipping symlink`));
70
+ } else {
71
+ console.log(theme.warning(` Failed to create specs symlink: ${err.message}`));
72
+ }
61
73
  }
62
74
  }
63
75
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specsmd",
3
- "version": "0.0.0-dev.35",
3
+ "version": "0.0.0-dev.37",
4
4
  "description": "Multi-agent orchestration system for AI-native software development. Delivers AI-DLC, Agile, and custom SDLC flows as markdown-based agent systems.",
5
5
  "main": "lib/installer.js",
6
6
  "bin": {