metacoding 1.5.0 → 2.0.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 (95) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/README.md +108 -514
  3. package/lib/cli.d.ts.map +1 -1
  4. package/lib/cli.js +18 -19
  5. package/lib/cli.js.map +1 -1
  6. package/lib/commands/init.d.ts +8 -14
  7. package/lib/commands/init.d.ts.map +1 -1
  8. package/lib/commands/init.js +105 -387
  9. package/lib/commands/init.js.map +1 -1
  10. package/lib/commands/update.d.ts +9 -9
  11. package/lib/commands/update.d.ts.map +1 -1
  12. package/lib/commands/update.js +141 -320
  13. package/lib/commands/update.js.map +1 -1
  14. package/lib/services/backup.d.ts +1 -1
  15. package/lib/services/backup.d.ts.map +1 -1
  16. package/lib/services/backup.js +10 -6
  17. package/lib/services/backup.js.map +1 -1
  18. package/lib/services/filesystem.d.ts.map +1 -1
  19. package/lib/services/filesystem.js +11 -5
  20. package/lib/services/filesystem.js.map +1 -1
  21. package/lib/services/gitignore-manager.js +5 -5
  22. package/lib/services/gitignore-manager.js.map +1 -1
  23. package/lib/services/project-detector.d.ts +9 -8
  24. package/lib/services/project-detector.d.ts.map +1 -1
  25. package/lib/services/project-detector.js +79 -197
  26. package/lib/services/project-detector.js.map +1 -1
  27. package/lib/services/skill-manager.d.ts +23 -0
  28. package/lib/services/skill-manager.d.ts.map +1 -0
  29. package/lib/services/skill-manager.js +212 -0
  30. package/lib/services/skill-manager.js.map +1 -0
  31. package/lib/types/index.d.ts +5 -15
  32. package/lib/types/index.d.ts.map +1 -1
  33. package/package.json +9 -17
  34. package/skills/metacoding-workflow/SKILL.md +52 -0
  35. package/skills/metacoding-workflow/agents/openai.yaml +4 -0
  36. package/skills/metacoding-workflow/assets/templates/changelog-entry.md +6 -0
  37. package/skills/metacoding-workflow/assets/templates/project-context.md +18 -0
  38. package/skills/metacoding-workflow/assets/templates/repeated-task-checklist.md +8 -0
  39. package/skills/metacoding-workflow/assets/templates/task-entry.md +9 -0
  40. package/skills/metacoding-workflow/assets/templates/test-plan.md +8 -0
  41. package/skills/metacoding-workflow/references/javascript.md +7 -0
  42. package/skills/metacoding-workflow/references/node.md +7 -0
  43. package/skills/metacoding-workflow/references/platform-adaptation.md +37 -0
  44. package/skills/metacoding-workflow/references/python.md +7 -0
  45. package/skills/metacoding-workflow/references/react.md +7 -0
  46. package/skills/metacoding-workflow/references/repository-organization.md +84 -0
  47. package/skills/metacoding-workflow/references/typescript.md +7 -0
  48. package/skills/metacoding-workflow/references/workflow-rules.md +54 -0
  49. package/skills/vendor-templates/claude-agent.md.template +41 -0
  50. package/lib/services/assistant-adapter.d.ts +0 -18
  51. package/lib/services/assistant-adapter.d.ts.map +0 -1
  52. package/lib/services/assistant-adapter.js +0 -246
  53. package/lib/services/assistant-adapter.js.map +0 -1
  54. package/lib/services/cursor.d.ts +0 -47
  55. package/lib/services/cursor.d.ts.map +0 -1
  56. package/lib/services/cursor.js +0 -314
  57. package/lib/services/cursor.js.map +0 -1
  58. package/lib/services/template-manager.d.ts +0 -23
  59. package/lib/services/template-manager.d.ts.map +0 -1
  60. package/lib/services/template-manager.js +0 -374
  61. package/lib/services/template-manager.js.map +0 -1
  62. package/lib/services/vscode.d.ts +0 -10
  63. package/lib/services/vscode.d.ts.map +0 -1
  64. package/lib/services/vscode.js +0 -108
  65. package/lib/services/vscode.js.map +0 -1
  66. package/templates/assistants/AGENTS.md +0 -203
  67. package/templates/assistants/CLAUDE.md +0 -156
  68. package/templates/assistants/GEMINI.md +0 -193
  69. package/templates/general/code-review.instructions.md +0 -265
  70. package/templates/general/copilot-instructions.md +0 -427
  71. package/templates/general/docs-update.instructions.md +0 -275
  72. package/templates/general/release.instructions.md +0 -242
  73. package/templates/general/template.json +0 -9
  74. package/templates/general/test-runner.instructions.md +0 -188
  75. package/templates/javascript/javascript.coding.instructions.md +0 -500
  76. package/templates/javascript/javascript.docs.instructions.md +0 -563
  77. package/templates/javascript/javascript.testing.instructions.md +0 -686
  78. package/templates/javascript/template.json +0 -36
  79. package/templates/node/nodejs.coding.instructions.md +0 -249
  80. package/templates/node/nodejs.docs.instructions.md +0 -261
  81. package/templates/node/nodejs.testing.instructions.md +0 -373
  82. package/templates/node/template.json +0 -23
  83. package/templates/python/python.coding.instructions.md +0 -338
  84. package/templates/python/python.docs.instructions.md +0 -1178
  85. package/templates/python/python.testing.instructions.md +0 -1073
  86. package/templates/python/template.json +0 -75
  87. package/templates/react/react.coding.instructions.md +0 -694
  88. package/templates/react/react.docs.instructions.md +0 -451
  89. package/templates/react/react.testing.instructions.md +0 -192
  90. package/templates/react/template.json +0 -14
  91. package/templates/react/test-runner.instructions.md +0 -135
  92. package/templates/typescript/template.json +0 -16
  93. package/templates/typescript/typescript.coding.instructions.md +0 -368
  94. package/templates/typescript/typescript.docs.instructions.md +0 -760
  95. package/templates/typescript/typescript.testing.instructions.md +0 -739
