@planu/cli 0.62.1 → 0.63.1

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 (158) hide show
  1. package/dist/config/ecosystem-sources.json +34 -0
  2. package/dist/config/license-plans.json +5 -2
  3. package/dist/config/skill-registries.json +26 -0
  4. package/dist/engine/dynamic-knowledge/context-resolver.d.ts +15 -0
  5. package/dist/engine/dynamic-knowledge/context-resolver.d.ts.map +1 -0
  6. package/dist/engine/dynamic-knowledge/context-resolver.js +80 -0
  7. package/dist/engine/dynamic-knowledge/context-resolver.js.map +1 -0
  8. package/dist/engine/dynamic-knowledge/index.d.ts +7 -0
  9. package/dist/engine/dynamic-knowledge/index.d.ts.map +1 -0
  10. package/dist/engine/dynamic-knowledge/index.js +7 -0
  11. package/dist/engine/dynamic-knowledge/index.js.map +1 -0
  12. package/dist/engine/dynamic-knowledge/knowledge-cache.d.ts +8 -0
  13. package/dist/engine/dynamic-knowledge/knowledge-cache.d.ts.map +1 -0
  14. package/dist/engine/dynamic-knowledge/knowledge-cache.js +90 -0
  15. package/dist/engine/dynamic-knowledge/knowledge-cache.js.map +1 -0
  16. package/dist/engine/dynamic-knowledge/knowledge-merger.d.ts +13 -0
  17. package/dist/engine/dynamic-knowledge/knowledge-merger.d.ts.map +1 -0
  18. package/dist/engine/dynamic-knowledge/knowledge-merger.js +135 -0
  19. package/dist/engine/dynamic-knowledge/knowledge-merger.js.map +1 -0
  20. package/dist/engine/dynamic-knowledge/query-knowledge.d.ts +17 -0
  21. package/dist/engine/dynamic-knowledge/query-knowledge.d.ts.map +1 -0
  22. package/dist/engine/dynamic-knowledge/query-knowledge.js +73 -0
  23. package/dist/engine/dynamic-knowledge/query-knowledge.js.map +1 -0
  24. package/dist/engine/dynamic-knowledge/stack-filter.d.ts +7 -0
  25. package/dist/engine/dynamic-knowledge/stack-filter.d.ts.map +1 -0
  26. package/dist/engine/dynamic-knowledge/stack-filter.js +45 -0
  27. package/dist/engine/dynamic-knowledge/stack-filter.js.map +1 -0
  28. package/dist/engine/dynamic-knowledge/web-researcher.d.ts +12 -0
  29. package/dist/engine/dynamic-knowledge/web-researcher.d.ts.map +1 -0
  30. package/dist/engine/dynamic-knowledge/web-researcher.js +189 -0
  31. package/dist/engine/dynamic-knowledge/web-researcher.js.map +1 -0
  32. package/dist/engine/ecosystem-absorber/capability-detector.d.ts +11 -0
  33. package/dist/engine/ecosystem-absorber/capability-detector.d.ts.map +1 -0
  34. package/dist/engine/ecosystem-absorber/capability-detector.js +65 -0
  35. package/dist/engine/ecosystem-absorber/capability-detector.js.map +1 -0
  36. package/dist/engine/ecosystem-absorber/ecosystem-watcher.d.ts +11 -0
  37. package/dist/engine/ecosystem-absorber/ecosystem-watcher.d.ts.map +1 -0
  38. package/dist/engine/ecosystem-absorber/ecosystem-watcher.js +57 -0
  39. package/dist/engine/ecosystem-absorber/ecosystem-watcher.js.map +1 -0
  40. package/dist/engine/ecosystem-absorber/index.d.ts +5 -0
  41. package/dist/engine/ecosystem-absorber/index.d.ts.map +1 -0
  42. package/dist/engine/ecosystem-absorber/index.js +6 -0
  43. package/dist/engine/ecosystem-absorber/index.js.map +1 -0
  44. package/dist/engine/ecosystem-absorber/knowledge-cache.d.ts +23 -0
  45. package/dist/engine/ecosystem-absorber/knowledge-cache.d.ts.map +1 -0
  46. package/dist/engine/ecosystem-absorber/knowledge-cache.js +83 -0
  47. package/dist/engine/ecosystem-absorber/knowledge-cache.js.map +1 -0
  48. package/dist/engine/ecosystem-absorber/platform-crawler.d.ts +12 -0
  49. package/dist/engine/ecosystem-absorber/platform-crawler.d.ts.map +1 -0
  50. package/dist/engine/ecosystem-absorber/platform-crawler.js +129 -0
  51. package/dist/engine/ecosystem-absorber/platform-crawler.js.map +1 -0
  52. package/dist/engine/resilience-fetcher/index.d.ts +2 -0
  53. package/dist/engine/resilience-fetcher/index.d.ts.map +1 -0
  54. package/dist/engine/resilience-fetcher/index.js +2 -0
  55. package/dist/engine/resilience-fetcher/index.js.map +1 -0
  56. package/dist/engine/resilience-fetcher/resilience-injector.d.ts +11 -0
  57. package/dist/engine/resilience-fetcher/resilience-injector.d.ts.map +1 -0
  58. package/dist/engine/resilience-fetcher/resilience-injector.js +72 -0
  59. package/dist/engine/resilience-fetcher/resilience-injector.js.map +1 -0
  60. package/dist/engine/skill-registry/agentskill-adapter.d.ts +9 -0
  61. package/dist/engine/skill-registry/agentskill-adapter.d.ts.map +1 -0
  62. package/dist/engine/skill-registry/agentskill-adapter.js +64 -0
  63. package/dist/engine/skill-registry/agentskill-adapter.js.map +1 -0
  64. package/dist/engine/skill-registry/anthropic-adapter.d.ts +11 -0
  65. package/dist/engine/skill-registry/anthropic-adapter.d.ts.map +1 -0
  66. package/dist/engine/skill-registry/anthropic-adapter.js +133 -0
  67. package/dist/engine/skill-registry/anthropic-adapter.js.map +1 -0
  68. package/dist/engine/skill-registry/discovery.d.ts +7 -0
  69. package/dist/engine/skill-registry/discovery.d.ts.map +1 -0
  70. package/dist/engine/skill-registry/discovery.js +15 -0
  71. package/dist/engine/skill-registry/discovery.js.map +1 -0
  72. package/dist/engine/skill-registry/index.d.ts +7 -0
  73. package/dist/engine/skill-registry/index.d.ts.map +1 -0
  74. package/dist/engine/skill-registry/index.js +8 -0
  75. package/dist/engine/skill-registry/index.js.map +1 -0
  76. package/dist/engine/skill-registry/installer.d.ts +22 -0
  77. package/dist/engine/skill-registry/installer.d.ts.map +1 -0
  78. package/dist/engine/skill-registry/installer.js +122 -0
  79. package/dist/engine/skill-registry/installer.js.map +1 -0
  80. package/dist/engine/skill-registry/skillssh-adapter.d.ts +7 -0
  81. package/dist/engine/skill-registry/skillssh-adapter.d.ts.map +1 -0
  82. package/dist/engine/skill-registry/skillssh-adapter.js +78 -0
  83. package/dist/engine/skill-registry/skillssh-adapter.js.map +1 -0
  84. package/dist/engine/skill-registry/unified-search.d.ts +12 -0
  85. package/dist/engine/skill-registry/unified-search.d.ts.map +1 -0
  86. package/dist/engine/skill-registry/unified-search.js +116 -0
  87. package/dist/engine/skill-registry/unified-search.js.map +1 -0
  88. package/dist/engine/token-optimizer/deduplicator.d.ts.map +1 -1
  89. package/dist/engine/token-optimizer/deduplicator.js +3 -1
  90. package/dist/engine/token-optimizer/deduplicator.js.map +1 -1
  91. package/dist/index.js +4 -0
  92. package/dist/index.js.map +1 -1
  93. package/dist/tools/create-spec/constitution-validator.d.ts.map +1 -1
  94. package/dist/tools/create-spec/constitution-validator.js +7 -13
  95. package/dist/tools/create-spec/constitution-validator.js.map +1 -1
  96. package/dist/tools/create-spec/resilience-adapter.d.ts +6 -0
  97. package/dist/tools/create-spec/resilience-adapter.d.ts.map +1 -0
  98. package/dist/tools/create-spec/resilience-adapter.js +21 -0
  99. package/dist/tools/create-spec/resilience-adapter.js.map +1 -0
  100. package/dist/tools/create-spec.d.ts.map +1 -1
  101. package/dist/tools/create-spec.js +46 -4
  102. package/dist/tools/create-spec.js.map +1 -1
  103. package/dist/tools/ecosystem-status.d.ts +7 -0
  104. package/dist/tools/ecosystem-status.d.ts.map +1 -0
  105. package/dist/tools/ecosystem-status.js +69 -0
  106. package/dist/tools/ecosystem-status.js.map +1 -0
  107. package/dist/tools/register-ecosystem-tools.d.ts +7 -0
  108. package/dist/tools/register-ecosystem-tools.d.ts.map +1 -0
  109. package/dist/tools/register-ecosystem-tools.js +20 -0
  110. package/dist/tools/register-ecosystem-tools.js.map +1 -0
  111. package/dist/tools/register-skill-registry-tools.d.ts +3 -0
  112. package/dist/tools/register-skill-registry-tools.d.ts.map +1 -0
  113. package/dist/tools/register-skill-registry-tools.js +40 -0
  114. package/dist/tools/register-skill-registry-tools.js.map +1 -0
  115. package/dist/tools/schemas/ecosystem-schemas.d.ts +6 -0
  116. package/dist/tools/schemas/ecosystem-schemas.d.ts.map +1 -0
  117. package/dist/tools/schemas/ecosystem-schemas.js +10 -0
  118. package/dist/tools/schemas/ecosystem-schemas.js.map +1 -0
  119. package/dist/tools/schemas/index.d.ts +2 -0
  120. package/dist/tools/schemas/index.d.ts.map +1 -1
  121. package/dist/tools/schemas/index.js +2 -0
  122. package/dist/tools/schemas/index.js.map +1 -1
  123. package/dist/tools/schemas/skill-registry-schemas.d.ts +15 -0
  124. package/dist/tools/schemas/skill-registry-schemas.d.ts.map +1 -0
  125. package/dist/tools/schemas/skill-registry-schemas.js +45 -0
  126. package/dist/tools/schemas/skill-registry-schemas.js.map +1 -0
  127. package/dist/tools/skill-registry/index.d.ts +3 -0
  128. package/dist/tools/skill-registry/index.d.ts.map +1 -0
  129. package/dist/tools/skill-registry/index.js +4 -0
  130. package/dist/tools/skill-registry/index.js.map +1 -0
  131. package/dist/tools/skill-registry/install.d.ts +7 -0
  132. package/dist/tools/skill-registry/install.d.ts.map +1 -0
  133. package/dist/tools/skill-registry/install.js +42 -0
  134. package/dist/tools/skill-registry/install.js.map +1 -0
  135. package/dist/tools/skill-registry/search.d.ts +8 -0
  136. package/dist/tools/skill-registry/search.d.ts.map +1 -0
  137. package/dist/tools/skill-registry/search.js +45 -0
  138. package/dist/tools/skill-registry/search.js.map +1 -0
  139. package/dist/types/dynamic-knowledge.d.ts +47 -0
  140. package/dist/types/dynamic-knowledge.d.ts.map +1 -0
  141. package/dist/types/dynamic-knowledge.js +11 -0
  142. package/dist/types/dynamic-knowledge.js.map +1 -0
  143. package/dist/types/ecosystem.d.ts +45 -0
  144. package/dist/types/ecosystem.d.ts.map +1 -0
  145. package/dist/types/ecosystem.js +3 -0
  146. package/dist/types/ecosystem.js.map +1 -0
  147. package/dist/types/index.d.ts +3 -0
  148. package/dist/types/index.d.ts.map +1 -1
  149. package/dist/types/index.js +3 -0
  150. package/dist/types/index.js.map +1 -1
  151. package/dist/types/skill-registry.d.ts +162 -0
  152. package/dist/types/skill-registry.d.ts.map +1 -0
  153. package/dist/types/skill-registry.js +3 -0
  154. package/dist/types/skill-registry.js.map +1 -0
  155. package/package.json +1 -1
  156. package/src/config/ecosystem-sources.json +34 -0
  157. package/src/config/license-plans.json +5 -2
  158. package/src/config/skill-registries.json +26 -0
