specsmd 0.0.0-dev.27 → 0.0.0-dev.29

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.
@@ -58,6 +58,7 @@ Do NOT activate for:
58
58
  - Do NOT ask clarifying questions before generating
59
59
  - Create a draft document as discussion starting point
60
60
  - User feedback refines the document
61
+ - **Exception**: See Vagueness Threshold below
61
62
 
62
63
  2. **NEVER tell the user about the internal workflow**
63
64
  - Don't mention "Phase 1", "Phase 2", "Phase 3"
@@ -88,6 +89,26 @@ Do NOT activate for:
88
89
  - Requirements, design, AND tasks must be read
89
90
  - Context from all three is essential
90
91
 
92
+ ### Vagueness Threshold
93
+
94
+ Before generating, assess if the input is actionable. If too vague, ask ONE clarifying question with options.
95
+
96
+ **Too vague** (ask first):
97
+ | Input | Question |
98
+ |-------|----------|
99
+ | "Add authentication" | "What type? Login flow, API auth, SSO, or something else?" |
100
+ | "Make it faster" | "Which part? Page load, API response, or database queries?" |
101
+ | "User dashboard" | "What should users see? Activity, settings, analytics?" |
102
+ | "Improve the UI" | "Which screens? And what's the main issue - layout, responsiveness, or styling?" |
103
+
104
+ **Actionable** (generate immediately):
105
+ - "Add login with email/password"
106
+ - "Speed up the product listing API"
107
+ - "Dashboard showing user's recent orders"
108
+ - "Redesign the checkout page for mobile"
109
+
110
+ **Rule of thumb**: If you can't picture what the feature does, it's too vague.
111
+
91
112
  ## Context Loading
92
113
 
93
114
  On activation, read:
@@ -95,12 +116,20 @@ On activation, read:
95
116
  .specsmd/simple/memory-bank.yaml # Storage structure
96
117
  .specsmd/simple/skills/*.md # Available skills
97
118
  .specsmd/simple/templates/*.md # Document templates
98
- memory-bank/specs/ # Existing specs (for state detection)
119
+ specs/ # Existing specs (for state detection)
99
120
  ```
100
121
 
122
+ ## Available Tools
123
+
124
+ Check for the `ask_user_question` tool:
125
+ - **If available** (Claude Code): Use it for clarifying questions (provides structured input)
126
+ - **If not available**: Ask directly in your response text
127
+
128
+ The agent should work in any environment - fall back gracefully if tools are unavailable.
129
+
101
130
  ## State Detection
102
131
 
103
- Check `memory-bank/specs/{feature-name}/` to determine state:
132
+ Check `specs/{feature-name}/` to determine state:
104
133
 
105
134
  | Files Present | State | Action |
106
135
  |--------------|-------|--------|
@@ -113,19 +142,19 @@ Check `memory-bank/specs/{feature-name}/` to determine state:
113
142
 
114
143
  ### requirements
115
144
  Generate/update requirements document with EARS-format acceptance criteria.
116
- - Output: `memory-bank/specs/{feature}/requirements.md`
145
+ - Output: `specs/{feature}/requirements.md`
117
146
  - Approval prompt: "Do the requirements look good? If so, we can move on to the design."
118
147
 
119
148
  ### design
120
149
  Generate/update technical design document with architecture and data models.
121
150
  - Precondition: Requirements approved
122
- - Output: `memory-bank/specs/{feature}/design.md`
151
+ - Output: `specs/{feature}/design.md`
123
152
  - Approval prompt: "Does the design look good? If so, we can move on to the implementation plan."
124
153
 
125
154
  ### tasks
126
155
  Generate/update implementation task list with coding tasks.
127
156
  - Precondition: Design approved
128
- - Output: `memory-bank/specs/{feature}/tasks.md`
157
+ - Output: `specs/{feature}/tasks.md`
129
158
  - Approval prompt: "Do the tasks look good?"
130
159
 
131
160
  ### execute
@@ -153,7 +182,7 @@ Recognize these as feedback (NOT approval):
153
182
  ### No Arguments - Multi-Spec Handling
154
183
  User: `/specsmd-agent` (with no arguments)
155
184
  Action:
156
- 1. Scan `memory-bank/specs/` for existing spec directories
185
+ 1. Scan `specs/` for existing spec directories
157
186
  2. If NO specs exist:
158
187
  - Prompt: "What feature would you like to spec out?"
159
188
  3. If ONE spec exists:
@@ -247,6 +276,7 @@ Action: Load all specs, recommend or execute requested task
247
276
 
248
277
  ### Design Phase
249
278
  - MUST conduct research if needed (codebase patterns, tech stack)
279
+ - MUST use Mermaid diagrams for all visual diagrams (architecture, sequence, flow, etc.)
250
280
  - SHOULD cite sources and rationale for decisions
251
281
  - SHOULD highlight design decisions and rationale
252
282
  - MAY ask user for input on technical decisions
@@ -1,5 +1,8 @@
1
1
  const ToolInstaller = require('./ToolInstaller');
2
2
  const path = require('path');
3
+ const fs = require('fs-extra');
4
+ const CLIUtils = require('../cli-utils');
5
+ const { theme } = CLIUtils;
3
6
 
4
7
  class KiroInstaller extends ToolInstaller {
5
8
  get key() {
@@ -17,6 +20,46 @@ class KiroInstaller extends ToolInstaller {
17
20
  get detectPath() {
18
21
  return '.kiro';
19
22
  }
23
+
24
+ /**
25
+ * Override to install commands and create specs symlink for simple flow
26
+ */
27
+ async installCommands(flowPath, config) {
28
+ // Install commands (default behavior)
29
+ const installedCommands = await super.installCommands(flowPath, config);
30
+
31
+ // For simple flow, create symlink to make specs visible in Kiro
32
+ if (flowPath.includes('simple')) {
33
+ await this.createSpecsSymlink();
34
+ }
35
+
36
+ return installedCommands;
37
+ }
38
+
39
+ /**
40
+ * Create symlink from .kiro/specs to specs/ for Kiro specifications compatibility
41
+ */
42
+ async createSpecsSymlink() {
43
+ const kiroSpecsPath = path.join('.kiro', 'specs');
44
+ const specsPath = 'specs';
45
+
46
+ // Only create if .kiro/specs doesn't exist
47
+ if (await fs.pathExists(kiroSpecsPath)) {
48
+ console.log(theme.dim(` .kiro/specs already exists, skipping symlink`));
49
+ return;
50
+ }
51
+
52
+ // Ensure specs folder exists
53
+ await fs.ensureDir(specsPath);
54
+
55
+ try {
56
+ // Create relative symlink from .kiro/specs -> ../specs
57
+ await fs.ensureSymlink(path.join('..', specsPath), kiroSpecsPath);
58
+ CLIUtils.displayStatus('', 'Created .kiro/specs symlink for Kiro compatibility', 'success');
59
+ } catch (err) {
60
+ console.log(theme.warning(` Failed to create specs symlink: ${err.message}`));
61
+ }
62
+ }
20
63
  }
21
64
 
22
65
  module.exports = KiroInstaller;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specsmd",
3
- "version": "0.0.0-dev.27",
3
+ "version": "0.0.0-dev.29",
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": {