@seanmars/tospec 0.9.0 → 0.11.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 (79) hide show
  1. package/README.md +2 -2
  2. package/dist/commands/config.d.ts.map +1 -1
  3. package/dist/commands/config.js +19 -9
  4. package/dist/commands/config.js.map +1 -1
  5. package/dist/commands/decision.js +4 -4
  6. package/dist/commands/decision.js.map +1 -1
  7. package/dist/core/archive.d.ts +3 -3
  8. package/dist/core/archive.js +8 -8
  9. package/dist/core/archive.js.map +1 -1
  10. package/dist/core/artifact-graph/resolver.d.ts +10 -0
  11. package/dist/core/artifact-graph/resolver.d.ts.map +1 -1
  12. package/dist/core/artifact-graph/resolver.js +28 -6
  13. package/dist/core/artifact-graph/resolver.js.map +1 -1
  14. package/dist/core/config-schema.d.ts +6 -0
  15. package/dist/core/config-schema.d.ts.map +1 -1
  16. package/dist/core/config-schema.js +36 -0
  17. package/dist/core/config-schema.js.map +1 -1
  18. package/dist/core/dashboard-data.d.ts +1 -1
  19. package/dist/core/dashboard-data.js +1 -1
  20. package/dist/core/migrate.d.ts.map +1 -1
  21. package/dist/core/migrate.js +2 -1
  22. package/dist/core/migrate.js.map +1 -1
  23. package/dist/core/parsers/change-parser.d.ts +11 -2
  24. package/dist/core/parsers/change-parser.d.ts.map +1 -1
  25. package/dist/core/parsers/change-parser.js +14 -0
  26. package/dist/core/parsers/change-parser.js.map +1 -1
  27. package/dist/core/parsers/requirement-blocks.d.ts +8 -0
  28. package/dist/core/parsers/requirement-blocks.d.ts.map +1 -1
  29. package/dist/core/parsers/requirement-blocks.js +10 -0
  30. package/dist/core/parsers/requirement-blocks.js.map +1 -1
  31. package/dist/core/shared/rules-generation.js +2 -2
  32. package/dist/core/shared/rules-generation.js.map +1 -1
  33. package/dist/core/specs-apply.d.ts +3 -2
  34. package/dist/core/specs-apply.d.ts.map +1 -1
  35. package/dist/core/specs-apply.js +127 -15
  36. package/dist/core/specs-apply.js.map +1 -1
  37. package/dist/core/templates/workflows/apply.d.ts +1 -1
  38. package/dist/core/templates/workflows/apply.d.ts.map +1 -1
  39. package/dist/core/templates/workflows/apply.js +60 -25
  40. package/dist/core/templates/workflows/apply.js.map +1 -1
  41. package/dist/core/templates/workflows/archive.js +3 -3
  42. package/dist/core/templates/workflows/decision.d.ts.map +1 -1
  43. package/dist/core/templates/workflows/decision.js +15 -13
  44. package/dist/core/templates/workflows/decision.js.map +1 -1
  45. package/dist/core/templates/workflows/explore.d.ts.map +1 -1
  46. package/dist/core/templates/workflows/explore.js +9 -7
  47. package/dist/core/templates/workflows/explore.js.map +1 -1
  48. package/dist/core/templates/workflows/grill.d.ts.map +1 -1
  49. package/dist/core/templates/workflows/grill.js +29 -6
  50. package/dist/core/templates/workflows/grill.js.map +1 -1
  51. package/dist/core/templates/workflows/propose.js +1 -1
  52. package/dist/core/templates/workflows/sync.js +10 -10
  53. package/dist/core/templates/workflows/update.d.ts.map +1 -1
  54. package/dist/core/templates/workflows/update.js +4 -3
  55. package/dist/core/templates/workflows/update.js.map +1 -1
  56. package/dist/core/validation/validator.d.ts.map +1 -1
  57. package/dist/core/validation/validator.js +23 -2
  58. package/dist/core/validation/validator.js.map +1 -1
  59. package/dist/utils/change-utils.d.ts +9 -4
  60. package/dist/utils/change-utils.d.ts.map +1 -1
  61. package/dist/utils/change-utils.js +13 -13
  62. package/dist/utils/change-utils.js.map +1 -1
  63. package/dist/utils/timestamp.d.ts +6 -0
  64. package/dist/utils/timestamp.d.ts.map +1 -1
  65. package/dist/utils/timestamp.js +9 -0
  66. package/dist/utils/timestamp.js.map +1 -1
  67. package/package.json +2 -1
  68. package/schemas/decision/schema.yaml +10 -7
  69. package/schemas/decision/templates/decision.md +22 -22
  70. package/schemas/issue/schema.yaml +15 -11
  71. package/schemas/issue/templates/spec.md +9 -9
  72. package/schemas/issue/templates/task.md +11 -11
  73. package/schemas/issue/templates/ticket.md +1 -1
  74. package/schemas/sdd/schema.yaml +36 -17
  75. package/schemas/sdd/templates/design.md +23 -3
  76. package/schemas/sdd/templates/proposal.md +5 -5
  77. package/schemas/sdd/templates/spec.md +9 -9
  78. package/schemas/sdd/templates/tasks.md +9 -9
  79. package/schemas/sdd/templates/ticket.md +1 -1
@@ -6,8 +6,9 @@
6
6
  */
7
7
  import { promises as fs } from 'fs';
8
8
  import path from 'path';
9
- import { extractRequirementsSection, parseDeltaSpec, normalizeRequirementName, } from './parsers/requirement-blocks.js';
9
+ import { extractRequirementsSection, parseDeltaSpec, normalizeRequirementName, foldRequirementName, } from './parsers/requirement-blocks.js';
10
10
  import { findMainSpecStructureIssues } from './parsers/spec-structure.js';
11
+ import { buildCodeFenceMask } from './parsers/requirement-text.js';
11
12
  import { Validator } from './validation/validator.js';
12
13
  // -----------------------------------------------------------------------------
13
14
  // Public API
