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
|
|
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-
|
|
9507
|
-
//# sourceMappingURL=chunk-
|
|
9560
|
+
//# sourceMappingURL=chunk-YPVK4J5Z.js.map
|
|
9561
|
+
//# sourceMappingURL=chunk-YPVK4J5Z.js.map
|