@lbruton/specflow 3.5.3 → 3.5.5

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 (41) hide show
  1. package/dist/core/__tests__/template-generator.test.js +36 -1
  2. package/dist/core/__tests__/template-generator.test.js.map +1 -1
  3. package/dist/core/archive-service.d.ts.map +1 -1
  4. package/dist/core/archive-service.js +29 -12
  5. package/dist/core/archive-service.js.map +1 -1
  6. package/dist/core/template-generator.d.ts.map +1 -1
  7. package/dist/core/template-generator.js +116 -44
  8. package/dist/core/template-generator.js.map +1 -1
  9. package/dist/dashboard/approval-storage.d.ts.map +1 -1
  10. package/dist/dashboard/approval-storage.js +4 -2
  11. package/dist/dashboard/approval-storage.js.map +1 -1
  12. package/dist/dashboard/job-scheduler.js +2 -2
  13. package/dist/dashboard/job-scheduler.js.map +1 -1
  14. package/dist/dashboard/multi-server.d.ts.map +1 -1
  15. package/dist/dashboard/multi-server.js +23 -18
  16. package/dist/dashboard/multi-server.js.map +1 -1
  17. package/dist/dashboard/parser.d.ts.map +1 -1
  18. package/dist/dashboard/parser.js +8 -7
  19. package/dist/dashboard/parser.js.map +1 -1
  20. package/dist/dashboard/project-manager.d.ts.map +1 -1
  21. package/dist/dashboard/project-manager.js +12 -1
  22. package/dist/dashboard/project-manager.js.map +1 -1
  23. package/dist/dashboard/watcher.d.ts.map +1 -1
  24. package/dist/dashboard/watcher.js +5 -4
  25. package/dist/dashboard/watcher.js.map +1 -1
  26. package/dist/markdown/templates/code-quality-reviewer-template.md +2 -0
  27. package/dist/markdown/templates/implementer-prompt-template.md +11 -0
  28. package/dist/markdown/templates/spec-reviewer-template.md +32 -0
  29. package/dist/markdown/templates/tasks-template.md +124 -138
  30. package/dist/server.d.ts.map +1 -1
  31. package/dist/server.js +94 -40
  32. package/dist/server.js.map +1 -1
  33. package/dist/tools/approvals.js +24 -3
  34. package/dist/tools/approvals.js.map +1 -1
  35. package/dist/tools/spec-workflow-guide.d.ts.map +1 -1
  36. package/dist/tools/spec-workflow-guide.js +64 -62
  37. package/dist/tools/spec-workflow-guide.js.map +1 -1
  38. package/dist/tools/steering-guide.d.ts.map +1 -1
  39. package/dist/tools/steering-guide.js +28 -26
  40. package/dist/tools/steering-guide.js.map +1 -1
  41. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAsBA,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,IAAI,CAAC,CAAS;;IAiChB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IA0F1E,OAAO,CAAC,aAAa;IAoCrB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAMd,IAAI;CAuBX"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAsBA,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,IAAI,CAAC,CAAS;;IAiChB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAiH1E,OAAO,CAAC,aAAa;IAsErB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAMd,IAAI;CAuBX"}
