craftdesk 0.2.0 → 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 (175) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/README.md +968 -92
  3. package/dist/commands/add.d.ts +5 -0
  4. package/dist/commands/add.d.ts.map +1 -1
  5. package/dist/commands/add.js +303 -7
  6. package/dist/commands/add.js.map +1 -1
  7. package/dist/commands/convert.d.ts +8 -0
  8. package/dist/commands/convert.d.ts.map +1 -0
  9. package/dist/commands/convert.js +146 -0
  10. package/dist/commands/convert.js.map +1 -0
  11. package/dist/commands/info.d.ts +8 -0
  12. package/dist/commands/info.d.ts.map +1 -0
  13. package/dist/commands/info.js +66 -0
  14. package/dist/commands/info.js.map +1 -0
  15. package/dist/commands/init.d.ts +5 -0
  16. package/dist/commands/init.d.ts.map +1 -1
  17. package/dist/commands/init.js +9 -3
  18. package/dist/commands/init.js.map +1 -1
  19. package/dist/commands/install.d.ts +5 -0
  20. package/dist/commands/install.d.ts.map +1 -1
  21. package/dist/commands/install.js +24 -4
  22. package/dist/commands/install.js.map +1 -1
  23. package/dist/commands/list.d.ts +5 -0
  24. package/dist/commands/list.d.ts.map +1 -1
  25. package/dist/commands/list.js +72 -7
  26. package/dist/commands/list.js.map +1 -1
  27. package/dist/commands/login.d.ts +8 -0
  28. package/dist/commands/login.d.ts.map +1 -0
  29. package/dist/commands/login.js +158 -0
  30. package/dist/commands/login.js.map +1 -0
  31. package/dist/commands/logout.d.ts +8 -0
  32. package/dist/commands/logout.d.ts.map +1 -0
  33. package/dist/commands/logout.js +51 -0
  34. package/dist/commands/logout.js.map +1 -0
  35. package/dist/commands/outdated.d.ts +23 -0
  36. package/dist/commands/outdated.d.ts.map +1 -0
  37. package/dist/commands/outdated.js +268 -0
  38. package/dist/commands/outdated.js.map +1 -0
  39. package/dist/commands/publish.d.ts +8 -0
  40. package/dist/commands/publish.d.ts.map +1 -0
  41. package/dist/commands/publish.js +198 -0
  42. package/dist/commands/publish.js.map +1 -0
  43. package/dist/commands/remove.d.ts +5 -0
  44. package/dist/commands/remove.d.ts.map +1 -1
  45. package/dist/commands/remove.js +52 -11
  46. package/dist/commands/remove.js.map +1 -1
  47. package/dist/commands/search.d.ts +8 -0
  48. package/dist/commands/search.d.ts.map +1 -0
  49. package/dist/commands/search.js +60 -0
  50. package/dist/commands/search.js.map +1 -0
  51. package/dist/commands/update.d.ts +8 -0
  52. package/dist/commands/update.d.ts.map +1 -0
  53. package/dist/commands/update.js +369 -0
  54. package/dist/commands/update.js.map +1 -0
  55. package/dist/commands/whoami.d.ts +8 -0
  56. package/dist/commands/whoami.d.ts.map +1 -0
  57. package/dist/commands/whoami.js +58 -0
  58. package/dist/commands/whoami.js.map +1 -0
  59. package/dist/converters/base-converter.d.ts +89 -0
  60. package/dist/converters/base-converter.d.ts.map +1 -0
  61. package/dist/converters/base-converter.js +249 -0
  62. package/dist/converters/base-converter.js.map +1 -0
  63. package/dist/converters/continue-converter.d.ts +53 -0
  64. package/dist/converters/continue-converter.d.ts.map +1 -0
  65. package/dist/converters/continue-converter.js +243 -0
  66. package/dist/converters/continue-converter.js.map +1 -0
  67. package/dist/converters/cursor-converter.d.ts +70 -0
  68. package/dist/converters/cursor-converter.d.ts.map +1 -0
  69. package/dist/converters/cursor-converter.js +272 -0
  70. package/dist/converters/cursor-converter.js.map +1 -0
  71. package/dist/index.js +35 -4
  72. package/dist/index.js.map +1 -1
  73. package/dist/services/config-manager.d.ts +128 -10
  74. package/dist/services/config-manager.d.ts.map +1 -1
  75. package/dist/services/config-manager.js +189 -18
  76. package/dist/services/config-manager.js.map +1 -1
  77. package/dist/services/converter.d.ts +53 -0
  78. package/dist/services/converter.d.ts.map +1 -0
  79. package/dist/services/converter.js +185 -0
  80. package/dist/services/converter.js.map +1 -0
  81. package/dist/services/craft-wrapper.d.ts +108 -0
  82. package/dist/services/craft-wrapper.d.ts.map +1 -0
  83. package/dist/services/craft-wrapper.js +268 -0
  84. package/dist/services/craft-wrapper.js.map +1 -0
  85. package/dist/services/git-resolver.d.ts +9 -3
  86. package/dist/services/git-resolver.d.ts.map +1 -1
  87. package/dist/services/git-resolver.js +35 -10
  88. package/dist/services/git-resolver.js.map +1 -1
  89. package/dist/services/installer.d.ts +51 -1
  90. package/dist/services/installer.d.ts.map +1 -1
  91. package/dist/services/installer.js +245 -14
  92. package/dist/services/installer.js.map +1 -1
  93. package/dist/services/plugin-resolver.d.ts +80 -0
  94. package/dist/services/plugin-resolver.d.ts.map +1 -0
  95. package/dist/services/plugin-resolver.js +182 -0
  96. package/dist/services/plugin-resolver.js.map +1 -0
  97. package/dist/services/registry-client.d.ts +132 -5
  98. package/dist/services/registry-client.d.ts.map +1 -1
  99. package/dist/services/registry-client.js +239 -34
  100. package/dist/services/registry-client.js.map +1 -1
  101. package/dist/services/settings-manager.d.ts +151 -0
  102. package/dist/services/settings-manager.d.ts.map +1 -0
  103. package/dist/services/settings-manager.js +333 -0
  104. package/dist/services/settings-manager.js.map +1 -0
  105. package/dist/types/claude-settings.d.ts +155 -0
  106. package/dist/types/claude-settings.d.ts.map +1 -0
  107. package/dist/types/claude-settings.js +20 -0
  108. package/dist/types/claude-settings.js.map +1 -0
  109. package/dist/types/converter.d.ts +98 -0
  110. package/dist/types/converter.d.ts.map +1 -0
  111. package/dist/types/converter.js +6 -0
  112. package/dist/types/converter.js.map +1 -0
  113. package/dist/types/craftdesk-json.d.ts +63 -3
  114. package/dist/types/craftdesk-json.d.ts.map +1 -1
  115. package/dist/types/craftdesk-lock.d.ts +62 -1
  116. package/dist/types/craftdesk-lock.d.ts.map +1 -1
  117. package/dist/utils/crypto.d.ts +23 -0
  118. package/dist/utils/crypto.d.ts.map +1 -0
  119. package/dist/utils/crypto.js +52 -0
  120. package/dist/utils/crypto.js.map +1 -0
  121. package/dist/utils/file-system.d.ts +43 -0
  122. package/dist/utils/file-system.d.ts.map +1 -1
  123. package/dist/utils/file-system.js +45 -2
  124. package/dist/utils/file-system.js.map +1 -1
  125. package/dist/utils/logger.d.ts +75 -0
  126. package/dist/utils/logger.d.ts.map +1 -1
  127. package/dist/utils/logger.js +76 -1
  128. package/dist/utils/logger.js.map +1 -1
  129. package/dist/utils/version-utils.d.ts +63 -0
  130. package/dist/utils/version-utils.d.ts.map +1 -0
  131. package/dist/utils/version-utils.js +130 -0
  132. package/dist/utils/version-utils.js.map +1 -0
  133. package/package.json +36 -9
  134. package/.claude/settings.local.json +0 -17
  135. package/.github/workflows/ci.yml +0 -94
  136. package/API.md +0 -414
  137. package/TESTING.md +0 -263
  138. package/dist/commands/config.d.ts +0 -3
  139. package/dist/commands/config.d.ts.map +0 -1
  140. package/dist/commands/config.js +0 -56
  141. package/dist/commands/config.js.map +0 -1
  142. package/dist/types/config.d.ts +0 -17
  143. package/dist/types/config.d.ts.map +0 -1
  144. package/dist/types/config.js +0 -3
  145. package/dist/types/config.js.map +0 -1
  146. package/docs/DEPENDENCY_RESOLUTION.md +0 -237
  147. package/examples/craftdesk-all-sources.json +0 -79
  148. package/examples/craftdesk-git-monorepo.json +0 -41
  149. package/examples/craftdesk-multi-registry.json +0 -40
  150. package/examples/craftdesk-with-registries.json +0 -49
  151. package/examples/simple-craftdesk.json +0 -10
  152. package/src/commands/add.ts +0 -314
  153. package/src/commands/init.ts +0 -55
  154. package/src/commands/install.ts +0 -126
  155. package/src/commands/list.ts +0 -126
  156. package/src/commands/remove.ts +0 -82
  157. package/src/index.ts +0 -56
  158. package/src/services/config-manager.ts +0 -150
  159. package/src/services/git-resolver.ts +0 -370
  160. package/src/services/installer.ts +0 -314
  161. package/src/services/registry-client.ts +0 -163
  162. package/src/types/craftdesk-json.ts +0 -53
  163. package/src/types/craftdesk-lock.ts +0 -38
  164. package/src/utils/file-system.ts +0 -55
  165. package/src/utils/logger.ts +0 -82
  166. package/tests/fixtures/craftdesk-git.json +0 -17
  167. package/tests/fixtures/craftdesk.json +0 -15
  168. package/tests/helpers/test-utils.ts +0 -60
  169. package/tests/integration/init-command.test.ts +0 -70
  170. package/tests/integration/list-command.test.ts +0 -77
  171. package/tests/unit/config-manager.test.ts +0 -228
  172. package/tests/unit/git-resolver.test.ts +0 -303
  173. package/tests/unit/installer.test.ts +0 -105
  174. package/tsconfig.json +0 -20
  175. package/vitest.config.ts +0 -29
