forgecraft-mcp 0.2.1 → 0.4.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 (105) hide show
  1. package/dist/analyzers/language-detector.d.ts +17 -0
  2. package/dist/analyzers/language-detector.d.ts.map +1 -0
  3. package/dist/analyzers/language-detector.js +89 -0
  4. package/dist/analyzers/language-detector.js.map +1 -0
  5. package/dist/analyzers/package-json.d.ts.map +1 -1
  6. package/dist/analyzers/package-json.js +5 -5
  7. package/dist/analyzers/package-json.js.map +1 -1
  8. package/dist/analyzers/project-context.d.ts +23 -0
  9. package/dist/analyzers/project-context.d.ts.map +1 -0
  10. package/dist/analyzers/project-context.js +181 -0
  11. package/dist/analyzers/project-context.js.map +1 -0
  12. package/dist/index.js +4 -27
  13. package/dist/index.js.map +1 -1
  14. package/dist/registry/composer.d.ts +3 -1
  15. package/dist/registry/composer.d.ts.map +1 -1
  16. package/dist/registry/composer.js +28 -0
  17. package/dist/registry/composer.js.map +1 -1
  18. package/dist/registry/loader.d.ts.map +1 -1
  19. package/dist/registry/loader.js +40 -1
  20. package/dist/registry/loader.js.map +1 -1
  21. package/dist/registry/mcp-discovery.js +1 -0
  22. package/dist/registry/mcp-discovery.js.map +1 -1
  23. package/dist/registry/renderer.d.ts +19 -2
  24. package/dist/registry/renderer.d.ts.map +1 -1
  25. package/dist/registry/renderer.js +64 -2
  26. package/dist/registry/renderer.js.map +1 -1
  27. package/dist/shared/filesystem.d.ts +45 -0
  28. package/dist/shared/filesystem.d.ts.map +1 -0
  29. package/dist/shared/filesystem.js +122 -0
  30. package/dist/shared/filesystem.js.map +1 -0
  31. package/dist/shared/types.d.ts +48 -0
  32. package/dist/shared/types.d.ts.map +1 -1
  33. package/dist/tools/add-module.d.ts +1 -1
  34. package/dist/tools/audit.js +2 -2
  35. package/dist/tools/audit.js.map +1 -1
  36. package/dist/tools/configure-mcp.d.ts +3 -0
  37. package/dist/tools/configure-mcp.d.ts.map +1 -1
  38. package/dist/tools/configure-mcp.js +38 -1
  39. package/dist/tools/configure-mcp.js.map +1 -1
  40. package/dist/tools/convert.js +4 -4
  41. package/dist/tools/convert.js.map +1 -1
  42. package/dist/tools/forgecraft-router.d.ts +127 -0
  43. package/dist/tools/forgecraft-router.d.ts.map +1 -0
  44. package/dist/tools/forgecraft-router.js +305 -0
  45. package/dist/tools/forgecraft-router.js.map +1 -0
  46. package/dist/tools/generate-claude-md.d.ts +1 -0
  47. package/dist/tools/generate-claude-md.d.ts.map +1 -1
  48. package/dist/tools/generate-claude-md.js +23 -57
  49. package/dist/tools/generate-claude-md.js.map +1 -1
  50. package/dist/tools/get-reference.d.ts +28 -0
  51. package/dist/tools/get-reference.d.ts.map +1 -0
  52. package/dist/tools/get-reference.js +63 -0
  53. package/dist/tools/get-reference.js.map +1 -0
  54. package/dist/tools/list.d.ts +18 -2
  55. package/dist/tools/list.d.ts.map +1 -1
  56. package/dist/tools/list.js +50 -2
  57. package/dist/tools/list.js.map +1 -1
  58. package/dist/tools/refresh-project.d.ts.map +1 -1
  59. package/dist/tools/refresh-project.js +8 -10
  60. package/dist/tools/refresh-project.js.map +1 -1
  61. package/dist/tools/scaffold.d.ts +5 -1
  62. package/dist/tools/scaffold.d.ts.map +1 -1
  63. package/dist/tools/scaffold.js +58 -31
  64. package/dist/tools/scaffold.js.map +1 -1
  65. package/dist/tools/setup-project.d.ts +3 -3
  66. package/dist/tools/setup-project.d.ts.map +1 -1
  67. package/dist/tools/setup-project.js +8 -4
  68. package/dist/tools/setup-project.js.map +1 -1
  69. package/package.json +1 -1
  70. package/templates/analytics/mcp-servers.yaml +1 -0
  71. package/templates/api/mcp-servers.yaml +1 -0
  72. package/templates/api/skills.yaml +54 -0
  73. package/templates/cli/mcp-servers.yaml +1 -0
  74. package/templates/data-lineage/mcp-servers.yaml +2 -0
  75. package/templates/data-pipeline/mcp-servers.yaml +1 -0
  76. package/templates/data-pipeline/skills.yaml +56 -0
  77. package/templates/fintech/mcp-servers.yaml +1 -0
  78. package/templates/fintech/skills.yaml +35 -0
  79. package/templates/game/mcp-servers.yaml +1 -0
  80. package/templates/healthcare/mcp-servers.yaml +1 -0
  81. package/templates/healthcare/skills.yaml +35 -0
  82. package/templates/hipaa/mcp-servers.yaml +1 -0
  83. package/templates/hipaa/skills.yaml +39 -0
  84. package/templates/infra/mcp-servers.yaml +2 -0
  85. package/templates/library/mcp-servers.yaml +2 -0
  86. package/templates/medallion-architecture/mcp-servers.yaml +2 -0
  87. package/templates/ml/mcp-servers.yaml +1 -0
  88. package/templates/mobile/mcp-servers.yaml +1 -0
  89. package/templates/observability-xray/mcp-servers.yaml +1 -0
  90. package/templates/realtime/mcp-servers.yaml +1 -0
  91. package/templates/soc2/mcp-servers.yaml +2 -0
  92. package/templates/social/mcp-servers.yaml +2 -0
  93. package/templates/state-machine/mcp-servers.yaml +1 -0
  94. package/templates/universal/hooks.yaml +63 -0
  95. package/templates/universal/instructions.yaml +41 -118
  96. package/templates/universal/mcp-servers.yaml +12 -0
  97. package/templates/universal/nfr.yaml +1 -1
  98. package/templates/universal/reference.yaml +111 -0
  99. package/templates/universal/review.yaml +2 -2
  100. package/templates/universal/skills.yaml +106 -0
  101. package/templates/web-react/mcp-servers.yaml +2 -0
  102. package/templates/web-react/skills.yaml +56 -0
  103. package/templates/web-static/mcp-servers.yaml +2 -0
  104. package/templates/web3/mcp-servers.yaml +1 -0
  105. package/templates/zero-trust/mcp-servers.yaml +1 -0
