moicle 1.6.0 → 2.0.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 (56) hide show
  1. package/README.md +82 -32
  2. package/assets/skills/docs/content/SKILL.md +269 -0
  3. package/assets/skills/{logo-design → docs/logo}/SKILL.md +31 -16
  4. package/assets/skills/{sync-docs → docs/sync}/SKILL.md +31 -1
  5. package/assets/skills/{video-content → docs/video}/SKILL.md +32 -17
  6. package/assets/skills/docs/write/SKILL.md +371 -0
  7. package/assets/skills/feature/api/SKILL.md +277 -0
  8. package/assets/skills/feature/deprecate/SKILL.md +276 -0
  9. package/assets/skills/{new-feature → feature/new}/SKILL.md +28 -12
  10. package/assets/skills/{refactor → feature/refactor}/SKILL.md +24 -12
  11. package/assets/skills/{hotfix → fix/hotfix}/SKILL.md +32 -30
  12. package/assets/skills/fix/incident/SKILL.md +272 -0
  13. package/assets/skills/{fix-pr-comment → fix/pr-comment}/SKILL.md +30 -1
  14. package/assets/skills/fix/root-cause/SKILL.md +219 -0
  15. package/assets/skills/{onboarding → research/onboarding}/SKILL.md +32 -31
  16. package/assets/skills/{spike → research/spike}/SKILL.md +33 -32
  17. package/assets/skills/research/web/SKILL.md +163 -0
  18. package/assets/skills/{architect-review → review/architect}/SKILL.md +37 -7
  19. package/assets/skills/{review-changes → review/branch}/SKILL.md +27 -7
  20. package/assets/skills/{pr-review → review/pr}/SKILL.md +31 -30
  21. package/assets/skills/review/tdd/SKILL.md +206 -0
  22. package/bin/cli.js +12 -1
  23. package/dist/commands/install.d.ts.map +1 -1
  24. package/dist/commands/install.js +219 -38
  25. package/dist/commands/install.js.map +1 -1
  26. package/dist/commands/list.d.ts.map +1 -1
  27. package/dist/commands/list.js +42 -2
  28. package/dist/commands/list.js.map +1 -1
  29. package/dist/commands/postinstall.d.ts.map +1 -1
  30. package/dist/commands/postinstall.js +2 -0
  31. package/dist/commands/postinstall.js.map +1 -1
  32. package/dist/commands/status.d.ts.map +1 -1
  33. package/dist/commands/status.js +31 -1
  34. package/dist/commands/status.js.map +1 -1
  35. package/dist/commands/uninstall.d.ts.map +1 -1
  36. package/dist/commands/uninstall.js +93 -38
  37. package/dist/commands/uninstall.js.map +1 -1
  38. package/dist/commands/upgrade.d.ts +7 -0
  39. package/dist/commands/upgrade.d.ts.map +1 -0
  40. package/dist/commands/upgrade.js +165 -0
  41. package/dist/commands/upgrade.js.map +1 -0
  42. package/dist/types.d.ts +1 -1
  43. package/dist/types.d.ts.map +1 -1
  44. package/dist/utils/symlink.d.ts +8 -0
  45. package/dist/utils/symlink.d.ts.map +1 -1
  46. package/dist/utils/symlink.js +100 -0
  47. package/dist/utils/symlink.js.map +1 -1
  48. package/package.json +3 -1
  49. package/assets/skills/api-integration/SKILL.md +0 -883
  50. package/assets/skills/content-writer/SKILL.md +0 -721
  51. package/assets/skills/deep-debug/SKILL.md +0 -114
  52. package/assets/skills/deprecation/SKILL.md +0 -923
  53. package/assets/skills/documentation/SKILL.md +0 -1333
  54. package/assets/skills/incident-response/SKILL.md +0 -946
  55. package/assets/skills/research/SKILL.md +0 -124
  56. package/assets/skills/tdd/SKILL.md +0 -828