package/dist/server.js CHANGED
@@ -48,6 +48,9 @@ export class SpecWorkflowMCPServer {
48
48
  this.projectPath = projectPath;
49
49
  this.workspacePath = workspacePath;
50
50
  this.lang = lang;
51
+ // Track whether project initialization succeeded (degraded mode if not)
52
+ let projectInitialized = false;
53
+ let initError;
51
54
  try {
52
55
  // Validate project path
53
56
  await validateProjectPath(this.projectPath);
@@ -74,49 +77,68 @@ export class SpecWorkflowMCPServer {
74
77
  workflowRootPath: this.projectPath
75
78
  });
76
79
  console.error(`Project registered: ${projectId}`);
77
- // Try to get the dashboard URL from session manager
78
- let dashboardUrl = undefined;
79
- try {
80
- const sessionManager = new DashboardSessionManager();
81
- const dashboardSession = await sessionManager.getDashboardSession();
82
- if (dashboardSession) {
83
- dashboardUrl = dashboardSession.url;
84
- }
85
- }
86
- catch (error) {
87
- // Dashboard not running, continue without it
80
+ projectInitialized = true;
81
+ }
82
+ catch (error) {
83
+ // Project initialization failed — enter degraded mode instead of crashing.
84
+ // This allows the MCP server to start and report the error via tool calls,
85
+ // rather than silently dying and leaving the client with no connection.
86
+ initError = error.message || String(error);
87
+ console.error(`WARNING: Project initialization failed — starting in degraded mode.`);
88
+ console.error(` Path: ${this.projectPath}`);
89
+ console.error(` Error: ${initError}`);
90
+ console.error(` Hint: Launch specflow with an explicit project path, e.g.:`);
91
+ console.error(` npx -y @lbruton/specflow@latest /path/to/your/project`);
92
+ console.error(` The MCP server will start, but tools will return errors until a valid project is configured.`);
93
+ }
94
+ // Try to get the dashboard URL from session manager
95
+ let dashboardUrl = undefined;
96
+ try {
97
+ const sessionManager = new DashboardSessionManager();
98
+ const dashboardSession = await sessionManager.getDashboardSession();
99
+ if (dashboardSession) {
100
+ dashboardUrl = dashboardSession.url;
88
101
  }
89
- // Create context for tools
90
- const context = {
91
- projectPath: this.projectPath,
92
- dashboardUrl: dashboardUrl,
93
- lang: this.lang
94
- };
95
- // Register handlers
96
- this.setupHandlers(context);
97
- // Connect to stdio transport
98
- const transport = new StdioServerTransport();
99
- // Handle client disconnection - exit gracefully when transport closes
100
- transport.onclose = async () => {
101
- await this.stop();
102
- process.exit(0);
103
- };
104
- await this.server.connect(transport);
105
- // Monitor stdin for client disconnection (additional safety net)
106
- process.stdin.on('end', async () => {
107
- await this.stop();
108
- process.exit(0);
109
- });
110
- // Handle stdin errors
111
- process.stdin.on('error', async (error) => {
112
- console.error('stdin error:', error);
113
- await this.stop();
114
- process.exit(1);
115
- });
116
- // MCP server initialized successfully
117
102
  }
118
103
  catch (error) {
119
- throw error;
104
+ // Dashboard not running, continue without it
105
+ }
106
+ // Create context for tools — include degraded mode info
107
+ const context = {
108
+ projectPath: this.projectPath,
109
+ dashboardUrl: dashboardUrl,
110
+ lang: this.lang
111
+ };
112
+ if (!projectInitialized) {
113
+ context.degraded = true;
114
+ context.degradedReason = initError;
115
+ }
116
+ // Register handlers
117
+ this.setupHandlers(context);
118
+ // Connect to stdio transport
119
+ const transport = new StdioServerTransport();
120
+ // Handle client disconnection - exit gracefully when transport closes
121
+ transport.onclose = async () => {
122
+ await this.stop();
123
+ process.exit(0);
124
+ };
125
+ await this.server.connect(transport);
126
+ // Monitor stdin for client disconnection (additional safety net)
127
+ process.stdin.on('end', async () => {
128
+ await this.stop();
129
+ process.exit(0);
130
+ });
131
+ // Handle stdin errors
132
+ process.stdin.on('error', async (error) => {
133
+ console.error('stdin error:', error);
134
+ await this.stop();
135
+ process.exit(1);
136
+ });
137
+ if (projectInitialized) {
138
+ console.error('MCP server initialized successfully');
139
+ }
140
+ else {
141
+ console.error('MCP server started in degraded mode — tools will report configuration errors');
120
142
  }
121
143
  }
122
144
  setupHandlers(context) {
@@ -125,6 +147,24 @@ export class SpecWorkflowMCPServer {
125
147
  tools: registerTools()
126
148
  }));
127
149
  this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
150
+ // In degraded mode, return a clear error for every tool call
151
+ if (context.degraded) {
152
+ return {
153
+ content: [{
154
+ type: 'text',
155
+ text: `SpecFlow MCP server is running in degraded mode — no valid project found.\n\n` +
156
+ `Error: ${context.degradedReason}\n\n` +
157
+ `The server was launched without a valid project path. To fix this:\n` +
158
+ `1. Ensure your MCP config passes the project directory as an argument:\n` +
159
+ ` npx -y @lbruton/specflow@latest .\n` +
160
+ `2. Or specify an absolute path:\n` +
161
+ ` npx -y @lbruton/specflow@latest /path/to/your/project\n` +
162
+ `3. Ensure the project has a .specflow/config.json file\n\n` +
163
+ `Current path: ${context.projectPath}`
164
+ }],
165
+ isError: true
166
+ };
167
+ }
128
168
  try {
129
169
  return await handleToolCall(request.params.name, request.params.arguments || {}, context);
130
170
  }
@@ -142,6 +182,20 @@ export class SpecWorkflowMCPServer {
142
182
  }
