specweave 1.0.577 → 1.0.578

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 (94) hide show
  1. package/README.md +29 -0
  2. package/bin/specweave.js +1 -0
  3. package/dist/src/cli/commands/auto.d.ts +28 -0
  4. package/dist/src/cli/commands/auto.d.ts.map +1 -1
  5. package/dist/src/cli/commands/auto.js +73 -0
  6. package/dist/src/cli/commands/auto.js.map +1 -1
  7. package/dist/src/cli/commands/create-increment.d.ts +8 -0
  8. package/dist/src/cli/commands/create-increment.d.ts.map +1 -1
  9. package/dist/src/cli/commands/create-increment.js +2 -1
  10. package/dist/src/cli/commands/create-increment.js.map +1 -1
  11. package/dist/src/cli/dispatcher.d.ts +29 -0
  12. package/dist/src/cli/dispatcher.d.ts.map +1 -0
  13. package/dist/src/cli/dispatcher.js +53 -0
  14. package/dist/src/cli/dispatcher.js.map +1 -0
  15. package/dist/src/core/cache/static-context-loader.d.ts +39 -0
  16. package/dist/src/core/cache/static-context-loader.d.ts.map +1 -0
  17. package/dist/src/core/cache/static-context-loader.js +49 -0
  18. package/dist/src/core/cache/static-context-loader.js.map +1 -0
  19. package/dist/src/core/config/types.d.ts +61 -0
  20. package/dist/src/core/config/types.d.ts.map +1 -1
  21. package/dist/src/core/config/types.js +16 -0
  22. package/dist/src/core/config/types.js.map +1 -1
  23. package/dist/src/core/doctor/checkers/configuration-checker.d.ts +1 -0
  24. package/dist/src/core/doctor/checkers/configuration-checker.d.ts.map +1 -1
  25. package/dist/src/core/doctor/checkers/configuration-checker.js +50 -0
  26. package/dist/src/core/doctor/checkers/configuration-checker.js.map +1 -1
  27. package/dist/src/core/hooks/pretooluse-guard.d.ts +37 -0
  28. package/dist/src/core/hooks/pretooluse-guard.d.ts.map +1 -0
  29. package/dist/src/core/hooks/pretooluse-guard.js +64 -0
  30. package/dist/src/core/hooks/pretooluse-guard.js.map +1 -0
  31. package/dist/src/core/increment/template-creator.d.ts +7 -0
  32. package/dist/src/core/increment/template-creator.d.ts.map +1 -1
  33. package/dist/src/core/increment/template-creator.js +2 -1
  34. package/dist/src/core/increment/template-creator.js.map +1 -1
  35. package/dist/src/core/skills/skill-judge.d.ts +56 -0
  36. package/dist/src/core/skills/skill-judge.d.ts.map +1 -1
  37. package/dist/src/core/skills/skill-judge.js +95 -8
  38. package/dist/src/core/skills/skill-judge.js.map +1 -1
  39. package/dist/src/core/team-lead/template-loader.d.ts +19 -0
  40. package/dist/src/core/team-lead/template-loader.d.ts.map +1 -0
  41. package/dist/src/core/team-lead/template-loader.js +33 -0
  42. package/dist/src/core/team-lead/template-loader.js.map +1 -0
  43. package/dist/src/core/telemetry/cache-metrics.d.ts +38 -0
  44. package/dist/src/core/telemetry/cache-metrics.d.ts.map +1 -0
  45. package/dist/src/core/telemetry/cache-metrics.js +65 -0
  46. package/dist/src/core/telemetry/cache-metrics.js.map +1 -0
  47. package/dist/src/core/validators/resource-base.d.ts +29 -0
  48. package/dist/src/core/validators/resource-base.d.ts.map +1 -0
  49. package/dist/src/core/validators/resource-base.js +52 -0
  50. package/dist/src/core/validators/resource-base.js.map +1 -0
  51. package/package.json +1 -1
  52. package/plugins/specweave/.lint/skill-lint.test.ts +91 -0
  53. package/plugins/specweave/.lint/skill-lint.ts +51 -0
  54. package/plugins/specweave/marketplace.json +114 -0
  55. package/plugins/specweave/skills/ado-multi-project/SKILL.md +9 -1
  56. package/plugins/specweave/skills/ado-sync/SKILL.md +16 -1
  57. package/plugins/specweave/skills/analytics/SKILL.md +45 -0
  58. package/plugins/specweave/skills/architect/SKILL.md +5 -19
  59. package/plugins/specweave/skills/auto/SKILL.md +41 -10
  60. package/plugins/specweave/skills/brainstorm/SKILL.md +15 -15
  61. package/plugins/specweave/skills/close-all/SKILL.md +21 -51
  62. package/plugins/specweave/skills/code-reviewer/SKILL.md +114 -57
  63. package/plugins/specweave/skills/do/SKILL.md +14 -5
  64. package/plugins/specweave/skills/done/SKILL.md +36 -1
  65. package/plugins/specweave/skills/github-issue-standard/SKILL.md +8 -224
  66. package/plugins/specweave/skills/github-multi-project/SKILL.md +9 -1
  67. package/plugins/specweave/skills/github-sync/SKILL.md +16 -1
  68. package/plugins/specweave/skills/grill/SKILL.md +56 -9
  69. package/plugins/specweave/skills/help/SKILL.md +32 -4
  70. package/plugins/specweave/skills/increment/SKILL.md +41 -8
  71. package/plugins/specweave/skills/jira-sync/SKILL.md +16 -1
  72. package/plugins/specweave/skills/judge-llm/SKILL.md +46 -14
  73. package/plugins/specweave/skills/multi-project/SKILL.md +370 -0
  74. package/plugins/specweave/skills/plan/SKILL.md +16 -1
  75. package/plugins/specweave/skills/pm/SKILL.md +12 -47
  76. package/plugins/specweave/skills/tdd-cycle/SKILL.md +38 -0
  77. package/plugins/specweave/skills/tdd-green/SKILL.md +16 -1
  78. package/plugins/specweave/skills/tdd-red/SKILL.md +16 -1
  79. package/plugins/specweave/skills/tdd-refactor/SKILL.md +16 -1
  80. package/plugins/specweave/skills/team-build/SKILL.md +16 -462
  81. package/plugins/specweave/skills/team-lead/SKILL.md +59 -44
  82. package/plugins/specweave/skills/team-lead/agents/_protocol.md +88 -0
  83. package/plugins/specweave/skills/team-lead/agents/architect.md +27 -36
  84. package/plugins/specweave/skills/team-lead/agents/backend.md +26 -56
  85. package/plugins/specweave/skills/team-lead/agents/database.md +23 -51
  86. package/plugins/specweave/skills/team-lead/agents/frontend.md +27 -57
  87. package/plugins/specweave/skills/team-lead/agents/pm.md +7 -11
  88. package/plugins/specweave/skills/team-lead/agents/researcher.md +29 -55
  89. package/plugins/specweave/skills/team-lead/agents/reviewer-security.md +43 -59
  90. package/plugins/specweave/skills/team-lead/agents/security.md +22 -48
  91. package/plugins/specweave/skills/team-lead/agents/testing.md +26 -53
  92. package/plugins/specweave/skills/team-merge/SKILL.md +13 -10
  93. package/plugins/specweave/skills/team-lead/agents/reviewer-logic.md +0 -82
  94. package/plugins/specweave/skills/team-lead/agents/reviewer-performance.md +0 -83
