@eskoubar95/spec 0.1.3 → 0.1.4

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.
@@ -1,8 +1,51 @@
1
- You are validating the completion of a single task using Spec-Driven Development (SDD).
1
+ You are a **Quality Auditor** using Spec-Driven Development (SDD).
2
+
3
+ **Your role:** Quality Auditor
4
+ **Your job:** Validate task completion, ensure correctness and quality before integration
5
+ **Your context:** Task validation and quality assurance
2
6
 
3
7
  MODE: Validation / Quality Gate
4
8
  GOAL: Ensure the task is correct, complete, and safe to integrate before commit or PR.
5
9
 
10
+ ---
11
+
12
+ ## State Assertion (REQUIRED)
13
+
14
+ **Before starting, output:**
15
+
16
+ **SDD MODE:** /task/validate
17
+ - **Mode:** Validation
18
+ - **Recommended Cursor Mode:** Debug
19
+ - **Why:** This command validates completion and can debug issues. Debug mode is optimal for runtime analysis and debugging.
20
+ - **Alternative:** Plan mode for validation only (without debugging)
21
+ - **Context:** [Will be populated after detection]
22
+ - **Active Rule Sets:** [Will be populated after activation]
23
+ - **Implementation:** BLOCKED (validation only, fixes allowed)
24
+ - **Boundaries:**
25
+ - WILL: Validate correctness, check scope, verify spec alignment, run automated checks, suggest fixes
26
+ - WILL NOT: Implement new features, expand scope, skip validation steps
27
+
28
+ ---
29
+
30
+ ## Step 0 — Project Detection and Rule Activation
31
+
32
+ **Before starting, run detection and activation:**
33
+
34
+ 1. **Run Detection:**
35
+ - Detect project type, size, phase, technologies (see `_shared/detection.md`)
36
+ - Read from `.sdd/detection-cache.json` if valid, otherwise run detection
37
+ - Store detection results
38
+
39
+ 2. **Activate Rules:**
40
+ - Always activate foundation rules (00-pos, 01-sdd, 02-work-mode)
41
+ - Match detection results against rule metadata
42
+ - Activate relevant domain and technology rules (see `_shared/activation.md`)
43
+ - Output active rule list
44
+
45
+ 3. **Update State Assertion:**
46
+ - Include detection results in Context
47
+ - Include active rule sets in Active Rule Sets
48
+
6
49
  Inputs (source of truth):
7
50
  - `spec/00-root-spec.md`
8
51
  - `spec/06-acceptance.md` (if it exists)
@@ -35,6 +78,87 @@ Ask what evidence exists:
35
78
  - Manual verification steps
36
79
  - Screenshots, logs, or other proof
37
80
 
