@lbruton/specflow 3.0.0 → 3.2.0

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 (37) hide show
  1. package/CHANGELOG.md +89 -0
  2. package/README.md +34 -26
  3. package/dist/core/__tests__/convention-detector.test.d.ts +2 -0
  4. package/dist/core/__tests__/convention-detector.test.d.ts.map +1 -0
  5. package/dist/core/__tests__/convention-detector.test.js +199 -0
  6. package/dist/core/__tests__/convention-detector.test.js.map +1 -0
  7. package/dist/core/__tests__/security-utils.test.js +2 -2
  8. package/dist/core/__tests__/security-utils.test.js.map +1 -1
  9. package/dist/core/__tests__/template-generator.test.d.ts +2 -0
  10. package/dist/core/__tests__/template-generator.test.d.ts.map +1 -0
  11. package/dist/core/__tests__/template-generator.test.js +167 -0
  12. package/dist/core/__tests__/template-generator.test.js.map +1 -0
  13. package/dist/core/convention-detector.d.ts +36 -0
  14. package/dist/core/convention-detector.d.ts.map +1 -0
  15. package/dist/core/convention-detector.js +298 -0
  16. package/dist/core/convention-detector.js.map +1 -0
  17. package/dist/core/project-registry.d.ts +6 -0
  18. package/dist/core/project-registry.d.ts.map +1 -1
  19. package/dist/core/project-registry.js +17 -1
  20. package/dist/core/project-registry.js.map +1 -1
  21. package/dist/core/security-utils.js +2 -2
  22. package/dist/core/security-utils.js.map +1 -1
  23. package/dist/core/template-generator.d.ts +21 -0
  24. package/dist/core/template-generator.d.ts.map +1 -0
  25. package/dist/core/template-generator.js +217 -0
  26. package/dist/core/template-generator.js.map +1 -0
  27. package/dist/markdown/templates/design-template.md +8 -6
  28. package/dist/markdown/templates/tasks-template.md +23 -20
  29. package/dist/prompts/index.d.ts.map +1 -1
  30. package/dist/prompts/index.js +3 -0
  31. package/dist/prompts/index.js.map +1 -1
  32. package/dist/tools/spec-status.d.ts.map +1 -1
  33. package/dist/tools/spec-status.js +35 -8
  34. package/dist/tools/spec-status.js.map +1 -1
  35. package/dist/tools/spec-workflow-guide.js +25 -15
  36. package/dist/tools/spec-workflow-guide.js.map +1 -1
  37. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"security-utils.js","sourceRoot":"","sources":["../../src/core/security-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"security-utils.js","sourceRoot":"","sources":["../../src/core/security-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { ProjectConventions } from './convention-detector.js';
2
+ export interface GeneratedTemplates {
3
+ designTemplate: string;
4
+ tasksTemplate: string;
5
+ }
6
+ /**
7
+ * Generate project-specific user-templates from detected conventions.
8
+ *
9
+ * Reads the current default templates (from .spec-workflow/templates/ or bundled fallback),
10
+ * then replaces the Testing Strategy and Standard Closing Tasks sections with
11
+ * project-specific content based on the detected conventions.
12
+ */
13
+ export declare function generateUserTemplates(projectPath: string, conventions: ProjectConventions): Promise<GeneratedTemplates>;
14
+ /**
15
+ * Write generated user-templates to `.spec-workflow/user-templates/`.
16
+ *
17
+ * IMPORTANT: If user-templates already exist, this function returns early
18
+ * without overwriting them. Users own their user-templates once created.
19
+ */
20
+ export declare function writeUserTemplates(projectPath: string, templates: GeneratedTemplates): Promise<void>;
21
+ //# sourceMappingURL=template-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-generator.d.ts","sourceRoot":"","sources":["../../src/core/template-generator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAInE,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB;AA+LD;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,kBAAkB,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CAU7B;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,kBAAkB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAkBf"}
@@ -0,0 +1,217 @@
1
+ import { readFile, mkdir, writeFile, stat } from 'fs/promises';
2
+ import { join, dirname } from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ const __dirname = dirname(fileURLToPath(import.meta.url));
5
+ /**
6
+ * Safely read a file, returning null on any error.
7
+ */
8
+ async function safeReadFile(filePath) {
9
+ try {
10
+ return await readFile(filePath, 'utf-8');
11
+ }
12
+ catch {
13
+ return null;
14
+ }
15
+ }
16
+ /**
17
+ * Check if a file exists.
18
+ */
19
+ async function fileExists(filePath) {
20
+ try {
21
+ const s = await stat(filePath);
22
+ return s.isFile();
23
+ }
24
+ catch {
25
+ return false;
26
+ }
27
+ }
28
+ /**
29
+ * Read a default template by name, checking the project's .spec-workflow/templates/
30
+ * first, then falling back to the bundled src/markdown/templates/.
31
+ */
32
+ async function readDefaultTemplate(projectPath, templateName) {
33
+ // Primary: project's copied templates
34
+ const projectTemplate = join(projectPath, '.spec-workflow', 'templates', `${templateName}.md`);
35
+ const content = await safeReadFile(projectTemplate);
36
+ if (content !== null) {
37
+ return content;
38
+ }
39
+ // Fallback: bundled source templates (compiled to dist/core/, so go up to dist/markdown/templates/)
40
+ const bundledTemplate = join(__dirname, '..', 'markdown', 'templates', `${templateName}.md`);
41
+ const bundledContent = await safeReadFile(bundledTemplate);
42
+ if (bundledContent !== null) {
43
+ return bundledContent;
44
+ }
45
+ throw new Error(`Could not find default template "${templateName}.md" in project or bundled sources`);
46
+ }
47
+ /**
48
+ * Generate the Testing Strategy section for browserbase projects.
49
+ */
50
+ function generateBrowserbaseTestingStrategy() {
51
+ return `### Runbook E2E Tests (Primary)
52
+ - Identify affected \`tests/runbook/\` section(s): [01-page-load, 02-crud, 03-backup-restore, 04-import-export, 05-market, 06-ui-ux, 07-activity-log, 08-spot-prices]
53
+ - New test blocks to write (TDD — before implementation): [describe tests]
54
+ - Run via \`/bb-test sections=NN\` against PR preview URL
55
+
56
+ ### Manual Verification
57
+ - [Any flows that require manual testing]`;
58
+ }
59
+ /**
60
+ * Generate the Testing Strategy section for non-browserbase projects.
61
+ */
62
+ function generateGenericTestingStrategy(conventions) {
63
+ const framework = conventions.testing.framework || 'Not detected — identify manually';
64
+ const command = conventions.testing.command || 'npm test';
65
+ const testDir = conventions.testing.testDir || 'tests/';
66
+ return `### Automated Tests
67
+ - **Test Framework:** ${framework}
68
+ - **Test Command:** \`${command}\`
69
+ - **Test Directory:** \`${testDir}\`
70
+ - **New tests to write (TDD — before implementation):** [describe tests using ${framework}]
71
+ - **Run via:** \`${command}\` after implementation
72
+
73
+ ### Manual Verification
74
+ - [Any flows that require manual testing beyond the automated test suite]`;
75
+ }
76
+ /**
77
+ * Replace the Testing Strategy section in the design template with project-specific content.
78
+ */
79
+ function replaceDesignTestingStrategy(template, conventions) {
80
+ const replacement = conventions.testing.hasBrowserbase
81
+ ? generateBrowserbaseTestingStrategy()
82
+ : generateGenericTestingStrategy(conventions);
83
+ // Match the ## Testing Strategy section up to the next ## heading or end of file
84
+ const sectionRegex = /## Testing Strategy\n[\s\S]*?(?=\n## |\n$|$)/;
85
+ if (sectionRegex.test(template)) {
86
+ return template.replace(sectionRegex, `## Testing Strategy\n\n${replacement}`);
87
+ }
88
+ // If no Testing Strategy section found, append it
89
+ return template + `\n\n## Testing Strategy\n\n${replacement}\n`;
90
+ }
91
+ /**
92
+ * Generate the Standard Closing Tasks section for browserbase projects.
93
+ * Reproduces the runbook-specific tasks from the StakTrakr-era template.
94
+ */
95
+ function generateBrowserbaseClosingTasks() {
96
+ return `## Standard Closing Tasks
97
+
98
+ - [ ] 6. Integration and testing
99
+ - Plan integration approach and identify affected runbook sections for TDD test authoring
100
+ - _Leverage: tests/runbook/*.md, /browserbase-test-maintenance skill_
101
+ - _Requirements: 6.0_
102
+ - _Prompt: Role: Integration Engineer with expertise in system integration and testing strategies | Task: Plan comprehensive integration approach following requirement 6.0. Identify which tests/runbook/ section files are affected by this spec and write new runbook test blocks BEFORE implementation tasks begin (TDD). Use the /browserbase-test-maintenance skill for format guidance and section mapping. | Restrictions: Must consider all system components, ensure proper test coverage, write tests in the standard 7-field runbook format | Success: Integration plan is comprehensive, runbook test blocks are written for all new user-facing behavior, tests are appended to the correct section files_
103
+
104
+ - [ ] 6.1 Write end-to-end runbook tests (TDD — write BEFORE implementation)
105
+ - Write runbook test blocks in tests/runbook/*.md for new user-facing behavior
106
+ - Use the /browserbase-test-maintenance skill for the standard 7-field format
107
+ - Map implementation changes to the correct runbook section file
108
+ - _Leverage: /browserbase-test-maintenance skill, tests/runbook/*.md section files_
109
+ - _Requirements: All_
110
+ - _Prompt: Role: QA Automation Engineer with expertise in Browserbase/Stagehand natural-language browser automation | Task: Write runbook test blocks in tests/runbook/*.md for all new user-facing behavior using the /browserbase-test-maintenance skill. Each test block must use the 7-field format (Test name, Added, Preconditions, Steps, Pass criteria, Tags, Section). Map changes to the correct section file. After implementation, verify by running /bb-test sections=NN against the PR preview URL. | Restrictions: Use the standard runbook format, append to section files (never modify existing tests), act steps must be atomic. No Playwright, no browserless. | Success: All new user-facing behavior has corresponding runbook test blocks, tests pass when run via /bb-test against the PR preview URL_
111
+
112
+ - [ ] 6.2 Verify tests against PR preview
113
+ - Run /bb-test sections=NN against PR preview URL to verify all new tests pass
114
+ - _Leverage: /bb-test skill, PR preview URL from gh pr checks_
115
+ - _Requirements: All_
116
+ - _Prompt: Role: QA Automation Engineer | Task: Run /bb-test sections=NN against the PR preview URL to verify all new runbook tests pass. Get the preview URL with: gh pr checks <PR_NUMBER> --json name,state,targetUrl. For 1-3 tests, consider manual verification via Chrome DevTools instead of a full Browserbase session. | Restrictions: Do NOT use Playwright or browserless. | Success: All new tests pass against the PR preview URL_
117
+
118
+ - [ ] 6.3 Final integration and cleanup
119
+ - Integrate all components
120
+ - Fix any integration issues
121
+ - Clean up code and documentation
122
+ - _Leverage: src/utils/cleanup.ts, docs/templates/_
123
+ - _Requirements: All_
124
+ - _Prompt: Role: Senior Developer with expertise in code quality and system integration | Task: Complete final integration of all components and perform comprehensive cleanup covering all requirements, using cleanup utilities and documentation templates | Restrictions: Must not break existing functionality, ensure code quality standards are met, maintain documentation consistency | Success: All components are fully integrated and working together, code is clean and well-documented, system meets all requirements and quality standards_`;
125
+ }
126
+ /**
127
+ * Generate the Standard Closing Tasks section for non-browserbase projects.
128
+ * Uses the generic test command from detected conventions.
129
+ */
130
+ function generateGenericClosingTasks(conventions) {
131
+ const command = conventions.testing.command || 'npm test';
132
+ const framework = conventions.testing.framework || 'the project test framework';
133
+ return `## Standard Closing Tasks
134
+
135
+ - [ ] 6. Run project test suite and verify baseline
136
+ - Run \`${command}\` to establish a passing baseline before changes
137
+ - If no test suite exists, flag this and discuss with the user
138
+ - _Leverage: Project test configuration (package.json scripts, vitest.config, jest.config, etc.)_
139
+ - _Requirements: All_
140
+ - _Prompt: Role: QA Engineer | Task: Run the project's established test suite (\`${command}\`) to verify a passing baseline before implementation. If no test suite exists, flag this to the user. | Restrictions: Use the project's existing test framework, do not introduce a new one. | Success: Test suite runs and baseline results are recorded._
141
+
142
+ - [ ] 6.1 Write tests for new behavior (TDD — write BEFORE implementation)
143
+ - Write failing tests using ${framework} for all new behavior
144
+ - Tests should cover the acceptance criteria from requirements.md
145
+ - _Leverage: Project test framework, requirements.md acceptance criteria_
146
+ - _Requirements: All_
147
+ - _Prompt: Role: QA Engineer | Task: Write failing tests for all new behavior described in requirements.md using ${framework}. Follow TDD - tests must fail before implementation, pass after. | Restrictions: Use the project's existing test framework. Tests must be runnable with \`${command}\`. | Success: Failing tests exist for all new acceptance criteria._
148
+
149
+ - [ ] 6.2 Verify all tests pass after implementation
150
+ - Run \`${command}\` after all implementation tasks are complete
151
+ - All new tests must pass; no existing tests may regress
152
+ - _Leverage: Project test command_
153
+ - _Requirements: All_
154
+ - _Prompt: Role: QA Engineer | Task: Run \`${command}\`. Verify all new tests pass and no existing tests regressed. | Restrictions: Do not skip or disable failing tests. | Success: Full test suite passes with zero regressions._
155
+
156
+ - [ ] 6.3 Final integration and cleanup
157
+ - Integrate all components
158
+ - Verify no lint or type errors
159
+ - Clean up temporary code and documentation
160
+ - _Leverage: Project lint/build commands_
161
+ - _Requirements: All_
162
+ - _Prompt: Role: Senior Developer | Task: Complete final integration of all components and perform comprehensive cleanup. Run lint and type checks. Remove any temporary code or debug statements. | Restrictions: Must not break existing functionality. Ensure code quality standards are met. | Success: All components integrated, no lint or type errors, code is clean._`;
163
+ }
164
+ /**
165
+ * Replace the Standard Closing Tasks section in the tasks template with project-specific content.
166
+ */
167
+ function replaceTasksClosingSection(template, conventions) {
168
+ const replacement = conventions.testing.hasBrowserbase
169
+ ? generateBrowserbaseClosingTasks()
170
+ : generateGenericClosingTasks(conventions);
171
+ // Match the ## Standard Closing Tasks section to end of file
172
+ const sectionRegex = /## Standard Closing Tasks\n[\s\S]*$/;
173
+ if (sectionRegex.test(template)) {
174
+ return template.replace(sectionRegex, replacement.replace(/^## Standard Closing Tasks\n/, '## Standard Closing Tasks\n'));
175
+ }
176
+ // If no Standard Closing Tasks section found, append it
177
+ return template + '\n\n' + replacement + '\n';
178
+ }
179
+ /**
180
+ * Generate project-specific user-templates from detected conventions.
181
+ *
182
+ * Reads the current default templates (from .spec-workflow/templates/ or bundled fallback),
183
+ * then replaces the Testing Strategy and Standard Closing Tasks sections with
184
+ * project-specific content based on the detected conventions.
185
+ */
186
+ export async function generateUserTemplates(projectPath, conventions) {
187
+ const [designRaw, tasksRaw] = await Promise.all([
188
+ readDefaultTemplate(projectPath, 'design-template'),
189
+ readDefaultTemplate(projectPath, 'tasks-template'),
190
+ ]);
191
+ const designTemplate = replaceDesignTestingStrategy(designRaw, conventions);
192
+ const tasksTemplate = replaceTasksClosingSection(tasksRaw, conventions);
193
+ return { designTemplate, tasksTemplate };
194
+ }
195
+ /**
196
+ * Write generated user-templates to `.spec-workflow/user-templates/`.
197
+ *
198
+ * IMPORTANT: If user-templates already exist, this function returns early
199
+ * without overwriting them. Users own their user-templates once created.
200
+ */
201
+ export async function writeUserTemplates(projectPath, templates) {
202
+ const userTemplatesDir = join(projectPath, '.spec-workflow', 'user-templates');
203
+ const designPath = join(userTemplatesDir, 'design-template.md');
204
+ const tasksPath = join(userTemplatesDir, 'tasks-template.md');
205
+ // Check if either user-template already exists — if so, do not overwrite
206
+ if (await fileExists(designPath) || await fileExists(tasksPath)) {
207
+ return;
208
+ }
209
+ // Create directory if needed
210
+ await mkdir(userTemplatesDir, { recursive: true });
211
+ // Write both templates
212
+ await Promise.all([
213
+ writeFile(designPath, templates.designTemplate, 'utf-8'),
214
+ writeFile(tasksPath, templates.tasksTemplate, 'utf-8'),
215
+ ]);
216
+ }
217
+ //# sourceMappingURL=template-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-generator.js","sourceRoot":"","sources":["../../src/core/template-generator.ts"],"names":[],"mappings":"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"}
@@ -131,11 +131,13 @@ _If **No**, skip this section entirely. If **Yes**, complete all fields below
131
131
 
132
132
  ## Testing Strategy
133
133
 
134
- ### Runbook E2E Tests (Primary)
135
- - Identify affected `tests/runbook/` section(s): [01-page-load, 02-crud, 03-backup-restore, 04-import-export, 05-market, 06-ui-ux, 07-activity-log, 08-spot-prices]
136
- - New test blocks to write (TDDbefore implementation): [describe tests]
137
- - Run via `/bb-test sections=NN` against PR preview URL
134
+ ### Automated Tests
135
+ - **Test Framework:** [Identify the project's test framework check for vitest.config, jest.config, pytest.ini, or package.json test script]
136
+ - **Test Command:** [The command to run the project's test suite e.g., `npm test`, `npx vitest`, `pytest`]
137
+ - **Test Directory:** [Where tests live in this project — e.g., `src/__tests__/`, `tests/`, `test/`]
138
+ - **New tests to write (TDD — before implementation):** [describe tests using the project's framework]
139
+ - **Run via:** [project's test command] after implementation
138
140
 
139
141
  ### Manual Verification
140
- - [Any flows that require manual testing, e.g., OAuth/Dropbox cloud sync at beta.staktrakr.com]
141
- - [Flows requiring API keys from Infisical]
142
+ - [Any flows that require manual testing beyond the automated test suite]
143
+ - [Flows requiring API keys, external services, or user interaction]
@@ -153,30 +153,33 @@
153
153
  - _Requirements: 5.2, 5.3_
154
154
  - _Prompt: Role: React Developer with expertise in state management and API integration | Task: Implement feature-specific components following requirements 5.2 and 5.3, using API hooks from src/hooks/useApi.ts and extending BaseComponent patterns | Restrictions: Must use existing state management patterns, handle loading and error states properly, maintain component performance | Success: Components are fully functional with proper state management, API integration works smoothly, user experience is responsive and intuitive_
155
155
 
156
- - [ ] 6. Integration and testing
157
- - Plan integration approach and identify affected runbook sections for TDD test authoring
158
- - _Leverage: tests/runbook/*.md, /browserbase-test-maintenance skill_
159
- - _Requirements: 6.0_
160
- - _Prompt: Role: Integration Engineer with expertise in system integration and testing strategies | Task: Plan comprehensive integration approach following requirement 6.0. Identify which tests/runbook/ section files are affected by this spec and write new runbook test blocks BEFORE implementation tasks begin (TDD). Use the /browserbase-test-maintenance skill for format guidance and section mapping. | Restrictions: Must consider all system components, ensure proper test coverage, write tests in the standard 7-field runbook format | Success: Integration plan is comprehensive, runbook test blocks are written for all new user-facing behavior, tests are appended to the correct section files_
161
-
162
- - [ ] 6.1 Write end-to-end runbook tests (TDD — write BEFORE implementation)
163
- - Write runbook test blocks in tests/runbook/*.md for new user-facing behavior
164
- - Use the /browserbase-test-maintenance skill for the standard 7-field format
165
- - Map implementation changes to the correct runbook section file
166
- - _Leverage: /browserbase-test-maintenance skill, tests/runbook/*.md section files_
156
+ ## Standard Closing Tasks
157
+
158
+ - [ ] 6. Run project test suite and verify baseline
159
+ - Run the project's test command to establish a passing baseline before changes
160
+ - If no test suite exists, flag this and discuss with the user
161
+ - _Leverage: Project test configuration (package.json scripts, vitest.config, jest.config, etc.)_
162
+ - _Requirements: All_
163
+ - _Prompt: Role: QA Engineer | Task: Run the project's established test suite to verify a passing baseline before implementation. Identify the test command from package.json, CLAUDE.md, or project conventions. If no test suite exists, flag this to the user. | Restrictions: Use the project's existing test framework, do not introduce a new one. | Success: Test suite runs and baseline results are recorded._
164
+
165
+ - [ ] 6.1 Write tests for new behavior (TDD — write BEFORE implementation)
166
+ - Write failing tests using the project's test framework for all new behavior
167
+ - Tests should cover the acceptance criteria from requirements.md
168
+ - _Leverage: Project test framework, requirements.md acceptance criteria_
167
169
  - _Requirements: All_
168
- - _Prompt: Role: QA Automation Engineer with expertise in Browserbase/Stagehand natural-language browser automation | Task: Write runbook test blocks in tests/runbook/*.md for all new user-facing behavior using the /browserbase-test-maintenance skill. Each test block must use the 7-field format (Test name, Added, Preconditions, Steps, Pass criteria, Tags, Section). Map changes to the correct section file. After implementation, verify by running /bb-test sections=NN against the PR preview URL. | Restrictions: Use the standard runbook format, append to section files (never modify existing tests), act steps must be atomic. No Playwright, no browserless. | Success: All new user-facing behavior has corresponding runbook test blocks, tests pass when run via /bb-test against the PR preview URL_
170
+ - _Prompt: Role: QA Engineer | Task: Write failing tests for all new behavior described in requirements.md using the project's test framework. Follow TDD - tests must fail before implementation, pass after. | Restrictions: Use the project's existing test framework. Tests must be runnable with the project's test command. | Success: Failing tests exist for all new acceptance criteria._
169
171
 
170
- - [ ] 6.2 Verify tests against PR preview
171
- - Run /bb-test sections=NN against PR preview URL to verify all new tests pass
172
- - _Leverage: /bb-test skill, PR preview URL from gh pr checks_
172
+ - [ ] 6.2 Verify all tests pass after implementation
173
+ - Run the full test suite after all implementation tasks are complete
174
+ - All new tests must pass; no existing tests may regress
175
+ - _Leverage: Project test command_
173
176
  - _Requirements: All_
174
- - _Prompt: Role: QA Automation Engineer | Task: Run /bb-test sections=NN against the PR preview URL to verify all new runbook tests pass. Get the preview URL with: gh pr checks <PR_NUMBER> --json name,state,targetUrl. For 1-3 tests, consider manual verification via Chrome DevTools instead of a full Browserbase session. | Restrictions: Do NOT use Playwright or browserless. | Success: All new tests pass against the PR preview URL_
177
+ - _Prompt: Role: QA Engineer | Task: Run the project's full test suite. Verify all new tests pass and no existing tests regressed. | Restrictions: Do not skip or disable failing tests. | Success: Full test suite passes with zero regressions._
175
178
 
176
179
  - [ ] 6.3 Final integration and cleanup
177
180
  - Integrate all components
178
- - Fix any integration issues
179
- - Clean up code and documentation
180
- - _Leverage: src/utils/cleanup.ts, docs/templates/_
181
+ - Verify no lint or type errors
182
+ - Clean up temporary code and documentation
183
+ - _Leverage: Project lint/build commands_
181
184
  - _Requirements: All_
182
- - _Prompt: Role: Senior Developer with expertise in code quality and system integration | Task: Complete final integration of all components and perform comprehensive cleanup covering all requirements, using cleanup utilities and documentation templates | Restrictions: Must not break existing functionality, ensure code quality standards are met, maintain documentation consistency | Success: All components are fully integrated and working together, code is clean and well-documented, system meets all requirements and quality standards_
185
+ - _Prompt: Role: Senior Developer | Task: Complete final integration of all components and perform comprehensive cleanup. Run lint and type checks. Remove any temporary code or debug statements. | Restrictions: Must not break existing functionality. Ensure code quality standards are met. | Success: All components integrated, no lint or type errors, code is clean._
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiB,iBAAiB,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC/G,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAuB1C;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAInE;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,YAAK,EAC9B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,eAAe,CAAC,CAa1B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiB,iBAAiB,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC/G,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA0B1C;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAInE;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,YAAK,EAC9B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,eAAe,CAAC,CAa1B"}
@@ -6,6 +6,9 @@ import { specStatusPrompt } from './spec-status.js';
6
6
  import { injectSpecWorkflowGuidePrompt } from './inject-spec-workflow-guide.js';
7
7
  import { injectSteeringGuidePrompt } from './inject-steering-guide.js';
8
8
  import { refreshTasksPrompt } from './refresh-tasks.js';
9
+ // wrap is now a plugin skill (skills/wrap/SKILL.md), not an MCP prompt
10
+ // prime is now a plugin skill (skills/prime/SKILL.md), not an MCP prompt
11
+ // audit is now a plugin skill (skills/audit/SKILL.md), not an MCP prompt
9
12
  // Registry of all prompts
10
13
  const promptDefinitions = [
11
14
  createSpecPrompt,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAIA,uCAAuC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,0BAA0B;AAC1B,MAAM,iBAAiB,GAAuB;IAC5C,gBAAgB;IAChB,uBAAuB;IACvB,mBAAmB;IACnB,gBAAgB;IAChB,6BAA6B;IAC7B,yBAAyB;IACzB,kBAAkB;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,OAAO;QACL,OAAO,EAAE,eAAe,EAAE;KAC3B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,OAA4B,EAAE,EAC9B,OAAoB;IAEpB,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAE1E,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxD,OAAO,EAAE,QAAQ,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAIA,uCAAuC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,uEAAuE;AACvE,yEAAyE;AACzE,yEAAyE;AAEzE,0BAA0B;AAC1B,MAAM,iBAAiB,GAAuB;IAC5C,gBAAgB;IAChB,uBAAuB;IACvB,mBAAmB;IACnB,gBAAgB;IAChB,6BAA6B;IAC7B,yBAAyB;IACzB,kBAAkB;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,OAAO;QACL,OAAO,EAAE,eAAe,EAAE;KAC3B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,OAA4B,EAAE,EAC9B,OAAoB;IAEpB,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAE1E,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxD,OAAO,EAAE,QAAQ,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"spec-status.d.ts","sourceRoot":"","sources":["../../src/tools/spec-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAMxD,eAAO,MAAM,cAAc,EAAE,IAwB5B,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAsN9F"}
1
+ {"version":3,"file":"spec-status.d.ts","sourceRoot":"","sources":["../../src/tools/spec-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAOxD,eAAO,MAAM,cAAc,EAAE,IAwB5B,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAqP9F"}
@@ -84,6 +84,17 @@ export async function specStatusHandler(args, context) {
84
84
  currentPhase = 'implementation';
85
85
  overallStatus = 'ready-for-implementation';
86
86
  }
87
+ // Read project conventions if available
88
+ let conventions = null;
89
+ try {
90
+ const { promises: fsPromises } = await import('fs');
91
+ const convPath = `${translatedPath}/.spec-workflow/project-conventions.json`;
92
+ const convContent = await fsPromises.readFile(convPath, 'utf-8');
93
+ conventions = JSON.parse(convContent);
94
+ }
95
+ catch {
96
+ // No conventions file — use generic defaults
97
+ }
87
98
  // Phase details
88
99
  const phaseDetails = [
89
100
  {
@@ -114,13 +125,26 @@ export async function specStatusHandler(args, context) {
114
125
  {
115
126
  name: 'Post-Implementation',
116
127
  status: currentPhase === 'post-implementation' ? 'action-required' : 'not-started',
117
- checklist: currentPhase === 'post-implementation' ? [
118
- 'DocVault updated (/vault-update)',
119
- 'E2E tests run (/bb-test)',
120
- 'Vault issues closed (mark Done)',
121
- 'GitHub issues closed (gh issue close)',
122
- 'Spec archived'
123
- ] : undefined
128
+ checklist: currentPhase === 'post-implementation' ? (() => {
129
+ const items = ['DocVault updated (/vault-update)'];
130
+ // Dynamic test item based on conventions
131
+ const testItem = conventions?.testing?.command
132
+ ? `Tests run (${conventions.testing.command})`
133
+ : 'Project test suite run';
134
+ items.push(testItem);
135
+ // Conditional version bump
136
+ if (conventions?.versioning?.hasVersionLock) {
137
+ items.push('Version bumped');
138
+ }
139
+ // Conditional changelog
140
+ if (conventions?.changelog?.hasChangelog || conventions?.changelog?.docvaultFallback) {
141
+ items.push('Changelog updated');
142
+ }
143
+ items.push('Vault issues closed (mark Done)');
144
+ items.push('GitHub issues closed (gh issue close)');
145
+ items.push('Spec archived');
146
+ return items;
147
+ })() : undefined
124
148
  }
125
149
  ];
126
150
  // Next steps based on current phase
@@ -164,7 +188,10 @@ export async function specStatusHandler(args, context) {
164
188
  nextSteps.push('All tasks completed (marked [x]) — Phase 5 required before spec is done');
165
189
  nextSteps.push('1. Run /vault-update to update affected DocVault documentation');
166
190
  nextSteps.push('2. Commit DocVault changes (DocVault commits go direct to main)');
167
- nextSteps.push('3. Run /bb-test against PR preview URL for E2E verification');
191
+ const testStep = conventions?.testing?.command
192
+ ? `3. Run project test suite (${conventions.testing.command})`
193
+ : '3. Run project test suite';
194
+ nextSteps.push(testStep);
168
195
  nextSteps.push('4. CLOSE all linked vault issues (mark status as Done in the issue markdown file)');
169
196
  nextSteps.push('5. CLOSE the linked GitHub issue if one exists (gh issue close)');
170
197
  nextSteps.push('6. Archive the spec after all issues are closed');
@@ -1 +1 @@
1
- {"version":3,"file":"spec-status.js","sourceRoot":"","sources":["../../src/tools/spec-status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spec-status.js","sourceRoot":"","sources":["../../src/tools/spec-status.ts"],"names":[],"mappings":"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"}
@@ -292,6 +292,12 @@ flowchart TD
292
292
  - **No contradictions**: Check for conflicting statements between documents (e.g., design says "modal" but tasks say "inline panel").
293
293
  - **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
294
  - **File touch map validation**: Verify the File Touch Map in tasks.md covers all files mentioned in individual tasks.
295
+ - **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 \`.spec-workflow/project-conventions.json\` (if exists):
297
+ - If version lock detected: verify a task covers version bump. Missing → FAIL.
298
+ - If changelog detected: verify a task covers changelog entry. Missing → FAIL.
299
+ - Verify a task covers DocVault documentation update. Missing → FAIL.
300
+ - If no conventions file exists: note "No project conventions detected — consider running convention detection" as an advisory finding (not a failure).
295
301
  3. Save the report as \`readiness-report.md\` in the spec folder using the output format below.
296
302
  4. Request dashboard approval using approvals tool with action:'request', filePath pointing to readiness-report.md
297
303
  5. Poll status using approvals with action:'status' until responded — the user has THREE options on the dashboard:
@@ -325,6 +331,14 @@ flowchart TD
325
331
  ## File Touch Map
326
332
  - Consistent | [Task 5 touches foo.js but File Touch Map omits it]
327
333
 
334
+ ## Test Design Coverage
335
+ - Task N: "[test task title]" ✓ | [NO TEST TASK FOUND] ✗
336
+
337
+ ## Release Hygiene
338
+ - Version bump task: ✓ / ✗ / N/A (no version lock)
339
+ - Changelog task: ✓ / ✗ / N/A (no changelog)
340
+ - DocVault task: ✓ / ✗
341
+
328
342
  ## Agent Recommendation
329
343
  {Brief explanation of the recommendation — why PASS/CONCERNS/FAIL}
330
344
  \`\`\`
@@ -457,23 +471,19 @@ Only dispatch AFTER Stage 1 passes. Verify the code is well-built and production
457
471
 
458
472
  Phase 5 has three stages. The spec is NOT complete until all three are done.
459
473
 
460
- #### Phase 5.1: Automated E2E
461
-
462
- **Tools**:
463
- - Skill \`bb-test\`: Browserbase/Stagehand cloud E2E tests — **primary E2E tool for all specs**
474
+ #### Phase 5.1: Automated Testing
464
475
 
465
- **⚠️ Do NOT use browserless or /smoke-test for spec E2E** browserless is unreliable. All E2E testing uses Browserbase/Stagehand.
476
+ **Purpose**: Run the project's test suite to verify the implementation.
466
477
 
467
478
  **Process**:
468
- 1. **Get the PR preview URL** before running E2E — do not test against staktrakr.pages.dev (main):
469
- \`\`\`bash
470
- # Get Cloudflare Pages preview URL from the draft PR
471
- gh pr checks <PR_NUMBER> --json name,state,targetUrl \\
472
- | python3 -c "import sys,json; checks=json.load(sys.stdin); [print(c['targetUrl']) for c in checks if 'pages.dev' in c.get('targetUrl','')]"
473
- \`\`\`
474
- Wait for the Cloudflare Pages check to complete (green) before proceeding.
475
- 2. Run \`/bb-test\` with the preview URL Browserbase/Stagehand against the PR preview deployment. Session has a **10-minute hard timeout**: if any individual test step has not returned a result within 10 minutes, skip it, log a warning, and move on.
476
- 3. If E2E tests fail: fix the failures before proceeding to QA. Do not skip to 5.2 with known test failures.
479
+ 1. Check \`.spec-workflow/project-conventions.json\` for the project's test command and framework.
480
+ 2. If conventions exist and specify a test command: run that command (e.g., \`npm test\`, \`npx vitest\`, \`pytest\`).
481
+ 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
+ 4. If the project uses Browserbase/Stagehand (\`conventions.testing.hasBrowserbase\` is true):
483
+ - Get the PR preview URL from the draft PR's deployment checks
484
+ - Run \`/bb-test\` with the preview URL for E2E browser testing
485
+ - This is IN ADDITION to the unit/integration tests from step 2
486
+ 5. If tests fail: fix the failures before proceeding to QA. Do not skip to 5.2 with known test failures.
477
487
 
478
488
  #### Phase 5.2: User QA Session
479
489
 
@@ -530,7 +540,7 @@ Phase 5 has three stages. The spec is NOT complete until all three are done.
530
540
  - Get explicit user approval between phases (using approvals tool with action:'request')
531
541
  - Complete phases in sequence (no skipping)
532
542
  - Phase 5 has three stages: 5.1 (automated E2E), 5.2 (user QA session), 5.3 (docs + PR finalization) — all three are mandatory. Docs run AFTER QA so documentation captures final post-QA code
533
- - Phase 5 E2E always uses Browserbase/Stagehand (/bb-test) against the PR preview URL never browserless/smoke-test
543
+ - Phase 5.1 runs the project's test suite as detected in project-conventions.json. Browserbase/Stagehand is used additionally when the project has browser-based E2E tests.
534
544
  - CRITICAL: During Phase 5.2 (User QA), the agent MUST NOT suggest merging, declare the work done, or push back on findings. The user drives QA, the agent fixes. QA ends ONLY when the user says so
535
545
  - CRITICAL: The spec finish line is marking the PR ready for review (Phase 5.3), NOT passing automated tests. Automated tests passing = ready for QA, not ready to merge
536
546
  - One spec at a time
@@ -1 +1 @@
1
- {"version":3,"file":"spec-workflow-guide.js","sourceRoot":"","sources":["../../src/tools/spec-workflow-guide.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,qBAAqB,GAAS;IACzC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE;;;kXAGmW;IAChX,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE;QACd,oBAAoB,EAAE,KAAK;KAC5B;IACD,WAAW,EAAE;QACX,KAAK,EAAE,qBAAqB;QAC5B,YAAY,EAAE,IAAI;KACnB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAAS,EAAE,OAAoB;IAC5E,wDAAwD;IACxD,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QAC7C,kCAAkC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QAC1D,gEAAgE,CAAC;IAEnE,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,oEAAoE;QAC7E,IAAI,EAAE;YACJ,KAAK,EAAE,oBAAoB,EAAE;YAC7B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,kBAAkB,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY;SAC3C;QACD,SAAS,EAAE;YACT,iEAAiE;YACjE,gDAAgD;YAChD,sCAAsC;YACtC,oBAAoB;YACpB,gBAAgB;SACjB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB;IAC3B,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7C,OAAO;;;;6PAIoP,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EA6IzL,WAAW;;;;;;;;;;;;;;;;;;;;;;;yEAuBjB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiX7E,CAAC;AACR,CAAC"}
1
+ {"version":3,"file":"spec-workflow-guide.js","sourceRoot":"","sources":["../../src/tools/spec-workflow-guide.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,qBAAqB,GAAS;IACzC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE;;;kXAGmW;IAChX,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE;QACd,oBAAoB,EAAE,KAAK;KAC5B;IACD,WAAW,EAAE;QACX,KAAK,EAAE,qBAAqB;QAC5B,YAAY,EAAE,IAAI;KACnB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAAS,EAAE,OAAoB;IAC5E,wDAAwD;IACxD,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QAC7C,kCAAkC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QAC1D,gEAAgE,CAAC;IAEnE,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,oEAAoE;QAC7E,IAAI,EAAE;YACJ,KAAK,EAAE,oBAAoB,EAAE;YAC7B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,kBAAkB,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY;SAC3C;QACD,SAAS,EAAE;YACT,iEAAiE;YACjE,gDAAgD;YAChD,sCAAsC;YACtC,oBAAoB;YACpB,gBAAgB;SACjB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB;IAC3B,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7C,OAAO;;;;6PAIoP,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EA6IzL,WAAW;;;;;;;;;;;;;;;;;;;;;;;yEAuBjB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2X7E,CAAC;AACR,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lbruton/specflow",
3
- "version": "3.0.0",
3
+ "version": "3.2.0",
4
4
  "description": "MCP server for spec-driven development workflow with real-time web dashboard",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",