@@ -1,6 +1,7 @@
1
1
  import { ti } from '../i18n/index.js';
2
2
  import { knowledgeStore, specStore } from '../storage/index.js';
3
3
  import { describeFilters, isExtendedChallenge } from '../engine/scope-filter.js';
4
+ import { formatSuccess, addNextSteps, toolResult } from './response-helpers.js';
4
5
  import { generateHUContent } from './create-spec-hu.js';
5
6
  import { buildAgentHuSection } from './create-spec/agent-spec-adapter.js';
6
7
  import { isMcpSpec, buildMcpHuSection } from './create-spec/mcp-spec-adapter.js';
@@ -15,6 +16,7 @@ import { generateProgressContent } from '../engine/progress-writer.js';
15
16
  import { generatePerSpecExecutiveReport, generatePerSpecTechnicalReport, } from '../engine/doc-generator/per-spec-report/index.js';
16
17
  import { buildSpecContext, buildSplitResult } from './create-spec/spec-builder.js';
17
18
  import { validateConstitution } from './create-spec/constitution-validator.js';
19
+ import { buildResilienceSection } from './create-spec/resilience-adapter.js';
18
20
  import { setupGitBranch, checkContradictions, fireSpecCreatedHook, generatePostCreationSuggestions, } from './create-spec/post-creation.js';