@@ -3,8 +3,8 @@ import inquirer from 'inquirer';
3
3
  import ora from 'ora';
4
4
  import path from 'path';
5
5
  import fs from 'fs';
6
- import { ASSETS_DIR, removeItem, listItems, getAgentsDir, getCommandsDir, getSkillsDir, getEditorDir, getEditorConfig, } from '../utils/symlink.js';
7
- import { removeTarget } from '../utils/config.js';
6
+ import { ASSETS_DIR, EDITOR_CONFIGS, removeItem, listItems, getAgentsDir, getCommandsDir, getSkillsDir, getEditorDir, getEditorConfig, } from '../utils/symlink.js';
7
+ import { getTargets, removeTarget } from '../utils/config.js';
8
8
  const printHeader = () => {
9
9
  console.log('');
10
10
  console.log(chalk.cyan('════════════════════════════════════════'));
@@ -65,6 +65,52 @@ const uninstallScope = async (scope) => {
65
65
  console.log('');
66
66
  console.log(chalk.green(`✓ ${label} uninstall complete!`));
67
67
  };
68
+ const getCodexManagedNames = () => {
69
+ const architecture = [];
70
+ const skills = [];
71
+ const archDir = path.join(ASSETS_DIR, 'architecture');
72
+ if (fs.existsSync(archDir)) {
73
+ fs.readdirSync(archDir).forEach((name) => architecture.push(name));
74
+ }
75
+ const skillsDir = path.join(ASSETS_DIR, 'skills');
76
+ if (fs.existsSync(skillsDir)) {
77
+ fs.readdirSync(skillsDir).forEach((name) => skills.push(name));
78
+ }
79
+ const commandsDir = path.join(ASSETS_DIR, 'commands');
80
+ if (fs.existsSync(commandsDir)) {
81
+ fs.readdirSync(commandsDir).forEach((name) => skills.push(name.replace(/\.md$/, '')));
82
+ }
83
+ for (const dirName of ['developers', 'utilities']) {
84
+ const agentsDir = path.join(ASSETS_DIR, 'agents', dirName);
85
+ if (fs.existsSync(agentsDir)) {
86
+ fs.readdirSync(agentsDir).forEach((name) => skills.push(name.replace(/\.md$/, '')));
87
+ }
88
+ }
89
+ return { architecture, skills };
90
+ };
91
+ const uninstallCodexScope = async (scope) => {
92
+ const label = scope === 'global' ? 'Global' : 'Project';
93
+ const targetDir = getEditorDir('codex', scope);
94
+ const spinner = ora(`Uninstalling Codex assets from ${label.toLowerCase()} scope...`).start();
95
+ const managed = getCodexManagedNames();
96
+ let removed = 0;
97
+ const archDir = path.join(targetDir, 'architecture');
98
+ for (const name of managed.architecture) {
99
+ const result = removeItem(path.join(archDir, name));
100
+ if (result.status === 'removed') {
101
+ removed++;
102
+ }
103
+ }
104
+ const skillsDir = path.join(targetDir, 'skills');
105
+ for (const name of managed.skills) {
106
+ const result = removeItem(path.join(skillsDir, name));
107
+ if (result.status === 'removed') {
108
+ removed++;
109
+ }
110
+ }
111
+ spinner.succeed(`Removed ${removed} Codex items from ${label.toLowerCase()} scope`);
112
+ console.log(chalk.green(`✓ ${label} Codex uninstall complete!`));
113
+ };
68
114
  const uninstallForOtherEditor = async (target) => {
69
115
  const config = getEditorConfig(target);
70
116
  const spinner = ora(`Uninstalling from ${config.name}...`).start();
@@ -86,38 +132,33 @@ const uninstallForOtherEditor = async (target) => {
86
132
  }
87
133
  removeTarget(target);
88
134
  };
89
- // Temporarily hidden for open-source release - only Claude Code support
90
- // const showTargetMenu = async (): Promise<EditorTarget[]> => {
91
- // const installedTargets = getTargets();
92
- //
93
- // if (installedTargets.length === 0) {
94
- // return ['claude'];
95
- // }
96
- //
97
- // const { targets } = await inquirer.prompt([
98
- // {
99
- // type: 'checkbox',
100
- // name: 'targets',
101
- // message: 'Select target editor(s) to uninstall:',
102
- // choices: installedTargets.map((t) => ({
103
- // name: EDITOR_CONFIGS[t].name,
104
- // value: t,
105
- // checked: true,
106
- // })),
107
- // },
108
- // ]);
109
- //
110
- // return targets;
111
- // };
112
- const showInteractiveMenu = async () => {
135
+ const showTargetMenu = async () => {
136
+ const installedTargets = getTargets();
137
+ const availableTargets = installedTargets.length > 0 ? installedTargets : ['claude', 'codex'];
138
+ const { target } = await inquirer.prompt([
139
+ {
140
+ type: 'list',
141
+ name: 'target',
142
+ message: 'Select target editor to uninstall:',
143
+ choices: availableTargets.map((value) => ({
144
+ name: EDITOR_CONFIGS[value].name,
145
+ value,
146
+ })),
147
+ },
148
+ ]);
149
+ return target;
150
+ };
151
+ const showInteractiveMenu = async (target) => {
152
+ const globalPath = target === 'claude' ? '~/.claude/' : '~/.codex/';
153
+ const projectPath = target === 'claude' ? './.claude/' : './.codex/';
113
154
  const { uninstallType } = await inquirer.prompt([
114
155
  {
115
156
  type: 'list',
116
157
  name: 'uninstallType',
117
158
  message: 'Where would you like to uninstall from?',
118
159
  choices: [
119
- { name: 'Global (~/.claude/)', value: 'global' },
120
- { name: 'Project (./.claude/)', value: 'project' },
160
+ { name: `Global (${globalPath})`, value: 'global' },
161
+ { name: `Project (${projectPath})`, value: 'project' },
121
162
  { name: 'Both', value: 'all' },
122
163
  ],
123
164
  },
@@ -138,11 +179,9 @@ const showInteractiveMenu = async () => {
138
179
  };
139
180
  export const uninstallCommand = async (options) => {
140
181
  printHeader();
141
- // Temporarily hardcoded to Claude Code only for open-source release
142
- const targets = ['claude'];
143
- // const targets = await showTargetMenu();
182
+ const targets = options.target ? [options.target] : [await showTargetMenu()];
144
183
  for (const target of targets) {
145
- if (target === 'claude') {
184
+ if (target === 'claude' || target === 'codex') {
146
185
  let uninstallType;
147
186
  if (options.global) {
148
187
  uninstallType = 'global';
@@ -154,21 +193,37 @@ export const uninstallCommand = async (options) => {
154
193
  uninstallType = 'all';
155
194
  }
156
195
  else {
157
- uninstallType = await showInteractiveMenu();
196
+ uninstallType = await showInteractiveMenu(target);
158
197
  }
159
198
  switch (uninstallType) {
160
199
  case 'global':
161
- await uninstallScope('global');
200
+ if (target === 'claude') {
201
+ await uninstallScope('global');
202
+ }
203
+ else {
204
+ await uninstallCodexScope('global');
205
+ }
162
206
  break;
163
207
  case 'project':
164
- await uninstallScope('project');
208
+ if (target === 'claude') {
209
+ await uninstallScope('project');
210
+ }
211
+ else {
212
+ await uninstallCodexScope('project');
213
+ }
165
214
  break;
166
215
  case 'all':
167
- await uninstallScope('global');
168
- await uninstallScope('project');
216
+ if (target === 'claude') {
217
+ await uninstallScope('global');
218
+ await uninstallScope('project');
219
+ }
220
+ else {
221
+ await uninstallCodexScope('global');
222
+ await uninstallCodexScope('project');
223
+ }
169
224
  break;
170
225
  }
171
- removeTarget('claude');
226
+ removeTarget(target);
172
227
  }
173
228
  else {
174
229
  await uninstallForOtherEditor(target);
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface UpgradeOptions {
2
+ yes?: boolean;
3
+ reinstall?: boolean;
4
+ }
5
+ export declare const upgradeCommand: (options?: UpgradeOptions) => Promise<void>;
6
+ export {};
7
+ //# sourceMappingURL=upgrade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"AAWA,UAAU,cAAc;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAwHD,eAAO,MAAM,cAAc,GAAU,UAAS,cAAmB,KAAG,OAAO,CAAC,IAAI,CAmE/E,CAAC"}
@@ -0,0 +1,165 @@
1
+ import chalk from 'chalk';
2
+ import inquirer from 'inquirer';
3
+ import ora from 'ora';
4
+ import { execSync, spawnSync } from 'child_process';
5
+ import { createRequire } from 'module';
6
+ const require = createRequire(import.meta.url);
7
+ const pkg = require('../../package.json');
8
+ const PACKAGE_NAME = 'moicle';
9
+ const printHeader = () => {
10
+ console.log('');
11
+ console.log(chalk.cyan('════════════════════════════════════════'));
12
+ console.log(chalk.cyan(' MoiCle - Upgrade'));
13
+ console.log(chalk.cyan('════════════════════════════════════════'));
14
+ console.log('');
15
+ };
16
+ const parseSemver = (version) => {
17
+ const clean = version.trim().replace(/^v/, '').split('-')[0];
18
+ const parts = clean.split('.').map((n) => Number.parseInt(n, 10));
19
+ const [major = 0, minor = 0, patch = 0] = parts;
20
+ return [major, minor, patch];
21
+ };
22
+ const compareVersions = (a, b) => {
23
+ const [aMaj, aMin, aPatch] = parseSemver(a);
24
+ const [bMaj, bMin, bPatch] = parseSemver(b);
25
+ if (aMaj !== bMaj)
26
+ return aMaj - bMaj;
27
+ if (aMin !== bMin)
28
+ return aMin - bMin;
29
+ return aPatch - bPatch;
30
+ };
31
+ const fetchLatestVersion = () => {
32
+ const result = spawnSync('npm', ['view', PACKAGE_NAME, 'version'], {
33
+ encoding: 'utf-8',
34
+ });
35
+ if (result.status !== 0) {
36
+ const stderr = result.stderr?.toString().trim() || 'unknown error';
37
+ throw new Error(`Failed to fetch latest version from npm registry: ${stderr}`);
38
+ }
39
+ const version = result.stdout.toString().trim();
40
+ if (!version) {
41
+ throw new Error('npm returned empty version string');
42
+ }
43
+ return version;
44
+ };
45
+ const detectPackageManager = () => {
46
+ const userAgent = process.env.npm_config_user_agent || '';
47
+ if (userAgent.startsWith('bun'))
48
+ return 'bun';
49
+ if (userAgent.startsWith('pnpm'))
50
+ return 'pnpm';
51
+ if (userAgent.startsWith('yarn'))
52
+ return 'yarn';
53
+ const hasBin = (bin) => {
54
+ const result = spawnSync('which', [bin], { encoding: 'utf-8' });
55
+ return result.status === 0;
56
+ };
57
+ if (hasBin('bun'))
58
+ return 'bun';
59
+ return 'npm';
60
+ };
61
+ const buildUpgradeCommand = (pm) => {
62
+ const target = `${PACKAGE_NAME}@latest`;
63
+ switch (pm) {
64
+ case 'bun':
65
+ return ['bun', ['add', '-g', target]];
66
+ case 'pnpm':
67
+ return ['pnpm', ['add', '-g', target]];
68
+ case 'yarn':
69
+ return ['yarn', ['global', 'add', target]];
70
+ case 'npm':
71
+ default:
72
+ return ['npm', ['install', '-g', target]];
73
+ }
74
+ };
75
+ const runUpgrade = (pm) => {
76
+ const [cmd, args] = buildUpgradeCommand(pm);
77
+ console.log(chalk.gray(` Running: ${cmd} ${args.join(' ')}`));
78
+ console.log('');
79
+ const result = spawnSync(cmd, args, { stdio: 'inherit' });
80
+ if (result.status !== 0) {
81
+ throw new Error(`Upgrade command failed with exit code ${result.status}. Try running manually: ${cmd} ${args.join(' ')}`);
82
+ }
83
+ };
84
+ const confirmUpgrade = async (current, latest) => {
85
+ const { proceed } = await inquirer.prompt([
86
+ {
87
+ type: 'confirm',
88
+ name: 'proceed',
89
+ message: `Upgrade from ${chalk.yellow(current)} to ${chalk.green(latest)}?`,
90
+ default: true,
91
+ },
92
+ ]);
93
+ return proceed;
94
+ };
95
+ const confirmReinstall = async () => {
96
+ const { proceed } = await inquirer.prompt([
97
+ {
98
+ type: 'confirm',
99
+ name: 'proceed',
100
+ message: 'Re-run "moicle install" to refresh assets?',
101
+ default: true,
102
+ },
103
+ ]);
104
+ return proceed;
105
+ };
106
+ const runReinstall = () => {
107
+ console.log('');
108
+ console.log(chalk.cyan('>>> Refreshing assets'));
109
+ console.log('');
110
+ execSync(`${PACKAGE_NAME} install`, { stdio: 'inherit' });
111
+ };
112
+ export const upgradeCommand = async (options = {}) => {
113
+ printHeader();
114
+ const current = pkg.version;
115
+ console.log(chalk.gray(` Current version: ${chalk.white(current)}`));
116
+ const spinner = ora('Checking latest version on npm...').start();
117
+ let latest;
118
+ try {
119
+ latest = fetchLatestVersion();
120
+ spinner.succeed(`Latest version: ${chalk.green(latest)}`);
121
+ }
122
+ catch (err) {
123
+ spinner.fail('Failed to check latest version');
124
+ throw err;
125
+ }
126
+ const diff = compareVersions(latest, current);
127
+ if (diff === 0) {
128
+ console.log('');
129
+ console.log(chalk.green(`✓ Already up to date (${current})`));
130
+ console.log('');
131
+ return;
132
+ }
133
+ if (diff < 0) {
134
+ console.log('');
135
+ console.log(chalk.yellow(` Installed version (${current}) is newer than npm registry (${latest}). Nothing to upgrade.`));
136
+ console.log('');
137
+ return;
138
+ }
139
+ console.log('');
140
+ console.log(` ${chalk.yellow(current)} ${chalk.gray('→')} ${chalk.green(latest)} ${chalk.gray('available')}`);
141
+ console.log('');
142
+ const proceed = options.yes ?? (await confirmUpgrade(current, latest));
143
+ if (!proceed) {
144
+ console.log(chalk.gray(' Upgrade cancelled.'));
145
+ console.log('');
146
+ return;
147
+ }
148
+ const pm = detectPackageManager();
149
+ console.log(chalk.gray(` Package manager: ${pm}`));
150
+ console.log('');
151
+ runUpgrade(pm);
152
+ console.log('');
153
+ console.log(chalk.green(`✓ Upgraded to ${latest}`));
154
+ console.log('');
155
+ const shouldReinstall = options.reinstall ?? (await confirmReinstall());
156
+ if (shouldReinstall) {
157
+ runReinstall();
158
+ }
159
+ else {
160
+ console.log(chalk.gray(' Skipped asset refresh.'));
161
+ console.log(chalk.gray(' Run "moicle install" later to pick up new agents/skills/commands.'));
162
+ console.log('');
163
+ }
164
+ };
165
+ //# sourceMappingURL=upgrade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export type Scope = 'global' | 'project';
2
2
  export type ItemType = 'agents' | 'commands' | 'skills';
3
- export type EditorTarget = 'claude' | 'cursor' | 'windsurf' | 'antigravity';
3
+ export type EditorTarget = 'claude' | 'codex' | 'cursor' | 'windsurf' | 'antigravity';
4
4
  export interface EditorConfig {
5
5
  name: string;
6
6
  globalDir: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEzC,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC;AAE5E,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IACzF,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEzC,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC;AAEtF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IACzF,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB"}
@@ -9,6 +9,7 @@ export declare const getEditorAgentsDir: (target: EditorTarget, scope?: Scope) =
9
9
  export declare const getEditorCommandsDir: (target: EditorTarget, scope?: Scope) => string;
10
10
  export declare const getEditorSkillsDir: (target: EditorTarget, scope?: Scope) => string;
11
11
  export declare const getClaudeDir: (scope?: Scope) => string;
12
+ export declare const getCodexDir: (scope?: Scope) => string;
12
13
  export declare const getAgentsDir: (scope?: Scope) => string;
13
14
  export declare const getCommandsDir: (scope?: Scope) => string;
14
15
  export declare const getSkillsDir: (scope?: Scope) => string;
@@ -19,6 +20,13 @@ export declare const copyFile: (source: string, target: string) => FileResult;
19
20
  export declare const copyDir: (source: string, target: string) => FileResult;
20
21
  export declare const removeItem: (target: string) => FileResult;
21
22
  export declare const listItems: (dir: string) => ListItem[];
23
+ /**
24
+ * List skills in nested namespace form. For a directory laid out as
25
+ * <dir>/<group>/<action>/SKILL.md
26
+ * returns one item per <group>/<action> with name = "<group>:<action>".
27
+ * Top-level files or single-level folders are returned as-is for back-compat.
28
+ */
29
+ export declare const listSkillsNested: (dir: string) => ListItem[];
22
30
  export declare const getFiles: (dir: string, depth?: number) => string[];
23
31
  export declare const getDirs: (dir: string) => string[];
24
32
  export declare const mergeAgentsToFile: (targetFile: string, target: EditorTarget) => FileResult;
@@ -1 +1 @@
1
- {"version":3,"file":"symlink.d.ts","sourceRoot":"","sources":["../../src/utils/symlink.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAK3F,eAAO,MAAM,YAAY,QAAsC,CAAC;AAChE,eAAO,MAAM,UAAU,QAAoC,CAAC;AAE5D,eAAO,MAAM,kBAAkB,QAAO,OAAuC,CAAC;AAE9E,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,YAAY,EAAE,YAAY,CA4C7D,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,QAAQ,YAAY,KAAG,YAEtD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAQ,YAAY,EAAE,QAAO,KAAgB,KAAG,MAe5E,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,QAAQ,YAAY,EAAE,QAAO,KAAgB,KAAG,MAIlF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,QAAQ,YAAY,EAAE,QAAO,KAAgB,KAAG,MAIpF,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,QAAQ,YAAY,EAAE,QAAO,KAAgB,KAAG,MAIlF,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAO,KAAgB,KAAG,MAEtD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAO,KAAgB,KAAG,MACb,CAAC;AAE3C,eAAO,MAAM,cAAc,GAAI,QAAO,KAAgB,KAAG,MACb,CAAC;AAE7C,eAAO,MAAM,YAAY,GAAI,QAAO,KAAgB,KAAG,MACb,CAAC;AAE3C,eAAO,MAAM,kBAAkB,GAAI,QAAO,KAAgB,KAAG,MACb,CAAC;AAEjD,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,KAAG,OAMvC,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,UA6B9D,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,UAoBzD,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,UAwBxD,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,KAAG,UAoB3C,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,KAAG,QAAQ,EAyB/C,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,EAAE,cAAS,KAAG,MAAM,EAqBvD,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,KAAG,MAAM,EAmB3C,CAAC;AAeF,eAAO,MAAM,iBAAiB,GAAI,YAAY,MAAM,EAAE,QAAQ,YAAY,KAAG,UAsD5E,CAAC"}
1
+ {"version":3,"file":"symlink.d.ts","sourceRoot":"","sources":["../../src/utils/symlink.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAK3F,eAAO,MAAM,YAAY,QAAsC,CAAC;AAChE,eAAO,MAAM,UAAU,QAAoC,CAAC;AAE5D,eAAO,MAAM,kBAAkB,QAAO,OAAuC,CAAC;AAE9E,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,YAAY,EAAE,YAAY,CAsD7D,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,QAAQ,YAAY,KAAG,YAEtD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAQ,YAAY,EAAE,QAAO,KAAgB,KAAG,MAkB5E,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,QAAQ,YAAY,EAAE,QAAO,KAAgB,KAAG,MAIlF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,QAAQ,YAAY,EAAE,QAAO,KAAgB,KAAG,MAIpF,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,QAAQ,YAAY,EAAE,QAAO,KAAgB,KAAG,MAIlF,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAO,KAAgB,KAAG,MAEtD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,QAAO,KAAgB,KAAG,MAErD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAO,KAAgB,KAAG,MACb,CAAC;AAE3C,eAAO,MAAM,cAAc,GAAI,QAAO,KAAgB,KAAG,MACb,CAAC;AAE7C,eAAO,MAAM,YAAY,GAAI,QAAO,KAAgB,KAAG,MACb,CAAC;AAE3C,eAAO,MAAM,kBAAkB,GAAI,QAAO,KAAgB,KAAG,MACb,CAAC;AAEjD,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,KAAG,OAMvC,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,UA6B9D,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,UAoBzD,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,UAwBxD,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,KAAG,UAoB3C,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,KAAG,QAAQ,EAyB/C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,QAAQ,EA2DtD,CAAC;AA0BF,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,EAAE,cAAS,KAAG,MAAM,EAqBvD,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,KAAG,MAAM,EAmB3C,CAAC;AAiBF,eAAO,MAAM,iBAAiB,GAAI,YAAY,MAAM,EAAE,QAAQ,YAAY,KAAG,UAsD5E,CAAC"}
@@ -18,6 +18,16 @@ export const EDITOR_CONFIGS = {
18
18
  supportsCommands: true,
19
19
  supportsSkills: true,
20
20
  },
21
+ codex: {
22
+ name: 'Codex CLI',
23
+ globalDir: path.join(os.homedir(), '.codex'),
24
+ agentsDir: 'skills',
25
+ commandsDir: 'skills',
26
+ skillsDir: 'skills',
27
+ supportsAgents: true,
28
+ supportsCommands: true,
29
+ supportsSkills: true,
30
+ },
21
31
  cursor: {
22
32
  name: 'Cursor',
23
33
  globalDir: path.join(os.homedir(), '.cursor'),
@@ -63,6 +73,9 @@ export const getEditorDir = (target, scope = 'global') => {
63
73
  if (target === 'claude') {
64
74
  return path.join(process.cwd(), '.claude');
65
75
  }
76
+ if (target === 'codex') {
77
+ return path.join(process.cwd(), '.codex');
78
+ }
66
79
  if (target === 'cursor') {
67
80
  return path.join(process.cwd(), '.cursor');
68
81
  }
@@ -89,6 +102,9 @@ export const getEditorSkillsDir = (target, scope = 'global') => {
89
102
  export const getClaudeDir = (scope = 'global') => {
90
103
  return getEditorDir('claude', scope);
91
104
  };
105
+ export const getCodexDir = (scope = 'global') => {
106
+ return getEditorDir('codex', scope);
107
+ };
92
108
  export const getAgentsDir = (scope = 'global') => path.join(getClaudeDir(scope), 'agents');
93
109
  export const getCommandsDir = (scope = 'global') => path.join(getClaudeDir(scope), 'commands');
94
110
  export const getSkillsDir = (scope = 'global') => path.join(getClaudeDir(scope), 'skills');
@@ -220,6 +236,88 @@ export const listItems = (dir) => {
220
236
  return [];
221
237
  }
222
238
  };
239
+ /**
240
+ * List skills in nested namespace form. For a directory laid out as
241
+ * <dir>/<group>/<action>/SKILL.md
242
+ * returns one item per <group>/<action> with name = "<group>:<action>".
243
+ * Top-level files or single-level folders are returned as-is for back-compat.
244
+ */
245
+ export const listSkillsNested = (dir) => {
246
+ try {
247
+ if (!fs.existsSync(dir)) {
248
+ return [];
249
+ }
250
+ const items = [];
251
+ const topLevel = fs.readdirSync(dir);
252
+ for (const entry of topLevel) {
253
+ const entryPath = path.join(dir, entry);
254
+ let stat;
255
+ try {
256
+ stat = fs.lstatSync(entryPath);
257
+ }
258
+ catch {
259
+ continue;
260
+ }
261
+ const isSymlink = stat.isSymbolicLink();
262
+ const target = isSymlink ? safeReadlink(entryPath) : null;
263
+ const realStat = isSymlink ? safeStat(entryPath) : stat;
264
+ if (realStat?.isDirectory()) {
265
+ // Look one level deeper for nested skills (group/action/SKILL.md)
266
+ const groupDir = isSymlink ? fs.realpathSync(entryPath) : entryPath;
267
+ const inner = safeReaddir(groupDir);
268
+ const hasNestedSkills = inner.some((sub) => {
269
+ const subPath = path.join(groupDir, sub);
270
+ return (safeStat(subPath)?.isDirectory() &&
271
+ fs.existsSync(path.join(subPath, 'SKILL.md')));
272
+ });
273
+ if (hasNestedSkills) {
274
+ for (const action of inner) {
275
+ const actionPath = path.join(groupDir, action);
276
+ if (safeStat(actionPath)?.isDirectory() &&
277
+ fs.existsSync(path.join(actionPath, 'SKILL.md'))) {
278
+ items.push({
279
+ name: `${entry}:${action}`,
280
+ path: path.join(entryPath, action),
281
+ isSymlink,
282
+ target: target ? `${target}/${action}` : null,
283
+ });
284
+ }
285
+ }
286
+ continue;
287
+ }
288
+ }
289
+ items.push({ name: entry, path: entryPath, isSymlink, target });
290
+ }
291
+ return items;
292
+ }
293
+ catch {
294
+ return [];
295
+ }
296
+ };
297
+ const safeStat = (p) => {
298
+ try {
299
+ return fs.statSync(p);
300
+ }
301
+ catch {
302
+ return null;
303
+ }
304
+ };
305
+ const safeReadlink = (p) => {
306
+ try {
307
+ return fs.readlinkSync(p);
308
+ }
309
+ catch {
310
+ return null;
311
+ }
312
+ };
313
+ const safeReaddir = (p) => {
314
+ try {
315
+ return fs.readdirSync(p);
316
+ }
317
+ catch {
318
+ return [];
319
+ }
320
+ };
223
321
  export const getFiles = (dir, depth = 1) => {
224
322
  const files = [];
225
323
  if (!fs.existsSync(dir)) {
@@ -257,6 +355,8 @@ const getEditorPaths = (target) => {
257
355
  switch (target) {
258
356
  case 'cursor':
259
357
  return { globalPath: '~/.cursor', projectPath: '.cursor' };
358
+ case 'codex':
359
+ return { globalPath: '~/.codex', projectPath: '.codex' };
260
360
  case 'windsurf':
261
361
  return { globalPath: '~/.codeium/windsurf/memories', projectPath: '.windsurf/rules' };
262
362
  case 'antigravity':