@@ -1,16 +1,16 @@
1
1
  import { UpdateOptions } from '../types';
2
2
  export declare class UpdateCommand {
3
- private templateManager;
4
- private backupService;
5
- private conflictService;
6
- private vscodeService;
7
- private projectDetector;
3
+ private readonly skillManager;
4
+ private readonly backupService;
5
+ private readonly conflictService;
6
+ private readonly projectDetector;
8
7
  constructor();
9
8
  execute(options: UpdateOptions): Promise<void>;
10
- private detectCurrentTemplate;
11
- private getProjectConfig;
12
- private getExistingMetacodingFiles;
13
9
  private validateSetup;
14
- private displayUpdateSummary;
10
+ private getDefaultTestFramework;
11
+ private getDefaultBuildTool;
12
+ private getTargetVendors;
13
+ private getRequiredFilesForVendor;
14
+ private normalizeVendor;
15
15
  }
16
16
  //# sourceMappingURL=update.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAUzC,qBAAa,aAAa;IACxB,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,eAAe,CAAkB;;IAUnC,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;YAgItC,qBAAqB;YAsBrB,gBAAgB;YAgBhB,0BAA0B;YA6B1B,aAAa;IAgR3B,OAAO,CAAC,oBAAoB;CAoB7B"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkC,aAAa,EAAE,MAAM,UAAU,CAAC;AASzE,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4B;IAC5D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;;IAS5C,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;YAuGtC,aAAa;IAyD3B,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,yBAAyB;IAgCjC,OAAO,CAAC,eAAe;CAcxB"}
@@ -41,367 +41,188 @@ const chalk_1 = __importDefault(require("chalk"));
41
41
  const ora_1 = __importDefault(require("ora"));
42
42
  const fs = __importStar(require("fs-extra"));
43
43
  const path = __importStar(require("path"));
44
- const template_manager_1 = require("../services/template-manager");
44
+ const yaml_1 = __importDefault(require("yaml"));
45
45
  const backup_1 = require("../services/backup");
46
46
  const conflict_resolution_1 = require("../services/conflict-resolution");
47
- const vscode_1 = require("../services/vscode");
48
47
  const project_detector_1 = require("../services/project-detector");