@@ -0,0 +1,243 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContinueConverter = void 0;
4
+ const base_converter_1 = require("./base-converter");
5
+ /**
6
+ * Converts CraftDesk crafts to Continue.dev prompt format
7
+ * https://docs.continue.dev/customize/deep-dives/prompts
8
+ */
9
+ class ContinueConverter extends base_converter_1.BaseConverter {
10
+ /**
11
+ * Get converter metadata
12
+ *
13
+ * @returns Converter metadata
14
+ */
15
+ getMetadata() {
16
+ return {
17
+ name: 'Continue Converter',
18
+ targetFormat: 'continue',
19
+ description: 'Converts crafts to Continue.dev prompt format in .continue/prompts/',
20
+ defaultOutputDir: '.continue/prompts',
21
+ supportedTypes: ['skill', 'agent', 'command']
22
+ };
23
+ }
24
+ /**
25
+ * Convert craft to Continue.dev format
26
+ *
27
+ * @param craft - Craft content to convert
28
+ * @returns Array of converted files (prompt + rule)
29
+ */
30
+ async convert(craft) {
31
+ const files = [];
32
+ // Extract sections
33
+ const sections = this.extractAllSections(craft.mainContent);
34
+ // Convert to Continue prompt format
35
+ const promptContent = this.buildContinuePrompt(craft, sections);
36
+ // Create the prompt file
37
+ const fileName = `${craft.name}.md`;
38
+ files.push({
39
+ filePath: fileName,
40
+ content: promptContent,
41
+ type: 'prompt'
42
+ });
43
+ // Also create a rule file if applicable
44
+ if (craft.type === 'skill') {
45
+ const ruleContent = this.buildContinueRule(craft, sections);
46
+ files.push({
47
+ filePath: `${craft.name}-rules.md`,
48
+ content: ruleContent,
49
+ type: 'rule'
50
+ });
51
+ }
52
+ return files;
53
+ }
54
+ /**
55
+ * Build Continue.dev prompt file content
56
+ *
57
+ * @param craft - Craft content
58
+ * @param sections - Parsed markdown sections
59
+ * @returns Formatted Continue prompt file content
60
+ */
61
+ buildContinuePrompt(craft, sections) {
62
+ const lines = [];
63
+ // YAML frontmatter
64
+ lines.push('---');
65
+ lines.push(`name: ${this.formatName(craft.name)}`);
66
+ lines.push(`description: ${craft.description || `Provides guidance for ${craft.name}`}`);
67
+ lines.push('invokable: true');
68
+ lines.push('---');
69
+ lines.push('');
70
+ // Main prompt content
71
+ lines.push(`# ${this.formatTitle(craft.name)}`);
72
+ lines.push('');
73
+ // Context
74
+ if (sections['instructions']) {
75
+ lines.push('## Context');
76
+ lines.push('');
77
+ lines.push(sections['instructions']);
78
+ lines.push('');
79
+ }
80
+ // User's request
81
+ lines.push('## Your Task');
82
+ lines.push('');
83
+ lines.push('Based on the following user input:');
84
+ lines.push('');
85
+ lines.push('{{{ input }}}');
86
+ lines.push('');
87
+ // Quick Start Template
88
+ const quickStart = sections['quick-start-template'] || sections['quick-start'];
89
+ if (quickStart) {
90
+ lines.push('## Quick Start Template');
91
+ lines.push('');
92
+ lines.push('If the user is starting a new project, use this template:');
93
+ lines.push('');
94
+ lines.push(quickStart);
95
+ lines.push('');
96
+ }
97
+ // Common Workflows
98
+ const workflows = sections['common-workflows'] || sections['workflows'];
99
+ if (workflows) {
100
+ lines.push('## Step-by-Step Workflows');
101
+ lines.push('');
102
+ lines.push(workflows);
103
+ lines.push('');
104
+ }
105
+ // Code Patterns
106
+ const patterns = sections['common-patterns'] || sections['patterns'];
107
+ if (patterns) {
108
+ lines.push('## Code Patterns to Follow');
109
+ lines.push('');
110
+ lines.push(patterns);
111
+ lines.push('');
112
+ }
113
+ // Examples
114
+ const examples = sections['quick-reference'] || sections['examples'];
115
+ if (examples) {
116
+ lines.push('## Examples');
117
+ lines.push('');
118
+ lines.push(examples);
119
+ lines.push('');
120
+ }
121
+ // Best Practices
122
+ const bestPractices = this.extractBestPractices(sections);
123
+ if (bestPractices.length > 0) {
124
+ lines.push('## Best Practices');
125
+ lines.push('');
126
+ lines.push('Make sure to follow these best practices:');
127
+ lines.push('');
128
+ bestPractices.forEach((practice, index) => {
129
+ lines.push(`${index + 1}. ${practice}`);
130
+ });
131
+ lines.push('');
132
+ }
133
+ // Pitfalls to avoid
134
+ const pitfalls = this.extractPitfalls(sections);
135
+ if (pitfalls.length > 0) {
136
+ lines.push('## Common Mistakes to Avoid');
137
+ lines.push('');
138
+ pitfalls.forEach(({ mistake, solution }) => {
139
+ lines.push(`❌ **Avoid**: ${mistake}`);
140
+ lines.push(`✅ **Instead**: ${solution}`);
141
+ lines.push('');
142
+ });
143
+ }
144
+ // Instructions for AI
145
+ lines.push('## Instructions');
146
+ lines.push('');
147
+ lines.push('Please help the user with their task by:');
148
+ lines.push('');
149
+ lines.push('1. Understanding their specific requirements from the input above');
150
+ lines.push('2. Following the patterns and best practices outlined in this guide');
151
+ lines.push('3. Avoiding the common mistakes listed');
152
+ lines.push('4. Providing clear, working code examples');
153
+ lines.push('5. Explaining your reasoning when making architectural decisions');
154
+ lines.push('');
155
+ // Current file context
156
+ lines.push('## Current Context');
157
+ lines.push('');
158
+ lines.push('Current file being edited:');
159
+ lines.push('```');
160
+ lines.push('{{{ currentFile }}}');
161
+ lines.push('```');
162
+ lines.push('');
163
+ return lines.join('\n');
164
+ }
165
+ /**
166
+ * Build Continue.dev rule file content
167
+ * Rules are applied automatically, prompts are invoked manually
168
+ *
169
+ * @param craft - Craft content
170
+ * @param sections - Parsed markdown sections
171
+ * @returns Formatted Continue rule file content
172
+ */
173
+ buildContinueRule(craft, sections) {
174
+ const lines = [];
175
+ // YAML frontmatter (rules don't have invokable)
176
+ lines.push('---');
177
+ lines.push(`name: ${this.formatName(craft.name)} Rules`);
178
+ lines.push(`description: Automatic rules for ${craft.name}`);
179
+ lines.push('---');
180
+ lines.push('');
181
+ // Title
182
+ lines.push(`# ${this.formatTitle(craft.name)} - Automatic Rules`);
183
+ lines.push('');
184
+ lines.push('These rules are automatically applied when working with relevant files.');
185
+ lines.push('');
186
+ // Code Patterns
187
+ const patterns = sections['common-patterns'] || sections['patterns'];
188
+ if (patterns) {
189
+ lines.push('## Code Patterns');
190
+ lines.push('');
191
+ lines.push('Always follow these patterns:');
192
+ lines.push('');
193
+ lines.push(patterns);
194
+ lines.push('');
195
+ }
196
+ // Best Practices
197
+ const bestPractices = this.extractBestPractices(sections);
198
+ if (bestPractices.length > 0) {
199
+ lines.push('## Best Practices');
200
+ lines.push('');
201
+ bestPractices.forEach(practice => {
202
+ lines.push(`- ${practice}`);
203
+ });
204
+ lines.push('');
205
+ }
206
+ // Pitfalls
207
+ const pitfalls = this.extractPitfalls(sections);
208
+ if (pitfalls.length > 0) {
209
+ lines.push('## Avoid These Mistakes');
210
+ lines.push('');
211
+ pitfalls.forEach(({ mistake, solution }) => {
212
+ lines.push(`- ❌ ${mistake}`);
213
+ lines.push(`- ✅ ${solution}`);
214
+ lines.push('');
215
+ });
216
+ }
217
+ return lines.join('\n');
218
+ }
219
+ /**
220
+ * Format craft name for Continue (camelCase for name field)
221
+ *
222
+ * @param name - Craft name in kebab-case
223
+ * @returns Formatted name in camelCase
224
+ */
225
+ formatName(name) {
226
+ const parts = name.split('-');
227
+ return parts[0] + parts.slice(1).map(p => p.charAt(0).toUpperCase() + p.slice(1)).join('');
228
+ }
229
+ /**
230
+ * Format craft name into readable title
231
+ *
232
+ * @param name - Craft name in kebab-case
233
+ * @returns Formatted title with capitalized words
234
+ */
235
+ formatTitle(name) {
236
+ return name
237
+ .split('-')
238
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
239
+ .join(' ');
240
+ }
241
+ }
242
+ exports.ContinueConverter = ContinueConverter;
243
+ //# sourceMappingURL=continue-converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continue-converter.js","sourceRoot":"","sources":["../../src/converters/continue-converter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import { BaseConverter } from './base-converter';
2
+ import type { CraftContent, ConvertedContent, ConverterMetadata } from '../types/converter';
3
+ /**
4
+ * Converts CraftDesk crafts to Cursor .mdc format
5
+ * https://docs.cursor.com/context/rules
6
+ */
7
+ export declare class CursorConverter extends BaseConverter {
8
+ /**
9
+ * Get converter metadata
10
+ *
11
+ * @returns Converter metadata
12
+ */
13
+ getMetadata(): ConverterMetadata;
14
+ /**
15
+ * Convert craft to Cursor .mdc format
16
+ *
17
+ * @param craft - Craft content to convert
18
+ * @returns Array of converted files
19
+ */
20
+ convert(craft: CraftContent): Promise<ConvertedContent[]>;
21
+ /**
22
+ * Build Cursor .mdc file content
23
+ *
24
+ * @param craft - Craft content
25
+ * @param sections - Parsed markdown sections
26
+ * @returns Formatted .mdc file content
27
+ */
28
+ private buildCursorMdc;
29
+ /**
30
+ * Infer file globs based on craft content
31
+ *
32
+ * @param craft - Craft content
33
+ * @param _sections - Parsed markdown sections (unused)
34
+ * @returns Array of glob patterns for file matching
35
+ */
36
+ private inferGlobs;
37
+ /**
38
+ * Format craft name into readable title
39
+ *
40
+ * @param name - Craft name in kebab-case
41
+ * @returns Formatted title with capitalized words
42
+ */
43
+ private formatTitle;
44
+ }
45
+ /**
46
+ * Converts CraftDesk crafts to legacy Cursor .cursorrules format
47
+ */
48
+ export declare class CursorLegacyConverter extends BaseConverter {
49
+ /**
50
+ * Get converter metadata
51
+ *
52
+ * @returns Converter metadata
53
+ */
54
+ getMetadata(): ConverterMetadata;
55
+ /**
56
+ * Convert craft to legacy .cursorrules format
57
+ *
58
+ * @param craft - Craft content to convert
59
+ * @returns Array of converted files
60
+ */
61
+ convert(craft: CraftContent): Promise<ConvertedContent[]>;
62
+ /**
63
+ * Format craft name into readable title
64
+ *
65
+ * @param name - Craft name in kebab-case
66
+ * @returns Formatted title with capitalized words
67
+ */
68
+ private formatTitle;
69
+ }
70
+ //# sourceMappingURL=cursor-converter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-converter.d.ts","sourceRoot":"","sources":["../../src/converters/cursor-converter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5F;;;GAGG;AACH,qBAAa,eAAgB,SAAQ,aAAa;IAChD;;;;OAIG;IACH,WAAW,IAAI,iBAAiB;IAUhC;;;;;OAKG;IACG,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAoB/D;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAoFtB;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IA0ClB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;CAMpB;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,aAAa;IACtD;;;;OAIG;IACH,WAAW,IAAI,iBAAiB;IAUhC;;;;;OAKG;IACG,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IA+D/D;;;;;OAKG;IACH,OAAO,CAAC,WAAW;CAMpB"}
@@ -0,0 +1,272 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CursorLegacyConverter = exports.CursorConverter = void 0;
4
+ const base_converter_1 = require("./base-converter");
5
+ /**
6
+ * Converts CraftDesk crafts to Cursor .mdc format
7
+ * https://docs.cursor.com/context/rules
8
+ */
9
+ class CursorConverter extends base_converter_1.BaseConverter {
10
+ /**
11
+ * Get converter metadata
12
+ *
13
+ * @returns Converter metadata
14
+ */
15
+ getMetadata() {
16
+ return {
17
+ name: 'Cursor Converter',
18
+ targetFormat: 'cursor',
19
+ description: 'Converts crafts to Cursor .mdc format in .cursor/rules/',
20
+ defaultOutputDir: '.cursor/rules',
21
+ supportedTypes: ['skill', 'agent', 'command']
22
+ };
23
+ }
24
+ /**
25
+ * Convert craft to Cursor .mdc format
26
+ *
27
+ * @param craft - Craft content to convert
28
+ * @returns Array of converted files
29
+ */
30
+ async convert(craft) {
31
+ const files = [];
32
+ // Extract sections
33
+ const sections = this.extractAllSections(craft.mainContent);
34
+ // Convert to Cursor .mdc format
35
+ const mdcContent = this.buildCursorMdc(craft, sections);
36
+ // Create the .mdc file
37
+ const fileName = `${craft.name}.mdc`;
38
+ files.push({
39
+ filePath: fileName,
40
+ content: mdcContent,
41
+ type: 'rule'
42
+ });
43
+ return files;
44
+ }
45
+ /**
46
+ * Build Cursor .mdc file content
47
+ *
48
+ * @param craft - Craft content
49
+ * @param sections - Parsed markdown sections
50
+ * @returns Formatted .mdc file content
51
+ */
52
+ buildCursorMdc(craft, sections) {
53
+ const lines = [];
54
+ // YAML frontmatter
55
+ lines.push('---');
56
+ lines.push(`description: ${craft.description || `Rules for ${craft.name}`}`);
57
+ // Add globs based on craft type and content
58
+ const globs = this.inferGlobs(craft, sections);
59
+ if (globs.length > 0) {
60
+ lines.push(`globs:`);
61
+ globs.forEach(glob => lines.push(` - "${glob}"`));
62
+ }
63
+ // Always apply for skills, manual for commands
64
+ lines.push(`alwaysApply: ${craft.type === 'skill'}`);
65
+ lines.push('---');
66
+ lines.push('');
67
+ // Title
68
+ lines.push(`# ${this.formatTitle(craft.name)}`);
69
+ lines.push('');
70
+ // Instructions/Overview
71
+ if (sections['instructions'] || craft.description) {
72
+ lines.push('## Overview');
73
+ lines.push('');
74
+ lines.push(sections['instructions'] || craft.description || '');
75
+ lines.push('');
76
+ }
77
+ // Code Patterns
78
+ const patterns = sections['common-patterns'] || sections['patterns'];
79
+ if (patterns) {
80
+ lines.push('## Code Patterns');
81
+ lines.push('');
82
+ lines.push(patterns);
83
+ lines.push('');
84
+ }
85
+ // Examples
86
+ const examples = sections['quick-reference'] || sections['examples'];
87
+ if (examples) {
88
+ lines.push('## Examples');
89
+ lines.push('');
90
+ lines.push(examples);
91
+ lines.push('');
92
+ }
93
+ // Best Practices
94
+ const bestPractices = this.extractBestPractices(sections);
95
+ if (bestPractices.length > 0) {
96
+ lines.push('## Best Practices');
97
+ lines.push('');
98
+ bestPractices.forEach(practice => {
99
+ lines.push(`- ${practice}`);
100
+ });
101
+ lines.push('');
102
+ }
103
+ // Common Pitfalls
104
+ const pitfalls = this.extractPitfalls(sections);
105
+ if (pitfalls.length > 0) {
106
+ lines.push('## Common Mistakes to Avoid');
107
+ lines.push('');
108
+ pitfalls.forEach(({ mistake, solution }) => {
109
+ lines.push(`- ❌ **Mistake**: ${mistake}`);
110
+ lines.push(` - ✅ **Instead**: ${solution}`);
111
+ });
112
+ lines.push('');
113
+ }
114
+ // Workflows
115
+ const workflows = sections['common-workflows'] || sections['workflows'];
116
+ if (workflows) {
117
+ lines.push('## Common Workflows');
118
+ lines.push('');
119
+ lines.push(workflows);
120
+ lines.push('');
121
+ }
122
+ return lines.join('\n');
123
+ }
124
+ /**
125
+ * Infer file globs based on craft content
126
+ *
127
+ * @param craft - Craft content
128
+ * @param _sections - Parsed markdown sections (unused)
129
+ * @returns Array of glob patterns for file matching
130
+ */
131
+ inferGlobs(craft, _sections) {
132
+ const globs = [];
133
+ const content = craft.mainContent.toLowerCase();
134
+ // Language-specific globs
135
+ const languagePatterns = {
136
+ ruby: ['**/*.rb', '**/*.rake', '**/Gemfile', '**/Rakefile'],
137
+ rails: ['**/*.rb', '**/*.erb', '**/*.haml', '**/config/**/*'],
138
+ javascript: ['**/*.js', '**/*.jsx'],
139
+ typescript: ['**/*.ts', '**/*.tsx'],
140
+ python: ['**/*.py'],
141
+ java: ['**/*.java'],
142
+ go: ['**/*.go'],
143
+ rust: ['**/*.rs'],
144
+ php: ['**/*.php'],
145
+ 'c++': ['**/*.cpp', '**/*.h', '**/*.hpp'],
146
+ 'c#': ['**/*.cs'],
147
+ swift: ['**/*.swift'],
148
+ kotlin: ['**/*.kt'],
149
+ react: ['**/*.jsx', '**/*.tsx'],
150
+ vue: ['**/*.vue'],
151
+ angular: ['**/*.ts', '**/*.html'],
152
+ docker: ['**/Dockerfile', '**/*.dockerfile', '**/docker-compose.yml'],
153
+ kubernetes: ['**/*.yaml', '**/*.yml']
154
+ };
155
+ // Check for language indicators
156
+ for (const [language, patterns] of Object.entries(languagePatterns)) {
157
+ if (content.includes(language) || craft.name.toLowerCase().includes(language)) {
158
+ globs.push(...patterns);
159
+ break; // Only use first match
160
+ }
161
+ }
162
+ // Default to all files if no specific language detected
163
+ if (globs.length === 0) {
164
+ globs.push('**/*');
165
+ }
166
+ return [...new Set(globs)]; // Remove duplicates
167
+ }
168
+ /**
169
+ * Format craft name into readable title
170
+ *
171
+ * @param name - Craft name in kebab-case
172
+ * @returns Formatted title with capitalized words
173
+ */
174
+ formatTitle(name) {
175
+ return name
176
+ .split('-')
177
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
178
+ .join(' ');
179
+ }
180
+ }
181
+ exports.CursorConverter = CursorConverter;
182
+ /**
183
+ * Converts CraftDesk crafts to legacy Cursor .cursorrules format
184
+ */
185
+ class CursorLegacyConverter extends base_converter_1.BaseConverter {
186
+ /**
187
+ * Get converter metadata
188
+ *
189
+ * @returns Converter metadata
190
+ */
191
+ getMetadata() {
192
+ return {
193
+ name: 'Cursor Legacy Converter',
194
+ targetFormat: 'cursor-legacy',
195
+ description: 'Converts crafts to legacy .cursorrules plain text format',
196
+ defaultOutputDir: '.',
197
+ supportedTypes: ['skill', 'agent', 'command']
198
+ };
199
+ }
200
+ /**
201
+ * Convert craft to legacy .cursorrules format
202
+ *
203
+ * @param craft - Craft content to convert
204
+ * @returns Array of converted files
205
+ */
206
+ async convert(craft) {
207
+ const files = [];
208
+ // Extract sections
209
+ const sections = this.extractAllSections(craft.mainContent);
210
+ // Build plain text rules
211
+ const lines = [];
212
+ lines.push(`# ${this.formatTitle(craft.name)}`);
213
+ lines.push('');
214
+ if (craft.description) {
215
+ lines.push(craft.description);
216
+ lines.push('');
217
+ }
218
+ // Instructions
219
+ if (sections['instructions']) {
220
+ lines.push('## Instructions');
221
+ lines.push('');
222
+ lines.push(sections['instructions']);
223
+ lines.push('');
224
+ }
225
+ // Patterns
226
+ const patterns = sections['common-patterns'] || sections['patterns'];
227
+ if (patterns) {
228
+ lines.push('## Code Patterns');
229
+ lines.push('');
230
+ lines.push(patterns);
231
+ lines.push('');
232
+ }
233
+ // Best Practices
234
+ const bestPractices = this.extractBestPractices(sections);
235
+ if (bestPractices.length > 0) {
236
+ lines.push('## Best Practices');
237
+ lines.push('');
238
+ bestPractices.forEach(practice => {
239
+ lines.push(`- ${practice}`);
240
+ });
241
+ lines.push('');
242
+ }
243
+ // Examples
244
+ const examples = sections['quick-reference'] || sections['examples'];
245
+ if (examples) {
246
+ lines.push('## Examples');
247
+ lines.push('');
248
+ lines.push(examples);
249
+ lines.push('');
250
+ }
251
+ files.push({
252
+ filePath: '.cursorrules',
253
+ content: lines.join('\n'),
254
+ type: 'rule'
255
+ });
256
+ return files;
257
+ }
258
+ /**
259
+ * Format craft name into readable title
260
+ *
261
+ * @param name - Craft name in kebab-case
262
+ * @returns Formatted title with capitalized words
263
+ */
264
+ formatTitle(name) {
265
+ return name
266
+ .split('-')
267
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
268
+ .join(' ');
269
+ }
270
+ }
271
+ exports.CursorLegacyConverter = CursorLegacyConverter;
272
+ //# sourceMappingURL=cursor-converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-converter.js","sourceRoot":"","sources":["../../src/converters/cursor-converter.ts"],"names":[],"mappings":"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"}