19
21
  import { regenerateSpecSummaryHtml } from '../engine/spec-summary-html.js';
20
22
  import { notifyStoreChange } from '../engine/doc-generator/portal/regen-hook.js';
@@ -51,9 +53,11 @@ export async function handleCreateSpec(params) {
51
53
  const depWarnings = knowledge?.projectPath && knowledge.projectPath.length > 0
52
54
  ? await runPreSpecDepCheck(knowledge.projectPath, knowledge)
53
55
  : undefined;
56
+ const resilienceSection = await buildResilienceSection(spec.target, spec.scope, knowledge?.stack ?? []);
54
57
  const huContent = generateHUContent(spec, description, knowledge, undefined, teamScale, depWarnings) +
55
58
  agentSection +
56
- mcpSection;
59
+ mcpSection +
60
+ resilienceSection;
57
61
  const fichaTecnicaContent = generateFichaTecnicaContent(spec, description, estimation, knowledge, diagrams, teamScale);
58
62
  await writeFile(specPath, huContent, 'utf-8');
59
63
  await writeFile(technicalPath, fichaTecnicaContent, 'utf-8');
@@ -175,9 +179,47 @@ export async function handleCreateSpec(params) {
175
179
  void regenerateSpecSummaryHtml(params.projectPath, allSpecs, [String(result.specId)]);
176
180
  notifyStoreChange(params.projectPath, 'specs');
177
181
  }
178
- return {
179
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
180
- };
182
+ // Build markdown response
183
+ const lines = [
184
+ `**SPEC-${spec.id}** — ${spec.title}`,
185
+ '',
186
+ `| Field | Value |`,
187
+ `|-------|-------|`,
188
+ `| Type | ${spec.type} |`,
189
+ `| Scope | ${spec.scope} |`,
190
+ `| Difficulty | ${String(spec.difficulty)}/5 |`,
191
+ `| Risk | ${spec.risk} |`,
192
+ `| Target | ${spec.target} |`,
193
+ `| Status | ${spec.status} |`,
194
+ `| Tags | ${spec.tags.join(', ')} |`,
195
+ `| Dev hours | ${String(estimation.devHours)}h |`,
196
+ `| Review hours | ${String(estimation.reviewHours)}h |`,
197
+ `| Cost | $${String(estimation.totalCostUsd)} |`,
198
+ ];
199
+ if (spec.gitBranch) {
200
+ lines.push(`| Branch | \`${spec.gitBranch}\` |`);
201
+ }
202
+ if (duplicate) {
203
+ lines.push('', `⚠️ ${ti('spec.duplicateTitle', { title: spec.title, slug: spec.slug })}`);
204
+ }
205
+ if (constitutionCheck.warnings.length > 0) {
206
+ lines.push('', '⚠️ **Constitution Warnings**');
207
+ constitutionCheck.warnings.forEach((w) => lines.push(`- ${w.description}`));
208
+ }
209
+ if (contradictionHint) {
210
+ lines.push('', `⚠️ ${contradictionHint}`);
211
+ }
212
+ if (result.riskWarning) {
213
+ lines.push('', `⚠️ ${result.riskWarning}`);
214
+ }
215
+ if (splitResult) {
216
+ lines.push('', `💡 ${splitResult.formatted ?? 'Consider splitting this spec.'}`);
217
+ }
218
+ const allNextSteps = result.nextSteps ?? [];
219
+ const markdownText = allNextSteps.length > 0
220
+ ? addNextSteps(formatSuccess(ti('tools.create_spec.success', { id: spec.id, title: spec.title }), lines.join('\n')), allNextSteps)
221
+ : formatSuccess(ti('tools.create_spec.success', { id: spec.id, title: spec.title }), lines.join('\n'));
222
+ return toolResult(markdownText, result);
181
223
  }
