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
|
-
|
|
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 `
|
|
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: `
|
|
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: `
|
|
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: `
|
|
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 `
|
|
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.
|
|
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": {
|