@@ -117,6 +118,16 @@ export async function buildUpdatedSpec(update, changeName, options = {}) {
117
118
  for (const { from, to } of plan.renamed) {
118
119
  const fromNorm = normalizeRequirementName(from);
119
120
  const toNorm = normalizeRequirementName(to);
121
+ // A REMOVED naming the FROM side contradicts the rename. Once a missing
122
+ // REMOVED target is treated as a no-op (early-sync), this conflict must be
123
+ // rejected explicitly instead of failing incidentally at apply time.
124
+ // Compared folded, so a case/whitespace variant cannot slip past into a
125
+ // warned no-op.
126
+ const removedFoldMatch = [...removedNamesSet].find((r) => foldRequirementName(r) === foldRequirementName(fromNorm));
127
+ if (removedFoldMatch !== undefined) {
128
+ throw new Error(`${specName} validation failed - requirement present in multiple sections (RENAMED and REMOVED) for header "### Requirement: ${from}"` +
129
+ (removedFoldMatch === fromNorm ? '' : ` (REMOVED spells it "${removedFoldMatch}")`));
130
+ }
120
131
  if (modifiedNames.has(fromNorm)) {
121
132
  throw new Error(`${specName} validation failed - when a rename exists, MODIFIED must reference the NEW header "### Requirement: ${to}"`);
122
133
  }
@@ -151,7 +162,19 @@ export async function buildUpdatedSpec(update, changeName, options = {}) {
151
162
  console.log(`Warning: ${specName} - ${plan.removed.length} REMOVED requirement(s) ignored for new spec (nothing to remove).`);
152
163
  }
153
164
  isNewSpec = true;
154
- targetContent = buildSpecSkeleton(specName, changeName);
165
+ // Carry the delta's authored Purpose into the new main spec instead of
166
+ // overwriting it with the placeholder. Only plain prose is carried; a
167
+ // Purpose that could restructure the spec falls back to the placeholder.
168
+ const deltaPurpose = extractDeltaPurpose(changeContent);
169
+ if (deltaPurpose && isPurposeCarrySafe(deltaPurpose)) {
170
+ targetContent = buildSpecSkeleton(specName, changeName, deltaPurpose);
171
+ }
172
+ else {
173
+ if (deltaPurpose && !options.silent) {
174
+ console.log(`Warning: ${specName} - delta Purpose ignored (it would leave the new spec unreadable); wrote the placeholder Purpose instead.`);
175
+ }
176
+ targetContent = buildSpecSkeleton(specName, changeName);
177
+ }
155
178
  }
156
179
  const structureIssues = findMainSpecStructureIssues(targetContent);
157
180
  if (structureIssues.length > 0) {
@@ -168,10 +191,17 @@ export async function buildUpdatedSpec(update, changeName, options = {}) {
168
191
  }
169
192
  // Apply operations in order: RENAMED → REMOVED → MODIFIED → ADDED
170
193
  // RENAMED
194
+ let renamedApplied = 0;
171
195
  for (const r of plan.renamed) {
172
196
  const from = normalizeRequirementName(r.from);
173
197
  const to = normalizeRequirementName(r.to);
174
198
  if (!nameToBlock.has(from)) {
199
+ // Source gone but target present means the rename was already synced to
200
+ // the baseline (early-sync pattern) - re-applying it is a no-op, not a
201
+ // failure. Only a missing source AND target is a genuine error.
202
+ if (nameToBlock.has(to)) {
203
+ continue;
204
+ }
175
205
  throw new Error(`${specName} RENAMED failed for header "### Requirement: ${r.from}" - source not found`);
176
206
  }
177
207
  if (nameToBlock.has(to)) {
@@ -189,20 +219,34 @@ export async function buildUpdatedSpec(update, changeName, options = {}) {
189
219
  };
190
220
  nameToBlock.delete(from);
191
221
  nameToBlock.set(to, renamedBlock);
222
+ renamedApplied++;
192
223
  }
193
224
  // REMOVED
225
+ let removedApplied = 0;
194
226
  for (const name of plan.removed) {
195
227
  const key = normalizeRequirementName(name);
196
228
  if (!nameToBlock.has(key)) {
197
- // For new specs, REMOVED requirements are already warned about and ignored
198
- // For existing specs, missing requirements are an error
229
+ // Requirement gone from the baseline means the removal was already synced
230
+ // (early-sync pattern) - re-applying it is a no-op, not a failure. One
231
+ // signal separates that from a mistyped header: a requirement that differs
232
+ // only in case or interior whitespace still being present. That is a typo,
233
+ // and stays a hard abort. For new specs the skip was already warned above.
199
234
  if (!isNewSpec) {
200
- throw new Error(`${specName} REMOVED failed for header "### Requirement: ${name}" - not found`);
235
+ const nearMiss = [...nameToBlock.keys()].find((k) => foldRequirementName(k) === foldRequirementName(key));
236
+ if (nearMiss !== undefined) {
237
+ throw new Error(`${specName} REMOVED failed for header "### Requirement: ${name}" - not found, but "### Requirement: ${nameToBlock.get(nearMiss).name}" exists; fix the header to match it exactly`);
238
+ }
239
+ // ponytail: warning surfaced to humans only; JSON callers get no
240
+ // warnings[] channel yet. Add one if agent flows need the signal.
241
+ if (!options.silent) {
242
+ console.log(`Warning: ${specName} - REMOVED requirement "${name}" is not in the current spec; treating it as already removed.`);
243
+ }
201
244
  }
202
- // Skip removal for new specs (already warned above)
245
+ // Skip removal (nothing to remove)
203
246
  continue;
204
247
  }
205
248
  nameToBlock.delete(key);
249
+ removedApplied++;
206
250
  }
207
251
  // MODIFIED
208
252
  for (const mod of plan.modified) {
@@ -273,8 +317,8 @@ export async function buildUpdatedSpec(update, changeName, options = {}) {
273
317
  counts: {
274
318
  added: addedApplied,
275
319
  modified: plan.modified.length,
276
- removed: plan.removed.length,
277
- renamed: plan.renamed.length,
320
+ removed: removedApplied,
321
+ renamed: renamedApplied,
278
322
  },
279
323
  };
280
324
  }
@@ -303,17 +347,85 @@ export async function writeUpdatedSpec(update, rebuilt, counts, options = {}) {
303
347
  console.log(` → ${counts.renamed} renamed`);
304
348
  }
305
349
  /**
306
- * Build a skeleton spec for new capabilities.
350
+ * Build a skeleton spec for new capabilities. Carries the delta's authored
351
+ * Purpose when one is supplied; otherwise writes the TBD placeholder.
307
352
  */
308
- export function buildSpecSkeleton(specFolderName, changeName) {
353
+ export function buildSpecSkeleton(specFolderName, changeName, purpose) {
309
354
  const titleBase = specFolderName;
310
- return `# ${titleBase} Specification\n\n## Purpose\nTBD - created by archiving change ${changeName}. Update Purpose after archive.\n\n## Requirements\n`;
355
+ const purposeBody = purpose && purpose.trim()
356
+ ? purpose.trim()
357
+ : `TBD - created by archiving change ${changeName}. Update Purpose after archive.`;
358
+ return `# ${titleBase} Specification\n\n## Purpose\n${purposeBody}\n\n## Requirements\n`;
359
+ }
360
+ /**
361
+ * Extracts the `## Purpose` section body from a delta spec, or null when there
362
+ * is none. Fence-masked so a `## Purpose` inside a code example is not mistaken
363
+ * for the real section.
364
+ */
365
+ function extractDeltaPurpose(content) {
366
+ const lines = content.replace(/\r\n?/g, '\n').split('\n');
367
+ const mask = buildCodeFenceMask(lines);
368
+ let start = -1;
369
+ for (let i = 0; i < lines.length; i++) {
370
+ if (mask[i])
371
+ continue;
372
+ if (/^##\s+Purpose\s*$/i.test(lines[i])) {
373
+ start = i + 1;
374
+ break;
375
+ }
376
+ }
377
+ if (start === -1)
378
+ return null;
379
+ let end = lines.length;
380
+ for (let i = start; i < lines.length; i++) {
381
+ if (mask[i])
382
+ continue;
383
+ if (/^##\s+/.test(lines[i])) {
384
+ end = i;
385
+ break;
386
+ }
387
+ }
388
+ return lines.slice(start, end).join('\n').trim();
389
+ }
390
+ /**
391
+ * A carried Purpose must not restructure the new spec. Headings, HTML comments,
392
+ * and code fences each have ways to corrupt or hide the rest of the spec, so a
393
+ * Purpose containing any of them falls back to the placeholder rather than risk
394
+ * it.
395
+ * ponytail: prose-only heuristic; a Purpose that genuinely needs a fence or
396
+ * heading falls back to TBD. Loosen only once those corruption classes are
397
+ * handled the way archive's own validator reads the spec.
398
+ */
399
+ function isPurposeCarrySafe(body) {
400
+ if (!body)
401
+ return false;
402
+ if (/^#{1,6}\s/m.test(body))
403
+ return false; // any markdown heading
404
+ if (/<!--/.test(body))
405
+ return false; // HTML comment opener
406
+ if (/```|~~~/.test(body))
407
+ return false; // code fence
408
+ return true;
311
409
  }
312
410
  function findMissingCurrentScenarios(current, incoming) {
313
- const incomingScenarioNames = new Set(parseScenarioBlocks(incoming.raw).map((scenario) => scenario.name));
314
- return parseScenarioBlocks(current.raw)
315
- .filter((scenario) => !incomingScenarioNames.has(scenario.name))
316
- .map((scenario) => scenario.name);
411
+ // Multiplicity-aware: a name present N times in current and M times in
412
+ // incoming means max(0, N - M) instances are missing. Set membership would
413
+ // treat N>M as fully covered and let archive silently drop duplicates.
414
+ const remainingIncoming = new Map();
415
+ for (const scenario of parseScenarioBlocks(incoming.raw)) {
416
+ remainingIncoming.set(scenario.name, (remainingIncoming.get(scenario.name) ?? 0) + 1);
417
+ }
418
+ const missing = [];
419
+ for (const scenario of parseScenarioBlocks(current.raw)) {
420
+ const remaining = remainingIncoming.get(scenario.name) ?? 0;
421
+ if (remaining > 0) {
422
+ remainingIncoming.set(scenario.name, remaining - 1);
423
+ }
424
+ else {
425
+ missing.push(scenario.name);
426
+ }
427
+ }
428
+ return missing;
317
429
  }
318
430
  function parseScenarioBlocks(requirementRaw) {
319
431
  const lines = requirementRaw.replace(/\r\n?/g, '\n').split('\n');
@@ -1 +1 @@
1
- {"version":3,"file":"specs-apply.js","sourceRoot":"","sources":["../../src/core/specs-apply.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"specs-apply.js","sourceRoot":"","sources":["../../src/core/specs-apply.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  * Two apply variants share the same gating (`applyRequires`), auto-verify
8
8
  * step, and re-validate step; they differ only in how tests relate to the
9
9
  * implementation:
10
- * - `tospec-apply` — default, test-after (no red-first requirement)
10
+ * - `tospec-apply` — default, tests optional (write one when it earns its keep)
11
11
  * - `tospec-apply-with-tdd` — strict TDD, red → green per slice
12
12
  */
13
13
  import type { SkillTemplate, CommandTemplate } from '../types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../../src/core/templates/workflows/apply.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAgFlE,wBAAgB,2BAA2B,IAAI,aAAa,CAc3D;AAED,wBAAgB,6BAA6B,IAAI,eAAe,CAY/D;AA4BD,wBAAgB,kCAAkC,IAAI,aAAa,CAclE;AAED,wBAAgB,oCAAoC,IAAI,eAAe,CAYtE"}
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../../src/core/templates/workflows/apply.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAmHlE,wBAAgB,2BAA2B,IAAI,aAAa,CAc3D;AAED,wBAAgB,6BAA6B,IAAI,eAAe,CAY/D;AA4BD,wBAAgB,kCAAkC,IAAI,aAAa,CAclE;AAED,wBAAgB,oCAAoC,IAAI,eAAe,CAYtE"}
@@ -1,23 +1,50 @@
1
1
  import { VERIFY_METHODOLOGY } from './verify.js';
2
2
  // ponytail: one parameterized template literal, not a template engine.
3
3
  function buildApplyBody(v) {
4
- return `**Steps**
4
+ return `**Task tracking is file-based only.** The tracks file's checkboxes (\`- [ ]\` / \`- [x]\`) are the single source of truth for progress. Never use a built-in todo or task-tracking tool — editing the checkbox in the file is the only way progress gets recorded.
5
5
 
6
- 1. **Confirm planning is done**
6
+ **Steps**
7
+
8
+ 1. **Select the change**
9
+
10
+ If the user named one, use it. Otherwise infer it from the conversation. If it is still ambiguous, run \`tospec list --json\` and let the user pick with \`AskUserQuestion\` — never guess.
11
+
12
+ Announce \`Using change: <name>\` and how to override.
13
+
14
+ 2. **Get apply instructions**
7
15
  \`\`\`bash
8
- tospec status --change "<name>" --json
16
+ tospec instructions apply --change "<name>" --json
9
17
  \`\`\`
10
- Every artifact in \`applyRequires\` must be \`done\` before you write any code. If one isn't, stop and send the user back to \`tospec-propose\` or \`tospec-issue\`. Note \`schemaName\` — it decides which branch below applies.
18
+ One call gives you the gate and the briefing: \`schemaName\` (decides which branch below applies), \`contextFiles\` (artifact id -> concrete paths), \`progress\`, \`tasks\`, and a dynamic \`instruction\`.
19
+
20
+ Act on \`state\`:
21
+ - \`blocked\` — required artifacts or the tracks file are missing; show \`instruction\` and STOP, sending the user back to \`tospec-propose\`/\`tospec-issue\`.
22
+ - \`all_done\` — everything is checked off already; skip to the verify step below.
23
+ - \`ready\` — proceed.
24
+
25
+ 3. **Read the context files**
26
+
27
+ Read every path listed under \`contextFiles\` before writing any code. Take the ids and paths from the CLI output — never assume filenames.
28
+
29
+ 4. **Show current progress**
11
30
 
12
- 2. **Work the tracks file one item at a time**
31
+ Schema in use, \`N/M tasks complete\`, the remaining items, and the CLI's \`instruction\`.
32
+
33
+ 5. **Work the tracks file one item at a time**
13
34
 
14
35
  The tracks file is \`tasks.md\` (sdd) or \`task.md\` (issue). ${v.step2Intro} Never batch multiple items into one pass.
15
36
 
37
+ Before starting an item, re-read the parts of design/specs that cover its scope — don't rely on memory from earlier in the conversation, context may have been compressed since.
38
+
39
+ Before checking an item off, re-read its description and confirm every part of it is covered by your changes and the behavior it describes actually works. An item checked off half-finished is the most expensive mistake in this loop.
40
+
41
+ **Pause if** the item is unclear, implementation reveals a design issue (suggest \`tospec-update\`), or you hit an error or blocker — report it and wait for guidance. Don't guess.
42
+
16
43
  ${v.sddBranch}
17
44
 
18
45
  ${v.issueBranch}
19
46
 
20
- 3. **Re-validate artifacts**
47
+ 6. **Re-validate artifacts**
21
48
  \`\`\`bash
22
49
  tospec validate "<name>" --json
23
50
  \`\`\`
@@ -35,12 +62,16 @@ Report which tasks/checkboxes completed this pass, current progress (\`tospec st
35
62
 
36
63
  **Guardrails**
37
64
  ${v.guardrailsHead}
38
- - Test only at the pre-agreed seam (design.md for sdd; the existing/new seam identified for issue)never against internals
65
+ - Keep going through items until done or blocked; pause on errors, blockers, or unclear requirements don't guess
66
+ - Read the context files before starting, and use the paths from \`tospec instructions apply\` — don't assume filenames
67
+ - Check the box in the tracks file immediately after finishing each item; no external task tracker
68
+ - Keep code changes minimal and scoped to the item at hand
69
+ - Any test you do write goes at the pre-agreed seam (design.md for sdd; the existing/new seam identified for issue) — never against internals
39
70
  - Fix root cause: check every caller of a shared function before declaring a fix complete
40
71
  - Don't hand off to archive until the automatic verify step is clean and the full test suite is green`;
41
72
  }
42
73
  // -----------------------------------------------------------------------------
43
- // Default apply — implement first, cover with tests after (no strict TDD loop)
74
+ // Default apply — implement per slice; tests are optional, not mandated
44
75
  // -----------------------------------------------------------------------------
45
76
  const APPLY_BODY = buildApplyBody({
46
77
  step2Intro: 'Take the next unchecked item, implement it, confirm it works against its specs, check it off (\`- [ ]\` → \`- [x]\`), then move to the next.',
@@ -48,39 +79,43 @@ const APPLY_BODY = buildApplyBody({
48
79
 
49
80
  For each tracer-bullet slice in \`tasks.md\`:
50
81
  1. Implement the minimum that satisfies the behavior the slice's specs describe. Don't anticipate future slices or add speculative flexibility.
51
- 2. Cover the new behavior with a test **at the seam \`design.md\` named** — written after the code works (test-after; no red-first requirement). Don't test internals or add implementation-coupled assertions (mocking internal collaborators, reaching into private state, checking the database instead of the interface).
52
- 3. Verify the result matches the behavior the slice's specs describe and its test is green.
53
- 4. Check off the slice, then move to the next one — one slice per cycle. Refactoring is not part of this loop; it belongs to the verify step at the end of this workflow.`,
82
+ 2. Verify the result matches the behavior the slice's specs describe, and that the existing test suite still passes.
83
+ 3. Check off the slice, then move to the next one one slice per cycle. Refactoring is not part of this loop; it belongs to the verify step at the end of this workflow.
84
+
85
+ Writing a new test is **not required** in this loop — add one when it earns its keep. If you do, put it at the seam \`design.md\` named and don't test internals or add implementation-coupled assertions (mocking internal collaborators, reaching into private state, checking the database instead of the interface). Use \`tospec-apply-with-tdd\` when every slice must start from a failing test.`,
54
86
  issueBranch: `### issue branch — fix root cause
55
87
 
56
- Read \`task.md\`'s feedback loop, then fix the root cause, not the symptom — if the same defect is reachable through multiple callers of a shared function, the fix belongs in the shared function, not patched into just the caller the ticket named (grep every caller of the function you're touching). Cover the bug with the regression test from \`task.md\`'s feedback loop so it can't come back — extend the existing test if there's one at the right seam, otherwise add a new one.`,
88
+ Read \`task.md\`'s feedback loop, then fix the root cause, not the symptom — if the same defect is reachable through multiple callers of a shared function, the fix belongs in the shared function, not patched into just the caller the ticket named (grep every caller of the function you're touching). Confirm the fix with \`task.md\`'s feedback loop and keep the existing suite green.
89
+
90
+ A regression test is **not required** here — add one when the bug is likely to recur, extending the existing test if there's one at the right seam. Use \`tospec-apply-with-tdd\` when the fix must start from a red regression test.`,
57
91
  guardrailsHead: `- One slice/task at a time — no batching
58
- - Every change ships with a test that covers its behavior (test-after is fine here no red-before-green requirement)`,
92
+ - Tests are optional in this loop write one when it earns its keep, and never let a missing test block progress; \`tospec-apply-with-tdd\` is the variant that mandates them
93
+ - Never delete, skip, or weaken an existing test to get to green — fix the code instead`,
59
94
  });
60
95
  export function getTospecApplySkillTemplate() {
61
96
  return {
62
97
  name: 'tospec-apply',
63
- description: 'Implement a change one task at a time, branching by schema, covering each change with a test as you go (test-after — no strict TDD loop), checking off tasks.md/task.md, then automatically run the two-axis verify review. Use when planning artifacts are complete (sdd: ticket/specs/design/tasks; issue: ticket/task) and the user wants to implement without a red-first (TDD) cycle.',
64
- instructions: `Implement a change's tasks one slice at a time, branching by schema, covering each change with a test as you go, then automatically run the two-axis verify review — ready for \`tospec-archive\` when done.
98
+ description: 'Implement tasks from a tospec change. Use when the user wants to start implementing, continue implementation, or work through tasks.',
99
+ instructions: `Implement a change's tasks one slice at a time, branching by schema, then automatically run the two-axis verify review — ready for \`tospec-archive\` when done.
65
100
 
66
- **Input**: The user's request should name the change to implement (or continue implementing).
101
+ **Input**: Optionally specify a change name. If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
67
102
 
68
103
  ${APPLY_BODY}`,
69
104
  license: 'MIT',
70
105
  compatibility: 'Requires tospec CLI.',
71
106
  metadata: { author: 'tospec', version: '1.0' },
72
- allowedTools: ['Bash(tospec:*)', 'Bash', 'Read', 'Write', 'Edit', 'Grep', 'Glob', 'Agent'],
107
+ allowedTools: ['Bash(tospec:*)', 'Bash', 'Read', 'Write', 'Edit', 'Grep', 'Glob', 'Agent', 'AskUserQuestion'],
73
108
  };
74
109
  }
75
110
  export function getTospecApplyCommandTemplate() {
76
111
  return {
77
112
  name: 'TOSPEC: Apply',
78
- description: 'Implement a change one slice at a time (test-after), then auto-run the two-axis verify review',
113
+ description: 'Implement tasks from a change, one slice at a time',
79
114
  category: 'Workflow',
80
115
  tags: ['workflow', 'implementation'],
81
- content: `Implement a change's tasks one slice at a time, branching by schema, covering each change with a test as you go, then automatically run the two-axis verify review — ready for \`tospec-archive\` when done.
116
+ content: `Implement a change's tasks one slice at a time, branching by schema, then automatically run the two-axis verify review — ready for \`tospec-archive\` when done.
82
117
 
83
- **Input**: The argument after \`tospec-apply\` is the change name to implement (or continue implementing).
118
+ **Input**: Optionally specify a change name after \`tospec-apply\` (e.g., \`tospec-apply add-auth\`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
84
119
 
85
120
  ${APPLY_BODY}`,
86
121
  };
@@ -111,27 +146,27 @@ Fix root cause, not symptom — if the same defect is reachable through multiple
111
146
  export function getTospecApplyWithTDDSkillTemplate() {
112
147
  return {
113
148
  name: 'tospec-apply-with-tdd',
114
- description: 'Implement a change test-first (red → green), one tracer-bullet slice or task at a time, checking off tasks.md/task.md as you go, then automatically run the two-axis verify review. Use when planning artifacts are complete (sdd: ticket/specs/design/tasks; issue: ticket/task) and the user wants a strict test-first (TDD) implementation loop.',
149
+ description: 'Implement tasks from a tospec change test-first (red → green). Use when the user wants to start or continue implementation with a strict TDD loop.',
115
150
  instructions: `Implement a change's tasks test-first (red → green), one slice at a time, branching by schema, then automatically run the two-axis verify review — ready for \`tospec-archive\` when done.
116
151
 
117
- **Input**: The user's request should name the change to implement (or continue implementing).
152
+ **Input**: Optionally specify a change name. If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
118
153
 
119
154
  ${APPLY_TDD_BODY}`,
120
155
  license: 'MIT',
121
156
  compatibility: 'Requires tospec CLI.',
122
157
  metadata: { author: 'tospec', version: '1.0' },
123
- allowedTools: ['Bash(tospec:*)', 'Bash', 'Read', 'Write', 'Edit', 'Grep', 'Glob', 'Agent'],
158
+ allowedTools: ['Bash(tospec:*)', 'Bash', 'Read', 'Write', 'Edit', 'Grep', 'Glob', 'Agent', 'AskUserQuestion'],
124
159
  };
125
160
  }
126
161
  export function getTospecApplyWithTDDCommandTemplate() {
127
162
  return {
128
163
  name: 'TOSPEC: Apply (TDD)',
129
- description: 'Implement a change test-first, one slice at a time, then auto-run the two-axis verify review',
164
+ description: 'Implement tasks from a change test-first (red green)',
130
165
  category: 'Workflow',
131
166
  tags: ['workflow', 'tdd', 'implementation'],
132
167
  content: `Implement a change's tasks test-first (red → green), one slice at a time, branching by schema, then automatically run the two-axis verify review — ready for \`tospec-archive\` when done.
133
168
 
134
- **Input**: The argument after \`tospec-apply-with-tdd\` is the change name to implement (or continue implementing).
169
+ **Input**: Optionally specify a change name after \`tospec-apply-with-tdd\` (e.g., \`tospec-apply-with-tdd add-auth\`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
135
170
 
136
171
  ${APPLY_TDD_BODY}`,
137
172
  };
@@ -1 +1 @@
1
- {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../../src/core/templates/workflows/apply.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAiBjD,uEAAuE;AACvE,SAAS,cAAc,CAAC,CAAe;IACrC,OAAO;;;;;;;;;;mEAU0D,CAAC,CAAC,UAAU;;EAE7E,CAAC,CAAC,SAAS;;EAEX,CAAC,CAAC,WAAW;;;;;;;;;;;;EAYb,kBAAkB;;;;;;;EAOlB,CAAC,CAAC,cAAc;;;sGAGoF,CAAC;AACvG,CAAC;AAED,gFAAgF;AAChF,+EAA+E;AAC/E,gFAAgF;AAEhF,MAAM,UAAU,GAAG,cAAc,CAAC;IAChC,UAAU,EACR,8IAA8I;IAChJ,SAAS,EAAE;;;;;;0KAM6J;IACxK,WAAW,EAAE;;+dAEgd;IAC7d,cAAc,EAAE;sHACoG;CACrH,CAAC,CAAC;AAEH,MAAM,UAAU,2BAA2B;IACzC,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,4XAA4X;QACzY,YAAY,EAAE;;;;EAIhB,UAAU,EAAE;QACV,OAAO,EAAE,KAAK;QACd,aAAa,EAAE,sBAAsB;QACrC,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAC9C,YAAY,EAAE,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;KAC3F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B;IAC3C,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,+FAA+F;QAC5G,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC;QACpC,OAAO,EAAE;;;;EAIX,UAAU,EAAE;KACX,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,2CAA2C;AAC3C,gFAAgF;AAEhF,MAAM,cAAc,GAAG,cAAc,CAAC;IACpC,UAAU,EACR,sIAAsI;IACxI,SAAS,EAAE;;;;;;0KAM6J;IACxK,WAAW,EAAE;;;;;;;wMAOyL;IACtM,cAAc,EAAE;yCACuB;CACxC,CAAC,CAAC;AAEH,MAAM,UAAU,kCAAkC;IAChD,OAAO;QACL,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,qVAAqV;QAClW,YAAY,EAAE;;;;EAIhB,cAAc,EAAE;QACd,OAAO,EAAE,KAAK;QACd,aAAa,EAAE,sBAAsB;QACrC,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAC9C,YAAY,EAAE,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;KAC3F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oCAAoC;IAClD,OAAO;QACL,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,8FAA8F;QAC3G,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,gBAAgB,CAAC;QAC3C,OAAO,EAAE;;;;EAIX,cAAc,EAAE;KACf,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../../src/core/templates/workflows/apply.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAiBjD,uEAAuE;AACvE,SAAS,cAAc,CAAC,CAAe;IACrC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mEA+B0D,CAAC,CAAC,UAAU;;;;;;;;EAQ7E,CAAC,CAAC,SAAS;;EAEX,CAAC,CAAC,WAAW;;;;;;;;;;;;EAYb,kBAAkB;;;;;;;EAOlB,CAAC,CAAC,cAAc;;;;;;;sGAOoF,CAAC;AACvG,CAAC;AAED,gFAAgF;AAChF,wEAAwE;AACxE,gFAAgF;AAEhF,MAAM,UAAU,GAAG,cAAc,CAAC;IAChC,UAAU,EACR,8IAA8I;IAChJ,SAAS,EAAE;;;;;;;wYAO2X;IACtY,WAAW,EAAE;;;;sOAIuN;IACpO,cAAc,EAAE;;wFAEsE;CACvF,CAAC,CAAC;AAEH,MAAM,UAAU,2BAA2B;IACzC,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,sIAAsI;QACnJ,YAAY,EAAE;;;;EAIhB,UAAU,EAAE;QACV,OAAO,EAAE,KAAK;QACd,aAAa,EAAE,sBAAsB;QACrC,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAC9C,YAAY,EAAE,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC;KAC9G,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B;IAC3C,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,oDAAoD;QACjE,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC;QACpC,OAAO,EAAE;;;;EAIX,UAAU,EAAE;KACX,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,2CAA2C;AAC3C,gFAAgF;AAEhF,MAAM,cAAc,GAAG,cAAc,CAAC;IACpC,UAAU,EACR,sIAAsI;IACxI,SAAS,EAAE;;;;;;0KAM6J;IACxK,WAAW,EAAE;;;;;;;wMAOyL;IACtM,cAAc,EAAE;yCACuB;CACxC,CAAC,CAAC;AAEH,MAAM,UAAU,kCAAkC;IAChD,OAAO;QACL,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,oJAAoJ;QACjK,YAAY,EAAE;;;;EAIhB,cAAc,EAAE;QACd,OAAO,EAAE,KAAK;QACd,aAAa,EAAE,sBAAsB;QACrC,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAC9C,YAAY,EAAE,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC;KAC9G,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oCAAoC;IAClD,OAAO;QACL,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,wDAAwD;QACrE,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,gBAAgB,CAAC;QAC3C,OAAO,EAAE;;;;EAIX,cAAc,EAAE;KACf,CAAC;AACJ,CAAC"}
@@ -15,16 +15,16 @@ If a sync is warranted, **ask the user one question** (make clear both answers a
15
15
 
16
16
  > "This change has spec deltas. Run \`tospec-sync\` to reconcile the specs against the code before archiving? (recommended, but you can archive without it.)"
17
17
 
18
- - **User says yes** → run the \`tospec-sync\` workflow now. It reconciles each Requirement against the code (code wins) and writes \`sync-report.md\` with \`結論: PASS\`. If it ends in \`結論: FAIL\` (a real CODE-BUG), **stop** and return to \`tospec-apply\` to fix the code — do not archive. On PASS, archive **with** \`--require-sync\` (Step 2, synced branch).
18
+ - **User says yes** → run the \`tospec-sync\` workflow now. It reconciles each Requirement against the code (code wins) and writes \`sync-report.md\` with \`Conclusion: PASS\`. If it ends in \`Conclusion: FAIL\` (a real CODE-BUG), **stop** and return to \`tospec-apply\` to fix the code — do not archive. On PASS, archive **with** \`--require-sync\` (Step 2, synced branch).
19
19
  - **User says no** → that's allowed. Skip the sync and archive **without** \`--require-sync\` (Step 2, not-synced branch). Declining does not block archiving.
20
20
 
21
21
  **Step 2 — archive**
22
22
 
23
- Synced branch (user chose to sync and \`sync-report.md\` says \`結論: PASS\`):
23
+ Synced branch (user chose to sync and \`sync-report.md\` says \`Conclusion: PASS\`):
24
24
  \`\`\`bash
25
25
  tospec archive "<name>" --json --require-sync
26
26
  \`\`\`
27
- \`--require-sync\` is the CLI's own machine-checkable half of the sync gate: it refuses unless \`sync-report.md\` exists with a \`結論: PASS\` line (\`SYNC_REPORT_MISSING\` / \`SYNC_REPORT_FAILED\`). If \`tospec-sync\` actually ran and passed, this succeeds for free — a CLI-enforced backstop behind the instruction-level order above. Only pass \`--require-sync\` when a sync actually ran; otherwise the CLI will (correctly) refuse.
27
+ \`--require-sync\` is the CLI's own machine-checkable half of the sync gate: it refuses unless \`sync-report.md\` exists with a \`Conclusion: PASS\` line (\`SYNC_REPORT_MISSING\` / \`SYNC_REPORT_FAILED\`). If \`tospec-sync\` actually ran and passed, this succeeds for free — a CLI-enforced backstop behind the instruction-level order above. Only pass \`--require-sync\` when a sync actually ran; otherwise the CLI will (correctly) refuse.
28
28
 
29
29
  Not-synced branch (sync wasn't needed, or the user declined):
30
30
  \`\`\`bash
@@ -1 +1 @@
1
- {"version":3,"file":"decision.d.ts","sourceRoot":"","sources":["../../../../src/core/templates/workflows/decision.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA4ClE,wBAAgB,8BAA8B,IAAI,aAAa,CAe9D;AAED,wBAAgB,gCAAgC,IAAI,eAAe,CAYlE"}
1
+ {"version":3,"file":"decision.d.ts","sourceRoot":"","sources":["../../../../src/core/templates/workflows/decision.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA8ClE,wBAAgB,8BAA8B,IAAI,aAAa,CAe9D;AAED,wBAAgB,gCAAgC,IAAI,eAAe,CAYlE"}
@@ -6,23 +6,23 @@ const DECISION_BODY = `Capture a decision that has already been made or is ready
6
6
  Read \`tospec/decisions/index.md\` (if it exists) — its timestamp / title / summary rows are the history of what was already decided. Use it to spot a decision this one extends or supersedes, and to avoid contradicting an accepted one.
7
7
 
8
8
  2. **Converge on the decision first — and keep the exchange**
9
- Before writing anything, make sure you can state: what was decided, why (the driving forces), which alternatives were evaluated, and what it impacts. If any of these is fuzzy, ask the user — don't invent them. As you interview, keep the material questions you asked and the user's answers; you'll record them in 決策過程 (step 4) so the reasoning trail survives the chat.
9
+ Before writing anything, make sure you can state: what was decided, why (the driving forces), which alternatives were evaluated, and what it impacts. If any of these is fuzzy, ask the user — don't invent them. As you interview, keep the material questions you asked and the user's answers; you'll record them in Decision Process (step 4) so the reasoning trail survives the chat.
10
10
 
11
11
  3. **Create the record**
12
12
  \`\`\`bash
13
- tospec decision new "<topic>" --title "<標題>" --summary "<一句話摘要>" --status proposed
13
+ tospec decision new "<topic>" --title "<title>" --summary "<one-line summary>" --status proposed
14
14
  \`\`\`
15
- Derive a kebab-case \`<topic>\` from the subject. The CLI produces both files: it writes \`tospec/decisions/<yyyyMMdd_HHmmss>-<topic>.md\` from its template (狀態/日期/標題 pre-filled) and appends a row to \`tospec/decisions/index.md\` (seeding that ledger on first use). **The CLI owns the dated filename and the index — never create/rename decision files or hand-edit \`index.md\` yourself.** Use \`--status accepted\` if already agreed, or \`--status superseded\` (and name the successor) when replacing an older decision; pass \`--date\` only to backfill a past decision.
15
+ Derive a kebab-case \`<topic>\` from the subject. The CLI produces both files: it writes \`tospec/decisions/<yyyyMMdd_HHmmss>-<topic>.md\` from its template (Status/Date/title pre-filled) and appends a row to \`tospec/decisions/index.md\` (seeding that ledger on first use). **The CLI owns the dated filename and the index — never create/rename decision files or hand-edit \`index.md\` yourself.** Use \`--status accepted\` if already agreed, or \`--status superseded\` (and name the successor) when replacing an older decision; pass \`--date\` only to backfill a past decision.
16
16
 
17
17
  4. **Fill the six sections**
18
18
  Open the created file and complete every section:
19
- - **狀態** — proposed / accepted / superseded (+ 日期); if superseded, name the decision that replaces it.
20
- - **背景** — the situation and forces that made this decision necessary.
21
- - **決策** — what was chosen, the canonical terms, and why this over the alternatives.
22
- - **影響** — the modules / APIs / docs / tests this touches.
23
- - **替代方案** — each option considered, its trade-offs, and the conclusion.
24
- - **後續工作** — the follow-up implementation items, phased if useful.
25
- - **決策過程** (optional) — the key questions you asked and the user's answers that shaped this decision. Format each pair as a \`**Q:** 問題\` line followed by the answer in the next paragraph, one pair per block. Summarize each Q&A; don't paste a full transcript. Omit the section if there was no interactive discussion.
19
+ - **Status** — proposed / accepted / superseded (+ Date); if superseded, name the decision that replaces it.
20
+ - **Context** — the situation and forces that made this decision necessary.
21
+ - **Decision** — what was chosen, the canonical terms, and why this over the alternatives.
22
+ - **Impact** — the modules / APIs / docs / tests this touches.
23
+ - **Alternatives** — each option considered, its trade-offs, and the conclusion.
24
+ - **Follow-up** — the follow-up implementation items, phased if useful.
25
+ - **Decision Process** (optional) — the key questions you asked and the user's answers that shaped this decision. Format each pair as a \`**Q:** question\` line followed by the answer in the next paragraph, one pair per block. Summarize each Q&A; don't paste a full transcript. Omit the section if there was no interactive discussion.
26
26
 
27
27
  5. **Verify**
28
28
  \`\`\`bash
@@ -32,13 +32,15 @@ const DECISION_BODY = `Capture a decision that has already been made or is ready
32
32
 
33
33
  **Output**
34
34
 
35
- Summarize the decision, its status, and the follow-up work. If it supersedes an older decision, state which one and flip that older file's 狀態 to \`superseded\`. Report the created filename explicitly — when a change later implements this decision, that filename is what \`tospec new change --decisions\` records to link the change back here (the file's optional \`## 關聯變更\` section can list those changes in return).
35
+ Summarize the decision, its status, and the follow-up work. If it supersedes an older decision, state which one and flip that older file's Status to \`superseded\`. Report the created filename explicitly — when a change later implements this decision, that filename is what \`tospec new change --decisions\` records to link the change back here (the file's optional \`## Related Changes\` section can list those changes in return).
36
+
37
+ Then point at the next step. When you put these options to the user, write each label from the decision you just recorded — a short, conversational phrase naming the concrete next action — then append the fixed action keyword in parentheses (\`(update)\`, \`(propose)\`/\`(issue)\`); the words before it must describe *this* action in *this* context, never a canned phrase, and never the raw \`tospec-*\` skill name. If the decision came out of grilling or exploring an **existing** change, offer **(update)** via \`tospec-update\` to fold it into that change's artifacts; if no change exists yet, offer **(propose)** / **(issue)** via \`tospec-propose\`/\`tospec-issue\` and carry the filename into \`--decisions\`.
36
38
 
37
39
  **Guardrails**
38
40
  - The decision file, its date-prefixed filename, and the ledger row are all CLI-generated — pass \`--summary\`, and never create/rename decision files or hand-edit \`index.md\` yourself; only edit the decision file's section contents
39
41
  - Don't record a decision whose rationale or alternatives you can't state — clarify with the user first
40
- - \`superseded\` must name its successor; the superseded record's 狀態 must be updated too
41
- - Keep the six required sections — they are the structure the schema validates against; 決策過程 is an optional seventh for the Q&A trail (each pair starts with a \`**Q:**\` line, answer in the next paragraph)`;
42
+ - \`superseded\` must name its successor; the superseded record's Status must be updated too
43
+ - Keep the six required sections — they are the structure the schema validates against; Decision Process is an optional seventh for the Q&A trail (each pair starts with a \`**Q:**\` line, answer in the next paragraph)`;
42
44
  export function getTospecDecisionSkillTemplate() {
43
45
  return {
44
46
  name: 'tospec-decision',
@@ -1 +1 @@
1
- {"version":3,"file":"decision.js","sourceRoot":"","sources":["../../../../src/core/templates/workflows/decision.ts"],"names":[],"mappings":"AASA,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8MAwCwL,CAAC;AAE/M,MAAM,UAAU,8BAA8B;IAC5C,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,mQAAmQ;QACrQ,YAAY,EAAE;;;;EAIhB,aAAa,EAAE;QACb,OAAO,EAAE,KAAK;QACd,aAAa,EAAE,sBAAsB;QACrC,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAC9C,YAAY,EAAE,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC;KAC7F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gCAAgC;IAC9C,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,6FAA6F;QAC1G,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC;QACrC,OAAO,EAAE;;;;EAIX,aAAa,EAAE;KACd,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"decision.js","sourceRoot":"","sources":["../../../../src/core/templates/workflows/decision.ts"],"names":[],"mappings":"AASA,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0NA0CoM,CAAC;AAE3N,MAAM,UAAU,8BAA8B;IAC5C,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,mQAAmQ;QACrQ,YAAY,EAAE;;;;EAIhB,aAAa,EAAE;QACb,OAAO,EAAE,KAAK;QACd,aAAa,EAAE,sBAAsB;QACrC,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE;QAC9C,YAAY,EAAE,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC;KAC7F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gCAAgC;IAC9C,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,6FAA6F;QAC1G,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC;QACrC,OAAO,EAAE;;;;EAIX,aAAa,EAAE;KACd,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"explore.d.ts","sourceRoot":"","sources":["../../../../src/core/templates/workflows/explore.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA8DlE,wBAAgB,uBAAuB,IAAI,aAAa,CAcvD;AAED,wBAAgB,+BAA+B,IAAI,eAAe,CAYjE"}
1
+ {"version":3,"file":"explore.d.ts","sourceRoot":"","sources":["../../../../src/core/templates/workflows/explore.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAgElE,wBAAgB,uBAAuB,IAAI,aAAa,CAcvD;AAED,wBAAgB,+BAA+B,IAAI,eAAe,CAYjE"}