smart-spec-kit-mcp 2.0.4 → 2.0.6
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.
- package/README.md +128 -60
- package/dist/cli.js +51 -26
- package/dist/cli.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/promptTools.d.ts +12 -0
- package/dist/tools/promptTools.d.ts.map +1 -0
- package/dist/tools/promptTools.js +540 -0
- package/dist/tools/promptTools.js.map +1 -0
- package/dist/utils/starterKitInstaller.d.ts +2 -1
- package/dist/utils/starterKitInstaller.d.ts.map +1 -1
- package/dist/utils/starterKitInstaller.js +51 -29
- package/dist/utils/starterKitInstaller.js.map +1 -1
- package/docs/DOCUMENTATION.md +423 -0
- package/docs/PACKAGING.md +323 -0
- package/package.json +2 -1
- package/starter-kit/copilot-instructions.md +96 -0
- package/starter-kit/prompts/clarify.md +73 -0
- package/starter-kit/prompts/implement.md +79 -0
- package/starter-kit/prompts/plan.md +69 -0
- package/starter-kit/prompts/specify.md +74 -0
- package/starter-kit/prompts/tasks.md +76 -0
- package/starter-kit/prompts/speckit.clarify.md +0 -129
- package/starter-kit/prompts/speckit.implement.md +0 -122
- package/starter-kit/prompts/speckit.init.md +0 -153
- package/starter-kit/prompts/speckit.plan.md +0 -145
- package/starter-kit/prompts/speckit.specify.md +0 -123
- package/starter-kit/prompts/speckit.tasks.md +0 -137
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
* Starter Kit Installer
|
|
3
3
|
*
|
|
4
4
|
* Handles the installation of Spec-Kit starter kit into user projects.
|
|
5
|
-
* Copies prompts to .
|
|
5
|
+
* Copies prompts to .spec-kit/prompts/ and copilot-instructions.md to .github/
|
|
6
6
|
*/
|
|
7
7
|
import * as fs from "node:fs/promises";
|
|
8
8
|
import * as path from "node:path";
|
|
9
9
|
// Directory constants
|
|
10
|
-
const
|
|
10
|
+
const GITHUB_DIR = ".github";
|
|
11
|
+
const COPILOT_INSTRUCTIONS = "copilot-instructions.md";
|
|
11
12
|
const SPEC_KIT_DIR = ".spec-kit";
|
|
13
|
+
const PROMPTS_DIR = "prompts";
|
|
12
14
|
const TEMPLATES_DIR = "templates";
|
|
13
15
|
const MEMORY_DIR = "memory";
|
|
14
16
|
const SPECS_DIR = "specs";
|
|
@@ -75,19 +77,19 @@ export async function installStarterKit(projectPath, options = {}) {
|
|
|
75
77
|
};
|
|
76
78
|
const packageRoot = getPackageRoot();
|
|
77
79
|
const starterKitPath = path.join(packageRoot, "starter-kit");
|
|
78
|
-
// 1. Install prompts to .
|
|
80
|
+
// 1. Install prompts to .spec-kit/prompts/
|
|
79
81
|
if (!options.skipPrompts) {
|
|
80
82
|
const promptsSrc = path.join(starterKitPath, "prompts");
|
|
81
|
-
const promptsDest = path.join(projectPath,
|
|
83
|
+
const promptsDest = path.join(projectPath, SPEC_KIT_DIR, PROMPTS_DIR);
|
|
82
84
|
if (await exists(promptsSrc)) {
|
|
83
85
|
const promptsExist = await exists(promptsDest);
|
|
84
86
|
if (promptsExist && !options.force) {
|
|
85
|
-
result.skipped.push(
|
|
87
|
+
result.skipped.push(`${SPEC_KIT_DIR}/${PROMPTS_DIR}`);
|
|
86
88
|
}
|
|
87
89
|
else {
|
|
88
90
|
try {
|
|
89
91
|
await copyDir(promptsSrc, promptsDest);
|
|
90
|
-
result.created.push(
|
|
92
|
+
result.created.push(`${SPEC_KIT_DIR}/${PROMPTS_DIR}`);
|
|
91
93
|
}
|
|
92
94
|
catch (error) {
|
|
93
95
|
result.errors.push(`Failed to copy prompts: ${error}`);
|
|
@@ -98,6 +100,26 @@ export async function installStarterKit(projectPath, options = {}) {
|
|
|
98
100
|
else {
|
|
99
101
|
result.errors.push(`Prompts source not found: ${promptsSrc}`);
|
|
100
102
|
}
|
|
103
|
+
// Copy copilot-instructions.md to .github/
|
|
104
|
+
const instructionsSrc = path.join(starterKitPath, COPILOT_INSTRUCTIONS);
|
|
105
|
+
const instructionsDest = path.join(projectPath, GITHUB_DIR, COPILOT_INSTRUCTIONS);
|
|
106
|
+
if (await exists(instructionsSrc)) {
|
|
107
|
+
const instructionsExist = await exists(instructionsDest);
|
|
108
|
+
if (instructionsExist && !options.force) {
|
|
109
|
+
result.skipped.push(`${GITHUB_DIR}/${COPILOT_INSTRUCTIONS}`);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
try {
|
|
113
|
+
await fs.mkdir(path.join(projectPath, GITHUB_DIR), { recursive: true });
|
|
114
|
+
await fs.copyFile(instructionsSrc, instructionsDest);
|
|
115
|
+
result.created.push(`${GITHUB_DIR}/${COPILOT_INSTRUCTIONS}`);
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
result.errors.push(`Failed to copy copilot-instructions: ${error}`);
|
|
119
|
+
result.success = false;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
101
123
|
}
|
|
102
124
|
// 2. Install templates to .spec-kit/templates/
|
|
103
125
|
if (!options.skipTemplates) {
|
|
@@ -214,18 +236,18 @@ export function formatInstallReport(result, projectPath) {
|
|
|
214
236
|
report += "```\n";
|
|
215
237
|
report += `${path.basename(projectPath)}/\n`;
|
|
216
238
|
report += "├── .github/\n";
|
|
217
|
-
report += "│ └──
|
|
218
|
-
report += "│ ├── speckit.init.md\n";
|
|
219
|
-
report += "│ ├── speckit.specify.md\n";
|
|
220
|
-
report += "│ ├── speckit.clarify.md\n";
|
|
221
|
-
report += "│ ├── speckit.plan.md\n";
|
|
222
|
-
report += "│ ├── speckit.tasks.md\n";
|
|
223
|
-
report += "│ └── speckit.implement.md\n";
|
|
239
|
+
report += "│ └── copilot-instructions.md # Instructions for Copilot\n";
|
|
224
240
|
report += "├── .spec-kit/\n";
|
|
225
|
-
report += "│ ├──
|
|
226
|
-
report += "│
|
|
227
|
-
report += "│
|
|
228
|
-
report += "
|
|
241
|
+
report += "│ ├── prompts/ # Prompt-as-code files (read by MCP)\n";
|
|
242
|
+
report += "│ │ ├── specify.md\n";
|
|
243
|
+
report += "│ │ ├── plan.md\n";
|
|
244
|
+
report += "│ │ ├── tasks.md\n";
|
|
245
|
+
report += "│ │ ├── implement.md\n";
|
|
246
|
+
report += "│ │ └── clarify.md\n";
|
|
247
|
+
report += "│ ├── templates/ # Specification templates\n";
|
|
248
|
+
report += "│ └── memory/ # Project context\n";
|
|
249
|
+
report += "│ └── constitution.md # Project principles\n";
|
|
250
|
+
report += "└── specs/ # Generated specifications\n";
|
|
229
251
|
report += "```\n\n";
|
|
230
252
|
report += "## VS Code Configuration\n\n";
|
|
231
253
|
report += "Add this to your `.vscode/settings.json` to enable MCP tools:\n\n";
|
|
@@ -234,20 +256,19 @@ export function formatInstallReport(result, projectPath) {
|
|
|
234
256
|
report += "\n```\n\n";
|
|
235
257
|
report += "## Next Steps\n\n";
|
|
236
258
|
report += "1. **Edit your constitution**: `.spec-kit/memory/constitution.md`\n";
|
|
237
|
-
report += "2. **Use
|
|
238
|
-
report += " -
|
|
239
|
-
report += " -
|
|
240
|
-
report += " -
|
|
241
|
-
report += " -
|
|
259
|
+
report += "2. **Use spec-kit commands** in Copilot Chat:\n";
|
|
260
|
+
report += " - `speckit: spec` - Create a specification\n";
|
|
261
|
+
report += " - `speckit: plan` - Create implementation plan\n";
|
|
262
|
+
report += " - `speckit: tasks` - Generate task breakdown\n";
|
|
263
|
+
report += " - `speckit: implement` - Start implementation\n\n";
|
|
242
264
|
report += "## Available Commands\n\n";
|
|
243
265
|
report += "| Command | Description |\n";
|
|
244
266
|
report += "|---------|-------------|\n";
|
|
245
|
-
report += "|
|
|
246
|
-
report += "|
|
|
247
|
-
report += "|
|
|
248
|
-
report += "|
|
|
249
|
-
report += "|
|
|
250
|
-
report += "| `/speckit.implement` | Execute implementation tasks |\n";
|
|
267
|
+
report += "| `speckit: spec` | Create specification from requirements |\n";
|
|
268
|
+
report += "| `speckit: clarify` | Clarify ambiguous requirements |\n";
|
|
269
|
+
report += "| `speckit: plan` | Create technical implementation plan |\n";
|
|
270
|
+
report += "| `speckit: tasks` | Generate task breakdown |\n";
|
|
271
|
+
report += "| `speckit: implement` | Execute implementation tasks |\n";
|
|
251
272
|
return report;
|
|
252
273
|
}
|
|
253
274
|
/**
|
|
@@ -255,7 +276,8 @@ export function formatInstallReport(result, projectPath) {
|
|
|
255
276
|
*/
|
|
256
277
|
export async function isSpecKitInstalled(projectPath) {
|
|
257
278
|
return {
|
|
258
|
-
hasPrompts: await exists(path.join(projectPath,
|
|
279
|
+
hasPrompts: await exists(path.join(projectPath, SPEC_KIT_DIR, PROMPTS_DIR)),
|
|
280
|
+
hasInstructions: await exists(path.join(projectPath, GITHUB_DIR, COPILOT_INSTRUCTIONS)),
|
|
259
281
|
hasTemplates: await exists(path.join(projectPath, SPEC_KIT_DIR, TEMPLATES_DIR)),
|
|
260
282
|
hasMemory: await exists(path.join(projectPath, SPEC_KIT_DIR, MEMORY_DIR)),
|
|
261
283
|
hasSpecs: await exists(path.join(projectPath, SPECS_DIR)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"starterKitInstaller.js","sourceRoot":"","sources":["../../src/utils/starterKitInstaller.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,sBAAsB;AACtB,MAAM,
|
|
1
|
+
{"version":3,"file":"starterKitInstaller.js","sourceRoot":"","sources":["../../src/utils/starterKitInstaller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
# Spec-Kit Documentation
|
|
2
|
+
|
|
3
|
+
This is the comprehensive documentation for Spec-Kit. Copilot can read this file to answer user questions.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Spec-Kit is an MCP (Model Context Protocol) server that provides **Prompt-as-Code** functionality for specification-driven development. It integrates with GitHub Copilot in VS Code to guide developers through creating specifications, plans, tasks, and implementation.
|
|
8
|
+
|
|
9
|
+
## Architecture
|
|
10
|
+
|
|
11
|
+
### Components
|
|
12
|
+
|
|
13
|
+
1. **MCP Server** (`smart-spec-kit-mcp`)
|
|
14
|
+
- Runs as a background process
|
|
15
|
+
- Exposes tools via Model Context Protocol
|
|
16
|
+
- Communicates with GitHub Copilot
|
|
17
|
+
|
|
18
|
+
2. **Copilot Instructions** (`.github/copilot-instructions.md`)
|
|
19
|
+
- Tells Copilot how to use Spec-Kit tools
|
|
20
|
+
- Defines command keywords and aliases
|
|
21
|
+
|
|
22
|
+
3. **Prompts** (`.spec-kit/prompts/`)
|
|
23
|
+
- Prompt-as-Code files read by MCP tools
|
|
24
|
+
- Define behavior for each command
|
|
25
|
+
- Customizable per project
|
|
26
|
+
|
|
27
|
+
4. **Templates** (`.spec-kit/templates/`)
|
|
28
|
+
- Document templates for specs, plans, tasks
|
|
29
|
+
- Markdown format
|
|
30
|
+
|
|
31
|
+
5. **Constitution** (`.spec-kit/memory/constitution.md`)
|
|
32
|
+
- Project principles and conventions
|
|
33
|
+
- Technical stack definition
|
|
34
|
+
- Development guidelines
|
|
35
|
+
|
|
36
|
+
6. **Workflows** (`.spec-kit/workflows/`)
|
|
37
|
+
- YAML-based workflow definitions
|
|
38
|
+
- Multi-step automated processes
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## MCP Tools
|
|
43
|
+
|
|
44
|
+
> **Note**: All parameters are optional. Spec-Kit is designed to be conversational - if you don't provide information upfront, Copilot will ask for it.
|
|
45
|
+
|
|
46
|
+
### speckit_specify
|
|
47
|
+
|
|
48
|
+
**Purpose**: Create a functional specification from requirements.
|
|
49
|
+
|
|
50
|
+
**Triggers**: `speckit: spec`, `speckit: specify`, `créer une spec`
|
|
51
|
+
|
|
52
|
+
**Parameters** (all optional):
|
|
53
|
+
- `requirements`: What you want to build. Can be:
|
|
54
|
+
- A feature description: "user authentication with email/password"
|
|
55
|
+
- A user story: "As a user, I want to..."
|
|
56
|
+
- An Azure DevOps work item ID: "#12345"
|
|
57
|
+
- `contextId`: ID for the specification filename
|
|
58
|
+
|
|
59
|
+
**Examples**:
|
|
60
|
+
```
|
|
61
|
+
speckit: spec
|
|
62
|
+
speckit: spec pour un système de notifications push
|
|
63
|
+
speckit: spec user authentication with OAuth
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Behavior**:
|
|
67
|
+
1. Loads prompt from `.spec-kit/prompts/specify.md`
|
|
68
|
+
2. Loads constitution from `.spec-kit/memory/constitution.md`
|
|
69
|
+
3. Loads template from `.spec-kit/templates/functional-spec.md`
|
|
70
|
+
4. If no requirements provided, asks the user
|
|
71
|
+
5. Output saved to `specs/{contextId}-spec.md`
|
|
72
|
+
|
|
73
|
+
### speckit_plan
|
|
74
|
+
|
|
75
|
+
**Purpose**: Create an implementation plan from a specification.
|
|
76
|
+
|
|
77
|
+
**Triggers**: `speckit: plan`, `planifier`, `créer un plan`
|
|
78
|
+
|
|
79
|
+
**Parameters** (all optional):
|
|
80
|
+
- `specPath`: Path to specification file (auto-detects most recent if not provided)
|
|
81
|
+
|
|
82
|
+
**Examples**:
|
|
83
|
+
```
|
|
84
|
+
speckit: plan
|
|
85
|
+
speckit: plan pour la spec specs/auth-spec.md
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Behavior**:
|
|
89
|
+
1. Finds the most recent specification in `specs/`
|
|
90
|
+
2. Loads prompt from `.spec-kit/prompts/plan.md`
|
|
91
|
+
3. Returns context for generating the plan
|
|
92
|
+
4. Output saved to `specs/plan.md`
|
|
93
|
+
|
|
94
|
+
### speckit_tasks
|
|
95
|
+
|
|
96
|
+
**Purpose**: Generate a task breakdown from a plan.
|
|
97
|
+
|
|
98
|
+
**Triggers**: `speckit: tasks`, `générer les tâches`, `créer les tâches`
|
|
99
|
+
|
|
100
|
+
**Parameters** (all optional):
|
|
101
|
+
- `planPath`: Path to plan file (auto-detects most recent if not provided)
|
|
102
|
+
|
|
103
|
+
**Examples**:
|
|
104
|
+
```
|
|
105
|
+
speckit: tasks
|
|
106
|
+
speckit: générer les tâches
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Behavior**:
|
|
110
|
+
1. Finds the most recent plan in `specs/`
|
|
111
|
+
2. Loads prompt from `.spec-kit/prompts/tasks.md`
|
|
112
|
+
3. Returns context for generating tasks
|
|
113
|
+
4. Output saved to `specs/tasks.md`
|
|
114
|
+
|
|
115
|
+
### speckit_implement
|
|
116
|
+
|
|
117
|
+
**Purpose**: Implement tasks one by one.
|
|
118
|
+
|
|
119
|
+
**Triggers**: `speckit: implement`, `implémenter`, `coder`
|
|
120
|
+
|
|
121
|
+
**Parameters** (all optional):
|
|
122
|
+
- `taskId`: Specific task ID to implement (picks next pending if not provided)
|
|
123
|
+
|
|
124
|
+
**Examples**:
|
|
125
|
+
```
|
|
126
|
+
speckit: implement
|
|
127
|
+
speckit: implement task 3
|
|
128
|
+
speckit: implémenter la tâche 5
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**Behavior**:
|
|
132
|
+
1. Loads tasks from `specs/tasks.md`
|
|
133
|
+
2. Finds next pending task (or specified task)
|
|
134
|
+
3. Loads prompt from `.spec-kit/prompts/implement.md`
|
|
135
|
+
4. Returns context for implementation
|
|
136
|
+
5. Updates task status after completion
|
|
137
|
+
|
|
138
|
+
### speckit_clarify
|
|
139
|
+
|
|
140
|
+
**Purpose**: Clarify ambiguous requirements.
|
|
141
|
+
|
|
142
|
+
**Triggers**: `speckit: clarify`, `clarifier`, `préciser`
|
|
143
|
+
|
|
144
|
+
**Parameters** (all optional):
|
|
145
|
+
- `specPath`: Path to specification (auto-detects if not provided)
|
|
146
|
+
- `questions`: Specific questions to clarify
|
|
147
|
+
|
|
148
|
+
**Examples**:
|
|
149
|
+
```
|
|
150
|
+
speckit: clarify
|
|
151
|
+
speckit: clarifier les critères d'acceptation
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**Behavior**:
|
|
155
|
+
1. Finds `[NEEDS CLARIFICATION]` markers
|
|
156
|
+
2. Loads prompt from `.spec-kit/prompts/clarify.md`
|
|
157
|
+
3. Returns targeted questions for stakeholders
|
|
158
|
+
|
|
159
|
+
### speckit_help
|
|
160
|
+
|
|
161
|
+
**Purpose**: Provide help and documentation.
|
|
162
|
+
|
|
163
|
+
**Triggers**: `speckit: help`, `aide sur speckit`
|
|
164
|
+
|
|
165
|
+
**Parameters** (all optional):
|
|
166
|
+
- `topic`: Specific topic to get help on
|
|
167
|
+
|
|
168
|
+
**Examples**:
|
|
169
|
+
```
|
|
170
|
+
speckit: help
|
|
171
|
+
speckit: help workflows
|
|
172
|
+
speckit: help comment créer un template ?
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**Topics covered**:
|
|
176
|
+
- Commands and usage
|
|
177
|
+
- Customization (prompts, templates, workflows)
|
|
178
|
+
- Troubleshooting
|
|
179
|
+
- Architecture
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Customization Guide
|
|
184
|
+
|
|
185
|
+
### Modifying Prompts
|
|
186
|
+
|
|
187
|
+
Prompts control how each command behaves. Edit files in `.spec-kit/prompts/`:
|
|
188
|
+
|
|
189
|
+
```markdown
|
|
190
|
+
# .spec-kit/prompts/specify.md
|
|
191
|
+
|
|
192
|
+
## My Custom Specification Process
|
|
193
|
+
|
|
194
|
+
1. First, analyze the business need
|
|
195
|
+
2. Then identify technical constraints
|
|
196
|
+
...
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Changes take effect immediately - no restart needed.
|
|
200
|
+
|
|
201
|
+
### Creating Custom Templates
|
|
202
|
+
|
|
203
|
+
Templates define document structure. Create/edit in `.spec-kit/templates/`:
|
|
204
|
+
|
|
205
|
+
```markdown
|
|
206
|
+
# .spec-kit/templates/my-template.md
|
|
207
|
+
|
|
208
|
+
# {Title}
|
|
209
|
+
|
|
210
|
+
## Summary
|
|
211
|
+
{summary}
|
|
212
|
+
|
|
213
|
+
## Requirements
|
|
214
|
+
{requirements}
|
|
215
|
+
|
|
216
|
+
## Technical Notes
|
|
217
|
+
{notes}
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Creating a New Workflow
|
|
221
|
+
|
|
222
|
+
Workflows are YAML files defining multi-step processes:
|
|
223
|
+
|
|
224
|
+
```yaml
|
|
225
|
+
# .spec-kit/workflows/my-workflow.yaml
|
|
226
|
+
|
|
227
|
+
name: my-workflow
|
|
228
|
+
displayName: "My Custom Workflow"
|
|
229
|
+
description: "Does something specific"
|
|
230
|
+
template: my-template.md
|
|
231
|
+
defaultAgent: SpecAgent
|
|
232
|
+
|
|
233
|
+
steps:
|
|
234
|
+
- id: step1
|
|
235
|
+
name: "First Step"
|
|
236
|
+
action: call_agent
|
|
237
|
+
agent: SpecAgent
|
|
238
|
+
description: "What this step does"
|
|
239
|
+
inputs:
|
|
240
|
+
- name: input1
|
|
241
|
+
description: "Description"
|
|
242
|
+
required: true
|
|
243
|
+
|
|
244
|
+
- id: step2
|
|
245
|
+
name: "Second Step"
|
|
246
|
+
action: call_agent
|
|
247
|
+
agent: PlanAgent
|
|
248
|
+
dependsOn: [step1]
|
|
249
|
+
description: "What this step does"
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
**Available actions**:
|
|
253
|
+
- `call_agent` - Call an AI agent
|
|
254
|
+
- `fetch_ado` - Fetch Azure DevOps work item
|
|
255
|
+
- `save_artifact` - Save to file
|
|
256
|
+
- `validate` - Validate output
|
|
257
|
+
|
|
258
|
+
**Available agents**:
|
|
259
|
+
- `SpecAgent` - Writes specifications
|
|
260
|
+
- `PlanAgent` - Creates plans
|
|
261
|
+
- `GovAgent` - Validates governance
|
|
262
|
+
- `TestAgent` - Creates test strategies
|
|
263
|
+
|
|
264
|
+
### Editing the Constitution
|
|
265
|
+
|
|
266
|
+
The constitution defines project principles. Edit `.spec-kit/memory/constitution.md`:
|
|
267
|
+
|
|
268
|
+
```markdown
|
|
269
|
+
# Project Constitution
|
|
270
|
+
|
|
271
|
+
## Technical Stack
|
|
272
|
+
- Language: TypeScript
|
|
273
|
+
- Framework: React + Node.js
|
|
274
|
+
- Database: PostgreSQL
|
|
275
|
+
- Testing: Jest + Playwright
|
|
276
|
+
|
|
277
|
+
## Development Principles
|
|
278
|
+
1. Clean Architecture - separate concerns
|
|
279
|
+
2. Test-Driven Development
|
|
280
|
+
3. Code review required for all changes
|
|
281
|
+
4. Documentation as code
|
|
282
|
+
|
|
283
|
+
## Naming Conventions
|
|
284
|
+
- Files: kebab-case
|
|
285
|
+
- Components: PascalCase
|
|
286
|
+
- Functions: camelCase
|
|
287
|
+
|
|
288
|
+
## API Guidelines
|
|
289
|
+
- RESTful design
|
|
290
|
+
- Version in URL (/api/v1/)
|
|
291
|
+
- JSON responses
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
## Troubleshooting
|
|
297
|
+
|
|
298
|
+
### Commands Not Working
|
|
299
|
+
|
|
300
|
+
1. **Check MCP configuration** in `.vscode/settings.json`:
|
|
301
|
+
```json
|
|
302
|
+
{
|
|
303
|
+
"mcp": {
|
|
304
|
+
"servers": {
|
|
305
|
+
"spec-kit": {
|
|
306
|
+
"command": "npx",
|
|
307
|
+
"args": ["-y", "smart-spec-kit-mcp"]
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
2. **Reload VS Code**: `Ctrl+Shift+P` → "Developer: Reload Window"
|
|
315
|
+
|
|
316
|
+
3. **Check copilot-instructions.md exists** at `.github/copilot-instructions.md`
|
|
317
|
+
|
|
318
|
+
### Setup Not Finding Files
|
|
319
|
+
|
|
320
|
+
Run setup with the project path:
|
|
321
|
+
```bash
|
|
322
|
+
npx smart-spec-kit-mcp setup --project /path/to/project
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### Prompts Not Loading
|
|
326
|
+
|
|
327
|
+
1. Check files exist in `.spec-kit/prompts/`
|
|
328
|
+
2. Ensure valid Markdown format
|
|
329
|
+
3. Run setup again to reinstall:
|
|
330
|
+
```bash
|
|
331
|
+
npx smart-spec-kit-mcp setup --project . --force
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
### Templates Not Applied
|
|
335
|
+
|
|
336
|
+
1. Check files in `.spec-kit/templates/`
|
|
337
|
+
2. Verify template name matches reference
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
## Workflow Reference
|
|
342
|
+
|
|
343
|
+
### feature-standard
|
|
344
|
+
|
|
345
|
+
Standard feature specification workflow.
|
|
346
|
+
|
|
347
|
+
**Steps**:
|
|
348
|
+
1. Fetch requirements
|
|
349
|
+
2. Generate specification
|
|
350
|
+
3. Create plan
|
|
351
|
+
4. Generate tasks
|
|
352
|
+
5. Review
|
|
353
|
+
|
|
354
|
+
### feature-full
|
|
355
|
+
|
|
356
|
+
Complete workflow with governance.
|
|
357
|
+
|
|
358
|
+
**Steps**:
|
|
359
|
+
1. Fetch requirements
|
|
360
|
+
2. Generate specification
|
|
361
|
+
3. Security review
|
|
362
|
+
4. GDPR compliance check
|
|
363
|
+
5. Architecture review
|
|
364
|
+
6. Create plan
|
|
365
|
+
7. Generate tasks
|
|
366
|
+
8. Test strategy
|
|
367
|
+
9. Implementation
|
|
368
|
+
10. Final review
|
|
369
|
+
|
|
370
|
+
### bugfix
|
|
371
|
+
|
|
372
|
+
Bug fix workflow.
|
|
373
|
+
|
|
374
|
+
**Steps**:
|
|
375
|
+
1. Fetch bug report
|
|
376
|
+
2. Root cause analysis
|
|
377
|
+
3. Fix plan
|
|
378
|
+
4. Implementation
|
|
379
|
+
5. Regression tests
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
|
|
383
|
+
## Best Practices
|
|
384
|
+
|
|
385
|
+
### Writing Good Requirements
|
|
386
|
+
|
|
387
|
+
- Be specific about user needs
|
|
388
|
+
- Include acceptance criteria
|
|
389
|
+
- Define edge cases
|
|
390
|
+
- Reference related features
|
|
391
|
+
|
|
392
|
+
### Effective Specifications
|
|
393
|
+
|
|
394
|
+
- Start with the "why" (business value)
|
|
395
|
+
- Define clear scope (in/out)
|
|
396
|
+
- Use Given/When/Then for criteria
|
|
397
|
+
- Document assumptions
|
|
398
|
+
|
|
399
|
+
### Task Breakdown
|
|
400
|
+
|
|
401
|
+
- Atomic tasks (1-4 hours each)
|
|
402
|
+
- Clear acceptance criteria
|
|
403
|
+
- Explicit dependencies
|
|
404
|
+
- Testable outcomes
|
|
405
|
+
|
|
406
|
+
---
|
|
407
|
+
|
|
408
|
+
## FAQ
|
|
409
|
+
|
|
410
|
+
**Q: Can I use Spec-Kit without Azure DevOps?**
|
|
411
|
+
A: Yes! Azure DevOps integration is optional. You can provide requirements directly.
|
|
412
|
+
|
|
413
|
+
**Q: How do I add a new agent?**
|
|
414
|
+
A: Agents are defined in the source code. For custom behavior, modify prompts instead.
|
|
415
|
+
|
|
416
|
+
**Q: Can multiple people use Spec-Kit on the same project?**
|
|
417
|
+
A: Yes! All configuration is in the project directory and can be version-controlled.
|
|
418
|
+
|
|
419
|
+
**Q: How do I update Spec-Kit?**
|
|
420
|
+
A: Run `npx smart-spec-kit-mcp@latest setup` to get the latest version.
|
|
421
|
+
|
|
422
|
+
**Q: Can I use my own templates?**
|
|
423
|
+
A: Yes! Add templates to `.spec-kit/templates/` and reference them in workflows.
|