@@ -19,6 +19,83 @@ import { appendFileSync } from 'fs';
19
19
  import * as path from 'path';
20
20
  import chalk from 'chalk';
21
21
  import { resolveEffectiveRoot } from '../../utils/find-project-root.js';
22
+ import { loadStaticContext } from '../cache/static-context-loader.js';
23
+ import { readConfig } from '../config/config-manager.js';
24
+ /**
25
+ * Check if a model ID belongs to the Opus 4.7 family or newer.
26
+ * 4.7+ models drop the `thinking` API parameter in favor of adaptive thinking
27
+ * triggered by prompt hints.
28
+ */
29
+ export function isOpus47Family(modelId) {
30
+ if (!modelId)
31
+ return false;
32
+ const m = /^claude-opus-(\d+)-(\d+)/.exec(modelId);
33
+ if (!m)
34
+ return false;
35
+ const major = Number(m[1]);
36
+ const minor = Number(m[2]);
37
+ if (Number.isNaN(major) || Number.isNaN(minor))
38
+ return false;
39
+ if (major > 4)
40
+ return true;
41
+ if (major === 4 && minor >= 7)
42
+ return true;
43
+ return false;
44
+ }
45
+ /**
46
+ * Construct the Anthropic API request body for a judge call.
47
+ *
48
+ * Model-version guard:
49
+ * - Opus 4.7 family → never includes `thinking` (adaptive-thinking prompt hint carries the load)
50
+ * - Legacy models → includes `thinking` only when `thinkingBudget === "legacy"`
51
+ *
52
+ * Prompt caching (0669 Wave 2):
53
+ * - When `cacheBlocks` is non-empty, its entries are prepended to the user
54
+ * message content as the first elements, BEFORE the dynamic prompt text.
55
+ * This lets the Anthropic API reuse the cached prefix on subsequent calls.
56
+ */
57
+ export function buildJudgeApiRequest(input) {
58
+ const { model, system, userPrompt, maxTokens, thinkingBudget = 'adaptive', cacheBlocks = [], } = input;
59
+ const userContent = cacheBlocks.length > 0
60
+ ? [
61
+ ...cacheBlocks.map((b) => ({ ...b })),
62
+ { type: 'text', text: userPrompt },
63
+ ]
64
+ : [];
65
+ const messages = userContent.length > 0
66
+ ? [{ role: 'user', content: userContent }]
67
+ : [{ role: 'user', content: userPrompt }];
68
+ const request = {
69
+ model,
70
+ max_tokens: maxTokens,
71
+ system,
72
+ messages,
73
+ };
74
+ if (!isOpus47Family(model) && thinkingBudget === 'legacy') {
75
+ request.thinking = { type: 'enabled', budget_tokens: Math.max(1024, Math.floor(maxTokens / 2)) };
76
+ }
77
+ return request;
78
+ }
79
+ /**
80
+ * Resolve the list of static files to cache from the SpecWeave config,
81
+ * expanding the `<active>` placeholder to the provided increment ID.
82
+ *
83
+ * Returns an empty array when prompt caching is disabled or the config
84
+ * doesn't include any static files.
85
+ */
86
+ export async function resolveCacheFilePaths(projectRoot, incrementId) {
87
+ try {
88
+ const config = await readConfig(projectRoot);
89
+ const files = config.cache?.staticContextFiles ?? [];
90
+ if (!incrementId) {
91
+ return files.filter((f) => !f.includes('<active>'));
92
+ }
93
+ return files.map((f) => f.replace(/<active>/g, incrementId));
94
+ }
95
+ catch {
96
+ return [];
97
+ }
98
+ }
22
99
  /**
23
100
  * Domain-specific evaluation criteria
24
101
  */