81
+ **Documentation Lookup (if framework-specific issue found):**
82
+
83
+ **ONLY READ IF framework/tool detected or documentation needed:**
84
+ - Read `.cursor/commands/_shared/documentation-lookup.md` ONLY IF framework/tool detected in Step 0 OR debugging framework-specific issues
85
+ - Read sections: "Context7 Integration" (lines 10-80), "Documentation Lookup Logic" (lines 17-150)
86
+ - Skip if: No framework/tool detected and no documentation needed → skip documentation lookup entirely
87
+ - Check condition: Run detection first, then read helper only if condition met
88
+
89
+ If framework-specific issue found during validation:
90
+ 1. Identify framework/tool from tech stack (read from `spec/08-infrastructure.md` or `spec/02-architecture.md`)
91
+ 2. Try multiple documentation sources (in priority order):
92
+ - **Context7 MCP:** Query Context7: "[Framework/Tool Name] [issue topic]"
93
+ - **Cursor Documentation Indexing:** Search Cursor's indexed documentation
94
+ - **Web Search:** Search web for "[Framework] [issue] troubleshooting" if needed
95
+ - **General Patterns:** Use general engineering patterns from `10-engineering.mdc`
96
+ 3. Combine information from available sources when helpful
97
+ 4. Use documentation to verify correct usage
98
+ 5. Suggest fixes based on documentation from available sources
99
+
100
+ **Smart Thinking:**
101
+ - Be adaptive and flexible - use whatever sources are available
102
+ - Don't be rigid - if one source fails, try others
103
+ - Combine information from multiple sources when helpful
104
+ - Search for understanding if needed - use web search to understand framework better
105
+
106
+ **Error Handling:**
107
+ - If Context7 unavailable → try Cursor indexing, web search, or cached documentation
108
+ - Do NOT block workflow if documentation unavailable
109
+ - Continue with available information
110
+
111
+ **Automated validation (run before asking user):**
112
+ 1. Pre-commit checks:
113
+ - Run linter (if configured): use project's lint command
114
+ - Run build (if applicable): use project's build command
115
+ - Check type errors: use project's type checking command (if TypeScript/typed project)
116
+ - Verify no console errors (if possible)
117
+
118
+ 2. **Test Execution (if test framework detected):**
119
+
120
+ **ONLY READ IF test framework detected:**
121
+ - Read `.cursor/commands/_shared/test-automation.md` ONLY IF test framework detected in Step 0
122
+ - Read sections: "Test Framework Detection" (lines 14-67), "Test Execution" (lines 68-154)
123
+ - Skip if: No test framework found → skip test automation entirely
124
+ - Check condition: Run detection first, then read helper only if condition met
125
+
126
+ **Test Automation:**
127
+ - Detect test framework (Jest, Vitest, Playwright, Cypress, etc.)
128
+ - If framework detected → run tests automatically
129
+ - Parse test results (pass/fail count, failures)
130
+ - Collect test coverage (if enabled)
131
+ - Report test status:
132
+ - If tests pass → "✅ Tests passed (X tests)"
133
+ - If tests fail → "❌ Tests failed (X failed, Y passed)" + list failures
134
+ - If no framework detected → "⚠️ No test framework detected. Skipping test execution."
135
+
136
+ **Test Failure Handling:**
137
+ - If tests fail → report failures clearly
138
+ - Block validation if `REQUIRE_TESTS_PASS=true` (optional, default: false)
139
+ - If blocking disabled → warn but continue validation
140
+
141
+ **Test Coverage:**
142
+ - Collect coverage metrics (if enabled)
143
+ - Compare with previous coverage (if available)
144
+ - Report coverage percentage
145
+ - Flag significant coverage decrease (> 10%)
146
+
147
+ 3. Automated validation checklist:
148
+ - [ ] Linter passes
149
+ - [ ] Build succeeds
150
+ - [ ] Type checking passes (if applicable)
151
+ - [ ] Tests pass (if test framework detected)
152
+ - [ ] Test coverage acceptable (if coverage enabled)
153
+ - [ ] No console errors (if applicable)
154
+ - [ ] Manual testing completed (user confirms)
155
+
156
+ **Present validation checklist based on task type:**
157
+ - For UI tasks: "Test on mobile/tablet/desktop, verify responsive breakpoints, check accessibility"
158
+ - For API tasks: "Test endpoints, verify error handling, check response formats"
159
+ - For config tasks: "Verify functionality, check logs, test configuration changes"
160
+ - For design tasks: "Verify visual consistency, check accessibility, test on different devices"
161
+
38
162
  If testing is missing but appropriate, flag it explicitly.
39
163
  Do not write tests unless asked.
40
164
 
@@ -49,6 +173,27 @@ Assess whether the task is:
49
173
  - Ready for PR
50
174
  - Requires follow-up work
51
175
 
176
+ **Automated merge workflow (if user prefers):**
177
+ 1. Pre-merge checks:
178
+ - Verify all changes are committed
179
+ - Run build/test (if applicable)
180
+ - Check for merge conflicts with main: `git fetch origin main && git merge-base HEAD origin/main`
181
+
182
+ 2. Merge to main:
183
+ - Checkout main (or default branch): `git checkout main`
184
+ - Pull latest (if remote exists): `git pull origin main`
185
+ - Merge task branch: `git merge task/{task-id}-{short-description}`
186
+ - Push to remote (if configured): `git push origin main`
187
+
188
+ 3. Post-merge cleanup:
189
+ - Delete local task branch (optional, ask first): `git branch -d task/{task-id}-{short-description}`
190
+ - Verify main is clean
191
+
192
+ **Ask user preference:**
193
+ - "Should I auto-commit on task completion?" (if not already committed)
194
+ - "Should I auto-merge to main on validation?" (if validated)
195
+ - "Should I delete task branch after merge?" (optional)
196
+
52
197
  If follow-up is required:
53
198
  - Propose new tasks and add them to `tasks.local.md`
54
199
 
@@ -58,6 +203,252 @@ Conclude with one of the following outcomes:
58
203
  - Requires fixes (clearly listed)
59
204
  - Requires spec refinement (`/spec/refine`)
60
205
 