143
183
  });
144
184
  this.server.setRequestHandler(GetPromptRequestSchema, async (request) => {
185
+ // In degraded mode, return a helpful error for prompt requests too
186
+ if (context.degraded) {
187
+ return {
188
+ messages: [{
189
+ role: 'user',
190
+ content: {
191
+ type: 'text',
192
+ text: `SpecFlow MCP server is in degraded mode — no valid project found at: ${context.projectPath}\n` +
193
+ `Error: ${context.degradedReason}\n` +
194
+ `Fix: Add the project path to your MCP config args, e.g.: npx -y @lbruton/specflow@latest .`
195
+ }
196
+ }]
197
+ };
198
+ }
145
199
  try {
146
200
  return await handlePromptGet(request.params.name, request.params.arguments || {}, context);
147
201
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -166,8 +166,28 @@ async function handleRequestApproval(args, context) {
166
166
  let markdownContent;
167
167
  if (isMarkdownFile) {
168
168
  try {
169
- const fullPath = join(validatedProjectPath, args.filePath);
170
- markdownContent = await readFile(fullPath, 'utf-8');
169
+ // Try DocVault workflow root first, then project root (legacy fallback)
170
+ const workflowRoot = PathUtils.getWorkflowRoot(validatedProjectPath);
171
+ const candidates = [
172
+ join(workflowRoot, args.filePath),
173
+ join(validatedProjectPath, args.filePath),
174
+ ];
175
+ // Deduplicate (when no DocVault, workflowRoot is {project}/.specflow so both differ)
176
+ const uniqueCandidates = [...new Set(candidates)];
177
+ let readSuccess = false;
178
+ for (const candidate of uniqueCandidates) {
179
+ try {
180
+ markdownContent = await readFile(candidate, 'utf-8');
181
+ readSuccess = true;
182
+ break;
183
+ }
184
+ catch {
185
+ // try next candidate
186
+ }
187
+ }
188
+ if (!readSuccess) {
189
+ throw new Error(`ENOENT: file not found at any candidate path: ${uniqueCandidates.join(', ')}`);
190
+ }
171
191
  }
172
192
  catch (fileError) {
173
193
  await approvalStorage.stop();
@@ -202,7 +222,8 @@ async function handleRequestApproval(args, context) {
202
222
  }
203
223
  // Validate tasks.md format before allowing approval request
204
224
  if (args.filePath.endsWith('tasks.md')) {
205
- const content = markdownContent ?? await readFile(join(validatedProjectPath, args.filePath), 'utf-8');
225
+ // markdownContent is already resolved via DocVault-aware candidates above
226
+ const content = markdownContent ?? await readFile(join(PathUtils.getWorkflowRoot(validatedProjectPath), args.filePath), 'utf-8');
206
227
  const validationResult = validateTasksMarkdown(content);
207
228
  if (!validationResult.valid) {
208
229
  await approvalStorage.stop();
@@ -1 +1 @@
1
- {"version":3,"file":"approvals.js","sourceRoot":"","sources":["../../src/tools/approvals.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"approvals.js","sourceRoot":"","sources":["../../src/tools/approvals.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"spec-workflow-guide.d.ts","sourceRoot":"","sources":["../../src/tools/spec-workflow-guide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAExD,eAAO,MAAM,qBAAqB,EAAE,IAenC,CAAC;AAEF,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAsBrG"}
1
+ {"version":3,"file":"spec-workflow-guide.d.ts","sourceRoot":"","sources":["../../src/tools/spec-workflow-guide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGxD,eAAO,MAAM,qBAAqB,EAAE,IAenC,CAAC;AAEF,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAsBrG"}
@@ -1,3 +1,4 @@
1
+ import { PathUtils } from '../core/path-utils.js';
1
2
  export const specWorkflowGuideTool = {
2
3
  name: 'spec-workflow-guide',
3
4
  description: `Load essential spec workflow instructions to guide feature development from idea to implementation.
@@ -23,7 +24,7 @@ export async function specWorkflowGuideHandler(args, context) {
23
24
  success: true,
24
25
  message: 'Complete spec workflow guide loaded - follow this workflow exactly',
25
26
  data: {
26
- guide: getSpecWorkflowGuide(),
27
+ guide: getSpecWorkflowGuide(PathUtils.getWorkflowRoot(context.projectPath)),
27
28
  dashboardUrl: context.dashboardUrl,
28
29
  dashboardAvailable: !!context.dashboardUrl
29
30
  },
@@ -36,8 +37,11 @@ export async function specWorkflowGuideHandler(args, context) {
36
37
  ]
37
38
  };
38
39
  }
39
- function getSpecWorkflowGuide() {
40
+ function getSpecWorkflowGuide(workflowRoot) {
40
41
  const currentYear = new Date().getFullYear();
42
+ // workflowRoot is the resolved path (DocVault or local ${wr}/)
43
+ // Use it in all path references so agents look in the right place
44
+ const wr = workflowRoot;
41
45
  return `# Spec Development Workflow
42
46
 
43
47
  ## Overview
@@ -49,13 +53,13 @@ Spec names MUST use issue prefix: {ISSUE-ID}-{kebab-title} (e.g., STAK-123-user-
49
53
  \`\`\`mermaid
50
54
  flowchart TD
51
55
  Start([Start: User requests feature]) --> CheckSteering{Steering docs exist?}
52
- CheckSteering -->|Yes| P1_Load[Read steering docs:<br/>.specflow/steering/*.md]
56
+ CheckSteering -->|Yes| P1_Load[Read steering docs:<br/>${wr}/steering/*.md]
53
57
  CheckSteering -->|No| P1_Template
54
58
 
55
59
  %% Phase 1: Requirements
56
- P1_Load --> P1_Template[Check user-templates first,<br/>then read template:<br/>requirements-template.md]
60
+ P1_Load --> P1_Template[Check project template overrides,<br/>then global template:<br/>requirements-template.md]
57
61
  P1_Template --> P1_Research[Web search if available]
58
- P1_Research --> P1_Create[Create file:<br/>.specflow/specs/{name}/<br/>requirements.md]
62
+ P1_Research --> P1_Create[Create file:<br/>${wr}/specs/{name}/<br/>requirements.md]
59
63
  P1_Create --> P1_Approve[approvals<br/>action: request<br/>filePath only]
60
64
  P1_Approve --> P1_Status[approvals<br/>action: status<br/>poll status]
61
65
  P1_Status --> P1_Check{Status?}
@@ -65,9 +69,9 @@ flowchart TD
65
69
  P1_Clean -->|failed| P1_Status
66
70
 
67
71
  %% Phase 2: Design
68
- P1_Clean -->|success| P2_Template[Check user-templates first,<br/>then read template:<br/>design-template.md]
72
+ P1_Clean -->|success| P2_Template[Check project template overrides,<br/>then global template:<br/>design-template.md]
69
73
  P2_Template --> P2_Analyze[Analyze codebase patterns]
70
- P2_Analyze --> P2_Create[Create file:<br/>.specflow/specs/{name}/<br/>design.md]
74
+ P2_Analyze --> P2_Create[Create file:<br/>${wr}/specs/{name}/<br/>design.md]
71
75
  P2_Create --> P2_Approve[approvals<br/>action: request<br/>filePath only]
72
76
  P2_Approve --> P2_Status[approvals<br/>action: status<br/>poll status]
73
77
  P2_Status --> P2_Check{Status?}
@@ -77,9 +81,9 @@ flowchart TD
77
81
  P2_Clean -->|failed| P2_Status
78
82
 
79
83
  %% Phase 3: Tasks
80
- P2_Clean -->|success| P3_Template[Check user-templates first,<br/>then read template:<br/>tasks-template.md]
84
+ P2_Clean -->|success| P3_Template[Check project template overrides,<br/>then global template:<br/>tasks-template.md]
81
85
  P3_Template --> P3_Break[Convert design to tasks]
82
- P3_Break --> P3_Create[Create file:<br/>.specflow/specs/{name}/<br/>tasks.md]
86
+ P3_Break --> P3_Create[Create file:<br/>${wr}/specs/{name}/<br/>tasks.md]
83
87
  P3_Create --> P3_Approve[approvals<br/>action: request<br/>filePath only]
84
88
  P3_Approve --> P3_Status[approvals<br/>action: status<br/>poll status]
85
89
  P3_Status --> P3_Check{Status?}
@@ -171,20 +175,20 @@ flowchart TD
171
175
  **Purpose**: Define what to build based on user needs.
172
176
 
173
177
  **File Operations**:
174
- - Read steering docs: \`.specflow/steering/*.md\` (if they exist)
175
- - Check for custom template: \`.specflow/user-templates/requirements-template.md\`
176
- - Read template: \`.specflow/templates/requirements-template.md\` (if no custom template)
177
- - Create document: \`.specflow/specs/{issue-id}-{kebab-title}/requirements.md\`
178
+ - Read steering docs: \`${wr}/steering/*.md\` (if they exist)
179
+ - Check for project override: \`${wr}/templates/requirements-template.md\`
180
+ - Read global template: \`${wr}/templates/requirements-template.md\` (if no custom template)
181
+ - Create document: \`${wr}/specs/{issue-id}-{kebab-title}/requirements.md\`
178
182
 
179
183
  **Tools**:
180
184
  - approvals: Manage approval workflow (actions: request, status, delete)
181
185
 
182
186
  **Process**:
183
- 1. Check if \`.specflow/steering/\` exists (if yes, read product.md, tech.md, structure.md)
184
- 2. Check for custom template at \`.specflow/user-templates/requirements-template.md\`
185
- 3. If no custom template, read from \`.specflow/templates/requirements-template.md\`
187
+ 1. Check if \`${wr}/steering/\` exists (if yes, read product.md, tech.md, structure.md)
188
+ 2. Check for project template override at \`${wr}/templates/requirements-template.md\`
189
+ 3. If no project override, the global template is used automatically from \`${wr}/templates/requirements-template.md\`
186
190
  4. Research market/user expectations (if web search available, current year: ${currentYear})
187
- 5. Generate requirements as user stories with EARS criteria6. Create \`requirements.md\` at \`.specflow/specs/{issue-id}-{kebab-title}/requirements.md\`
191
+ 5. Generate requirements as user stories with EARS criteria6. Create \`requirements.md\` at \`${wr}/specs/{issue-id}-{kebab-title}/requirements.md\`
188
192
  7. Request approval using approvals tool with action:'request' (filePath only, never content)
189
193
  8. Poll status using approvals with action:'status' until approved/needs-revision (NEVER accept verbal approval)
190
194
  9. If needs-revision: update document using comments, create NEW approval, do NOT proceed
@@ -195,19 +199,19 @@ flowchart TD
195
199
  **Purpose**: Create technical design addressing all requirements.
196
200
 
197
201
  **File Operations**:
198
- - Check for custom template: \`.specflow/user-templates/design-template.md\`
199
- - Read template: \`.specflow/templates/design-template.md\` (if no custom template)
200
- - Create document: \`.specflow/specs/{issue-id}-{kebab-title}/design.md\`
202
+ - Check for project override: \`${wr}/templates/design-template.md\`
203
+ - Read global template: \`${wr}/templates/design-template.md\` (if no custom template)
204
+ - Create document: \`${wr}/specs/{issue-id}-{kebab-title}/design.md\`
201
205
 
202
206
  **Tools**:
203
207
  - approvals: Manage approval workflow (actions: request, status, delete)
204
208
 
205
209
  **Process**:
206
- 1. Check for custom template at \`.specflow/user-templates/design-template.md\`
207
- 2. If no custom template, read from \`.specflow/templates/design-template.md\`
210
+ 1. Check for project template override at \`${wr}/templates/design-template.md\`
211
+ 2. If no project override, the global template is used automatically from \`${wr}/templates/design-template.md\`
208
212
  3. Analyze codebase for patterns to reuse
209
213
  4. Research technology choices (if web search available, current year: ${currentYear})
210
- 5. Generate design with all template sections6. Create \`design.md\` at \`.specflow/specs/{issue-id}-{kebab-title}/design.md\`
214
+ 5. Generate design with all template sections6. Create \`design.md\` at \`${wr}/specs/{issue-id}-{kebab-title}/design.md\`
211
215
  7. Request approval using approvals tool with action:'request'
212
216
  8. Poll status using approvals with action:'status' until approved/needs-revision
213
217
  9. If needs-revision: update document using comments, create NEW approval, do NOT proceed
@@ -218,16 +222,16 @@ flowchart TD
218
222
  **Purpose**: Break design into atomic implementation tasks.
219
223
 
220
224
  **File Operations**:
221
- - Check for custom template: \`.specflow/user-templates/tasks-template.md\`
222
- - Read template: \`.specflow/templates/tasks-template.md\` (if no custom template)
223
- - Create document: \`.specflow/specs/{issue-id}-{kebab-title}/tasks.md\`
225
+ - Check for project override: \`${wr}/templates/tasks-template.md\`
226
+ - Read global template: \`${wr}/templates/tasks-template.md\` (if no custom template)
227
+ - Create document: \`${wr}/specs/{issue-id}-{kebab-title}/tasks.md\`
224
228
 
225
229
  **Tools**:
226
230
  - approvals: Manage approval workflow (actions: request, status, delete)
227
231
 
228
232
  **Process**:
229
- 1. Check for custom template at \`.specflow/user-templates/tasks-template.md\`
230
- 2. If no custom template, read from \`.specflow/templates/tasks-template.md\`
233
+ 1. Check for project template override at \`${wr}/templates/tasks-template.md\`
234
+ 2. If no project override, the global template is used automatically from \`${wr}/templates/tasks-template.md\`
231
235
  3. Convert design into atomic tasks (1-3 files each)
232
236
  4. Include file paths and requirement references
233
237
  5. **IMPORTANT**: Generate a _Prompt field for each task with:
@@ -241,7 +245,7 @@ flowchart TD
241
245
  - Start the prompt with "Implement the task for spec {issue-id}-{kebab-title}, first run spec-workflow-guide to get the workflow guide then implement the task:"
242
246
  6. (Optional) Add a **Recommended Agent** field to each task: Claude, Codex, Gemini, or Human
243
247
  7. Include a **File Touch Map** at the top of tasks.md listing all files the spec will CREATE, MODIFY, or TEST with brief scope notes
244
- 8. Create \`tasks.md\` at \`.specflow/specs/{issue-id}-{kebab-title}/tasks.md\`
248
+ 8. Create \`tasks.md\` at \`${wr}/specs/{issue-id}-{kebab-title}/tasks.md\`
245
249
  7. Request approval using approvals tool with action:'request'
246
250
  8. Poll status using approvals with action:'status' until approved/needs-revision
247
251
  9. If needs-revision: update document using comments, create NEW approval, do NOT proceed
@@ -261,7 +265,7 @@ flowchart TD
261
265
  2. If UI changes are declared with prototype required:
262
266
  - Execute tasks 0.1–0.3 from tasks.md (these are the prototype gate tasks)
263
267
  - Task 0.1: Create visual mockup via \`ui-mockup\` skill (Stitch) or \`frontend-design\` skill
264
- - Task 0.2: Build interactive prototype via \`playground\` skill — **save to \`.specflow/specs/{spec-name}/artifacts/playground.html\`**
268
+ - Task 0.2: Build interactive prototype via \`playground\` skill — **save to \`${wr}/specs/{spec-name}/artifacts/playground.html\`**
265
269
  - Task 0.3: Present to user, collect explicit visual approval
266
270
  3. If a reference HTML/mockup file path is listed in design.md, the prototype MUST use it as the baseline — do not ignore provided prototypes
267
271
  4. **Save all visual artifacts** (playground HTML, mockup screenshots, Stitch exports) to the spec's \`artifacts/\` folder
@@ -277,8 +281,8 @@ flowchart TD
277
281
  **Trigger**: This phase fires automatically after Phase 3 approval (and Phase 3.5 if applicable). It runs on EVERY spec — it is not conditional.
278
282
 
279
283
  **File Operations**:
280
- - Read specs: \`.specflow/specs/{issue-id}-{kebab-title}/requirements.md\`, \`design.md\`, \`tasks.md\`
281
- - Create report: \`.specflow/specs/{issue-id}-{kebab-title}/readiness-report.md\`
284
+ - Read specs: \`${wr}/specs/{issue-id}-{kebab-title}/requirements.md\`, \`design.md\`, \`tasks.md\`
285
+ - Create report: \`${wr}/specs/{issue-id}-{kebab-title}/readiness-report.md\`
282
286
 
283
287
  **Tools**:
284
288
  - approvals: Submit readiness report for dashboard review (actions: request, status, delete)
@@ -293,7 +297,7 @@ flowchart TD
293
297
  - **Prototype consistency**: If design.md references a prototype HTML file, verify it appears in task 0.1-0.3 artifacts and/or task \`_Leverage\` fields.
294
298
  - **File touch map validation**: Verify the File Touch Map in tasks.md covers all files mentioned in individual tasks.
295
299
  - **Test Design Coverage**: At least one task in tasks.md covers test authoring for new behavior (matching task title/description patterns: "test", "TDD", "verify", "write tests"). If no test task found → FAIL.
296
- - **Release Hygiene**: Check \`.specflow/project-conventions.json\` (if exists):
300
+ - **Release Hygiene**: Check \`${wr}/project-conventions.json\` (if exists):
297
301
  - If version lock detected: verify a task covers version bump. Missing → FAIL.
298
302
  - If changelog detected: verify a task covers changelog entry. Missing → FAIL.
299
303
  - Verify a task covers DocVault documentation update. Missing → FAIL.
@@ -350,7 +354,7 @@ flowchart TD
350
354
  **Purpose**: Execute tasks systematically.
351
355
 
352
356
  **File Operations**:
353
- - Read specs: \`.specflow/specs/{issue-id}-{kebab-title}/*.md\` (if returning to work)
357
+ - Read specs: \`${wr}/specs/{issue-id}-{kebab-title}/*.md\` (if returning to work)
354
358
  - Edit tasks.md to update status:
355
359
  - \`- [ ]\` = Pending task
356
360
  - \`- [-]\` = In-progress task
@@ -372,17 +376,17 @@ flowchart TD
372
376
  - Read design.md \`UI Impact Assessment\` section
373
377
  - If \`Prototype Required: Yes\`, confirm tasks 0.1–0.3 are marked \`[x]\` and \`Prototype Artifacts\` in design.md are populated
374
378
  - If prototype gate is incomplete, STOP — complete Phase 3.5 first
375
- - **MANDATORY**: Include the playground file path (e.g., \`.specflow/specs/{spec-name}/artifacts/playground.html\`) in the subagent prompt so the implementer has the approved visual reference
379
+ - **MANDATORY**: Include the playground file path (e.g., \`${wr}/specs/{spec-name}/artifacts/playground.html\`) in the subagent prompt so the implementer has the approved visual reference
376
380
  - Tell the implementer explicitly: "Source your visual design from the prototype file. Do NOT re-read earlier spec documents and reinvent the design. The prototype IS the approved design."
377
381
  - The spec compliance reviewer (Stage 1) will compare implementation against the prototype — visual deviations are a FAIL
378
382
  - Edit tasks.md: Change \`[ ]\` to \`[-]\` for the task you're starting
379
383
  - **CRITICAL: BEFORE implementing, search existing implementation logs**:
380
- - Implementation logs are in: \`.specflow/specs/{issue-id}-{kebab-title}/Implementation Logs/\`
384
+ - Implementation logs are in: \`${wr}/specs/{issue-id}-{kebab-title}/Implementation Logs/\`
381
385
  - **Option 1: Use grep for fast searches**:
382
- - \`grep -r "api\|endpoint" .specflow/specs/{issue-id}-{kebab-title}/Implementation Logs/\` - Find API endpoints
383
- - \`grep -r "component" .specflow/specs/{issue-id}-{kebab-title}/Implementation Logs/\` - Find UI components
384
- - \`grep -r "function" .specflow/specs/{issue-id}-{kebab-title}/Implementation Logs/\` - Find utility functions
385
- - \`grep -r "integration" .specflow/specs/{issue-id}-{kebab-title}/Implementation Logs/\` - Find integration patterns
386
+ - \`grep -r "api\|endpoint" ${wr}/specs/{issue-id}-{kebab-title}/Implementation Logs/\` - Find API endpoints
387
+ - \`grep -r "component" ${wr}/specs/{issue-id}-{kebab-title}/Implementation Logs/\` - Find UI components
388
+ - \`grep -r "function" ${wr}/specs/{issue-id}-{kebab-title}/Implementation Logs/\` - Find utility functions
389
+ - \`grep -r "integration" ${wr}/specs/{issue-id}-{kebab-title}/Implementation Logs/\` - Find integration patterns
386
390
  - **Option 2: Read markdown files directly** - Use Read tool to examine specific log files
387
391
  - Best practice: Search 2-3 different terms to discover comprehensively
388
392
  - This prevents: duplicate endpoints, reimplemented components, broken integrations
@@ -424,7 +428,7 @@ Never write implementation code in the main context — dispatch a subagent inst
424
428
 
425
429
  **Parallel Session** — If the plan has 10+ tasks, split into session-sized batches. Each session handles ~3-4 batches of 3 tasks. Use a handoff mechanism between sessions to relay context (spec name, completed tasks, next task).
426
430
 
427
- **Implementer template**: See \`.specflow/templates/implementer-prompt-template.md\` for the subagent dispatch template. Paste the full task text into the subagent prompt — don't make the subagent read the plan file.
431
+ **Implementer template**: See \`${wr}/templates/implementer-prompt-template.md\` for the subagent dispatch template. Paste the full task text into the subagent prompt — don't make the subagent read the plan file.
428
432
 
429
433
  #### Two-Stage Review (after each task, BEFORE marking [x])
430
434
 
@@ -436,7 +440,7 @@ Dispatch a reviewer subagent to verify the implementer built what was requested
436
440
  - Check for missing requirements, extra/unneeded work, misunderstandings
437
441
  - ✅ Pass = proceed to Stage 2
438
442
  - ❌ Fail = implementer fixes issues → dispatch reviewer again
439
- - Template: \`.specflow/templates/spec-reviewer-template.md\`
443
+ - Template: \`${wr}/templates/spec-reviewer-template.md\`
440
444
 
441
445
  **Stage 2 — Code Quality Review:**
442
446
  Only dispatch AFTER Stage 1 passes. Verify the code is well-built and production-ready.
@@ -444,7 +448,7 @@ Only dispatch AFTER Stage 1 passes. Verify the code is well-built and production
444
448
  - Categorize issues: Critical (must fix) / Important (should fix) / Minor (nice to have)
445
449
  - ✅ Approved = proceed to log-implementation → mark [x]
446
450
  - Issues found = implementer fixes → dispatch reviewer again
447
- - Template: \`.specflow/templates/code-quality-reviewer-template.md\`
451
+ - Template: \`${wr}/templates/code-quality-reviewer-template.md\`
448
452
 
449
453
  **Review loop:** If either reviewer finds issues, the implementer subagent fixes them, then the reviewer re-reviews. Repeat until approved. Never skip re-review — "it should be fine now" is not verification.
450
454
 
@@ -476,7 +480,7 @@ Phase 5 has three stages. The spec is NOT complete until all three are done.
476
480
  **Purpose**: Run the project's test suite to verify the implementation.
477
481
 
478
482
  **Process**:
479
- 1. Check \`.specflow/project-conventions.json\` for the project's test command and framework.
483
+ 1. Check \`${wr}/project-conventions.json\` for the project's test command and framework.
480
484
  2. If conventions exist and specify a test command: run that command (e.g., \`npm test\`, \`npx vitest\`, \`pytest\`).
481
485
  3. If no conventions exist: check \`package.json\` for a \`test\` script. If found, run \`npm test\`. If not found, ask the user for the test command.
482
486
  4. If the project uses Browserbase/Stagehand (\`conventions.testing.hasBrowserbase\` is true):
@@ -535,7 +539,7 @@ Phase 5 has three stages. The spec is NOT complete until all three are done.
535
539
  ## Workflow Rules
536
540
 
537
541
  - Create documents directly at specified file paths
538
- - Read templates from \`.specflow/templates/\` directory
542
+ - Templates are resolved automatically: project override (${wr}/templates/) → global → bundled fallback
539
543
  - Follow exact template structures
540
544
  - Get explicit user approval between phases (using approvals tool with action:'request')
541
545
  - Complete phases in sequence (no skipping)
@@ -559,32 +563,30 @@ Phase 5 has three stages. The spec is NOT complete until all three are done.
559
563
  - Steering docs are optional - only create when explicitly requested
560
564
 
561
565
  ## File Structure
566
+
567
+ All specflow artifacts live in DocVault. The project root only has \`.specflow/config.json\`.
568
+
562
569
  \`\`\`
563
- .specflow/
564
- ├── templates/ # Auto-populated on server start
565
- │ ├── requirements-template.md
566
- │ ├── design-template.md
567
- │ ├── tasks-template.md
568
- │ ├── product-template.md
569
- │ ├── tech-template.md
570
- │ └── structure-template.md
570
+ ${wr}/ # DocVault/specflow/{project}/ (resolved via config.json)
571
+ ├── templates/ # Project-level overrides ONLY (not copies of globals)
571
572
  ├── specs/
572
573
  │ └── {ISSUE-ID}-{kebab-title}/
573
574
  │ ├── requirements.md
574
575
  │ ├── design.md
575
576
  │ ├── tasks.md
576
- │ ├── readiness-report.md # Phase 3.9 — NOT tasks.md
577
+ │ ├── readiness-report.md # Phase 3.9
577
578
  │ ├── artifacts/ # Visual source of truth for UI specs
578
- │ │ ├── playground.html # Approved interactive prototype (Phase 3.5)
579
- │ │ └── *.png # Mockup screenshots / Stitch exports
580
- │ └── Implementation Logs/ # Created automatically
579
+ │ │ ├── playground.html
580
+ │ │ └── *.png
581
+ │ └── Implementation Logs/
581
582
  │ ├── task-1_timestamp_id.md
582
- │ ├── task-2_timestamp_id.md
583
583
  │ └── ...
584
- └── steering/
585
- ├── product.md
586
- ├── tech.md
587
- └── structure.md
584
+ ├── steering/
585
+ ├── product.md
586
+ ├── tech.md
587
+ └── structure.md
588
+ ├── approvals/ # Approval records
589
+ └── archive/specs/ # Archived specs
588
590
  \`\`\``;
589
591
  }
590
592
  //# sourceMappingURL=spec-workflow-guide.js.map