@lbruton/specflow 3.1.0 → 3.2.1

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 (44) hide show
  1. package/README.md +22 -16
  2. package/dist/core/__tests__/convention-detector.test.d.ts +2 -0
  3. package/dist/core/__tests__/convention-detector.test.d.ts.map +1 -0
  4. package/dist/core/__tests__/convention-detector.test.js +199 -0
  5. package/dist/core/__tests__/convention-detector.test.js.map +1 -0
  6. package/dist/core/__tests__/security-utils.test.js +2 -2
  7. package/dist/core/__tests__/security-utils.test.js.map +1 -1
  8. package/dist/core/__tests__/template-generator.test.d.ts +2 -0
  9. package/dist/core/__tests__/template-generator.test.d.ts.map +1 -0
  10. package/dist/core/__tests__/template-generator.test.js +167 -0
  11. package/dist/core/__tests__/template-generator.test.js.map +1 -0
  12. package/dist/core/convention-detector.d.ts +36 -0
  13. package/dist/core/convention-detector.d.ts.map +1 -0
  14. package/dist/core/convention-detector.js +298 -0
  15. package/dist/core/convention-detector.js.map +1 -0
  16. package/dist/core/security-utils.js +2 -2
  17. package/dist/core/security-utils.js.map +1 -1
  18. package/dist/core/template-generator.d.ts +21 -0
  19. package/dist/core/template-generator.d.ts.map +1 -0
  20. package/dist/core/template-generator.js +217 -0
  21. package/dist/core/template-generator.js.map +1 -0
  22. package/dist/markdown/templates/design-template.md +8 -6
  23. package/dist/markdown/templates/tasks-template.md +23 -20
  24. package/dist/prompts/index.d.ts.map +1 -1
  25. package/dist/prompts/index.js +4 -7
  26. package/dist/prompts/index.js.map +1 -1
  27. package/dist/tools/spec-status.d.ts.map +1 -1
  28. package/dist/tools/spec-status.js +35 -8
  29. package/dist/tools/spec-status.js.map +1 -1
  30. package/dist/tools/spec-workflow-guide.js +25 -15
  31. package/dist/tools/spec-workflow-guide.js.map +1 -1
  32. package/package.json +1 -1
  33. package/dist/prompts/audit.d.ts +0 -3
  34. package/dist/prompts/audit.d.ts.map +0 -1
  35. package/dist/prompts/audit.js +0 -267
  36. package/dist/prompts/audit.js.map +0 -1
  37. package/dist/prompts/prime.d.ts +0 -3
  38. package/dist/prompts/prime.d.ts.map +0 -1
  39. package/dist/prompts/prime.js +0 -290
  40. package/dist/prompts/prime.js.map +0 -1
  41. package/dist/prompts/wrap.d.ts +0 -3
  42. package/dist/prompts/wrap.d.ts.map +0 -1
  43. package/dist/prompts/wrap.js +0 -285
  44. package/dist/prompts/wrap.js.map +0 -1
@@ -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;AA6B1C;;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,9 +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
- import { wrapPrompt } from './wrap.js';
10
- import { primePrompt } from './prime.js';
11
- import { auditPrompt } from './audit.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
12
12
  // Registry of all prompts