@@ -241,6 +318,23 @@ export class SkillJudge {
241
318
  // Build evaluation prompt
242
319
  const criteria = DOMAIN_CRITERIA[input.domain] || DOMAIN_CRITERIA.backend;
243
320
  const userPrompt = this.buildPrompt(input, criteria);
321
+ // Load static-context cache blocks (CLAUDE.md, config.json, active spec/rubric).
322
+ // Empty array when config disables caching or files are missing — judge() stays
323
+ // fully functional in both cases.
324
+ const cacheFilePaths = await resolveCacheFilePaths(this.projectRoot, input.incrementId);
325
+ const cacheBlocks = cacheFilePaths.length > 0
326
+ ? await loadStaticContext(cacheFilePaths, this.projectRoot)
327
+ : [];
328
+ if (cacheBlocks.length > 0) {
329
+ logger.log(`Prompt cache: ${cacheFilePaths.length} file(s), 1 ephemeral breakpoint`, 'INFO');
330
+ }
331
+ const requestBody = buildJudgeApiRequest({
332
+ model: this.model,
333
+ system: JUDGE_SYSTEM_PROMPT,
334
+ userPrompt,
335
+ maxTokens: 2000,
336
+ cacheBlocks,
337
+ });
244
338
  logger.log('Sending request to Opus...', 'PROGRESS');
245
339
  try {
246
340
  // Create abort controller for timeout
@@ -250,14 +344,7 @@ export class SkillJudge {
250
344
  controller.abort();
251
345
  }, this.timeout_ms);
252
346
  // Make API call with timeout
253
- const response = await this.client.messages.create({
254
- model: this.model,
255
- max_tokens: 2000,
256
- system: JUDGE_SYSTEM_PROMPT,
257
- messages: [{ role: 'user', content: userPrompt }],
258
- }, {
259
- signal: controller.signal,
260
- });
347
+ const response = await this.client.messages.create(requestBody, { signal: controller.signal });
261
348
  clearTimeout(timeoutId);
262
349
  logger.log('Response received, parsing...', 'PROGRESS');
263
350
  // Extract text content
@@ -1 +1 @@
1
- {"version":3,"file":"skill-judge.js","sourceRoot":"","sources":["../../../../src/core/skills/skill-judge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AA8DxE;;GAEG;AACH,MAAM,eAAe,GAAmC;IACtD,QAAQ,EAAE;QACR,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE;YACR,oDAAoD;YACpD,uEAAuE;YACvE,uEAAuE;YACvE,iDAAiD;YACjD,oDAAoD;YACpD,qEAAqE;SACtE;QACD,MAAM,EAAE,CAAC;KACV;IACD,OAAO,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE;YACR,gDAAgD;YAChD,uDAAuD;YACvD,2CAA2C;YAC3C,kDAAkD;YAClD,8DAA8D;YAC9D,6CAA6C;SAC9C;QACD,MAAM,EAAE,CAAC;KACV;IACD,MAAM,EAAE;QACN,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE;YACR,oEAAoE;YACpE,iEAAiE;YACjE,6CAA6C;YAC7C,qCAAqC;YACrC,qCAAqC;YACrC,yCAAyC;SAC1C;QACD,MAAM,EAAE,CAAC;KACV;IACD,cAAc,EAAE;QACd,MAAM,EAAE,gBAAgB;QACxB,QAAQ,EAAE;YACR,yDAAyD;YACzD,6CAA6C;YAC7C,mDAAmD;YACnD,4CAA4C;YAC5C,oCAAoC;YACpC,sCAAsC;SACvC;QACD,MAAM,EAAE,EAAE;KACX;IACD,OAAO,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE;YACR,6CAA6C;YAC7C,gEAAgE;YAChE,kDAAkD;YAClD,+CAA+C;YAC/C,uDAAuD;YACvD,oDAAoD;SACrD;QACD,MAAM,EAAE,CAAC;KACV;IACD,EAAE,EAAE;QACF,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE;YACR,gDAAgD;YAChD,gDAAgD;YAChD,uCAAuC;YACvC,6CAA6C;YAC7C,mDAAmD;YACnD,4DAA4D;SAC7D;QACD,MAAM,EAAE,CAAC;KACV;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iFAmCqD,CAAC;AAElF;;GAEG;AACH,MAAM,cAAc;IAKlB,YAAY,OAAe,EAAE,OAAgB;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,8BAA8B;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,GAAG,CAAC,OAAe,EAAE,QAAgD,MAAM;QACzE,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,SAAS,MAAM,OAAO,OAAO,KAAK,KAAK,OAAO,EAAE,CAAC;QAEnE,uBAAuB;QACvB,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;QAE3C,4BAA4B;QAC5B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC/B,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACjC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACnC,KAAK,CAAC,IAAI,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,CAAC,MAAmB;QACzB,MAAM,KAAK,GAAG;YACZ,EAAE;YACF,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACd,mBAAmB;YACnB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACd,YAAY,MAAM,CAAC,OAAO,YAAY,MAAM,CAAC,KAAK,OAAO;YACzD,aAAa,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;YACtD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,EAAE;YAC3D,EAAE;YACF,YAAY,MAAM,CAAC,OAAO,EAAE;YAC5B,EAAE;YACF,YAAY;YACZ,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,EAAE;YACF,WAAW;YACX,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;YACzC,EAAE;YACF,kBAAkB;YAClB,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;SACf,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAElB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,UAAU;IAQrB,YAAY,OAAsB;QAP1B,WAAM,GAAqB,IAAI,CAAC;QAQtC,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,KAAK,CAAC,CAAE,cAAc;QAC/D,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,MAAM,CAAC,CAAE,yBAAyB;QACjE,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,CAAC;QAElE,mBAAmB;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO;YAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;QAErE,8BAA8B;QAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC7C,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,KAAiB;QAC3B,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,MAAM,CAAC,GAAG,CAAC,6CAA6C,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAC9D,MAAM,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QAE5C,uBAAuB;QACvB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,CAAC,yDAAyD,EAAE,MAAM,CAAC,CAAC;YAC9E,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;QAED,yDAAyD;QACzD,IAAI,CAAC;YACH,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC3D,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,CAAC,GAAG,CAAC,6CAA6C,OAAO,sCAAsC,EAAE,MAAM,CAAC,CAAC;gBAC/G,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,GAAG,CAAC,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,MAAM,CAAC,CAAC;YACzI,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;QAED,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC;QAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAErD,MAAM,CAAC,GAAG,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC;QAErD,IAAI,CAAC;YACH,sCAAsC;YACtC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAChC,MAAM,CAAC,GAAG,CAAC,mCAAmC,EAAE,MAAM,CAAC,CAAC;gBACxD,UAAU,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAEpB,6BAA6B;YAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACjD,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU,EAAE,IAAI;gBAChB,MAAM,EAAE,mBAAmB;gBAC3B,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;aAClD,EAAE;gBACD,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YAEH,YAAY,CAAC,SAAS,CAAC,CAAC;YAExB,MAAM,CAAC,GAAG,CAAC,+BAA+B,EAAE,UAAU,CAAC,CAAC;YAExD,uBAAuB;YACvB,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YAClE,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAChD,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACjD,CAAC;YAED,sBAAsB;YACtB,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YACxD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAkD,CAAC;YAEzF,MAAM,MAAM,GAAgB;gBAC1B,GAAG,MAAM;gBACT,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBACnC,QAAQ,EAAE,KAAK;aAChB,CAAC;YAEF,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACvB,OAAO,MAAM,CAAC;QAEhB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,KAA4C,CAAC;YAEzD,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClE,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;gBACzC,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YACtD,CAAC;YAED,MAAM,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,KAAiB,EAAE,QAAwB;QAC7D,MAAM,KAAK,GAAa;YACtB,cAAc,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE;YAC1C,EAAE;YACF,qBAAqB;YACrB,KAAK,CAAC,eAAe;YACrB,EAAE;YACF,iBAAiB;YACjB,KAAK;YACL,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAG,qBAAqB;YACzD,KAAK;SACN,CAAC;QAEF,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,sBAAsB,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC;YACzC,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;gBAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,yCAAyC,CAAC,CAAC;QAC1D,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,iEAAiE,CAAC,CAAC;QAElF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,eAAe,CACrB,KAAiB,EACjB,SAAiB,EACjB,MAAsB;QAEtB,MAAM,CAAC,GAAG,CAAC,wCAAwC,EAAE,MAAM,CAAC,CAAC;QAE7D,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,KAAK,GAAG,EAAE,CAAC,CAAE,oBAAoB;QAErC,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAE7C,uBAAuB;QACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACpD,QAAQ,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC9C,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/D,QAAQ,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YACjD,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACxD,QAAQ,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC5C,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACnE,QAAQ,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YACjD,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACrC,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrD,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACjC,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;QAED,MAAM,OAAO,GAAiB,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACrB,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;QAEjE,MAAM,MAAM,GAAgB;YAC1B,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACxC,OAAO,EAAE,6CAA6C;YACtD,SAAS,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC;YAC5E,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC;YAC1E,eAAe,EAAE,CAAC,qDAAqD,CAAC;YACxE,YAAY,EAAE,EAAE;YAChB,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YACnC,QAAQ,EAAE,KAAK;SAChB,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,aAAa,CACnB,KAAiB,EACjB,SAAiB,EACjB,MAAsB;QAEtB,MAAM,MAAM,GAAgB;YAC1B,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,8BAA8B,IAAI,CAAC,UAAU,gCAAgC;YACtF,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,CAAC,8CAA8C,CAAC;YAC1D,eAAe,EAAE;gBACf,wCAAwC;gBACxC,wBAAwB;gBACxB,uCAAuC;aACxC;YACD,YAAY,EAAE,EAAE;YAChB,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YACnC,QAAQ,EAAE,IAAI;SACf,CAAC;QAEF,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,WAAW,CACT,WAAmB,EACnB,MAAmB,EACnB,aAAkD;QAElD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,CACrE,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;QAClE,MAAM,UAAU,GAAiC;YAC/C,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE,UAAU;SACnB,CAAC;QAEF,MAAM,MAAM,GAAG;YACb,OAAO,EAAE,KAAK;YACd,WAAW;YACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO;YACrD,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe;YAClD,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,aAAa;YACb,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC;QAEF,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9D,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,iBAAiB,CACf,WAAmB,EACnB,MAAc;QAEd,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,CACrE,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG;YACb,OAAO,EAAE,KAAK;YACd,WAAW;YACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE,QAAQ;YACjB,aAAa,EAAE,QAAQ;YACvB,MAAM;SACP,CAAC;QAEF,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9D,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,MAAmB;QAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QAExD,MAAM,KAAK,GAAa;YACtB,EAAE;YACF,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC;YAClC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACd,GAAG,IAAI,aAAa,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,MAAM,CAAC,KAAK,OAAO;YAC7E,aAAa,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;YACtD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,EAAE;YACzE,EAAE;YACF,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;YACtB,KAAK,MAAM,CAAC,OAAO,EAAE;SACtB,CAAC;QAEF,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;YAC1C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACjC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;YAC1C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAChC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC/C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;gBACvC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC7C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACxC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAE3B,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAc,EACd,eAAuB,EACvB,WAAmB,EACnB,OAAsB;IAEtB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC,KAAK,CAAC;QACjB,MAAM;QACN,eAAe;QACf,WAAW;KACZ,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAc,EACd,eAAuB,EACvB,WAAmB,EACnB,gBAAwB,EACxB,kBAA4B,EAC5B,OAAsB;IAEtB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC,KAAK,CAAC;QACjB,MAAM;QACN,eAAe;QACf,WAAW;QACX,gBAAgB;QAChB,kBAAkB;KACnB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"skill-judge.js","sourceRoot":"","sources":["../../../../src/core/skills/skill-judge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Loads team-lead agent prompt templates and auto-prepends the shared
3
+ * _protocol.md content so every domain template gets the common
4
+ * SendMessage/TaskUpdate/shutdown_response boilerplate without duplicating it
5
+ * on disk.
6
+ *
7
+ * Usage:
8
+ * const prompt = await loadTemplate('backend.md');
9
+ * // → "# Shared Agent Protocol ... \n\n<!-- domain template --> ..."
10
+ *
11
+ * Contract (0669 Wave 2c, T-037/T-038):
12
+ * - If name === '_protocol.md': return the file verbatim (no double-prepend).
13
+ * - Otherwise: read _protocol.md + '\n\n' + <domain template> and return it.
14
+ */
15
+ export interface LoadTemplateOptions {
16
+ agentsDir?: string;
17
+ }
18
+ export declare function loadTemplate(name: string, options?: LoadTemplateOptions): Promise<string>;
19
+ //# sourceMappingURL=template-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-loader.d.ts","sourceRoot":"","sources":["../../../../src/core/team-lead/template-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAuBH,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,MAAM,CAAC,CAajB"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Loads team-lead agent prompt templates and auto-prepends the shared
3
+ * _protocol.md content so every domain template gets the common
4
+ * SendMessage/TaskUpdate/shutdown_response boilerplate without duplicating it
5
+ * on disk.
6
+ *
7
+ * Usage:
8
+ * const prompt = await loadTemplate('backend.md');
9
+ * // → "# Shared Agent Protocol ... \n\n<!-- domain template --> ..."
10
+ *
11
+ * Contract (0669 Wave 2c, T-037/T-038):
12
+ * - If name === '_protocol.md': return the file verbatim (no double-prepend).
13
+ * - Otherwise: read _protocol.md + '\n\n' + <domain template> and return it.
14
+ */
15
+ import { readFile } from 'fs/promises';
16
+ import { resolve, dirname } from 'path';
17
+ import { fileURLToPath } from 'url';
18
+ const __filename = fileURLToPath(import.meta.url);
19
+ const __dirname = dirname(__filename);
20
+ const AGENTS_DIR = resolve(__dirname, '..', '..', '..', 'plugins', 'specweave', 'skills', 'team-lead', 'agents');
21
+ const PROTOCOL_FILENAME = '_protocol.md';
22
+ export async function loadTemplate(name, options = {}) {
23
+ const dir = options.agentsDir ?? AGENTS_DIR;
24
+ const templatePath = resolve(dir, name);
25
+ const templateContent = await readFile(templatePath, 'utf-8');
26
+ if (name === PROTOCOL_FILENAME) {
27
+ return templateContent;
28
+ }
29
+ const protocolPath = resolve(dir, PROTOCOL_FILENAME);
30
+ const protocolContent = await readFile(protocolPath, 'utf-8');
31
+ return `${protocolContent}\n\n${templateContent}`;
32
+ }
33
+ //# sourceMappingURL=template-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-loader.js","sourceRoot":"","sources":["../../../../src/core/team-lead/template-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,MAAM,UAAU,GAAG,OAAO,CACxB,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,WAAW,EACX,QAAQ,EACR,WAAW,EACX,QAAQ,CACT,CAAC;AAEF,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAMzC,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAY,EACZ,UAA+B,EAAE;IAEjC,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,IAAI,UAAU,CAAC;IAC5C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxC,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAE9D,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;QAC/B,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IACrD,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAE9D,OAAO,GAAG,eAAe,OAAO,eAAe,EAAE,CAAC;AACpD,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Cache hit/miss telemetry for SpecWeave prompt caching (0669 Wave 5 / AC-US3-06).
3
+ *
4
+ * Tracks per-skill cache hit rates. Data lives in memory (process lifetime).
5
+ * Future: persist to .specweave/metrics/ or emit to analytics endpoint.
6
+ */
7
+ interface SkillCacheMetrics {
8
+ hits: number;
9
+ misses: number;
10
+ tokensFromCache: number;
11
+ }
12
+ /**
13
+ * Record a cache hit for a skill invocation.
14
+ * @param skillName The skill's fully-qualified name (e.g. "sw/grill")
15
+ * @param tokens Number of tokens read from cache on this hit
16
+ */
17
+ export declare function recordCacheHit(skillName: string, tokens?: number): void;
18
+ /**
19
+ * Record a cache miss for a skill invocation (cold start or invalidated cache).
20
+ */
21
+ export declare function recordCacheMiss(skillName: string): void;
22
+ /**
23
+ * Get the cache hit rate for a skill as a number between 0 and 1.
24
+ * Returns 0 if no data exists for the skill.
25
+ */
26
+ export declare function getCacheHitRate(skillName: string): number;
27
+ /**
28
+ * Get a snapshot of all metrics. Useful for `sw:analytics --cache-stats`.
29
+ */
30
+ export declare function getAllMetrics(): Record<string, SkillCacheMetrics & {
31
+ hitRate: number;
32
+ }>;
33
+ /**
34
+ * Reset metrics for a skill. Primarily for testing.
35
+ */
36
+ export declare function clearMetrics(skillName?: string): void;
37
+ export {};
38
+ //# sourceMappingURL=cache-metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-metrics.d.ts","sourceRoot":"","sources":["../../../../src/core/telemetry/cache-metrics.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;CACzB;AAWD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,IAAI,CAIlE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAGvD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAMvF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAMrD"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Cache hit/miss telemetry for SpecWeave prompt caching (0669 Wave 5 / AC-US3-06).
3
+ *
4
+ * Tracks per-skill cache hit rates. Data lives in memory (process lifetime).
5
+ * Future: persist to .specweave/metrics/ or emit to analytics endpoint.
6
+ */
7
+ const metricsStore = new Map();
8
+ function ensureEntry(skillName) {
9
+ if (!metricsStore.has(skillName)) {
10
+ metricsStore.set(skillName, { hits: 0, misses: 0, tokensFromCache: 0 });
11
+ }
12
+ return metricsStore.get(skillName);
13
+ }
14
+ /**
15
+ * Record a cache hit for a skill invocation.
16
+ * @param skillName The skill's fully-qualified name (e.g. "sw/grill")
17
+ * @param tokens Number of tokens read from cache on this hit
18
+ */
19
+ export function recordCacheHit(skillName, tokens = 0) {
20
+ const entry = ensureEntry(skillName);
21
+ entry.hits += 1;
22
+ entry.tokensFromCache += tokens;
23
+ }
24
+ /**
25
+ * Record a cache miss for a skill invocation (cold start or invalidated cache).
26
+ */
27
+ export function recordCacheMiss(skillName) {
28
+ const entry = ensureEntry(skillName);
29
+ entry.misses += 1;
30
+ }
31
+ /**
32
+ * Get the cache hit rate for a skill as a number between 0 and 1.
33
+ * Returns 0 if no data exists for the skill.
34
+ */
35
+ export function getCacheHitRate(skillName) {
36
+ const entry = metricsStore.get(skillName);
37
+ if (!entry)
38
+ return 0;
39
+ const total = entry.hits + entry.misses;
40
+ if (total === 0)
41
+ return 0;
42
+ return entry.hits / total;
43
+ }
44
+ /**
45
+ * Get a snapshot of all metrics. Useful for `sw:analytics --cache-stats`.
46
+ */
47
+ export function getAllMetrics() {
48
+ const result = {};
49
+ for (const [name, m] of metricsStore.entries()) {
50
+ result[name] = { ...m, hitRate: getCacheHitRate(name) };
51
+ }
52
+ return result;
53
+ }
54
+ /**
55
+ * Reset metrics for a skill. Primarily for testing.
56
+ */
57
+ export function clearMetrics(skillName) {
58
+ if (skillName) {
59
+ metricsStore.delete(skillName);
60
+ }
61
+ else {
62
+ metricsStore.clear();
63
+ }
64
+ }
65
+ //# sourceMappingURL=cache-metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-metrics.js","sourceRoot":"","sources":["../../../../src/core/telemetry/cache-metrics.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,YAAY,GAAG,IAAI,GAAG,EAA6B,CAAC;AAE1D,SAAS,WAAW,CAAC,SAAiB;IACpC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,YAAY,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,MAAM,GAAG,CAAC;IAC1D,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;IAChB,KAAK,CAAC,eAAe,IAAI,MAAM,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACrC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC;IACrB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;IACxC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,OAAO,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,MAAM,GAA4D,EAAE,CAAC;IAC3E,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,SAAkB;IAC7C,IAAI,SAAS,EAAE,CAAC;QACd,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,YAAY,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -0,0 +1,29 @@
1
+ export interface ValidationResult {
2
+ valid: boolean;
3
+ error?: string;
4
+ }
5
+ export interface ResourceValidator {
6
+ validate(url: string): ValidationResult;
7
+ ping(url: string): Promise<boolean>;
8
+ formatUrl(rawInput: string): string;
9
+ }
10
+ export declare abstract class BaseResourceValidator implements ResourceValidator {
11
+ protected abstract readonly urlPattern: RegExp;
12
+ protected abstract readonly baseUrl: string;
13
+ validate(url: string): ValidationResult;
14
+ ping(url: string): Promise<boolean>;
15
+ formatUrl(rawInput: string): string;
16
+ }
17
+ export declare class GitHubResourceValidator extends BaseResourceValidator {
18
+ protected readonly urlPattern: RegExp;
19
+ protected readonly baseUrl = "https://github.com";
20
+ }
21
+ export declare class JiraResourceValidator extends BaseResourceValidator {
22
+ protected readonly urlPattern: RegExp;
23
+ protected readonly baseUrl = "";
24
+ }
25
+ export declare class AzureDevOpsResourceValidator extends BaseResourceValidator {
26
+ protected readonly urlPattern: RegExp;
27
+ protected readonly baseUrl = "https://dev.azure.com";
28
+ }
29
+ //# sourceMappingURL=resource-base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-base.d.ts","sourceRoot":"","sources":["../../../../src/core/validators/resource-base.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACxC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;CACrC;AAED,8BAAsB,qBAAsB,YAAW,iBAAiB;IACtE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC/C,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAE5C,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB;IAcjC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYzC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;CAGpC;AAED,qBAAa,uBAAwB,SAAQ,qBAAqB;IAChE,SAAS,CAAC,QAAQ,CAAC,UAAU,SAA8C;IAC3E,SAAS,CAAC,QAAQ,CAAC,OAAO,wBAAwB;CACnD;AAED,qBAAa,qBAAsB,SAAQ,qBAAqB;IAC9D,SAAS,CAAC,QAAQ,CAAC,UAAU,SAA2C;IACxE,SAAS,CAAC,QAAQ,CAAC,OAAO,MAAM;CACjC;AAED,qBAAa,4BAA6B,SAAQ,qBAAqB;IACrE,SAAS,CAAC,QAAQ,CAAC,UAAU,SAAyC;IACtE,SAAS,CAAC,QAAQ,CAAC,OAAO,2BAA2B;CACtD"}
@@ -0,0 +1,52 @@
1
+ export class BaseResourceValidator {
2
+ validate(url) {
3
+ if (!url || typeof url !== 'string') {
4
+ return { valid: false, error: 'URL must be a non-empty string' };
5
+ }
6
+ const trimmed = url.trim();
7
+ if (!this.urlPattern.test(trimmed)) {
8
+ return {
9
+ valid: false,
10
+ error: `URL does not match expected pattern for ${this.constructor.name}`,
11
+ };
12
+ }
13
+ return { valid: true };
14
+ }
15
+ async ping(url) {
16
+ try {
17
+ const response = await fetch(url, {
18
+ method: 'HEAD',
19
+ signal: AbortSignal.timeout(5000),
20
+ });
21
+ return response.ok;
22
+ }
23
+ catch {
24
+ return false;
25
+ }
26
+ }
27
+ formatUrl(rawInput) {
28
+ return rawInput.trim().replace(/\/+$/, '');
29
+ }
30
+ }
31
+ export class GitHubResourceValidator extends BaseResourceValidator {
32
+ constructor() {
33
+ super(...arguments);
34
+ this.urlPattern = /^https:\/\/github\.com\/[\w.-]+\/[\w.-]+/;
35
+ this.baseUrl = 'https://github.com';
36
+ }
37
+ }
38
+ export class JiraResourceValidator extends BaseResourceValidator {
39
+ constructor() {
40
+ super(...arguments);
41
+ this.urlPattern = /^https?:\/\/[\w.-]+\.atlassian\.net\//;
42
+ this.baseUrl = '';
43
+ }
44
+ }
45
+ export class AzureDevOpsResourceValidator extends BaseResourceValidator {
46
+ constructor() {
47
+ super(...arguments);
48
+ this.urlPattern = /^https:\/\/dev\.azure\.com\/[\w.-]+/;
49
+ this.baseUrl = 'https://dev.azure.com';
50
+ }
51
+ }
52
+ //# sourceMappingURL=resource-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-base.js","sourceRoot":"","sources":["../../../../src/core/validators/resource-base.ts"],"names":[],"mappings":"AAWA,MAAM,OAAgB,qBAAqB;IAIzC,QAAQ,CAAC,GAAW;QAClB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YACpC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,gCAAgC,EAAE,CAAC;QACnE,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,2CAA2C,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;aAC1E,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAW;QACpB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;aAClC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,EAAE,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,SAAS,CAAC,QAAgB;QACxB,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,qBAAqB;IAAlE;;QACqB,eAAU,GAAG,0CAA0C,CAAC;QACxD,YAAO,GAAG,oBAAoB,CAAC;IACpD,CAAC;CAAA;AAED,MAAM,OAAO,qBAAsB,SAAQ,qBAAqB;IAAhE;;QACqB,eAAU,GAAG,uCAAuC,CAAC;QACrD,YAAO,GAAG,EAAE,CAAC;IAClC,CAAC;CAAA;AAED,MAAM,OAAO,4BAA6B,SAAQ,qBAAqB;IAAvE;;QACqB,eAAU,GAAG,qCAAqC,CAAC;QACnD,YAAO,GAAG,uBAAuB,CAAC;IACvD,CAAC;CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specweave",
3
- "version": "1.0.577",
3
+ "version": "1.0.578",
4
4
  "description": "100+ domain-expert AI skills — PM, Architect, Frontend, QA, Security and more. Skills learn your team's patterns permanently. Spec-first planning, autonomous execution, multi-agent teams, synced to GitHub/JIRA. Claude Code, Cursor, Copilot & more.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Tests for skill-lint.ts (0669 Wave 3 / AC-US10-03).
3
+ *
4
+ * The linter enforces:
5
+ * - SKILL.md declaring `allowed-tools` MUST also include a `## Tool-Use Rationale`
6
+ * section (or `tool-use-rationale:` frontmatter key).
7
+ * - Retired 4.7 phrases (ULTRATHINK, thinking.budget_tokens, etc.) are flagged.
8
+ */
9
+
10
+ import { describe, it, expect } from 'vitest';
11
+ import { lintSkillFile } from './skill-lint.js';
12
+
13
+ describe('skill-lint tool-use-rationale enforcement', () => {
14
+ it('returns a lint error when SKILL.md has allowed-tools but no tool-use-rationale', async () => {
15
+ const content = `---
16
+ name: sw/test
17
+ allowed-tools: Read, Grep
18
+ ---
19
+
20
+ # Test Skill
21
+
22
+ Body content without a rationale block.
23
+ `;
24
+ const result = await lintSkillFile('test/SKILL.md', content);
25
+ expect(result.errors.some((e) => /tool-use-rationale/i.test(e))).toBe(true);
26
+ });
27
+
28
+ it('returns no errors when both allowed-tools and tool-use-rationale are present', async () => {
29
+ const content = `---
30
+ name: sw/test
31
+ allowed-tools: Read, Grep
32
+ ---
33
+
34
+ # Test Skill
35
+
36
+ ## Tool-Use Rationale
37
+
38
+ - **Read**: Load spec.md context when AC IDs are referenced.
39
+ - **Grep**: Locate existing ACs to avoid duplication.
40
+ `;
41
+ const result = await lintSkillFile('test/SKILL.md', content);
42
+ expect(result.errors).toHaveLength(0);
43
+ });
44
+
45
+ it('accepts the frontmatter-style tool-use-rationale key', async () => {
46
+ const content = `---
47
+ name: sw/test
48
+ allowed-tools: Read, Grep
49
+ tool-use-rationale: |
50
+ Read loads context, Grep locates ACs.
51
+ ---
52
+
53
+ # Body
54
+ `;
55
+ const result = await lintSkillFile('test/SKILL.md', content);
56
+ expect(result.errors).toHaveLength(0);
57
+ });
58
+
59
+ it('flags retired phrases regardless of rationale presence', async () => {
60
+ const content = `---
61
+ name: sw/test
62
+ ---
63
+
64
+ ULTRATHINK BY DEFAULT — think carefully and step-by-step.
65
+ `;
66
+ const result = await lintSkillFile('test/SKILL.md', content);
67
+ expect(result.errors.some((e) => /ULTRATHINK/i.test(e))).toBe(true);
68
+ });
69
+
70
+ it('flags thinking.budget_tokens retired phrase', async () => {
71
+ const content = `---
72
+ name: sw/test
73
+ ---
74
+
75
+ Sets thinking.budget_tokens = 4096 during review.
76
+ `;
77
+ const result = await lintSkillFile('test/SKILL.md', content);
78
+ expect(result.errors.some((e) => /thinking\.budget_tokens/.test(e))).toBe(true);
79
+ });
80
+
81
+ it('returns no errors when a SKILL.md has no allowed-tools and no retired phrases', async () => {
82
+ const content = `---
83
+ name: sw/test
84
+ ---
85
+
86
+ # Plain skill without tool declarations.
87
+ `;
88
+ const result = await lintSkillFile('test/SKILL.md', content);
89
+ expect(result.errors).toHaveLength(0);
90
+ });
91
+ });
@@ -0,0 +1,51 @@
1
+ /**
2
+ * skill-lint: SKILL.md linter for Opus 4.7 framework alignment (0669 / AC-US10-03).
3
+ *
4
+ * Enforces:
5
+ * 1. SKILL.md files declaring `allowed-tools` must include a rationale block
6
+ * (`## Tool-Use Rationale` section or `tool-use-rationale:` frontmatter key).
7
+ * 2. Retired 4.x thinking/agent phrases are flagged — see opus-47-migration.md.
8
+ */
9
+
10
+ const RETIRED_PHRASES = [
11
+ 'extended thinking',
12
+ 'ULTRATHINK BY DEFAULT',
13
+ 'spawn agents anyway',
14
+ 'thinking.budget_tokens',
15
+ 'budget_tokens:',
16
+ ];
17
+
18
+ export interface LintResult {
19
+ file: string;
20
+ errors: string[];
21
+ warnings: string[];
22
+ }
23
+
24
+ export async function lintSkillFile(
25
+ filePath: string,
26
+ content: string,
27
+ ): Promise<LintResult> {
28
+ const errors: string[] = [];
29
+ const warnings: string[] = [];
30
+
31
+ for (const phrase of RETIRED_PHRASES) {
32
+ if (content.includes(phrase)) {
33
+ errors.push(
34
+ `Retired phrase "${phrase}" found — see .specweave/docs/internal/specs/opus-47-migration.md`,
35
+ );
36
+ }
37
+ }
38
+
39
+ const hasAllowedTools = /^allowed-tools\s*:/m.test(content);
40
+ const hasRationaleHeading = /^##\s*Tool-Use Rationale/m.test(content);
41
+ const hasRationaleFrontmatter = /^tool-use-rationale\s*:/m.test(content);
42
+ const hasRationale = hasRationaleHeading || hasRationaleFrontmatter;
43
+
44
+ if (hasAllowedTools && !hasRationale) {
45
+ errors.push(
46
+ `SKILL.md declares allowed-tools but has no ## Tool-Use Rationale section (or tool-use-rationale frontmatter key). See skill-authoring-guide.md "Documenting Tool Use".`,
47
+ );
48
+ }
49
+
50
+ return { file: filePath, errors, warnings };
51
+ }