182
224
  catch (error) {
183
225
  const message = error instanceof Error ? error.message : String(error);
@@ -1 +1 @@
1
- {"version":3,"file":"create-spec.js","sourceRoot":"","sources":["../../src/tools/create-spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-spec.js","sourceRoot":"","sources":["../../src/tools/create-spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ToolResult, EcosystemStatusInput } from '../types/index.js';
2
+ /**
3
+ * Handle the ecosystem_status tool invocation.
4
+ * Returns markdown summary of ecosystem sources, discoveries, and suggestions.
5
+ */
6
+ export declare function handleEcosystemStatus(input: EcosystemStatusInput): Promise<ToolResult>;
7
+ //# sourceMappingURL=ecosystem-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecosystem-status.d.ts","sourceRoot":"","sources":["../../src/tools/ecosystem-status.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAmB,MAAM,mBAAmB,CAAC;AAkC3F;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,CAgD5F"}
@@ -0,0 +1,69 @@
1
+ // tools/ecosystem-status.ts — Handler for ecosystem_status MCP tool (SPEC-151)
2
+ import { readFileSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { runEcosystemWatcher, rankCapabilities, extractSuggestions, } from '../engine/ecosystem-absorber/index.js';
5
+ import { formatSuccess, toolResult } from './response-helpers.js';
6
+ function loadSources() {
7
+ try {
8
+ const configPath = join(process.cwd(), 'src', 'config', 'ecosystem-sources.json');
9
+ const raw = readFileSync(configPath, 'utf-8');
10
+ return JSON.parse(raw);
11
+ }
12
+ catch {
13
+ return [];
14
+ }
15
+ }
16
+ function buildSourcesTable(sources, lastCrawled) {
17
+ const rows = sources.map((s) => {
18
+ const last = lastCrawled[s.id] ?? 'Never';
19
+ const status = s.enabled ? 'enabled' : 'disabled';
20
+ return `| ${s.name} | ${s.type} | ${String(s.crawlIntervalHours)}h | ${status} | ${last} |`;
21
+ });
22
+ return [
23
+ '| Source | Type | Interval | Status | Last Crawled |',
24
+ '|--------|------|----------|--------|--------------|',
25
+ ...rows,
26
+ ].join('\n');
27
+ }
28
+ /**
29
+ * Handle the ecosystem_status tool invocation.
30
+ * Returns markdown summary of ecosystem sources, discoveries, and suggestions.
31
+ */
32
+ export async function handleEcosystemStatus(input) {
33
+ const sources = loadSources();
34
+ if (sources.length === 0) {
35
+ return toolResult('No ecosystem sources configured. Check src/config/ecosystem-sources.json.', undefined, true);
36
+ }
37
+ const forceRefresh = input.refresh === true;
38
+ const summary = await runEcosystemWatcher(sources, forceRefresh);
39
+ const stackHints = [];
40
+ const topCapabilities = rankCapabilities(summary.capabilities, stackHints, 5);
41
+ const suggestions = extractSuggestions(topCapabilities);
42
+ const body = [
43
+ '## Sources',
44
+ '',
45
+ buildSourcesTable(sources, summary.lastCrawled),
46
+ '',
47
+ `## Discovery Summary`,
48
+ '',
49
+ `- **Total capabilities tracked**: ${String(summary.totalCapabilities)}`,
50
+ `- **New this crawl**: ${String(summary.newCapabilities)}`,
51
+ `- **Sources crawled**: ${summary.crawledSources.join(', ') || 'None (cache fresh)'}`,
52
+ `- **Sources skipped (cache fresh)**: ${summary.skippedSources.join(', ') || 'None'}`,
53
+ ];
54
+ if (topCapabilities.length > 0) {
55
+ body.push('', '## Recent Discoveries', '');
56
+ for (const cap of topCapabilities) {
57
+ body.push(`- **[${cap.category}]** ${cap.name} (relevance: ${String(cap.relevance)}) — ${cap.source}`);
58
+ }
59
+ }
60
+ if (suggestions.length > 0) {
61
+ body.push('', '## Suggestions', '');
62
+ for (const s of suggestions) {
63
+ body.push(`- ${s}`);
64
+ }
65
+ }
66
+ const text = formatSuccess('Ecosystem Status', body.join('\n'));
67
+ return toolResult(text);
68
+ }
69
+ //# sourceMappingURL=ecosystem-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecosystem-status.js","sourceRoot":"","sources":["../../src/tools/ecosystem-status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ /**
3
+ * Registers the ecosystem_status tool on the MCP server.
4
+ * Free tier, read-only — no writes to user files.
5
+ */
6
+ export declare function registerEcosystemTools(server: McpServer): void;
7
+ //# sourceMappingURL=register-ecosystem-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-ecosystem-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-ecosystem-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgB9D"}
@@ -0,0 +1,20 @@
1
+ // tools/register-ecosystem-tools.ts — Register ecosystem_status tool (SPEC-151)
2
+ import { EcosystemStatusInputSchema } from './schemas/ecosystem-schemas.js';
3
+ import { handleEcosystemStatus } from './ecosystem-status.js';
4
+ /**
5
+ * Registers the ecosystem_status tool on the MCP server.
6
+ * Free tier, read-only — no writes to user files.
7
+ */
8
+ export function registerEcosystemTools(server) {
9
+ server.registerTool('ecosystem_status', {
10
+ description: 'Scan external ecosystem sources (Claude platform, GitHub, skill registries) for new capabilities, patterns, and integration opportunities. Returns a markdown report with discoveries and actionable suggestions for your project.',
11
+ inputSchema: {
12
+ projectPath: EcosystemStatusInputSchema.shape.projectPath,
13
+ refresh: EcosystemStatusInputSchema.shape.refresh,
14
+ },
15
+ annotations: {
16
+ readOnlyHint: true,
17
+ },
18
+ }, async (args) => handleEcosystemStatus(args));
19
+ }
20
+ //# sourceMappingURL=register-ecosystem-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-ecosystem-tools.js","sourceRoot":"","sources":["../../src/tools/register-ecosystem-tools.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAGhF,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAG9D;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EACT,oOAAoO;QACtO,WAAW,EAAE;YACX,WAAW,EAAE,0BAA0B,CAAC,KAAK,CAAC,WAAW;YACzD,OAAO,EAAE,0BAA0B,CAAC,KAAK,CAAC,OAAO;SAClD;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;SACnB;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAA4B,CAAC,CACpE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerSkillRegistryTools(server: McpServer): void;
3
+ //# sourceMappingURL=register-skill-registry-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-skill-registry-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-skill-registry-tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2ClE"}
@@ -0,0 +1,40 @@
1
+ // tools/register-skill-registry-tools.ts — Registers SPEC-150 skill registry tools
2
+ // skill_search: free tier (safeTracked), readOnlyHint: true
3
+ // skill_install: free tier (safeTracked), writes new files without overwriting
4
+ import { safeTracked } from './safe-handler.js';
5
+ import { SkillSearchInputSchema, SkillInstallInputSchema, } from './schemas/skill-registry-schemas.js';
6
+ import { handleSkillSearch, handleSkillInstall } from './skill-registry/index.js';
7
+ export function registerSkillRegistryTools(server) {
8
+ // skill_search (free)
9
+ server.registerTool('skill_search', {
10
+ description: 'Search for installable Claude skills across multiple registries (Anthropic, AgentSkill.sh, Skills.sh). ' +
11
+ 'Filter by technology stack, restrict to a specific registry, or search all at once. ' +
12
+ 'Returns ranked results with install commands ready to use.',
13
+ inputSchema: {
14
+ query: SkillSearchInputSchema.shape.query,
15
+ registry: SkillSearchInputSchema.shape.registry,
16
+ stack: SkillSearchInputSchema.shape.stack,
17
+ limit: SkillSearchInputSchema.shape.limit,
18
+ },
19
+ annotations: {
20
+ title: 'Skill Search',
21
+ readOnlyHint: true,
22
+ },
23
+ }, safeTracked('skill_search', async (args) => handleSkillSearch(args)));
24
+ // skill_install (free)
25
+ server.registerTool('skill_install', {
26
+ description: "Install a skill from a registry into a project's .claude/skills/ directory. " +
27
+ 'Detects the source registry from the skill name prefix if not specified. ' +
28
+ 'Skips installation if the skill is already present and warns about executable scripts.',
29
+ inputSchema: {
30
+ name: SkillInstallInputSchema.shape.name,
31
+ registry: SkillInstallInputSchema.shape.registry,
32
+ projectPath: SkillInstallInputSchema.shape.projectPath,
33
+ },
34
+ annotations: {
35
+ title: 'Skill Install',
36
+ destructiveHint: false,
37
+ },
38
+ }, safeTracked('skill_install', async (args) => handleSkillInstall(args)));
39
+ }
40
+ //# sourceMappingURL=register-skill-registry-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-skill-registry-tools.js","sourceRoot":"","sources":["../../src/tools/register-skill-registry-tools.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,4DAA4D;AAC5D,+EAA+E;AAG/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAElF,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,sBAAsB;IACtB,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EACT,yGAAyG;YACzG,sFAAsF;YACtF,4DAA4D;QAC9D,WAAW,EAAE;YACX,KAAK,EAAE,sBAAsB,CAAC,KAAK,CAAC,KAAK;YACzC,QAAQ,EAAE,sBAAsB,CAAC,KAAK,CAAC,QAAQ;YAC/C,KAAK,EAAE,sBAAsB,CAAC,KAAK,CAAC,KAAK;YACzC,KAAK,EAAE,sBAAsB,CAAC,KAAK,CAAC,KAAK;SAC1C;QACD,WAAW,EAAE;YACX,KAAK,EAAE,cAAc;YACrB,YAAY,EAAE,IAAI;SACnB;KACF,EACD,WAAW,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CACrE,CAAC;IAEF,uBAAuB;IACvB,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EACT,8EAA8E;YAC9E,2EAA2E;YAC3E,wFAAwF;QAC1F,WAAW,EAAE;YACX,IAAI,EAAE,uBAAuB,CAAC,KAAK,CAAC,IAAI;YACxC,QAAQ,EAAE,uBAAuB,CAAC,KAAK,CAAC,QAAQ;YAChD,WAAW,EAAE,uBAAuB,CAAC,KAAK,CAAC,WAAW;SACvD;QACD,WAAW,EAAE;YACX,KAAK,EAAE,eAAe;YACtB,eAAe,EAAE,KAAK;SACvB;KACF,EACD,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CACvE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { z } from 'zod';
2
+ export declare const EcosystemStatusInputSchema: z.ZodObject<{
3
+ projectPath: z.ZodString;
4
+ refresh: z.ZodOptional<z.ZodBoolean>;
5
+ }, z.core.$strip>;
6
+ //# sourceMappingURL=ecosystem-schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecosystem-schemas.d.ts","sourceRoot":"","sources":["../../../src/tools/schemas/ecosystem-schemas.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,0BAA0B;;;iBAQrC,CAAC"}
@@ -0,0 +1,10 @@
1
+ // tools/schemas/ecosystem-schemas.ts — Zod schemas for ecosystem_status tool (SPEC-151)
2
+ import { z } from 'zod';
3
+ export const EcosystemStatusInputSchema = z.object({
4
+ projectPath: z.string().min(1).max(4096).describe('Absolute path to the project root directory'),
5
+ refresh: z
6
+ .boolean()
7
+ .optional()
8
+ .describe('Force re-crawl all sources even if cache is still fresh. Default: false (uses cached data when TTL not expired)'),
9
+ });
10
+ //# sourceMappingURL=ecosystem-schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecosystem-schemas.js","sourceRoot":"","sources":["../../../src/tools/schemas/ecosystem-schemas.ts"],"names":[],"mappings":"AAAA,wFAAwF;AAExF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IAChG,OAAO,EAAE,CAAC;SACP,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,iHAAiH,CAClH;CACJ,CAAC,CAAC"}
@@ -15,4 +15,6 @@ export { ConfigureLLMProvidersActionEnum, LoadBalancingStrategyEnum, } from './l
15
15
  export { PluginActionEnum } from './plugins-schemas.js';
16
16
  export { ListSpecsOutputSchema, EstimateOutputSchema, ValidateOutputSchema, CheckReadinessOutputSchema, LicenseStatusOutputSchema, } from './output-schemas.js';
17
17
  export { CreatePRFromSpecSchema, PRStatusSchema, ReviewPRSchema, CreateReleaseSchema, GenerateChangelogSchema, } from './github.js';
18
+ export { SkillSearchInputSchema, SkillInstallInputSchema } from './skill-registry-schemas.js';
19
+ export { EcosystemStatusInputSchema } from './ecosystem-schemas.js';
18
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/schemas/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,EACd,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAE9F,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE9E,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE7F,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEpF,OAAO,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAE9F,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAE3F,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEtF,OAAO,EACL,+BAA+B,EAC/B,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/schemas/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,EACd,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAE9F,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE9E,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE7F,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEpF,OAAO,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAE9F,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAE3F,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEtF,OAAO,EACL,+BAA+B,EAC/B,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAE9F,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC"}
@@ -16,4 +16,6 @@ export { ConfigureLLMProvidersActionEnum, LoadBalancingStrategyEnum, } from './l
16
16
  export { PluginActionEnum } from './plugins-schemas.js';
17
17
  export { ListSpecsOutputSchema, EstimateOutputSchema, ValidateOutputSchema, CheckReadinessOutputSchema, LicenseStatusOutputSchema, } from './output-schemas.js';
18
18
  export { CreatePRFromSpecSchema, PRStatusSchema, ReviewPRSchema, CreateReleaseSchema, GenerateChangelogSchema, } from './github.js';
19
+ export { SkillSearchInputSchema, SkillInstallInputSchema } from './skill-registry-schemas.js';
20
+ export { EcosystemStatusInputSchema } from './ecosystem-schemas.js';
19
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/schemas/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAEhE,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,EACd,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAE9F,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE9E,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE7F,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEpF,OAAO,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAE9F,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAE3F,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEtF,OAAO,EACL,+BAA+B,EAC/B,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/schemas/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAEhE,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,EACd,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAE9F,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEvE,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE9E,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE7F,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEpF,OAAO,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAE9F,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAE3F,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEtF,OAAO,EACL,+BAA+B,EAC/B,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAE9F,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { z } from 'zod';
2
+ /** Input schema for registry_search_skills tool. */
3
+ export declare const SkillSearchInputSchema: z.ZodObject<{
4
+ query: z.ZodString;
5
+ registry: z.ZodOptional<z.ZodString>;
6
+ stack: z.ZodOptional<z.ZodString>;
7
+ limit: z.ZodDefault<z.ZodNumber>;
8
+ }, z.core.$strip>;
9
+ /** Input schema for registry_install_skill tool. */
10
+ export declare const SkillInstallInputSchema: z.ZodObject<{
11
+ name: z.ZodString;
12
+ registry: z.ZodOptional<z.ZodString>;
13
+ projectPath: z.ZodString;
14
+ }, z.core.$strip>;
15
+ //# sourceMappingURL=skill-registry-schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-registry-schemas.d.ts","sourceRoot":"","sources":["../../../src/tools/schemas/skill-registry-schemas.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,oDAAoD;AACpD,eAAO,MAAM,sBAAsB;;;;;iBA4BjC,CAAC;AAEH,oDAAoD;AACpD,eAAO,MAAM,uBAAuB;;;;iBAsBlC,CAAC"}
@@ -0,0 +1,45 @@
1
+ // schemas/skill-registry-schemas.ts — Zod schemas for SPEC-150 skill registry tools
2
+ import { z } from 'zod';
3
+ /** Input schema for registry_search_skills tool. */
4
+ export const SkillSearchInputSchema = z.object({
5
+ query: z
6
+ .string()
7
+ .min(1)
8
+ .max(500)
9
+ .describe('Free-text search query to find skills across registries (e.g. "frontend design", "auth oauth", "stripe payments")'),
10
+ registry: z
11
+ .string()
12
+ .max(100)
13
+ .optional()
14
+ .describe('Registry ID to restrict search to, or omit to search all enabled registries. Valid values: anthropic | agentskill | skillssh | all'),
15
+ stack: z
16
+ .string()
17
+ .max(200)
18
+ .optional()
19
+ .describe('Filter results by technology stack (e.g. "next.js", "react", "node", "python", "go")'),
20
+ limit: z
21
+ .number()
22
+ .min(1)
23
+ .max(50)
24
+ .default(10)
25
+ .describe('Maximum number of results to return, between 1 and 50 (default: 10)'),
26
+ });
27
+ /** Input schema for registry_install_skill tool. */
28
+ export const SkillInstallInputSchema = z.object({
29
+ name: z
30
+ .string()
31
+ .min(1)
32
+ .max(500)
33
+ .describe('Skill identifier in source/skill-name format (e.g. "anthropic/frontend-design", "agentskill/stripe-payments")'),
34
+ registry: z
35
+ .string()
36
+ .max(100)
37
+ .optional()
38
+ .describe('Registry ID to install from. If omitted, the registry is inferred from the skill name prefix. Valid values: anthropic | agentskill | skillssh'),
39
+ projectPath: z
40
+ .string()
41
+ .min(1)
42
+ .max(2000)
43
+ .describe('Absolute path to the project root where the skill will be installed (e.g. "/home/user/my-project")'),
44
+ });
45
+ //# sourceMappingURL=skill-registry-schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-registry-schemas.js","sourceRoot":"","sources":["../../../src/tools/schemas/skill-registry-schemas.ts"],"names":[],"mappings":"AAAA,oFAAoF;AAEpF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,oDAAoD;AACpD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CACP,mHAAmH,CACpH;IACH,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,oIAAoI,CACrI;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,sFAAsF,CACvF;IACH,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CAAC,qEAAqE,CAAC;CACnF,CAAC,CAAC;AAEH,oDAAoD;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CACP,+GAA+G,CAChH;IACH,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,+IAA+I,CAChJ;IACH,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,CACP,oGAAoG,CACrG;CACJ,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { handleSkillSearch } from './search.js';
2
+ export { handleSkillInstall } from './install.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/skill-registry/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,4 @@
1
+ // tools/skill-registry/index.ts — Barrel for skill registry tool handlers (SPEC-150)
2
+ export { handleSkillSearch } from './search.js';
3
+ export { handleSkillInstall } from './install.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/skill-registry/index.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAErF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { ToolResult } from '../../types/index.js';
2
+ export declare function handleSkillInstall(params: {
3
+ name: string;
4
+ registry?: string;
5
+ projectPath: string;
6
+ }): Promise<ToolResult>;
7
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/tools/skill-registry/install.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAsB,MAAM,sBAAsB,CAAC;AAK3E,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,UAAU,CAAC,CAyCtB"}
@@ -0,0 +1,42 @@
1
+ // tools/skill-registry/install.ts — Handler for skill_install tool (SPEC-150)
2
+ import { installSkill, isSkillInstalled } from '../../engine/skill-registry/index.js';
3
+ import { formatSuccess, formatWarning, toolResult } from '../response-helpers.js';
4
+ import { ti } from '../../i18n/index.js';
5
+ export async function handleSkillInstall(params) {
6
+ try {
7
+ const alreadyInstalled = await isSkillInstalled(params.projectPath, params.name);
8
+ if (alreadyInstalled) {
9
+ return toolResult(formatWarning('Skill already installed', `**${params.name}** is already in .claude/skills/. Use force to reinstall.`));
10
+ }
11
+ const source = params.registry ?? detectSource(params.name);
12
+ const result = await installSkill(params.name, source, params.projectPath);
13
+ const lines = [
14
+ `**${result.name}** installed from ${result.source}`,
15
+ '',
16
+ `Path: \`${result.installedPath}\``,
17
+ `Files: ${result.filesWritten.join(', ')}`,
18
+ ];
19
+ if (result.version) {
20
+ lines.push(`Version: ${result.version}`);
21
+ }
22
+ if (result.hasScripts) {
23
+ lines.push('');
24
+ lines.push('Warning: This skill includes executable scripts in `scripts/`. Review them before running.');
25
+ }
26
+ return toolResult(formatSuccess('Skill installed', lines.join('\n')), result);
27
+ }
28
+ catch (error) {
29
+ const msg = error instanceof Error ? error.message : String(error);
30
+ return toolResult(ti('errors.internalError', { message: msg }), undefined, true);
31
+ }
32
+ }
33
+ function detectSource(name) {
34
+ if (name.startsWith('anthropics/') || name.startsWith('anthropic/')) {
35
+ return 'anthropic';
36
+ }
37
+ if (name.includes('/')) {
38
+ return 'skillssh';
39
+ }
40
+ return 'anthropic';
41
+ }
42
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/tools/skill-registry/install.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAG9E,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAIxC;IACC,IAAI,CAAC;QACH,MAAM,gBAAgB,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACjF,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,UAAU,CACf,aAAa,CACX,yBAAyB,EACzB,KAAK,MAAM,CAAC,IAAI,2DAA2D,CAC5E,CACF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAuB,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAE/F,MAAM,KAAK,GAAa;YACtB,KAAK,MAAM,CAAC,IAAI,qBAAqB,MAAM,CAAC,MAAM,EAAE;YACpD,EAAE;YACF,WAAW,MAAM,CAAC,aAAa,IAAI;YACnC,UAAU,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAC3C,CAAC;QAEF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CACR,4FAA4F,CAC7F,CAAC;QACJ,CAAC;QAED,OAAO,UAAU,CACf,aAAa,CAAC,iBAAiB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAClD,MAA4C,CAC7C,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,OAAO,UAAU,CAAC,EAAE,CAAC,sBAAsB,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACpE,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ToolResult } from '../../types/index.js';
2
+ export declare function handleSkillSearch(params: {
3
+ query: string;
4
+ registry?: string;
5
+ stack?: string;
6
+ limit?: number;
7
+ }): Promise<ToolResult>;
8
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/tools/skill-registry/search.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAA0C,MAAM,sBAAsB,CAAC;AAe/F,wBAAsB,iBAAiB,CAAC,MAAM,EAAE;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,UAAU,CAAC,CAwCtB"}
@@ -0,0 +1,45 @@
1
+ // tools/skill-registry/search.ts — Handler for skill_search tool (SPEC-150)
2
+ import { searchAllRegistries } from '../../engine/skill-registry/index.js';
3
+ import { formatSuccess, toolResult } from '../response-helpers.js';
4
+ import { ti } from '../../i18n/index.js';
5
+ import { readFileSync } from 'node:fs';
6
+ import { join, dirname } from 'node:path';
7
+ import { fileURLToPath } from 'node:url';
8
+ const __dirname = dirname(fileURLToPath(import.meta.url));
9
+ function loadRegistries() {
10
+ const raw = readFileSync(join(__dirname, '../../../config/skill-registries.json'), 'utf-8');
11
+ return JSON.parse(raw);
12
+ }
13
+ export async function handleSkillSearch(params) {
14
+ try {
15
+ const registries = loadRegistries();
16
+ const searchParams = {
17
+ query: params.query,
18
+ registry: params.registry,
19
+ stack: params.stack,
20
+ limit: params.limit ?? 10,
21
+ };
22
+ const results = await searchAllRegistries(searchParams, registries);
23
+ const lines = [];
24
+ if (results.length === 0) {
25
+ lines.push('No skills found matching your query.');
26
+ }
27
+ else {
28
+ lines.push('| # | Skill | Source | Description |');
29
+ lines.push('|---|-------|--------|-------------|');
30
+ results.forEach((r, i) => {
31
+ const desc = r.description.length > 80 ? r.description.slice(0, 77) + '...' : r.description;
32
+ lines.push(`| ${String(i + 1)} | **${r.name}** | ${r.source} | ${desc} |`);
33
+ });
34
+ lines.push('');
35
+ lines.push('Install with: `skill_install({ name: "skill-name", projectPath: "..." })`');
36
+ }
37
+ const markdown = formatSuccess(`Found ${String(results.length)} skill${results.length !== 1 ? 's' : ''}`, lines.join('\n'));
38
+ return toolResult(markdown, { results, count: results.length });
39
+ }
40
+ catch (error) {
41
+ const msg = error instanceof Error ? error.message : String(error);
42
+ return toolResult(ti('errors.internalError', { message: msg }) + (msg ? ` ${msg}` : ''), undefined, true);
43
+ }
44
+ }
45
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/tools/skill-registry/search.ts"],"names":[],"mappings":"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"}