@@ -0,0 +1,305 @@
1
+ /**
2
+ * Unified forgecraft tool router.
3
+ *
4
+ * Consolidates 15 individual MCP tools into a single tool with an `action`
5
+ * discriminator. This dramatically reduces token overhead since MCP sends
6
+ * every tool schema with every request (~70% reduction from 16→2 tools).
7
+ *
8
+ * All business logic lives in the original handler files — this module
9
+ * is a thin dispatch layer that maps unified params to handler-specific args.
10
+ */
11
+ import { z } from "zod";
12
+ import { ALL_TAGS, CONTENT_TIERS, ALL_OUTPUT_TARGETS } from "../shared/types.js";
13
+ // ── Handler imports ─────────────────────────────────────────────────
14
+ import { listTagsHandler, listHooksHandler, listSkillsHandler } from "./list.js";
15
+ import { classifyProjectHandler } from "./classify.js";
16
+ import { scaffoldProjectHandler } from "./scaffold.js";
17
+ import { generateInstructionsHandler } from "./generate-claude-md.js";
18
+ import { auditProjectHandler } from "./audit.js";
19
+ import { addHookHandler } from "./add-hook.js";
20
+ import { addModuleHandler } from "./add-module.js";
21
+ import { configureMcpHandler } from "./configure-mcp.js";
22
+ import { getNfrTemplateHandler } from "./get-nfr.js";
23
+ import { getDesignReferenceHandler } from "./get-reference.js";
24
+ import { convertExistingHandler } from "./convert.js";
25
+ import { reviewProjectHandler } from "./review.js";
26
+ import { refreshProjectHandler } from "./refresh-project.js";
27
+ // ── Constants ───────────────────────────────────────────────────────
28
+ const ACTIONS = [
29
+ "refresh",
30
+ "scaffold",
31
+ "generate",
32
+ "audit",
33
+ "review",
34
+ "list",
35
+ "classify",
36
+ "add_hook",
37
+ "add_module",
38
+ "configure_mcp",
39
+ "get_reference",
40
+ "convert",
41
+ ];
42
+ const LIST_RESOURCES = ["tags", "hooks", "skills"];
43
+ const REFERENCE_RESOURCES = ["nfr", "design_patterns"];
44
+ // ── Schema ──────────────────────────────────────────────────────────
45
+ export const forgecraftSchema = z.object({
46
+ action: z
47
+ .enum(ACTIONS)
48
+ .describe("Operation to perform: refresh (re-sync project), scaffold (generate structure), " +
49
+ "generate (instruction files only), audit (check standards), review (code review checklist), " +
50
+ "list (discover tags/hooks/skills), classify (suggest tags), add_hook, add_module, " +
51
+ "configure_mcp, get_reference (design patterns/NFR), convert (migration plan)."),
52
+ project_dir: z
53
+ .string()
54
+ .optional()
55
+ .describe("Absolute path to the project root. Required for: refresh, scaffold, generate, audit, add_hook, add_module, configure_mcp, convert. Optional for: classify."),
56
+ tags: z
57
+ .array(z.enum(ALL_TAGS))
58
+ .optional()
59
+ .describe("Project classification tags. Used by: scaffold, generate, audit, review, add_module, configure_mcp, get_reference, convert, list (as filter)."),
60
+ project_name: z
61
+ .string()
62
+ .optional()
63
+ .describe("Human-readable project name. Used by: scaffold, generate."),
64
+ output_targets: z
65
+ .array(z.enum(ALL_OUTPUT_TARGETS))
66
+ .optional()
67
+ .describe("AI assistant targets (claude, cursor, copilot, windsurf, cline, aider). Used by: scaffold, generate, refresh."),
68
+ tier: z
69
+ .enum(CONTENT_TIERS)
70
+ .optional()
71
+ .describe("Content depth: core, recommended, optional. Used by: refresh."),
72
+ resource: z
73
+ .enum([...LIST_RESOURCES, ...REFERENCE_RESOURCES])
74
+ .optional()
75
+ .describe("Sub-resource for list (tags|hooks|skills) and get_reference (nfr|design_patterns)."),
76
+ name: z
77
+ .string()
78
+ .optional()
79
+ .describe("Item name. Used by: add_hook (hook name), add_module (module name)."),
80
+ language: z
81
+ .enum(["typescript", "python"])
82
+ .optional()
83
+ .describe("Programming language. Used by: scaffold, add_module. Default: typescript."),
84
+ description: z
85
+ .string()
86
+ .optional()
87
+ .describe("Natural language description. Used by: classify."),
88
+ dry_run: z
89
+ .boolean()
90
+ .optional()
91
+ .describe("Preview without writing files. Used by: scaffold."),
92
+ force: z
93
+ .boolean()
94
+ .optional()
95
+ .describe("Overwrite existing files. Used by: scaffold."),
96
+ apply: z
97
+ .boolean()
98
+ .optional()
99
+ .describe("Apply changes (vs preview). Used by: refresh. Default: false."),
100
+ merge: z
101
+ .boolean()
102
+ .optional()
103
+ .describe("Merge with existing instruction files. Used by: generate. Default: true."),
104
+ scope: z
105
+ .enum(["comprehensive", "focused"])
106
+ .optional()
107
+ .describe("Review scope. Used by: review. Default: comprehensive."),
108
+ scan_depth: z
109
+ .enum(["quick", "full"])
110
+ .optional()
111
+ .describe("Analysis depth. Used by: convert. Default: quick."),
112
+ tag: z
113
+ .enum(ALL_TAGS)
114
+ .optional()
115
+ .describe("Single tag filter. Used by: add_hook."),
116
+ add_tags: z
117
+ .array(z.enum(ALL_TAGS))
118
+ .optional()
119
+ .describe("Tags to add during refresh."),
120
+ remove_tags: z
121
+ .array(z.enum(ALL_TAGS))
122
+ .optional()
123
+ .describe("Tags to remove during refresh."),
124
+ include_anti_patterns: z
125
+ .boolean()
126
+ .optional()
127
+ .describe("Scan for anti-patterns. Used by: audit. Default: true."),
128
+ custom_servers: z
129
+ .record(z.object({
130
+ command: z.string(),
131
+ args: z.array(z.string()),
132
+ env: z.record(z.string()).optional(),
133
+ }))
134
+ .optional()
135
+ .describe("Custom MCP servers. Used by: configure_mcp."),
136
+ auto_approve_tools: z
137
+ .boolean()
138
+ .optional()
139
+ .describe("Auto-approve MCP tool calls. Used by: configure_mcp. Default: true."),
140
+ include_remote: z
141
+ .boolean()
142
+ .optional()
143
+ .describe("Query remote MCP registry. Used by: configure_mcp. Default: false."),
144
+ remote_registry_url: z
145
+ .string()
146
+ .optional()
147
+ .describe("Remote MCP registry URL override. Used by: configure_mcp."),
148
+ max_servers: z
149
+ .number()
150
+ .int()
151
+ .positive()
152
+ .optional()
153
+ .describe("Max MCP servers to configure. Used by: configure_mcp."),
154
+ });
155
+ // ── Handler ─────────────────────────────────────────────────────────
156
+ /**
157
+ * Unified handler that dispatches to the appropriate tool handler
158
+ * based on the `action` parameter.
159
+ *
160
+ * @param args - Validated unified tool input
161
+ * @returns MCP tool response from the delegated handler
162
+ */
163
+ export async function forgecraftHandler(args) {
164
+ const action = args.action;
165
+ switch (action) {
166
+ case "list":
167
+ return dispatchList(args);
168
+ case "get_reference":
169
+ return dispatchGetReference(args);
170
+ case "classify":
171
+ return classifyProjectHandler({
172
+ project_dir: args.project_dir,
173
+ description: args.description,
174
+ });
175
+ case "refresh":
176
+ return refreshProjectHandler({
177
+ project_dir: requireParam(args.project_dir, "project_dir", "refresh"),
178
+ apply: args.apply ?? false,
179
+ tier: args.tier,
180
+ add_tags: args.add_tags,
181
+ remove_tags: args.remove_tags,
182
+ output_targets: args.output_targets,
183
+ });
184
+ case "scaffold":
185
+ return scaffoldProjectHandler({
186
+ tags: requireParam(args.tags, "tags", "scaffold"),
187
+ project_dir: requireParam(args.project_dir, "project_dir", "scaffold"),
188
+ project_name: args.project_name ?? "My Project",
189
+ language: args.language ?? "typescript",
190
+ dry_run: args.dry_run ?? false,
191
+ force: args.force ?? false,
192
+ output_targets: args.output_targets ?? ["claude"],
193
+ });
194
+ case "generate":
195
+ return generateInstructionsHandler({
196
+ tags: requireParam(args.tags, "tags", "generate"),
197
+ project_dir: args.project_dir,
198
+ project_name: args.project_name ?? "My Project",
199
+ output_targets: args.output_targets ?? ["claude"],
200
+ merge_with_existing: args.merge ?? true,
201
+ });
202
+ case "audit":
203
+ return auditProjectHandler({
204
+ tags: requireParam(args.tags, "tags", "audit"),
205
+ project_dir: requireParam(args.project_dir, "project_dir", "audit"),
206
+ include_anti_patterns: args.include_anti_patterns ?? true,
207
+ });
208
+ case "review":
209
+ return reviewProjectHandler({
210
+ tags: requireParam(args.tags, "tags", "review"),
211
+ scope: args.scope ?? "comprehensive",
212
+ });
213
+ case "add_hook":
214
+ return addHookHandler({
215
+ hook: requireParam(args.name, "name", "add_hook"),
216
+ project_dir: requireParam(args.project_dir, "project_dir", "add_hook"),
217
+ tag: args.tag,
218
+ });
219
+ case "add_module":
220
+ return addModuleHandler({
221
+ module_name: requireParam(args.name, "name", "add_module"),
222
+ project_dir: requireParam(args.project_dir, "project_dir", "add_module"),
223
+ tags: args.tags ?? ["UNIVERSAL"],
224
+ language: args.language ?? "typescript",
225
+ });
226
+ case "configure_mcp":
227
+ return configureMcpHandler({
228
+ tags: requireParam(args.tags, "tags", "configure_mcp"),
229
+ project_dir: requireParam(args.project_dir, "project_dir", "configure_mcp"),
230
+ custom_servers: args.custom_servers,
231
+ auto_approve_tools: args.auto_approve_tools ?? true,
232
+ include_remote: args.include_remote ?? false,
233
+ remote_registry_url: args.remote_registry_url,
234
+ max_servers: args.max_servers,
235
+ });
236
+ case "convert":
237
+ return convertExistingHandler({
238
+ tags: requireParam(args.tags, "tags", "convert"),
239
+ project_dir: requireParam(args.project_dir, "project_dir", "convert"),
240
+ scan_depth: args.scan_depth ?? "quick",
241
+ });
242
+ default:
243
+ return errorResult(`Unknown action: ${String(action)}. Valid actions: ${ACTIONS.join(", ")}`);
244
+ }
245
+ }
246
+ // ── Dispatch Helpers ────────────────────────────────────────────────
247
+ /**
248
+ * Dispatch the `list` action based on the `resource` sub-parameter.
249
+ */
250
+ async function dispatchList(args) {
251
+ const resource = args.resource ?? "tags";
252
+ switch (resource) {
253
+ case "tags":
254
+ return listTagsHandler();
255
+ case "hooks":
256
+ return listHooksHandler({ tags: args.tags });
257
+ case "skills":
258
+ return listSkillsHandler({ tags: args.tags });
259
+ default:
260
+ return errorResult(`Invalid resource '${resource}' for list action. Use: tags, hooks, or skills.`);
261
+ }
262
+ }
263
+ /**
264
+ * Dispatch the `get_reference` action based on the `resource` sub-parameter.
265
+ */
266
+ async function dispatchGetReference(args) {
267
+ const resource = args.resource ?? "design_patterns";
268
+ const tags = requireParam(args.tags, "tags", "get_reference");
269
+ switch (resource) {
270
+ case "nfr":
271
+ return getNfrTemplateHandler({ tags });
272
+ case "design_patterns":
273
+ return getDesignReferenceHandler({ tags });
274
+ default:
275
+ return errorResult(`Invalid resource '${resource}' for get_reference action. Use: nfr or design_patterns.`);
276
+ }
277
+ }
278
+ // ── Utilities ───────────────────────────────────────────────────────
279
+ /**
280
+ * Require a parameter that is mandatory for a given action.
281
+ * Throws with a clear error if missing.
282
+ *
283
+ * @param value - The parameter value (may be undefined)
284
+ * @param paramName - Parameter name for the error message
285
+ * @param action - Action name for context
286
+ * @returns The non-undefined value
287
+ */
288
+ function requireParam(value, paramName, action) {
289
+ if (value === undefined || (Array.isArray(value) && value.length === 0)) {
290
+ throw new Error(`Missing required parameter '${paramName}' for action '${action}'.`);
291
+ }
292
+ return value;
293
+ }
294
+ /**
295
+ * Build an error result in MCP tool response format.
296
+ *
297
+ * @param message - Error description
298
+ * @returns MCP tool response with error text
299
+ */
300
+ function errorResult(message) {
301
+ return {
302
+ content: [{ type: "text", text: `Error: ${message}` }],
303
+ };
304
+ }
305
+ //# sourceMappingURL=forgecraft-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forgecraft-router.js","sourceRoot":"","sources":["../../src/tools/forgecraft-router.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * Generates instruction files for AI assistants (Claude, Cursor, Copilot, Windsurf, Cline, Aider).
5
5
  * Replaces the former generate_claude_md tool with multi-target support.