13
13
  const promptDefinitions = [
14
14
  createSpecPrompt,
@@ -17,10 +17,7 @@ const promptDefinitions = [
17
17
  specStatusPrompt,
18
18
  injectSpecWorkflowGuidePrompt,
19
19
  injectSteeringGuidePrompt,
20
- refreshTasksPrompt,
21
- wrapPrompt,
22
- primePrompt,
23
- auditPrompt
20
+ refreshTasksPrompt
24
21
  ];
25
22
  /**
26
23
  * Get all registered prompts
@@ -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;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,0BAA0B;AAC1B,MAAM,iBAAiB,GAAuB;IAC5C,gBAAgB;IAChB,uBAAuB;IACvB,mBAAmB;IACnB,gBAAgB;IAChB,6BAA6B;IAC7B,yBAAyB;IACzB,kBAAkB;IAClB,UAAU;IACV,WAAW;IACX,WAAW;CACZ,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.1.0",
3
+ "version": "3.2.1",
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",
@@ -1,3 +0,0 @@
1
- import { PromptDefinition } from './types.js';
2
- export declare const auditPrompt: PromptDefinition;
3
- //# sourceMappingURL=audit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/prompts/audit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA8Q9C,eAAO,MAAM,WAAW,EAAE,gBAGzB,CAAC"}
@@ -1,267 +0,0 @@
1
- const prompt = {
2
- name: 'audit',
3
- title: 'Project Health Audit',
4
- description: 'On-demand project health check covering code quality (CGC dead code, complexity), security posture (Codacy SRM), instruction file drift (CLAUDE.md vs Agents.md vs Gemini.md), issue landscape, and index health. Run when you want a thorough assessment — not needed every session.',
5
- arguments: [
6
- {
7
- name: 'focus',
8
- description: 'Focus the audit on a specific area: "code" (dead code, complexity), "security" (Codacy, SRM), "drift" (instruction file consistency), "issues" (stale/orphan issues), or "all" (default)',
9
- required: false
10
- }
11
- ]
12
- };
13
- async function handler(args, context) {
14
- const focus = args.focus || 'all';
15
- const sections = {
16
- code: focus === 'all' || focus === 'code',
17
- security: focus === 'all' || focus === 'security',
18
- drift: focus === 'all' || focus === 'drift',
19
- issues: focus === 'all' || focus === 'issues',
20
- };
21
- const messages = [
22
- {
23
- role: 'user',
24
- content: {
25
- type: 'text',
26
- text: `Run a project health audit. Focus: ${focus}.
27
-
28
- **Context:**
29
- - Project: ${context.projectPath}
30
- ${context.dashboardUrl ? `- Dashboard: ${context.dashboardUrl}` : ''}
31
-
32
- ---
33
-
34
- ## Phase 0: Project Identity
35
-
36
- \`\`\`bash
37
- cat .claude/project.json 2>/dev/null
38
- git remote get-url origin 2>/dev/null
39
- \`\`\`
40
-
41
- Extract: \`name\`, \`tag\`, \`issuePrefix\`, \`owner\`, \`repo\` (parse from git remote).
42
-
43
- ---
44
-
45
- ## Phase 1: Parallel Scans
46
-
47
- Dispatch ALL applicable scans simultaneously. Use agents for heavy work, main context for fast MCP calls.
48
-
49
- ${sections.code ? `### 1.1: Code Health (Agent: code-oracle, background)
50
-
51
- Dispatch a \`code-oracle\` agent:
52
- \`\`\`
53
- Run a full code health audit:
54
- - workingDir: ${context.projectPath}
55
-
56
- Checks:
57
- 1. Dead code detection via CGC (mcp__code-graph-context__find_dead_code)
58
- 2. Top 10 most complex functions via CGC (mcp__code-graph-context__find_most_complex_functions)
59
- 3. Convention violations in files changed in the last 14 days
60
- 4. If CGC unavailable, fall back to grep-based analysis of unused exports
61
-
62
- Output format: tables only, no prose. Max 20 findings per category.
63
- \`\`\`
64
- ` : '<!-- code scan skipped -->'}
65
- ${sections.security ? `### 1.2: Security Posture (main context, parallel)
66
-
67
- **Codacy SRM findings:**
68
- \`\`\`
69
- mcp__codacy__codacy_search_repository_srm_items(
70
- provider="gh", organization="<owner>", repository="<repo>",
71
- options={"statuses": ["OnTrack", "DueSoon", "Overdue"], "priorities": ["Critical", "High"]},
72
- limit=25
73
- )
74
- \`\`\`
75
-
76
- **Critical code quality issues:**
77
- \`\`\`
78
- mcp__codacy__codacy_list_repository_issues(
79
- provider="gh", organization="<owner>", repository="<repo>",
80
- options={"levels": ["Error"], "categories": ["security", "errorprone"]},
81
- limit=25
82
- )
83
- \`\`\`
84
-
85
- **DocVault security reviews — staleness check:**
86
- \`\`\`bash
87
- ls -t "/Volumes/DATA/GitHub/DocVault/Projects/<name>/Security Reviews/"*.md 2>/dev/null | head -1
88
- \`\`\`
89
- If the most recent review is older than 30 days, flag it as stale.
90
-
91
- **GitHub security alerts:**
92
- \`\`\`bash
93
- gh api repos/<owner>/<repo>/vulnerability-alerts 2>/dev/null || echo "alerts-unavailable"
94
- \`\`\`
95
- ` : '<!-- security scan skipped -->'}
96
- ${sections.drift ? `### 1.3: Instruction File Drift (main context, parallel)
97
-
98
- Check consistency across agent instruction files. Read ALL three files that exist for this project:
99
-
100
- \`\`\`bash
101
- # Find instruction files
102
- cat "${context.projectPath}/CLAUDE.md" 2>/dev/null | head -200
103
- cat "${context.projectPath}/.codex/config.toml" 2>/dev/null || cat "${context.projectPath}/Agents.md" 2>/dev/null | head -200
104
- cat "${context.projectPath}/Gemini.md" 2>/dev/null || cat "${context.projectPath}/.gemini/config.md" 2>/dev/null | head -200
105
- \`\`\`
106
-
107
- Also check the global instruction files:
108
- \`\`\`bash
109
- cat ~/.claude/CLAUDE.md 2>/dev/null | head -100
110
- cat ~/.codex/config.toml 2>/dev/null | head -100
111
- \`\`\`
112
-
113
- **Extract factual claims** from each file:
114
- - Tools/MCP servers referenced
115
- - Services referenced (Linear, GitHub, Jira, etc.)
116
- - Infrastructure references (IPs, ports, hostnames)
117
- - Project names and repo paths
118
- - Retired/deprecated items mentioned
119
- - Workflow steps or mandatory gates
120
-
121
- **Compare across files.** Report contradictions:
122
- - Tool X mentioned in CLAUDE.md but not in Agents.md
123
- - Service Y marked as "retired" in one file but still referenced in another
124
- - Different IPs or ports for the same service
125
- - Workflow steps that differ between agents
126
-
127
- **Format findings as a table:**
128
- | Claim | CLAUDE.md | Agents.md | Gemini.md | Issue |
129
- |-------|-----------|-----------|-----------|-------|
130
- | Linear usage | "retired 2026-03-13" | "track in INGEST project" | not mentioned | Stale reference in Agents.md |
131
- ` : '<!-- drift check skipped -->'}
132
- ${sections.issues ? `### 1.4: Issue Landscape (main context, parallel)
133
-
134
- **Vault issues:**
135
- \`\`\`bash
136
- # All open issues
137
- grep -rl "status: backlog\\|status: todo\\|status: in-progress" /Volumes/DATA/GitHub/DocVault/Projects/<name>/Issues/*.md 2>/dev/null
138
- \`\`\`
139
-
140
- For each open issue, read frontmatter to extract: id, title, status, priority, created date.
141
-
142
- **GitHub issues:**
143
- \`\`\`bash
144
- gh issue list --repo <owner>/<repo> --state open --json number,title,labels,createdAt --limit 30 2>/dev/null
145
- \`\`\`
146
-
147
- **Cross-reference with recent work:**
148
- \`\`\`bash
149
- git log --oneline -30 --no-merges
150
- \`\`\`
151
-
152
- Identify:
153
- - **Stale issues**: open for >30 days with no recent commits referencing them
154
- - **Done but not closed**: issues whose work appears in git log but status is still open
155
- - **Orphan GitHub issues**: GitHub issues with no corresponding vault issue (or vice versa)
156
- ` : '<!-- issue scan skipped -->'}
157
-
158
- ### 1.5: Index Health (always runs)
159
-
160
- \`\`\`
161
- mcp__claude-context__get_indexing_status(path="${context.projectPath}")
162
- \`\`\`
163
-
164
- If stale (>24h), trigger re-index:
165
- \`\`\`
166
- mcp__claude-context__index_codebase(path="${context.projectPath}")
167
- \`\`\`
168
-
169
- Check CGC:
170
- \`\`\`
171
- mcp__code-graph-context__get_repository_stats(repo_path="/workspace/<name>")
172
- \`\`\`
173
-
174
- If CGC function count seems low (<50 for medium+ projects), flag for re-index.
175
-
176
- ---
177
-
178
- ## Phase 2: Synthesis
179
-
180
- Wait for all scans to complete. Combine results into a structured report.
181
-
182
- ### Terminal Summary (display to user, <40 lines)
183
-
184
- \`\`\`
185
- # Audit — <ProjectName> (<date>)
186
-
187
- ${sections.code ? `## Code Health
188
- | Category | Count | Top Finding |
189
- |----------|-------|-------------|
190
- | Dead code | N | <most impactful unused symbol> |
191
- | Complexity | N hotspots | <highest CCN function> |
192
- | Conventions | N issues | <most common violation> |
193
- ` : ''}
194
- ${sections.security ? `## Security
195
- **Codacy SRM:** N Critical, N High | N Overdue
196
- <List Critical/Overdue items if any>
197
- **Code Quality:** N Error-level issues
198
- **Last Review:** <date> (<N days ago>)
199
- <If >30 days: "⚠ Stale — schedule a new security review">
200
- ` : ''}
201
- ${sections.drift ? `## Instruction File Drift
202
- <N contradictions found across CLAUDE.md / Agents.md / Gemini.md>
203
- <List each contradiction as a one-liner>
204
- <If clean: "All instruction files consistent.">
205
- ` : ''}
206
- ${sections.issues ? `## Issues
207
- | Status | Count |
208
- |--------|-------|
209
- | In Progress | N |
210
- | Backlog | N |
211
- | Stale (>30d) | N |
212
- | Done-not-closed | N |
213
- ` : ''}
214
- ## Index Health
215
- | Tool | Status | Details |
216
- |------|--------|---------|
217
- | claude-context | Fresh/Stale | N files |
218
- | CGC | Running/Down | N functions |
219
-
220
- ## Recommended Actions
221
- 1. <highest priority action>
222
- 2. <next>
223
- 3. <next>
224
- \`\`\`
225
-
226
- ### Full Report (write to DocVault)
227
-
228
- Write the complete report to:
229
- \`\`\`
230
- /Volumes/DATA/GitHub/DocVault/Projects/<name>/audit/<YYYY-MM-DD>-<HHMMSS>.md
231
- \`\`\`
232
-
233
- Include YAML frontmatter:
234
- \`\`\`yaml
235
- ---
236
- tags: [audit-report, <tag>]
237
- project: <name>
238
- date: <YYYY-MM-DD>
239
- focus: ${focus}
240
- ---
241
- \`\`\`
242
-
243
- The full report includes all raw findings (not just the summary). Commit to DocVault:
244
- \`\`\`bash
245
- cd /Volumes/DATA/GitHub/DocVault && mkdir -p "Projects/<name>/audit" && git add "Projects/<name>/audit/" && git commit -m "audit: <project> <date>" && git push origin main
246
- \`\`\`
247
-
248
- ---
249
-
250
- ## Rules
251
-
252
- - **Parallel by default.** All scans that can run simultaneously should.
253
- - **Graceful degradation.** If CGC is down, Codacy fails, or a file is missing — note it and continue. Never block the audit on a single failing check.
254
- - **Facts, not opinions.** Report what the tools find. Don't editorialize.
255
- - **Actionable output.** Every finding should map to a concrete next step.
256
- - **Don't fix during audit.** The audit reports; the user decides what to fix. Exception: if the user says "fix it" after seeing results, then proceed.
257
- - **Instruction drift is advisory.** Report contradictions but don't auto-sync files — each agent reads slightly different formats.`
258
- }
259
- }
260
- ];
261
- return messages;
262
- }
263
- export const auditPrompt = {
264
- prompt,
265
- handler
266
- };
267
- //# sourceMappingURL=audit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/prompts/audit.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,GAAW;IACrB,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,sBAAsB;IAC7B,WAAW,EAAE,uRAAuR;IACpS,SAAS,EAAE;QACT;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,0LAA0L;YACvM,QAAQ,EAAE,KAAK;SAChB;KACF;CACF,CAAC;AAEF,KAAK,UAAU,OAAO,CAAC,IAAyB,EAAE,OAAoB;IACpE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;IAElC,MAAM,QAAQ,GAAG;QACf,IAAI,EAAE,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM;QACzC,QAAQ,EAAE,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,UAAU;QACjD,KAAK,EAAE,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,OAAO;QAC3C,MAAM,EAAE,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,QAAQ;KAC9C,CAAC;IAEF,MAAM,QAAQ,GAAoB;QAChC;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,sCAAsC,KAAK;;;aAG5C,OAAO,CAAC,WAAW;EAC9B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;EAmBlE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;;;;;gBAKF,OAAO,CAAC,WAAW;;;;;;;;;;CAUlC,CAAC,CAAC,CAAC,4BAA4B;EAC9B,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BrB,CAAC,CAAC,CAAC,gCAAgC;EAClC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;;;;;;OAMZ,OAAO,CAAC,WAAW;OACnB,OAAO,CAAC,WAAW,4CAA4C,OAAO,CAAC,WAAW;OAClF,OAAO,CAAC,WAAW,mCAAmC,OAAO,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B/E,CAAC,CAAC,CAAC,8BAA8B;EAChC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;CAwBnB,CAAC,CAAC,CAAC,6BAA6B;;;;;iDAKgB,OAAO,CAAC,WAAW;;;;;4CAKxB,OAAO,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;EAqB7D,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;;;;;;CAMjB,CAAC,CAAC,CAAC,EAAE;EACJ,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;;;;;;CAMrB,CAAC,CAAC,CAAC,EAAE;EACJ,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;;;;CAIlB,CAAC,CAAC,CAAC,EAAE;EACJ,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;;;;;;;CAOnB,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;SA0BG,KAAK;;;;;;;;;;;;;;;;;;oIAkBsH;aAC7H;SACF;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAqB;IAC3C,MAAM;IACN,OAAO;CACR,CAAC"}
@@ -1,3 +0,0 @@
1
- import { PromptDefinition } from './types.js';
2
- export declare const primePrompt: PromptDefinition;
3
- //# sourceMappingURL=prime.d.ts.map