48
+ const skill_manager_1 = require("../services/skill-manager");
49
49
  class UpdateCommand {
50
50
  constructor() {
51
- this.templateManager = new template_manager_1.TemplateManager();
51
+ this.skillManager = new skill_manager_1.SkillManager();
52
52
  this.backupService = new backup_1.BackupService();
53
53
  this.conflictService = new conflict_resolution_1.ConflictResolutionService();
54
- this.vscodeService = new vscode_1.VSCodeService();
55
54
  this.projectDetector = new project_detector_1.ProjectDetector();
56
55
  }
57
56
  async execute(options) {
58
57
  if (options.dryRun) {
59
- return this.validateSetup(options);
58
+ await this.validateSetup(options);
59
+ return;
60
60
  }
61
- console.log(chalk_1.default.cyan('🔄 Updating metacoding setup...\n'));
62
- try {
63
- const spinner = (0, ora_1.default)('Detecting current template...').start();
64
- const currentTemplate = await this.detectCurrentTemplate(options.template);
65
- spinner.succeed(`Current template: ${currentTemplate}`);
66
- if (options.backup !== false) {
67
- const backupSpinner = (0, ora_1.default)('Creating backup...').start();
68
- const backupResult = await this.backupService.createBackup();
69
- backupSpinner.succeed(`Backup created at: ${backupResult.backupPath}`);
61
+ const installedVendors = await this.skillManager.getInstalledVendors();
62
+ if (installedVendors.length === 0) {
63
+ throw new Error('No metacoding workflow skill installation found. Run "metacoding init" first.');
64
+ }
65
+ const targetVendors = this.getTargetVendors(installedVendors, options.vendor);
66
+ console.log(chalk_1.default.cyan('Syncing metacoding workflow skill...\n'));
67
+ const projectInfo = await this.projectDetector.detectProject();
68
+ const projectType = options.template || projectInfo.type || 'general';
69
+ if (options.backup !== false) {
70
+ const backupSpinner = (0, ora_1.default)('Creating backup...').start();
71
+ const backupTargets = targetVendors.flatMap((vendor) => this.skillManager.getBackupTargets(vendor));
72
+ const backup = await this.backupService.createBackup(backupTargets);
73
+ backupSpinner.succeed(backup.filesBackedUp.length > 0
74
+ ? `Backup created at ${backup.backupPath}`
75
+ : 'No existing installation to back up');
76
+ }
77
+ let filesUpdated = 0;
78
+ for (const vendor of targetVendors) {
79
+ const projectConfig = {
80
+ name: projectInfo.name,
81
+ description: 'A project using the metacoding workflow skill',
82
+ techStack: projectInfo.techStack,
83
+ projectType,
84
+ testFramework: this.getDefaultTestFramework(projectType),
85
+ buildTool: this.getDefaultBuildTool(projectType),
86
+ vendor,
87
+ };
88
+ const packagedFiles = await this.skillManager.generateInstallationFiles(projectConfig);
89
+ const existingFiles = await this.skillManager.getInstalledFiles(vendor);
90
+ const conflictSpinner = (0, ora_1.default)(`Checking for local ${vendor} skill edits...`).start();
91
+ const conflicts = await this.conflictService.detectConflicts(packagedFiles, existingFiles);
92
+ if (conflicts.length === 0) {
93
+ conflictSpinner.succeed(`No local ${vendor} skill conflicts detected`);
70
94
  }
71
- const templateSpinner = (0, ora_1.default)('Loading template files...').start();
72
- const projectConfig = await this.getProjectConfig(currentTemplate);
73
- const template = await this.templateManager.getTemplate(currentTemplate, projectConfig);
74
- const templateFiles = await this.templateManager.processTemplate(template, projectConfig);
75
- templateSpinner.succeed(`Loaded ${templateFiles.length} template files`);
76
- const existingFiles = await this.getExistingMetacodingFiles();
77
- const conflictSpinner = (0, ora_1.default)('Checking for conflicts...').start();
78
- const conflicts = await this.conflictService.detectConflicts(templateFiles.map((f) => ({ path: f.path, content: f.content })), existingFiles);
79
- if (conflicts.length > 0) {
80
- conflictSpinner.warn(`Found ${conflicts.length} conflicts`);
81
- if (!options.force) {
82
- const resolutions = await this.conflictService.getConflictResolution(conflicts);
83
- const { preservedFiles } = await this.conflictService.applyResolutions(conflicts, resolutions);
84
- if (preservedFiles.length > 0) {
85
- console.log(chalk_1.default.yellow(`💾 Preserved ${preservedFiles.length} user files with user. prefix`));
95
+ else {
96
+ conflictSpinner.warn(`Found ${conflicts.length} locally edited ${vendor} skill files`);
97
+ if (options.force) {
98
+ for (const conflict of conflicts) {
99
+ await fs.writeFile(conflict.filePath, conflict.templateContent, 'utf8');
86
100
  }
87
101
  }
88
102
  else {
89
- for (const conflict of conflicts) {
90
- await fs.writeFile(conflict.filePath, conflict.templateContent);
91
- }
92
- console.log(chalk_1.default.yellow(`⚠️ Force mode: Replaced ${conflicts.length} conflicted files`));
103
+ const resolutions = await this.conflictService.getConflictResolution(conflicts);
104
+ await this.conflictService.applyResolutions(conflicts, resolutions);
93
105
  }
94
106
  }
95
- else {
96
- conflictSpinner.succeed('No conflicts detected');
97
- }
98
- const updateSpinner = (0, ora_1.default)('Updating template files...').start();
99
- let filesUpdated = 0;
100
- for (const file of templateFiles) {
101
- const isConflicted = conflicts.some((c) => c.filePath === file.path);
102
- if (!isConflicted) {
107
+ const writeSpinner = (0, ora_1.default)(`Syncing packaged ${vendor} skill files...`).start();
108
+ let vendorFilesUpdated = 0;
109
+ for (const file of packagedFiles) {
110
+ const conflicted = conflicts.some((conflict) => conflict.filePath === file.path);
111
+ if (!conflicted || options.force) {
103
112
  await fs.ensureDir(path.dirname(file.path));
104
- await fs.writeFile(file.path, file.content);
113
+ await fs.writeFile(file.path, file.content, 'utf8');
105
114
  filesUpdated++;
115
+ vendorFilesUpdated++;
106
116
  }
107
117
  }
108
- updateSpinner.succeed(`Updated ${filesUpdated} files`);
109
- const vscodeSpinner = (0, ora_1.default)('Updating VS Code settings...').start();
110
- await this.vscodeService.updateSettings(template.vscodeSettings || {});
111
- vscodeSpinner.succeed('VS Code settings updated');
112
- await this.backupService.cleanupOldBackups();
113
- console.log(chalk_1.default.green.bold('\n✅ metacoding update complete!\n'));
114
- this.displayUpdateSummary({
115
- template: currentTemplate,
116
- filesUpdated,
117
- conflictsResolved: conflicts.length,
118
- backupCreated: options.backup !== false,
119
- });
120
- }
121
- catch (error) {
122
- const errorMessage = error instanceof Error ? error.message : String(error);
123
- console.error(chalk_1.default.red('\n❌ Update failed:'), errorMessage);
124
- if (process.env.NODE_ENV !== 'test') {
125
- process.exit(1);
126
- }
127
- else {
128
- throw error;
129
- }
118
+ writeSpinner.succeed(`Updated ${vendor} skill files (${vendorFilesUpdated} files)`);
130
119
  }
131
- }
132
- async detectCurrentTemplate(specifiedTemplate) {
133
- if (specifiedTemplate) {
134
- return specifiedTemplate;
135
- }
136
- if (!(await fs.pathExists('.github'))) {
137
- throw new Error('No metacoding setup found. Run "metacoding init" first.');
138
- }
139
- const projectInfo = await this.projectDetector.detectProject();
140
- return projectInfo.projectType || 'general';
141
- }
142
- async getProjectConfig(templateType) {
143
- const projectInfo = await this.projectDetector.detectProject();
144
- return {
145
- name: projectInfo.name || path.basename(process.cwd()),
146
- description: projectInfo.description || 'A guided development project',
147
- techStack: projectInfo.techStack || [],
148
- projectType: templateType,
149
- testFramework: projectInfo.testFramework,
150
- buildTool: projectInfo.buildTool,
151
- };
152
- }
153
- async getExistingMetacodingFiles() {
154
- const files = [];
155
- const githubDir = '.github';
156
- if (!(await fs.pathExists(githubDir))) {
157
- return files;
158
- }
159
- const mainFile = path.join(githubDir, 'copilot-instructions.md');
160
- if (await fs.pathExists(mainFile)) {
161
- files.push(mainFile);
162
- }
163
- const instructionsDir = path.join(githubDir, 'instructions');
164
- if (await fs.pathExists(instructionsDir)) {
165
- const instructionFiles = await fs.readdir(instructionsDir);
166
- for (const file of instructionFiles) {
167
- files.push(path.join(instructionsDir, file));
168
- }
169
- }
170
- return files;
120
+ await this.backupService.cleanupOldBackups();
121
+ console.log(chalk_1.default.green.bold(`\nmetacoding workflow skill is up to date (${filesUpdated} files synced).\n`));
171
122
  }
172
123
  async validateSetup(options) {
173
- console.log(chalk_1.default.cyan('🔍 Validating metacoding setup...\n'));
174
- const validationResults = [];
175
- let hasErrors = false;
176
- let hasWarnings = false;
177
- try {
178
- const fileSpinner = (0, ora_1.default)('Checking file structure...').start();
179
- const requiredFiles = [
180
- '.github/copilot-instructions.md',
181
- '.github/instructions/code-review.instructions.md',
182
- '.github/instructions/docs-update.instructions.md',
183
- '.github/instructions/release.instructions.md',
184
- '.github/instructions/test-runner.instructions.md',
185
- ];
124
+ console.log(chalk_1.default.cyan('Validating metacoding workflow skill...\n'));
125
+ const installedVendors = await this.skillManager.getInstalledVendors();
126
+ if (installedVendors.length === 0) {
127
+ throw new Error('Validation failed: no vendor-specific metacoding installation was found.');
128
+ }
129
+ const targetVendors = this.getTargetVendors(installedVendors, options.vendor);
130
+ for (const vendor of targetVendors) {
131
+ const requiredFiles = this.getRequiredFilesForVendor(vendor);
186
132
  let missingFiles = 0;
187
133
  for (const file of requiredFiles) {
188
134
  if (!(await fs.pathExists(file))) {
189
- validationResults.push({
190
- check: `File ${file}`,
191
- status: 'fail',
192
- message: 'Missing required file',
193
- });
194
135
  missingFiles++;
195
- hasErrors = true;
196
- }
197
- }
198
- if (missingFiles === 0) {
199
- fileSpinner.succeed('File structure complete');
200
- validationResults.push({
201
- check: 'File structure',
202
- status: 'pass',
203
- });
204
- }
205
- else {
206
- fileSpinner.fail(`Missing ${missingFiles} required files`);
207
- }
208
- const vscodeSpinner = (0, ora_1.default)('Checking VS Code configuration...').start();
209
- try {
210
- const vscodeSettingsPath = '.vscode/settings.json';
211
- if (await fs.pathExists(vscodeSettingsPath)) {
212
- const settings = await fs.readJson(vscodeSettingsPath);
213
- const requiredSettings = ['github.copilot.chat.promptFiles'];
214
- let missingSettings = 0;
215
- for (const setting of requiredSettings) {
216
- if (!settings[setting]) {
217
- validationResults.push({
218
- check: `VS Code setting '${setting}'`,
219
- status: options.strict ? 'fail' : 'warn',
220
- message: 'Not configured',
221
- });
222
- missingSettings++;
223
- if (options.strict) {
224
- hasErrors = true;
225
- }
226
- else {
227
- hasWarnings = true;
228
- }
229
- }
230
- }
231
- if (missingSettings === 0) {
232
- vscodeSpinner.succeed('VS Code configuration valid');
233
- validationResults.push({
234
- check: 'VS Code configuration',
235
- status: 'pass',
236
- });
237
- }
238
- else if (options.strict) {
239
- vscodeSpinner.fail(`Missing ${missingSettings} required settings`);
240
- }
241
- else {
242
- vscodeSpinner.warn(`Missing ${missingSettings} recommended settings`);
243
- }
244
- }
245
- else {
246
- vscodeSpinner.warn('VS Code settings file not found');
247
- validationResults.push({
248
- check: 'VS Code settings file',
249
- status: 'warn',
250
- message: 'File not found',
251
- });
252
- hasWarnings = true;
136
+ console.log(chalk_1.default.red(`Missing: ${file}`));
253
137
  }
254
138
  }
255
- catch {
256
- vscodeSpinner.fail('Error reading VS Code settings');
257
- validationResults.push({
258
- check: 'VS Code configuration',
259
- status: 'fail',
260
- message: 'Error reading settings file',
261
- });
262
- hasErrors = true;
263
- }
264
- const gitSpinner = (0, ora_1.default)('Checking Git repository...').start();
265
- if (await fs.pathExists('.git')) {
266
- gitSpinner.succeed('Git repository configured');
267
- validationResults.push({
268
- check: 'Git repository',
269
- status: 'pass',
270
- });
271
- }
272
- else {
273
- const message = 'No Git repository found';
274
- if (options.strict) {
275
- gitSpinner.fail(message);
276
- validationResults.push({
277
- check: 'Git repository',
278
- status: 'fail',
279
- message,
280
- });
281
- hasErrors = true;
282
- }
283
- else {
284
- gitSpinner.warn(message);
285
- validationResults.push({
286
- check: 'Git repository',
287
- status: 'warn',
288
- message,
289
- });
290
- hasWarnings = true;
291
- }
139
+ if (missingFiles > 0) {
140
+ throw new Error(`Validation failed: ${missingFiles} required ${vendor} skill files are missing.`);
292
141
  }
293
- const templateSpinner = (0, ora_1.default)('Checking template integrity...').start();
294
- try {
295
- await this.detectCurrentTemplate(options.template);
296
- if (await fs.pathExists('.github/copilot-instructions.md')) {
297
- const content = await fs.readFile('.github/copilot-instructions.md', 'utf-8');
298
- const hasPlaceholders = content.includes('{{') && content.includes('}}');
299
- if (hasPlaceholders) {
300
- templateSpinner.fail('Template variables not substituted');
301
- validationResults.push({
302
- check: 'Template integrity',
303
- status: 'fail',
304
- message: 'Unprocessed template variables found',
305
- });
306
- hasErrors = true;
307
- }
308
- else {
309
- templateSpinner.succeed('Template integrity verified');
310
- validationResults.push({
311
- check: 'Template integrity',
312
- status: 'pass',
313
- });
314
- }
315
- }
316
- else {
317
- templateSpinner.warn('Cannot verify template integrity - main file missing');
318
- validationResults.push({
319
- check: 'Template integrity',
320
- status: 'warn',
321
- message: 'Main instruction file missing',
322
- });
323
- hasWarnings = true;
324
- }
325
- }
326
- catch {
327
- templateSpinner.fail('Error checking template integrity');
328
- validationResults.push({
329
- check: 'Template integrity',
330
- status: 'fail',
331
- message: 'Error during template validation',
332
- });
333
- hasErrors = true;
334
- }
335
- console.log('');
336
- for (const result of validationResults) {
337
- const icon = result.status === 'pass'
338
- ? '✅'
339
- : result.status === 'warn'
340
- ? '⚠️'
341
- : '❌';
342
- const message = result.message ? ` - ${result.message}` : '';
343
- console.log(`${icon} ${result.check}${message}`);
344
- }
345
- console.log('');
346
- const totalChecks = validationResults.length;
347
- const passedChecks = validationResults.filter((r) => r.status === 'pass').length;
348
- if (hasErrors) {
349
- console.log(chalk_1.default.red.bold('❌ Validation failed with errors\n'));
350
- console.log(chalk_1.default.cyan('Suggestions:'));
351
- console.log("- Run 'metacoding update' to restore missing files");
352
- console.log('- Check VS Code settings configuration');
353
- console.log("- Ensure you're in a Git repository");
354
- console.log(chalk_1.default.dim(`\nSummary: ${passedChecks}/${totalChecks} checks passed`));
355
- if (process.env.NODE_ENV !== 'test') {
356
- process.exit(1);
357
- }
358
- else {
359
- throw new Error('Validation failed');
142
+ if (vendor === 'codex') {
143
+ const yamlPath = '.codex/skills/metacoding-workflow/agents/openai.yaml';
144
+ const yamlContent = await fs.readFile(yamlPath, 'utf8');
145
+ const parsed = yaml_1.default.parse(yamlContent);
146
+ if (!parsed?.interface?.display_name || !parsed?.interface?.default_prompt) {
147
+ throw new Error('Validation failed: agents/openai.yaml is missing required interface fields.');
360
148
  }
361
149
  }
362
- else if (hasWarnings && options.strict) {
363
- console.log(chalk_1.default.yellow.bold('⚠️ Validation completed with warnings\n'));
364
- console.log(chalk_1.default.cyan('Suggestions:'));
365
- console.log('- Configure recommended VS Code settings');
366
- console.log('- Consider initializing a Git repository');
367
- console.log(chalk_1.default.dim(`\nSummary: ${passedChecks}/${totalChecks} checks passed`));
368
- if (process.env.NODE_ENV !== 'test') {
369
- process.exit(2);
370
- }
371
- else {
372
- throw new Error('Validation completed with warnings');
150
+ }
151
+ if (options.strict) {
152
+ const gitignorePath = '.gitignore';
153
+ if (await fs.pathExists(gitignorePath)) {
154
+ const content = await fs.readFile(gitignorePath, 'utf8');
155
+ if (!content.includes('# metacoding: AI coding assistant exclusions')) {
156
+ throw new Error('Validation failed: .gitignore is missing the metacoding skill exclusion.');
373
157
  }
374
158
  }
375
- else {
376
- console.log(chalk_1.default.green.bold('🎉 metacoding setup is valid and ready to use!\n'));
377
- console.log(chalk_1.default.dim(`Summary: ${passedChecks}/${totalChecks} checks passed`));
378
- }
379
159
  }
380
- catch (error) {
381
- if (error instanceof Error && error.message.includes('Validation')) {
382
- throw error;
383
- }
384
- const errorMessage = error instanceof Error ? error.message : String(error);
385
- console.error(chalk_1.default.red('\n❌ Validation failed:'), errorMessage);
386
- if (process.env.NODE_ENV !== 'test') {
387
- process.exit(1);
388
- }
389
- else {
390
- throw error;
391
- }
160
+ console.log(chalk_1.default.green('Validation passed.'));
161
+ }
162
+ getDefaultTestFramework(projectType) {
163
+ return projectType === 'python'
164
+ ? 'Pytest'
165
+ : projectType === 'react'
166
+ ? 'Jest + React Testing Library'
167
+ : 'Use the repository default';
168
+ }
169
+ getDefaultBuildTool(projectType) {
170
+ return projectType === 'react'
171
+ ? 'Vite'
172
+ : projectType === 'python'
173
+ ? 'Poetry or the repository default'
174
+ : 'Use the repository default';
175
+ }
176
+ getTargetVendors(installedVendors, selectedVendor) {
177
+ if (!selectedVendor) {
178
+ return installedVendors;
179
+ }
180
+ const normalizedVendor = this.normalizeVendor(selectedVendor);
181
+ if (normalizedVendor === 'all') {
182
+ return installedVendors;
183
+ }
184
+ if (!installedVendors.includes(normalizedVendor)) {
185
+ throw new Error(`No installed metacoding skill was found for vendor "${normalizedVendor}".`);
392
186
  }
187
+ return [normalizedVendor];
393
188
  }
394
- displayUpdateSummary(summary) {
395
- console.log(chalk_1.default.cyan('Update Summary:'));
396
- console.log(` Template: ${summary.template}`);
397
- console.log(` Files updated: ${summary.filesUpdated}`);
398
- if (summary.conflictsResolved > 0) {
399
- console.log(` Conflicts resolved: ${summary.conflictsResolved}`);
189
+ getRequiredFilesForVendor(vendor) {
190
+ if (vendor === 'codex') {
191
+ return [
192
+ '.codex/skills/metacoding-workflow/SKILL.md',
193
+ '.codex/skills/metacoding-workflow/agents/openai.yaml',
194
+ '.codex/skills/metacoding-workflow/references/workflow-rules.md',
195
+ '.codex/skills/metacoding-workflow/references/platform-adaptation.md',
196
+ '.codex/skills/metacoding-workflow/references/project-context.md',
197
+ '.codex/skills/metacoding-workflow/assets/templates/task-entry.md',
198
+ ];
199
+ }
200
+ if (vendor === 'claude-code') {
201
+ return [
202
+ '.claude/agents/metacoding-workflow.md',
203
+ '.claude/metacoding-workflow/SKILL.md',
204
+ '.claude/metacoding-workflow/references/workflow-rules.md',
205
+ '.claude/metacoding-workflow/references/platform-adaptation.md',
206
+ '.claude/metacoding-workflow/references/project-context.md',
207
+ '.claude/metacoding-workflow/assets/templates/task-entry.md',
208
+ ];
400
209
  }
401
- if (summary.backupCreated) {
402
- console.log(` Backup: Created in .backup/ directory`);
210
+ return [
211
+ '.agents/skills/metacoding-workflow/SKILL.md',
212
+ '.agents/skills/metacoding-workflow/references/workflow-rules.md',
213
+ '.agents/skills/metacoding-workflow/references/platform-adaptation.md',
214
+ '.agents/skills/metacoding-workflow/references/project-context.md',
215
+ '.agents/skills/metacoding-workflow/assets/templates/task-entry.md',
216
+ ];
217
+ }
218
+ normalizeVendor(vendor) {
219
+ if (vendor === 'codex' ||
220
+ vendor === 'claude-code' ||
221
+ vendor === 'antigravity' ||
222
+ vendor === 'all') {
223
+ return vendor;
403
224
  }
404
- console.log('\n' + chalk_1.default.dim('Your metacoding setup is now up to date!'));
225
+ throw new Error(`Unsupported vendor "${vendor}". Use codex, claude-code, antigravity, or all.`);
405
226
  }
406
227
  }
407
228
  exports.UpdateCommand = UpdateCommand;
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { BackupResult } from '../types';
2
2
  export declare class BackupService {
3
3
  private readonly backupBaseDir;
4
- createBackup(): Promise<BackupResult>;
4
+ createBackup(targets?: string[]): Promise<BackupResult>;
5
5
  private generateTimestamp;
6
6
  private listAllFiles;
7
7
  getFileHash(filePath: string): Promise<string | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/services/backup.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAKxC,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAa;IAKrC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC;IA6B3C,OAAO,CAAC,iBAAiB;YAYX,YAAY;IA2BpB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAYrD,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,OAAO,CAAC;IAqBb,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;CAmBzC"}
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/services/backup.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAKxC,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAa;IAKrC,YAAY,CAAC,OAAO,GAAE,MAAM,EAA0C,GAAG,OAAO,CAAC,YAAY,CAAC;IA0BpG,OAAO,CAAC,iBAAiB;YAYX,YAAY;IAgCpB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAYrD,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,OAAO,CAAC;IAqBb,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;CAmBzC"}
@@ -41,16 +41,16 @@ class BackupService {
41
41
  constructor() {
42
42
  this.backupBaseDir = '.backup';
43
43
  }
44
- async createBackup() {
44
+ async createBackup(targets = ['.codex/skills/metacoding-workflow']) {
45
45
  const timestamp = this.generateTimestamp();
46
46
  const backupPath = path.join(this.backupBaseDir, timestamp);
47
- const githubDir = '.github';
48
47
  await fs.ensureDir(backupPath);
49
48
  const filesBackedUp = [];
50
- if (await fs.pathExists(githubDir)) {
51
- await fs.copy(githubDir, path.join(backupPath, githubDir));
52
- const allFiles = await this.listAllFiles(githubDir);
53
- filesBackedUp.push(...allFiles);
49
+ for (const target of targets) {
50
+ if (await fs.pathExists(target)) {
51
+ await fs.copy(target, path.join(backupPath, target));
52
+ filesBackedUp.push(...(await this.listAllFiles(target)));
53
+ }
54
54
  }
55
55
  return {
56
56
  backupPath,
@@ -71,6 +71,10 @@ class BackupService {
71
71
  if (!(await fs.pathExists(dirPath))) {
72
72
  return files;
73
73
  }
74
+ const stat = await fs.stat(dirPath);
75
+ if (stat.isFile()) {
76
+ return [dirPath];
77
+ }
74
78
  const items = await fs.readdir(dirPath);
75
79
  for (const item of items) {
76
80
  const itemPath = path.join(dirPath, item);