206
+ **Step 7.1) Linear Issue Update (if Linear task and Linear mode enabled):**
207
+
208
+ **ONLY READ IF Linear mode enabled AND task is Linear issue:**
209
+ - Read `.cursor/commands/_shared/linear-automation.md` ONLY IF `work/linear/sync-config.md` exists AND `MODE=linear` AND task ID is Linear format (e.g., `LIN-123`)
210
+ - Auto-loads: `linear-helpers.md` (dependency)
211
+ - Read sections: "Detection Logic" (lines 9-32), "Issues" (lines 82-130) from linear-automation.md
212
+ - Read sections from linear-helpers.md (auto-loaded): "Status Mapping" (lines 1-50)
213
+ - Skip if: Linear mode not enabled OR task is local only → skip Linear update entirely
214
+ - Check condition: Verify Linear mode and task format before reading helpers
215
+
216
+ 1. **Check if task is Linear issue:**
217
+ - If task ID is Linear format (e.g., `LIN-123`) → proceed with Linear update
218
+ - If task is local only → skip Linear update
219
+
220
+ 2. **Update Linear issue status:**
221
+ - Map validation result to Linear status (use status mapping from linear-helpers.md):
222
+ - **Approved:** "Done" (or `STATUS_DONE` from config)
223
+ - **Requires fixes:** "In Progress" (or `STATUS_IN_PROGRESS` from config)
224
+ - **Requires spec refinement:** "Blocked" (or `STATUS_BLOCKED` from config)
225
+ - Update issue status using Linear MCP
226
+ - If status not found → guide user to create custom status
227
+
228
+ 3. **Create Linear comment with validation summary:**
229
+ - Add comment to Linear issue:
230
+ ```
231
+ "Task validated: [result]
232
+ Acceptance criteria: [summary]
233
+ Issues found: [list] (if any)
234
+ Next steps: [list] (if any)"
235
+ ```
236
+ - Include relevant context from validation
237
+
238
+ **Error Handling:**
239
+ - If Linear MCP unavailable → continue without Linear update
240
+ - If Linear operation fails → log error, continue without Linear update
241
+ - Never block workflow due to Linear errors
242
+
243
+ **Step 7.2) Linear Document Update (if task-level spec exists and Linear mode enabled):**
244
+
245
+ **ONLY READ IF Linear mode enabled AND task-level spec exists AND AUTO_CREATE_DOCUMENTS=true:**
246
+ - Read `.cursor/commands/_shared/linear-automation.md` ONLY IF Linear mode enabled AND `spec/tasks/[task-id]/spec.md` exists AND `AUTO_CREATE_DOCUMENTS=true`
247
+ - Auto-loads: `linear-helpers.md` (dependency)
248
+ - Read sections: "Documents" (lines 35-80) from linear-automation.md
249
+ - Skip if: Linear mode not enabled OR no task-level spec OR AUTO_CREATE_DOCUMENTS=false → skip Linear document update entirely
250
+ - Check condition: Verify all conditions before reading helper
251
+
252
+ 1. **Check if task-level spec exists:**
253
+ - If `spec/tasks/[task-id]/spec.md` exists → proceed with document update
254
+ - If not exists → skip document update
255
+
256
+ 2. **Check if Linear mode enabled and AUTO_CREATE_DOCUMENTS=true:**
257
+ - If not enabled → skip Linear document update
258
+ - If enabled → proceed with document update
259
+
260
+ 3. **Update Linear document:**
261
+ - Check if Linear document exists (use idempotency check from linear-helpers.md)
262
+ - If exists → update with task-level spec content
263
+ - If not exists → create Linear document (same as Step 1.6 in `/task/start`)
264
+
265
+ **Error Handling:**
266
+ - If Linear MCP unavailable → continue without Linear document update
267
+ - If Linear operation fails → log error, continue without Linear document update
268
+ - Never block workflow due to Linear errors
269
+
270
+ **Step 7.3) CodeRabbit Integration (if PR exists):**
271
+
272
+ **ONLY READ IF PR exists:**
273
+ - Read `.cursor/commands/_shared/coderabbit-integration.md` ONLY IF PR exists for current branch
274
+ - Auto-loads: `github-helpers.md` (dependency)
275
+ - Read sections: "CodeRabbit Detection" (lines 14-60), "Conversation Resolution" (lines 121-180) from coderabbit-integration.md
276
+ - Read sections from github-helpers.md (auto-loaded): "Read PR Conversations" (lines 51-100), "Resolve Conversations" (lines 101-150)
277
+ - Skip if: No PR exists → skip CodeRabbit integration entirely
278
+ - Check condition: Verify PR exists via GitHub MCP/CLI before reading helpers
279
+
280
+ 1. **Check if PR exists:**
281
+ - Get current branch name
282
+ - Check if PR exists for current branch (via GitHub MCP or CLI)
283
+ - If no PR exists → skip CodeRabbit integration
284
+ - If PR exists → proceed with CodeRabbit handling
285
+
286
+ 2. **Read CodeRabbit comments:**
287
+ - Use GitHub helpers to read PR comments (MCP → CLI → Local fallback)
288
+ - Detect CodeRabbit comments (pattern search + author check)
289
+ - Filter to only CodeRabbit comments
290
+
291
+ 3. **For each CodeRabbit comment:**
292
+ - **Check if already resolved:**
293
+ - Read tracking file (`.sdd/github-resolved-issues.json`)
294
+ - If comment already resolved → skip
295
+
296
+ - **Check if issue is fixed in code:**
297
+ - Read file mentioned in comment
298
+ - Compare comment suggestion with current code
299
+ - If issue already fixed → mark for resolution
300
+
301
+ - **If issue fixed:**
302
+ - Resolve conversation via GitHub helpers
303
+ - Update tracking file with resolution
304
+ - Add comment: "Issue resolved in code"
305
+
306
+ - **If issue not fixed:**
307
+ - Evaluate if issue should be resolved (check importance, refactoring rules)
308
+ - If should be resolved → create task in backlog
309
+ - If shouldn't be resolved → provide argumentation (log to Linear/GitHub/local)
310
+
311
+ 4. **Report CodeRabbit handling:**
312
+ - Summarize: "X CodeRabbit comments processed, Y resolved, Z deferred"
313
+ - List any deferred issues with reasoning
314
+
315
+ **Error Handling:**
316
+ - If GitHub MCP/CLI unavailable → skip CodeRabbit integration, continue workflow
317
+ - If PR not found → skip CodeRabbit integration, continue workflow
318
+ - If comment parsing fails → log error, continue with next comment
319
+ - Never block workflow due to CodeRabbit integration failures
320
+
321
+ **ONLY READ IF validated and ready for PR:**
322
+ - Read `.cursor/commands/_shared/git-workflow.md` ONLY IF task validated AND ready for PR
323
+ - Read `.cursor/commands/_shared/pr-description.md` ONLY IF PR creation/update needed
324
+ - Read `.cursor/commands/_shared/deployment-detection.md` ONLY IF deployment provider detected
325
+ - Read sections: "State Detection" (lines 81-150), "Next Step Logic" (lines 151-220) from git-workflow.md; "PR Description Template" (lines 1-100) from pr-description.md; "Provider Detection" (lines 13-91), "Preview Deployment Logic" (lines 92-194) from deployment-detection.md
326
+ - Skip if: Task not validated OR not ready for PR → skip Git workflow automation entirely
327
+ - Check condition: Verify validation status and PR readiness before reading helpers
328
+
329
+ 1. **Update State Tracking:**
330
+ - Read current state from `.sdd/git-state.json`
331
+ - Update state: `validated: true`
332
+ - Update commit count if commits were made
333
+ - Update last commit hash
334
+ - Save updated state
335
+
336
+ 2. **Check if PR Already Exists:**
337
+ - Get current branch name
338
+ - Check if PR exists for branch (via GitHub MCP or CLI)
339
+ - If PR exists → skip to Step 3 (update PR if needed)
340
+ - If no PR → proceed to Step 2.1 (create PR)
341
+
342
+ 3. **Generate Commit Message (if changes not committed):**
343
+ - If uncommitted changes exist → generate commit message
344
+ - Use git-workflow.md helper:
345
+ - Analyze git diff for changed files
346
+ - Determine commit type (feat/fix/refactor/etc.)
347
+ - Generate description from task/changes
348
+ - Format: `[task-id] type: description`
349
+ - Ask user: "Should I commit these changes with message: '[generated message]'?"
350
+ - If yes → commit with generated message
351
+ - Update state: increment commit count
352
+
353
+ 4. **Create PR (if no PR exists and validated):**
354
+
355
+ **4.1) Generate PR Description:**
356
+ - Use pr-description.md helper:
357
+ - Read task spec (from `work/backlog/tasks.local.md` or task-level spec)
358
+ - Generate changes summary from git diff and commit history
359
+ - Extract acceptance criteria from task
360
+ - Include testing notes
361
+ - Reference related Linear issues (if Linear enabled)
362
+ - Generate PR description using template
363
+
364
+ **4.2) Push Branch (if not pushed):**
365
+ - Check if branch is pushed to remote
366
+ - If not pushed → push branch: `git push -u origin <branch-name>`
367
+ - Update state: `branch.pushed: true`
368
+
369
+ **4.3) Create PR:**
370
+ - Use GitHub helpers (MCP → CLI → Local fallback)
371
+ - Create PR with generated description
372
+ - Set PR title: `[task-id] [task description]`
373
+ - Link to Linear issue (if Linear enabled and task is Linear issue)
374
+ - Get PR number and URL
375
+ - Update state: `pr: {exists: true, number: X, url: Y, status: 'open'}`
376
+
377
+ 5. **Handle Deployment (if PR created):**
378
+
379
+ **5.1) Detect Deployment Provider:**
380
+ - Use deployment-detection.md helper:
381
+ - Check for provider config files (vercel.json, railway.json, netlify.toml)
382
+ - Read spec/08-infrastructure.md for deployment config
383
+ - Detect provider (Vercel, Railway, Netlify, etc.)
384
+
385
+ **5.2) Trigger Preview Deployment (if provider detected):**
386
+ - If provider supports auto-deployment → wait for deployment
387
+ - If manual deployment needed → trigger deployment (if possible)
388
+ - Check deployment status (with timeout)
389
+ - Get preview URL when deployment completes
390
+
391
+ **5.3) Update PR with Preview URL:**
392
+ - If preview URL available → add to PR description
393
+ - Format: `### Preview\n[Preview URL](url)`
394
+ - Update PR via GitHub helpers
395
+ - Update state: `deployment: {provider: X, preview_url: Y, status: 'success'}`
396
+
397
+ 6. **Determine Next Step:**
398
+ - Based on current state, determine next action:
399
+ - "PR created, deployed → Ready for review"
400
+ - "PR created, deployment pending → Waiting for deployment"
401
+ - "PR created, no deployment → PR ready (no preview available)"
402
+ - Report next step to user
403
+
404
+ **ONLY READ IF preview URL available OR performance enabled:**
405
+ - Read `.cursor/commands/_shared/performance-monitoring.md` ONLY IF preview URL available OR performance monitoring enabled
406
+ - Read sections: "Performance Metrics Collection" (lines 14-80), "Lighthouse Integration" (lines 199-250)
407
+ - Skip if: No preview URL AND performance not enabled → skip performance monitoring entirely
408
+ - Check condition: Verify preview URL availability or performance config before reading helper
409
+
410
+ 1. **Collect Performance Metrics (if enabled):**
411
+ - Measure bundle size (if build output available)
412
+ - Track load time metrics (if preview URL available)
413
+ - Monitor API response times (if applicable)
414
+ - Store metrics in `.sdd/performance-metrics.json`
415
+
416
+ 2. **Run Lighthouse Audit (if preview URL available):**
417
+ - Run Lighthouse audit on preview URL
418
+ - Collect performance, accessibility, SEO, best practices scores
419
+ - Parse Lighthouse JSON output
420
+ - Compare scores with baseline (if available)
421
+
422
+ 3. **Detect Performance Regressions:**
423
+ - Compare current metrics with previous build/commit
424
+ - Flag significant regressions (> 20% degradation)
425
+ - Check performance budgets (if configured)
426
+ - Report performance status
427
+
428
+ 4. **Add Performance Report to PR (if PR exists):**
429
+ - Add performance metrics to PR comment
430
+ - Show Lighthouse scores
431
+ - Highlight regressions
432
+ - Suggest optimizations (if needed)
433
+
434
+ **Error Handling:**
435
+ - If performance monitoring unavailable → skip monitoring, continue workflow
436
+ - If Lighthouse audit fails → skip Lighthouse, continue workflow
437
+ - If metrics collection fails → skip metrics, continue workflow
438
+ - Never block workflow due to performance monitoring failures
439
+
440
+ **Error Handling:**
441
+ - If state file not writable → continue without state tracking (degraded mode)
442
+ - If PR creation fails → report error, allow manual PR creation
443
+ - If deployment fails → report error, continue without preview URL
444
+ - If GitHub MCP/CLI unavailable → skip PR creation, continue workflow
445
+ - Never block workflow due to automation failures
446
+
447
+ **User Preferences:**
448
+ - Ask user: "Should I auto-create PR after validation?" (if not already configured)
449
+ - Ask user: "Should I auto-deploy to preview?" (if deployment available)
450
+ - Respect user preferences for automation level
451
+
61
452
  PRINCIPLES:
62
453
  - Validation is about confidence, not perfection
63
454
  - Evidence beats assumptions
@@ -63,3 +63,74 @@ A task is only considered complete when:
63
63
 
64
64
  ## Goal
65
65
  Enable focused, professional execution that aligns implementation with intent.
66
+
67
+ ## Error recovery automation
68
+ **Common error patterns and automatic recovery:**
69
+ - If build fails with undefined property errors → automatically suggest: "Try cleaning build cache and rebuilding"
70
+ - If lockfile outdated → automatically suggest: "Run package manager install to sync lockfile"
71
+ - If dependency missing → automatically suggest: "Add to package.json (or equivalent) and run install"
72
+ - If config error → check against known patterns for the framework/library and suggest fix
73
+ - Document solutions in openmemory.md for future reference
74
+
75
+ **Error recovery workflow:**
76
+ 1. Identify error type (build, dependency, config, runtime)
77
+ 2. Check openmemory.md for known solutions
78
+ 3. If known solution exists → apply automatically (with user confirmation)
79
+ 4. If unknown → document in openmemory.md after solving
80
+
81
+ ## Memory storage automation
82
+ **Automatic memory storage triggers:**
83
+ - Before task completion → automatically check if memory should be stored
84
+ - If 3+ files changed OR new component created → store memory
85
+ - If design pattern emerges → store in spec/05-decisions.md AND memory
86
+ - If infrastructure decision made → store in spec/05-decisions.md AND memory
87
+
88
+ **Memory storage checklist (before task completion):**
89
+ - [ ] Memory stored? (if applicable)
90
+ - [ ] openmemory.md updated? (if memory stored)
91
+ - [ ] Spec updated? (if decision/pattern emerged)
92
+ - [ ] Decisions documented in spec/05-decisions.md? (if applicable)
93
+
94
+ **Always update openmemory.md before storing memory:**
95
+ - Review content → check namespaces → assign namespace if applicable
96
+ - Update Components section if new component
97
+ - Update Patterns section if new pattern
98
+ - Update Architecture section if architecture change
99
+
100
+ ## Spec update automation
101
+ **Automatic spec update triggers:**
102
+ - If design pattern emerges → update spec/05-decisions.md
103
+ - If infrastructure decision made → update spec/05-decisions.md
104
+ - If new risk discovered → update spec/03-risks.md
105
+ - If new question emerges → update spec/04-open-questions.md
106
+
107
+ **Spec update checklist (before task completion):**
108
+ - [ ] Design pattern documented? (if applicable)
109
+ - [ ] Infrastructure decision documented? (if applicable)
110
+ - [ ] New risk added? (if applicable)
111
+ - [ ] New question added? (if applicable)
112
+ - [ ] Spec still accurate? (verify and update if needed)
113
+
114
+ ## Spec health checks
115
+ **Automatic spec health monitoring:**
116
+ - Detect spec-code divergence (features in code not in spec, features in spec not in code)
117
+ - Warn when spec is outdated (spec not updated recently, implementation changed significantly)
118
+ - Suggest spec updates when discrepancies found
119
+ - Track spec evolution (spec age, update frequency, completeness)
120
+
121
+ **Spec health check triggers:**
122
+ - Before task start → check if spec is up-to-date
123
+ - After task completion → check if spec needs update
124
+ - Periodically → suggest spec sync if divergence detected
125
+
126
+ **Spec health indicators:**
127
+ - Spec age: How long since last update
128
+ - Spec completeness: Are all features documented?
129
+ - Spec accuracy: Does spec match implementation?
130
+ - Spec traceability: Can requirements be traced to code?
131
+
132
+ **When spec health issues detected:**
133
+ - Suggest `/spec/sync` if divergence found
134
+ - Suggest `/spec/evolve` if spec needs updating
135
+ - Suggest `/spec/audit` if compliance check needed
136
+ - Warn user about outdated spec
@@ -14,7 +14,7 @@ entire session.
14
14
 
15
15
  Memory = accumulated understanding of codebase + user preferences. Like a colleague who's worked here months.
16
16
 
17
- **project_id:** spec-driven-development
17
+ **project_id:** eskoubar95/spec
18
18
 
19
19
  ## NON-NEGOTIABLE: Memory-First Development
20
20