lean-spec 0.2.6-dev.20251126030344 → 0.2.6-dev.20251126060744

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.
@@ -8328,7 +8328,8 @@ function createTool() {
8328
8328
  outputSchema: {
8329
8329
  success: z.boolean(),
8330
8330
  path: z.string(),
8331
- message: z.string()
8331
+ message: z.string(),
8332
+ reminder: z.string().optional()
8332
8333
  }
8333
8334
  },
8334
8335
  async (input, _extra) => {
@@ -8349,7 +8350,8 @@ function createTool() {
8349
8350
  const output = {
8350
8351
  success: true,
8351
8352
  path: capturedOutput.includes("Created:") ? capturedOutput.split("Created:")[1].split("\n")[0].trim() : "",
8352
- message: `Spec '${input.name}' created successfully`
8353
+ message: `Spec '${input.name}' created successfully`,
8354
+ reminder: "\u{1F4A1} Remember to update status to 'in-progress' when you start implementing! Use: update tool with status='in-progress'"
8353
8355
  };
8354
8356
  return {
8355
8357
  content: [{ type: "text", text: JSON.stringify(output, null, 2) }],
@@ -8584,7 +8586,8 @@ function listTool() {
8584
8586
  includeArchived: z.boolean().optional().describe("Include archived specs in results (default: false). Set to true to see completed/archived work.")
8585
8587
  },
8586
8588
  outputSchema: {
8587
- specs: z.array(z.any())
8589
+ specs: z.array(z.any()),
8590
+ warnings: z.array(z.string()).optional()
8588
8591
  }
8589
8592
  },
8590
8593
  async (input, _extra) => {
@@ -8596,7 +8599,26 @@ function listTool() {
8596
8599
  assignee: input.assignee,
8597
8600
  includeArchived: input.includeArchived
8598
8601
  });
8599
- const output = { specs };
8602
+ const warnings = [];
8603
+ if (!input.status) {
8604
+ const inProgressSpecs = specs.filter((s) => s.status === "in-progress");
8605
+ const mockBoard = {
8606
+ columns: {
8607
+ planned: [],
8608
+ "in-progress": inProgressSpecs,
8609
+ complete: [],
8610
+ archived: []
8611
+ }
8612
+ };
8613
+ const staleSpecs = getStaleSpecs(mockBoard);
8614
+ for (const spec of staleSpecs) {
8615
+ warnings.push(`\u26A0\uFE0F Spec "${spec.name}" has been in-progress for ${spec.daysStale} days. Consider updating status.`);
8616
+ }
8617
+ }
8618
+ const output = {
8619
+ specs,
8620
+ ...warnings.length > 0 ? { warnings } : {}
8621
+ };
8600
8622
  return {
8601
8623
  content: [{ type: "text", text: JSON.stringify(output, null, 2) }],
8602
8624
  structuredContent: output
@@ -8874,6 +8896,18 @@ function tokensTool() {
8874
8896
  }
8875
8897
  ];
8876
8898
  }
8899
+ function getStatusReminder(newStatus) {
8900
+ switch (newStatus) {
8901
+ case "in-progress":
8902
+ return "\u{1F4A1} Spec marked in-progress. Remember to document decisions in the spec as you work, and update to 'complete' when done!";
8903
+ case "complete":
8904
+ return "\u2705 Spec marked complete! Consider: Did you document what you learned? Are there follow-up specs needed?";
8905
+ case "planned":
8906
+ return "\u{1F4CB} Spec marked as planned. Update to 'in-progress' before you start implementing!";
8907
+ default:
8908
+ return void 0;
8909
+ }
8910
+ }
8877
8911
  function updateTool() {
8878
8912
  return [
8879
8913
  "update",
@@ -8889,7 +8923,8 @@ function updateTool() {
8889
8923
  },
8890
8924
  outputSchema: {
8891
8925
  success: z.boolean(),
8892
- message: z.string()
8926
+ message: z.string(),
8927
+ reminder: z.string().optional()
8893
8928
  }
8894
8929
  },
8895
8930
  async (input, _extra) => {
@@ -8905,9 +8940,11 @@ function updateTool() {
8905
8940
  if (input.tags !== void 0) updates.tags = input.tags;
8906
8941
  if (input.assignee !== void 0) updates.assignee = input.assignee;
8907
8942
  await updateSpec(input.specPath, updates);
8943
+ const reminder = getStatusReminder(input.status);
8908
8944
  const output = {
8909
8945
  success: true,
8910
- message: `Spec updated successfully`
8946
+ message: `Spec updated successfully`,
8947
+ ...reminder ? { reminder } : {}
8911
8948
  };
8912
8949
  return {
8913
8950
  content: [{ type: "text", text: JSON.stringify(output, null, 2) }],
@@ -9346,16 +9383,31 @@ For any specs you've worked on:
9346
9383
  2. Document key decisions or changes in the spec content
9347
9384
  3. Link related specs if you discovered connections
9348
9385
 
9386
+ ### Step 4: Validate (Before Completing)
9387
+ Before marking any spec as complete, run validation:
9388
+ \`\`\`
9389
+ validate { "checkDeps": true }
9390
+ \`\`\`
9391
+
9392
+ This checks:
9393
+ - Spec structure and frontmatter
9394
+ - Content/frontmatter dependency alignment
9395
+ - Any referenced specs are properly linked
9396
+
9397
+ Fix any warnings before marking specs complete.
9398
+
9349
9399
  ### Action Items
9350
9400
  Based on the board review:
9351
9401
  1. List any specs with stale status
9352
9402
  2. Identify work being done without specs
9353
9403
  3. Suggest status updates needed
9404
+ 4. Fix any dependency alignment warnings
9354
9405
 
9355
9406
  **Remember:**
9356
9407
  - Specs track implementation, not documentation
9357
9408
  - Update status BEFORE starting work, AFTER completing
9358
- - Keep specs in sync with actual progress`
9409
+ - Keep specs in sync with actual progress
9410
+ - Always validate with \`--check-deps\` before completing`
9359
9411
  }
9360
9412
  }
9361
9413
  ]
@@ -9413,12 +9465,14 @@ Use \`deps\` to verify all links are in place:
9413
9465
  deps { "spec": "your-spec" }
9414
9466
  \`\`\`
9415
9467
 
9416
- ### Step 5: Validate
9417
- Run dependency alignment check:
9468
+ ### Step 5: Validate (REQUIRED)
9469
+ Run dependency alignment check to ensure content matches frontmatter:
9418
9470
  \`\`\`
9419
9471
  validate { "specs": ["your-spec"], "checkDeps": true }
9420
9472
  \`\`\`
9421
9473
 
9474
+ \u26A0\uFE0F **Do not consider spec creation complete until validation passes with 0 dependency warnings!**
9475
+
9422
9476
  ### Common Patterns to Link
9423
9477
 
9424
9478
  | Content Pattern | Link Type |
@@ -9503,5 +9557,5 @@ if (import.meta.url === `file://${process.argv[1]}`) {
9503
9557
  }
9504
9558
 
9505
9559
  export { analyzeCommand, archiveCommand, backfillCommand, boardCommand, checkCommand, compactCommand, createCommand, createMcpServer, depsCommand, examplesCommand, filesCommand, ganttCommand, initCommand, linkCommand, listCommand, mcpCommand, migrateCommand, openCommand, searchCommand, splitCommand, statsCommand, templatesCommand, timelineCommand, tokensCommand, uiCommand, unlinkCommand, updateCommand, validateCommand, viewCommand };
9506
- //# sourceMappingURL=chunk-IXCZPYB7.js.map
9507
- //# sourceMappingURL=chunk-IXCZPYB7.js.map
9560
+ //# sourceMappingURL=chunk-YPVK4J5Z.js.map
9561
+ //# sourceMappingURL=chunk-YPVK4J5Z.js.map