6
+ * Always merges with existing files by default to preserve user custom sections.
6
7
  */
7
8
  import { z } from "zod";
8
9
  export declare const generateInstructionsSchema: z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"generate-claude-md.d.ts","sourceRoot":"","sources":["../../src/tools/generate-claude-md.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;EAqBrC,CAAC;AAEH,0DAA0D;AAC1D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;EAA6B,CAAC;AAIjE,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,GAC/C,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAqE7D;AAED,2DAA2D;AAC3D,eAAO,MAAM,uBAAuB,oCAA8B,CAAC"}
1
+ {"version":3,"file":"generate-claude-md.d.ts","sourceRoot":"","sources":["../../src/tools/generate-claude-md.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;EAqBrC,CAAC;AAEH,0DAA0D;AAC1D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;EAA6B,CAAC;AAIjE,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,GAC/C,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAoE7D;AAED,2DAA2D;AAC3D,eAAO,MAAM,uBAAuB,oCAA8B,CAAC"}
@@ -3,14 +3,18 @@
3
3
  *
4
4
  * Generates instruction files for AI assistants (Claude, Cursor, Copilot, Windsurf, Cline, Aider).
5
5
  * Replaces the former generate_claude_md tool with multi-target support.
6
+ * Always merges with existing files by default to preserve user custom sections.
6
7
  */
7
8
  import { z } from "zod";
8
- import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
9
+ import { writeFileSync, mkdirSync } from "node:fs";
9
10
  import { join, dirname } from "node:path";
10
11
  import { ALL_TAGS, ALL_OUTPUT_TARGETS, OUTPUT_TARGET_CONFIGS, DEFAULT_OUTPUT_TARGET } from "../shared/types.js";
11
12
  import { loadAllTemplatesWithExtras, loadUserOverrides } from "../registry/loader.js";
12
13
  import { composeTemplates } from "../registry/composer.js";
13
14
  import { renderInstructionFile } from "../registry/renderer.js";
15
+ import { writeInstructionFileWithMerge } from "../shared/filesystem.js";
16
+ import { detectLanguage } from "../analyzers/language-detector.js";
17
+ import { detectProjectContext } from "../analyzers/project-context.js";
14
18
  // ── Schema ───────────────────────────────────────────────────────────
15
19
  export const generateInstructionsSchema = z.object({
16
20
  tags: z
@@ -31,8 +35,8 @@ export const generateInstructionsSchema = z.object({
31
35
  .describe("AI assistant targets to generate for. Defaults to ['claude']. Options: claude, cursor, copilot, windsurf, cline, aider."),
32
36
  merge_with_existing: z
33
37
  .boolean()
34
- .default(false)
35
- .describe("If true, merge with existing instruction files instead of replacing."),
38
+ .default(true)
39
+ .describe("If true, merge with existing instruction files instead of replacing. Preserves custom sections added by the user. Default: true."),
36
40
  });
37
41
  /** @deprecated Use generateInstructionsSchema instead. */
38
42
  export const generateClaudeMdSchema = generateInstructionsSchema;
@@ -47,39 +51,38 @@ export async function generateInstructionsHandler(args) {
47
51
  const composed = composeTemplates(tags, templateSets, {
48
52
  config: userConfig ?? undefined,
49
53
  });
50
- const context = {
51
- projectName: args.project_name,
52
- language: "typescript",
53
- tags,
54
- };
54
+ const detectedLang = args.project_dir ? detectLanguage(args.project_dir) : "typescript";
55
+ const context = args.project_dir
56
+ ? detectProjectContext(args.project_dir, args.project_name, detectedLang, tags)
57
+ : { projectName: args.project_name, language: detectedLang, tags };
55
58
  const filesWritten = [];
56
59
  const targetSummaries = [];
57
60
  for (const target of targets) {
58
61
  const targetConfig = OUTPUT_TARGET_CONFIGS[target];
59
- let content = renderInstructionFile(composed.instructionBlocks, context, target);
60
- // Handle merge with existing
61
- if (args.merge_with_existing && args.project_dir) {
62
- const existingPath = resolveTargetPath(args.project_dir, target);
63
- if (existsSync(existingPath)) {
64
- const existing = readFileSync(existingPath, "utf-8");
65
- content = mergeInstructionFile(existing, content);
66
- }
67
- }
62
+ const content = renderInstructionFile(composed.instructionBlocks, context, target);
68
63
  // Write to disk if project_dir provided
69
64
  if (args.project_dir) {
70
65
  const targetPath = resolveTargetPath(args.project_dir, target);
71
- mkdirSync(dirname(targetPath), { recursive: true });
72
- writeFileSync(targetPath, content, "utf-8");
66
+ if (args.merge_with_existing) {
67
+ writeInstructionFileWithMerge(targetPath, content);
68
+ }
69
+ else {
70
+ mkdirSync(dirname(targetPath), { recursive: true });
71
+ writeFileSync(targetPath, content, "utf-8");
72
+ }
73
73
  filesWritten.push(targetPath);
74
74
  targetSummaries.push(`- **${targetConfig.displayName}**: \`${targetConfig.directory ? targetConfig.directory + "/" : ""}${targetConfig.filename}\``);
75
75
  }
76
76
  }
77
77
  if (args.project_dir && filesWritten.length > 0) {
78
+ const mergeNote = args.merge_with_existing
79
+ ? "\n\n> Custom sections from existing files have been preserved."
80
+ : "";
78
81
  return {
79
82
  content: [
80
83
  {
81
84
  type: "text",
82
- text: `# Instruction Files Generated\n\n**Tags:** ${tags.map((t) => `[${t}]`).join(" ")}\n**Blocks:** ${composed.instructionBlocks.length}\n\n## Files Written\n${targetSummaries.join("\n")}\n\n⚠️ Restart may be required to pick up changes.`,
85
+ text: `# Instruction Files Generated\n\n**Tags:** ${tags.map((t) => `[${t}]`).join(" ")}\n**Blocks:** ${composed.instructionBlocks.length}\n\n## Files Written\n${targetSummaries.join("\n")}${mergeNote}\n\n⚠️ Restart may be required to pick up changes.`,
83
86
  },
84
87
  ],
85
88
  };
@@ -107,41 +110,4 @@ function resolveTargetPath(projectDir, target) {
107
110
  }
108
111
  return join(projectDir, config.filename);
109
112
  }
110
- /**
111
- * Merge generated instruction file with existing one.
112
- * Keeps any custom sections from the existing file.
113
- */
114
- function mergeInstructionFile(existing, generated) {
115
- const existingLines = existing.split("\n");
116
- const generatedLines = generated.split("\n");
117
- // Find custom sections (sections not in generated)
118
- const generatedHeaders = new Set(generatedLines
119
- .filter((l) => l.startsWith("## ") || l.startsWith("### "))
120
- .map((l) => l.trim()));
121
- const customSections = [];
122
- let inCustomSection = false;
123
- let currentSection = [];
124
- for (const line of existingLines) {
125
- if (line.startsWith("## ") || line.startsWith("### ")) {
126
- if (inCustomSection && currentSection.length > 0) {
127
- customSections.push(currentSection.join("\n"));
128
- }
129
- inCustomSection = !generatedHeaders.has(line.trim());
130
- currentSection = inCustomSection ? [line] : [];
131
- }
132
- else if (inCustomSection) {
133
- currentSection.push(line);
134
- }
135
- }
136
- if (inCustomSection && currentSection.length > 0) {
137
- customSections.push(currentSection.join("\n"));
138
- }
139
- // Append custom sections to generated content
140
- if (customSections.length > 0) {
141
- return (generated +
142
- "\n\n<!-- Custom Sections (preserved from previous file) -->\n\n" +
143
- customSections.join("\n\n"));
144
- }
145
- return generated;
146
- }
147
113
  //# sourceMappingURL=generate-claude-md.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-claude-md.js","sourceRoot":"","sources":["../../src/tools/generate-claude-md.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhH,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,wEAAwE;AAExE,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,IAAI,EAAE,CAAC;SACJ,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAA4C,CAAC,CAAC;SAC3D,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,8BAA8B,CAAC;IAC3C,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,0EAA0E,CAAC;IACvF,YAAY,EAAE,CAAC;SACZ,MAAM,EAAE;SACR,OAAO,CAAC,YAAY,CAAC;SACrB,QAAQ,CAAC,yCAAyC,CAAC;IACtD,cAAc,EAAE,CAAC;SACd,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAsD,CAAC,CAAC;SACrE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;SACnB,QAAQ,CAAC,yHAAyH,CAAC;IACtI,mBAAmB,EAAE,CAAC;SACnB,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,sEAAsE,CAAC;CACpF,CAAC,CAAC;AAEH,0DAA0D;AAC1D,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC;AAEjE,wEAAwE;AAExE,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,IAAgD;IAEhD,MAAM,IAAI,GAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QACjD,CAAC,CAAE,IAAI,CAAC,IAAc;QACtB,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CAAW,CAAC;IAE3C,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,qBAAqB,CAAC,CAAmB,CAAC;IAEnF,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjF,MAAM,YAAY,GAAG,MAAM,0BAA0B,CACnD,SAAS,EACT,UAAU,EAAE,YAAY,CACzB,CAAC;IACF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE;QACpD,MAAM,EAAE,UAAU,IAAI,SAAS;KAChC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG;QACd,WAAW,EAAE,IAAI,CAAC,YAAY;QAC9B,QAAQ,EAAE,YAAqB;QAC/B,IAAI;KACL,CAAC;IAEF,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,MAAM,eAAe,GAAa,EAAE,CAAC;IAErC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,OAAO,GAAG,qBAAqB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAEjF,6BAA6B;QAC7B,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACjD,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACjE,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBACrD,OAAO,GAAG,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,wCAAwC;QACxC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAC/D,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC5C,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9B,eAAe,CAAC,IAAI,CAAC,OAAO,YAAY,CAAC,WAAW,SAAS,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,YAAY,CAAC,QAAQ,IAAI,CAAC,CAAC;QACvJ,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,WAAW,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,8CAA8C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,iBAAiB,CAAC,MAAM,yBAAyB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,oDAAoD;iBACjP;aACF;SACF,CAAC;IACJ,CAAC;IAED,6DAA6D;IAC7D,MAAM,OAAO,GAAG,qBAAqB,CAAC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC;IACxF,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO;aACd;SACF;KACF,CAAC;AACJ,CAAC;AAED,2DAA2D;AAC3D,MAAM,CAAC,MAAM,uBAAuB,GAAG,2BAA2B,CAAC;AAEnE;;GAEG;AACH,SAAS,iBAAiB,CAAC,UAAkB,EAAE,MAAoB;IACjE,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,QAAgB,EAAE,SAAiB;IAC/D,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE7C,mDAAmD;IACnD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B,cAAc;SACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;SAC1D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CACxB,CAAC;IAEF,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,cAAc,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACtD,IAAI,eAAe,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjD,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACjD,CAAC;YACD,eAAe,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACrD,cAAc,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,CAAC;aAAM,IAAI,eAAe,EAAE,CAAC;YAC3B,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,eAAe,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,8CAA8C;IAC9C,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,CACL,SAAS;YACT,iEAAiE;YACjE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAC5B,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"generate-claude-md.js","sourceRoot":"","sources":["../../src/tools/generate-claude-md.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * get_design_reference tool handler.
3
+ *
4
+ * Returns design reference patterns (DDD, CQRS, GoF) on demand.
5
+ * These blocks are NOT included in generated instruction files to save tokens —
6
+ * they are served only when explicitly requested.
7
+ */
8
+ import { z } from "zod";
9
+ export declare const getDesignReferenceSchema: z.ZodObject<{
10
+ tags: z.ZodArray<z.ZodEnum<[string, ...string[]]>, "many">;
11
+ }, "strip", z.ZodTypeAny, {
12
+ tags: string[];
13
+ }, {
14
+ tags: string[];
15
+ }>;
16
+ /**
17
+ * Handle get_design_reference tool calls.
18
+ *
19
+ * @param args - Validated tool input with tags array
20
+ * @returns Design reference patterns as formatted markdown
21
+ */
22
+ export declare function getDesignReferenceHandler(args: z.infer<typeof getDesignReferenceSchema>): Promise<{
23
+ content: Array<{
24
+ type: "text";
25
+ text: string;
26
+ }>;
27
+ }>;
28
+ //# sourceMappingURL=get-reference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-reference.d.ts","sourceRoot":"","sources":["../../src/tools/get-reference.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,wBAAwB;;;;;;EAKnC,CAAC;AAIH;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,GAC7C,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAyC7D"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * get_design_reference tool handler.
3
+ *
4
+ * Returns design reference patterns (DDD, CQRS, GoF) on demand.
5
+ * These blocks are NOT included in generated instruction files to save tokens —
6
+ * they are served only when explicitly requested.
7
+ */
8
+ import { z } from "zod";
9
+ import { ALL_TAGS } from "../shared/types.js";
10
+ import { loadAllTemplates } from "../registry/loader.js";
11
+ import { composeTemplates } from "../registry/composer.js";
12
+ import { renderReference } from "../registry/renderer.js";
13
+ // ── Schema ───────────────────────────────────────────────────────────
14
+ export const getDesignReferenceSchema = z.object({
15
+ tags: z
16
+ .array(z.enum(ALL_TAGS))
17
+ .min(1)
18
+ .describe("Tags to get design reference patterns for."),
19
+ });
20
+ // ── Handler ──────────────────────────────────────────────────────────
21
+ /**
22
+ * Handle get_design_reference tool calls.
23
+ *
24
+ * @param args - Validated tool input with tags array
25
+ * @returns Design reference patterns as formatted markdown
26
+ */
27
+ export async function getDesignReferenceHandler(args) {
28
+ const tags = args.tags.includes("UNIVERSAL")
29
+ ? args.tags
30
+ : ["UNIVERSAL", ...args.tags];
31
+ const templateSets = await loadAllTemplates();
32
+ const composed = composeTemplates(tags, templateSets);
33
+ if (composed.referenceBlocks.length === 0) {
34
+ return {
35
+ content: [
36
+ {
37
+ type: "text",
38
+ text: "No design reference patterns found for the specified tags.",
39
+ },
40
+ ],
41
+ };
42
+ }
43
+ const context = {
44
+ projectName: "Project",
45
+ language: "typescript",
46
+ tags,
47
+ };
48
+ const referenceContent = renderReference(composed.referenceBlocks, context);
49
+ return {
50
+ content: [
51
+ {
52
+ type: "text",
53
+ text: `# Design Reference Patterns\n\n` +
54
+ `**Tags:** ${tags.map((t) => `[${t}]`).join(" ")}\n` +
55
+ `**Patterns:** ${composed.referenceBlocks.length}\n\n` +
56
+ `> These patterns are served on demand to save tokens. ` +
57
+ `They are NOT included in your instruction files.\n\n` +
58
+ referenceContent,
59
+ },
60
+ ],
61
+ };
62
+ }
63
+ //# sourceMappingURL=get-reference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-reference.js","sourceRoot":"","sources":["../../src/tools/get-reference.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,wEAAwE;AAExE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,IAAI,EAAE,CAAC;SACJ,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAA4C,CAAC,CAAC;SAC3D,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,4CAA4C,CAAC;CAC1D,CAAC,CAAC;AAEH,wEAAwE;AAExE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,IAA8C;IAE9C,MAAM,IAAI,GAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QACjD,CAAC,CAAE,IAAI,CAAC,IAAc;QACtB,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CAAW,CAAC;IAE3C,MAAM,YAAY,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAEtD,IAAI,QAAQ,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,4DAA4D;iBACnE;aACF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG;QACd,WAAW,EAAE,SAAS;QACtB,QAAQ,EAAE,YAAqB;QAC/B,IAAI;KACL,CAAC;IAEF,MAAM,gBAAgB,GAAG,eAAe,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAE5E,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EACF,iCAAiC;oBACjC,aAAa,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;oBACpD,iBAAiB,QAAQ,CAAC,eAAe,CAAC,MAAM,MAAM;oBACtD,wDAAwD;oBACxD,sDAAsD;oBACtD,gBAAgB;aACnB;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
- * list_tags / list_hooks tool handlers.
2
+ * list_tags / list_hooks / list_skills tool handlers.
3
3
  *
4
- * Discovery tools for Claude Code to understand available tags and hooks.
4
+ * Discovery tools for Claude Code to understand available tags, hooks, and skills.
5
5
  */
6
6
  import { z } from "zod";
7
7
  export declare const listTagsSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
@@ -12,6 +12,13 @@ export declare const listHooksSchema: z.ZodObject<{
12
12
  }, {
13
13
  tags?: string[] | undefined;
14
14
  }>;
15
+ export declare const listSkillsSchema: z.ZodObject<{
16
+ tags: z.ZodOptional<z.ZodArray<z.ZodEnum<[string, ...string[]]>, "many">>;
17
+ }, "strip", z.ZodTypeAny, {
18
+ tags?: string[] | undefined;
19
+ }, {
20
+ tags?: string[] | undefined;
21
+ }>;
15
22
  /**
16
23
  * List all available tags with descriptions.
17
24
  */
@@ -30,4 +37,13 @@ export declare function listHooksHandler(args: z.infer<typeof listHooksSchema>):
30
37
  text: string;
31
38
  }>;
32
39
  }>;
40
+ /**
41
+ * List all available skills (Claude Code custom commands), optionally filtered by tags.
42
+ */
43
+ export declare function listSkillsHandler(args: z.infer<typeof listSkillsSchema>): Promise<{
44
+ content: Array<{
45
+ type: "text";
46
+ text: string;
47
+ }>;
48
+ }>;
33
49
  //# sourceMappingURL=list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/tools/list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,cAAc,gDAAe,CAAC;AAE3C,eAAO,MAAM,eAAe;;;;;;EAK1B,CAAC;AAyGH;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAC/C,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD,CAAC,CAsBD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,GACpC,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA6C7D"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/tools/list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,cAAc,gDAAe,CAAC;AAE3C,eAAO,MAAM,eAAe;;;;;;EAK1B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;EAK3B,CAAC;AAyGH;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAC/C,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD,CAAC,CAsBD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,GACpC,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA6C7D;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,GACrC,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA8C7D"}