moicle 1.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 (78) hide show
  1. package/README.md +201 -0
  2. package/assets/agents/developers/flutter-mobile-dev.md +69 -0
  3. package/assets/agents/developers/go-backend-dev.md +57 -0
  4. package/assets/agents/developers/laravel-backend-dev.md +123 -0
  5. package/assets/agents/developers/react-frontend-dev.md +69 -0
  6. package/assets/agents/developers/remix-fullstack-dev.md +69 -0
  7. package/assets/agents/utilities/api-designer.md +76 -0
  8. package/assets/agents/utilities/clean-architect.md +83 -0
  9. package/assets/agents/utilities/code-reviewer.md +76 -0
  10. package/assets/agents/utilities/db-designer.md +68 -0
  11. package/assets/agents/utilities/devops.md +71 -0
  12. package/assets/agents/utilities/docs-writer.md +75 -0
  13. package/assets/agents/utilities/perf-optimizer.md +87 -0
  14. package/assets/agents/utilities/refactor.md +173 -0
  15. package/assets/agents/utilities/security-audit.md +203 -0
  16. package/assets/agents/utilities/test-writer.md +139 -0
  17. package/assets/architecture/clean-architecture.md +143 -0
  18. package/assets/architecture/flutter-mobile.md +304 -0
  19. package/assets/architecture/go-backend.md +217 -0
  20. package/assets/architecture/laravel-backend.md +303 -0
  21. package/assets/architecture/monorepo.md +162 -0
  22. package/assets/architecture/react-frontend.md +268 -0
  23. package/assets/architecture/remix-fullstack.md +272 -0
  24. package/assets/commands/bootstrap.md +98 -0
  25. package/assets/commands/brainstorm.md +440 -0
  26. package/assets/skills/feature-workflow/SKILL.md +298 -0
  27. package/assets/skills/hotfix-workflow/SKILL.md +368 -0
  28. package/assets/templates/flutter/CLAUDE.md +454 -0
  29. package/assets/templates/go-gin/CLAUDE.md +244 -0
  30. package/assets/templates/monorepo/CLAUDE.md +362 -0
  31. package/assets/templates/react-vite/CLAUDE.md +304 -0
  32. package/assets/templates/remix/CLAUDE.md +304 -0
  33. package/bin/cli.js +76 -0
  34. package/dist/commands/disable.d.ts +3 -0
  35. package/dist/commands/disable.d.ts.map +1 -0
  36. package/dist/commands/disable.js +188 -0
  37. package/dist/commands/disable.js.map +1 -0
  38. package/dist/commands/enable.d.ts +3 -0
  39. package/dist/commands/enable.d.ts.map +1 -0
  40. package/dist/commands/enable.js +191 -0
  41. package/dist/commands/enable.js.map +1 -0
  42. package/dist/commands/install.d.ts +3 -0
  43. package/dist/commands/install.d.ts.map +1 -0
  44. package/dist/commands/install.js +290 -0
  45. package/dist/commands/install.js.map +1 -0
  46. package/dist/commands/list.d.ts +3 -0
  47. package/dist/commands/list.d.ts.map +1 -0
  48. package/dist/commands/list.js +75 -0
  49. package/dist/commands/list.js.map +1 -0
  50. package/dist/commands/postinstall.d.ts +2 -0
  51. package/dist/commands/postinstall.d.ts.map +1 -0
  52. package/dist/commands/postinstall.js +25 -0
  53. package/dist/commands/postinstall.js.map +1 -0
  54. package/dist/commands/status.d.ts +3 -0
  55. package/dist/commands/status.d.ts.map +1 -0
  56. package/dist/commands/status.js +118 -0
  57. package/dist/commands/status.js.map +1 -0
  58. package/dist/commands/uninstall.d.ts +3 -0
  59. package/dist/commands/uninstall.d.ts.map +1 -0
  60. package/dist/commands/uninstall.js +178 -0
  61. package/dist/commands/uninstall.js.map +1 -0
  62. package/dist/index.d.ts +11 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +11 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/types.d.ts +47 -0
  67. package/dist/types.d.ts.map +1 -0
  68. package/dist/types.js +2 -0
  69. package/dist/types.js.map +1 -0
  70. package/dist/utils/config.d.ts +13 -0
  71. package/dist/utils/config.d.ts.map +1 -0
  72. package/dist/utils/config.js +95 -0
  73. package/dist/utils/config.js.map +1 -0
  74. package/dist/utils/symlink.d.ts +24 -0
  75. package/dist/utils/symlink.d.ts.map +1 -0
  76. package/dist/utils/symlink.js +313 -0
  77. package/dist/utils/symlink.js.map +1 -0
  78. package/package.json +55 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postinstall.js","sourceRoot":"","sources":["../../src/commands/postinstall.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,IAAmB,EAAE;IAC1D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CommandOptions } from '../types.js';
2
+ export declare const statusCommand: (options: CommandOptions) => Promise<void>;
3
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,aAAa,CAAC;AAoInE,eAAO,MAAM,aAAa,GAAU,SAAS,cAAc,KAAG,OAAO,CAAC,IAAI,CAqBzE,CAAC"}
@@ -0,0 +1,118 @@
1
+ import chalk from 'chalk';
2
+ import fs from 'fs';
3
+ import { getTargets, isDisabled } from '../utils/config.js';
4
+ import { EDITOR_CONFIGS, getAgentsDir, getCommandsDir, getSkillsDir, getClaudeDir, getEditorDir, listItems, } from '../utils/symlink.js';
5
+ const printHeader = () => {
6
+ console.log('');
7
+ console.log(chalk.cyan('════════════════════════════════════════'));
8
+ console.log(chalk.cyan(' MoiCle - Status'));
9
+ console.log(chalk.cyan('════════════════════════════════════════'));
10
+ console.log('');
11
+ };
12
+ const getItemStatus = (item, type) => {
13
+ const cleanName = item.name.replace('.md', '').replace('.disabled', '');
14
+ const isFileDisabled = item.name.endsWith('.disabled');
15
+ const isConfigDisabled = isDisabled(type, cleanName);
16
+ return isFileDisabled || isConfigDisabled;
17
+ };
18
+ const printItems = (items, type, label) => {
19
+ if (items.length === 0) {
20
+ console.log(chalk.gray(` No ${label} installed`));
21
+ return { enabled: 0, disabled: 0 };
22
+ }
23
+ let enabled = 0;
24
+ let disabled = 0;
25
+ for (const item of items) {
26
+ const cleanName = item.name.replace('.md', '').replace('.disabled', '');
27
+ const isItemDisabled = getItemStatus(item, type);
28
+ if (isItemDisabled) {
29
+ disabled++;
30
+ console.log(` ${chalk.red('✗')} ${chalk.gray(cleanName)} ${chalk.red('(disabled)')}`);
31
+ }
32
+ else {
33
+ enabled++;
34
+ console.log(` ${chalk.green('✓')} ${chalk.white(cleanName)} ${chalk.green('(enabled)')}`);
35
+ }
36
+ }
37
+ return { enabled, disabled };
38
+ };
39
+ const showStatus = (scope = 'global') => {
40
+ const claudeDir = getClaudeDir(scope);
41
+ const label = scope === 'global' ? 'Global (~/.claude/)' : `Project (${process.cwd()}/.claude/)`;
42
+ console.log(chalk.cyan(`>>> ${label}`));
43
+ console.log('');
44
+ if (!fs.existsSync(claudeDir)) {
45
+ console.log(chalk.gray(' Not installed'));
46
+ console.log('');
47
+ return;
48
+ }
49
+ let totalEnabled = 0;
50
+ let totalDisabled = 0;
51
+ console.log(chalk.yellow(' Agents:'));
52
+ const agentItems = listItems(getAgentsDir(scope));
53
+ const agentStats = printItems(agentItems, 'agents', 'agents');
54
+ totalEnabled += agentStats.enabled;
55
+ totalDisabled += agentStats.disabled;
56
+ console.log('');
57
+ if (scope === 'global') {
58
+ console.log(chalk.yellow(' Commands:'));
59
+ const cmdItems = listItems(getCommandsDir(scope));
60
+ const cmdStats = printItems(cmdItems, 'commands', 'commands');
61
+ totalEnabled += cmdStats.enabled;
62
+ totalDisabled += cmdStats.disabled;
63
+ console.log('');
64
+ }
65
+ console.log(chalk.yellow(' Skills:'));
66
+ const skillItems = listItems(getSkillsDir(scope));
67
+ const skillStats = printItems(skillItems, 'skills', 'skills');
68
+ totalEnabled += skillStats.enabled;
69
+ totalDisabled += skillStats.disabled;
70
+ console.log('');
71
+ console.log(chalk.gray(' ────────────────────────────────────'));
72
+ console.log(` ${chalk.green('Enabled:')} ${totalEnabled} ${chalk.red('Disabled:')} ${totalDisabled}`);
73
+ console.log('');
74
+ };
75
+ const showTargetsStatus = () => {
76
+ const targets = getTargets();
77
+ console.log(chalk.cyan('>>> Installed Targets'));
78
+ console.log('');
79
+ if (targets.length === 0) {
80
+ console.log(chalk.gray(' No targets configured'));
81
+ console.log('');
82
+ return;
83
+ }
84
+ for (const target of targets) {
85
+ const config = EDITOR_CONFIGS[target];
86
+ const dir = getEditorDir(target, 'global');
87
+ const exists = fs.existsSync(dir);
88
+ if (exists) {
89
+ console.log(` ${chalk.green('✓')} ${chalk.white(config.name)} ${chalk.gray(`(${dir})`)}`);
90
+ }
91
+ else {
92
+ console.log(` ${chalk.red('✗')} ${chalk.gray(config.name)} ${chalk.red('(not found)')}`);
93
+ }
94
+ }
95
+ console.log('');
96
+ };
97
+ export const statusCommand = async (options) => {
98
+ printHeader();
99
+ showTargetsStatus();
100
+ if (options.global) {
101
+ showStatus('global');
102
+ }
103
+ else if (options.project) {
104
+ showStatus('project');
105
+ }
106
+ else {
107
+ showStatus('global');
108
+ showStatus('project');
109
+ }
110
+ console.log(chalk.gray('────────────────────────────────────────'));
111
+ console.log(chalk.gray('Commands:'));
112
+ console.log(chalk.gray(' moicle enable Enable items (interactive)'));
113
+ console.log(chalk.gray(' moicle disable Disable items (interactive)'));
114
+ console.log(chalk.gray(' moicle enable -a Enable all items'));
115
+ console.log(chalk.gray(' moicle disable -a Disable all items'));
116
+ console.log('');
117
+ };
118
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CommandOptions } from '../types.js';
2
+ export declare const uninstallCommand: (options: CommandOptions) => Promise<void>;
3
+ //# sourceMappingURL=uninstall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAuB,MAAM,aAAa,CAAC;AAoKvE,eAAO,MAAM,gBAAgB,GAAU,SAAS,cAAc,KAAG,OAAO,CAAC,IAAI,CAuC5E,CAAC"}
@@ -0,0 +1,178 @@
1
+ import chalk from 'chalk';
2
+ import inquirer from 'inquirer';
3
+ import ora from 'ora';
4
+ import path from 'path';
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';
8
+ const printHeader = () => {
9
+ console.log('');
10
+ console.log(chalk.cyan('════════════════════════════════════════'));
11
+ console.log(chalk.cyan(' MoiCle Uninstaller'));
12
+ console.log(chalk.cyan('════════════════════════════════════════'));
13
+ console.log('');
14
+ };
15
+ const getKitFiles = () => {
16
+ const files = new Set();
17
+ const developersDir = path.join(ASSETS_DIR, 'agents', 'developers');
18
+ const utilitiesDir = path.join(ASSETS_DIR, 'agents', 'utilities');
19
+ const commandsDir = path.join(ASSETS_DIR, 'commands');
20
+ const skillsDir = path.join(ASSETS_DIR, 'skills');
21
+ const addFilesFromDir = (dir) => {
22
+ if (fs.existsSync(dir)) {
23
+ fs.readdirSync(dir).forEach((f) => files.add(f));
24
+ }
25
+ };
26
+ addFilesFromDir(developersDir);
27
+ addFilesFromDir(utilitiesDir);
28
+ addFilesFromDir(commandsDir);
29
+ addFilesFromDir(skillsDir);
30
+ return files;
31
+ };
32
+ const uninstallDir = async (dir, label) => {
33
+ const spinner = ora(`Uninstalling ${label}...`).start();
34
+ const kitFiles = getKitFiles();
35
+ const items = listItems(dir);
36
+ let removed = 0;
37
+ for (const item of items) {
38
+ if (kitFiles.has(item.name) || item.isSymlink) {
39
+ const result = removeItem(item.path);
40
+ if (result.status === 'removed') {
41
+ removed++;
42
+ }
43
+ }
44
+ }
45
+ if (removed > 0) {
46
+ spinner.succeed(`Removed ${removed} ${label}`);
47
+ }
48
+ else {
49
+ spinner.info(`No ${label} to remove`);
50
+ }
51
+ };
52
+ const uninstallScope = async (scope) => {
53
+ const label = scope === 'global' ? 'Global' : 'Project';
54
+ console.log('');
55
+ console.log(chalk.cyan(`>>> ${label} Uninstall`));
56
+ if (scope === 'project') {
57
+ console.log(chalk.gray(` Target: ${process.cwd()}/.claude/`));
58
+ }
59
+ console.log('');
60
+ await uninstallDir(getAgentsDir(scope), 'agents');
61
+ if (scope === 'global') {
62
+ await uninstallDir(getCommandsDir(scope), 'commands');
63
+ }
64
+ await uninstallDir(getSkillsDir(scope), 'skills');
65
+ console.log('');
66
+ console.log(chalk.green(`✓ ${label} uninstall complete!`));
67
+ };
68
+ const uninstallForOtherEditor = async (target) => {
69
+ const config = getEditorConfig(target);
70
+ const spinner = ora(`Uninstalling from ${config.name}...`).start();
71
+ const targetDir = getEditorDir(target, 'global');
72
+ if (config.rulesFile) {
73
+ const rulesFilePath = path.join(targetDir, config.rulesFile);
74
+ if (fs.existsSync(rulesFilePath)) {
75
+ const result = removeItem(rulesFilePath);
76
+ if (result.status === 'removed') {
77
+ spinner.succeed(`Removed ${config.rulesFile} from ${config.name}`);
78
+ }
79
+ else {
80
+ spinner.info(`No files to remove from ${config.name}`);
81
+ }
82
+ }
83
+ else {
84
+ spinner.info(`No files to remove from ${config.name}`);
85
+ }
86
+ }
87
+ removeTarget(target);
88
+ };
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 () => {
113
+ const { uninstallType } = await inquirer.prompt([
114
+ {
115
+ type: 'list',
116
+ name: 'uninstallType',
117
+ message: 'Where would you like to uninstall from?',
118
+ choices: [
119
+ { name: 'Global (~/.claude/)', value: 'global' },
120
+ { name: 'Project (./.claude/)', value: 'project' },
121
+ { name: 'Both', value: 'all' },
122
+ ],
123
+ },
124
+ ]);
125
+ const { confirm } = await inquirer.prompt([
126
+ {
127
+ type: 'confirm',
128
+ name: 'confirm',
129
+ message: 'Are you sure you want to uninstall?',
130
+ default: false,
131
+ },
132
+ ]);
133
+ if (!confirm) {
134
+ console.log(chalk.yellow('Uninstall cancelled.'));
135
+ process.exit(0);
136
+ }
137
+ return uninstallType;
138
+ };
139
+ export const uninstallCommand = async (options) => {
140
+ printHeader();
141
+ // Temporarily hardcoded to Claude Code only for open-source release
142
+ const targets = ['claude'];
143
+ // const targets = await showTargetMenu();
144
+ for (const target of targets) {
145
+ if (target === 'claude') {
146
+ let uninstallType;
147
+ if (options.global) {
148
+ uninstallType = 'global';
149
+ }
150
+ else if (options.project) {
151
+ uninstallType = 'project';
152
+ }
153
+ else if (options.all) {
154
+ uninstallType = 'all';
155
+ }
156
+ else {
157
+ uninstallType = await showInteractiveMenu();
158
+ }
159
+ switch (uninstallType) {
160
+ case 'global':
161
+ await uninstallScope('global');
162
+ break;
163
+ case 'project':
164
+ await uninstallScope('project');
165
+ break;
166
+ case 'all':
167
+ await uninstallScope('global');
168
+ await uninstallScope('project');
169
+ break;
170
+ }
171
+ removeTarget('claude');
172
+ }
173
+ else {
174
+ await uninstallForOtherEditor(target);
175
+ }
176
+ }
177
+ };
178
+ //# sourceMappingURL=uninstall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export * from './types.js';
2
+ export * from './utils/config.js';
3
+ export * from './utils/symlink.js';
4
+ export * from './commands/install.js';
5
+ export * from './commands/uninstall.js';
6
+ export * from './commands/list.js';
7
+ export * from './commands/status.js';
8
+ export * from './commands/enable.js';
9
+ export * from './commands/disable.js';
10
+ export * from './commands/postinstall.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ export * from './types.js';
2
+ export * from './utils/config.js';
3
+ export * from './utils/symlink.js';
4
+ export * from './commands/install.js';
5
+ export * from './commands/uninstall.js';
6
+ export * from './commands/list.js';
7
+ export * from './commands/status.js';
8
+ export * from './commands/enable.js';
9
+ export * from './commands/disable.js';
10
+ export * from './commands/postinstall.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC"}
@@ -0,0 +1,47 @@
1
+ export type Scope = 'global' | 'project';
2
+ export type ItemType = 'agents' | 'commands' | 'skills';
3
+ export type EditorTarget = 'claude' | 'cursor' | 'windsurf' | 'antigravity';
4
+ export interface EditorConfig {
5
+ name: string;
6
+ globalDir: string;
7
+ agentsDir: string;
8
+ commandsDir: string;
9
+ skillsDir: string;
10
+ rulesFile?: string;
11
+ supportsAgents: boolean;
12
+ supportsCommands: boolean;
13
+ supportsSkills: boolean;
14
+ }
15
+ export interface FileResult {
16
+ status: 'created' | 'updated' | 'exists' | 'skipped' | 'removed' | 'not_found' | 'error';
17
+ name: string;
18
+ reason?: string;
19
+ }
20
+ export interface ListItem {
21
+ name: string;
22
+ path: string;
23
+ isSymlink: boolean;
24
+ target: string | null;
25
+ }
26
+ export interface MoicleConfig {
27
+ targets: EditorTarget[];
28
+ disabled: {
29
+ agents: string[];
30
+ commands: string[];
31
+ skills: string[];
32
+ };
33
+ }
34
+ export interface SelectableItem {
35
+ type: ItemType;
36
+ name: string;
37
+ display: string;
38
+ disabled?: boolean;
39
+ }
40
+ export interface CommandOptions {
41
+ global?: boolean;
42
+ project?: boolean;
43
+ all?: boolean;
44
+ symlink?: boolean;
45
+ target?: EditorTarget;
46
+ }
47
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import type { EditorTarget, ItemType, MoicleConfig } from '../types.js';
2
+ export declare const loadConfig: () => MoicleConfig;
3
+ export declare const saveConfig: (config: MoicleConfig) => boolean;
4
+ export declare const isDisabled: (type: ItemType, name: string) => boolean;
5
+ export declare const disableItem: (type: ItemType, name: string) => boolean;
6
+ export declare const enableItem: (type: ItemType, name: string) => boolean;
7
+ export declare const getDisabledItems: (type: ItemType) => string[];
8
+ export declare const getAllDisabled: () => MoicleConfig["disabled"];
9
+ export declare const getTargets: () => EditorTarget[];
10
+ export declare const addTarget: (target: EditorTarget) => boolean;
11
+ export declare const removeTarget: (target: EditorTarget) => boolean;
12
+ export declare const hasTarget: (target: EditorTarget) => boolean;
13
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAaxE,eAAO,MAAM,UAAU,QAAO,YAU7B,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,QAAQ,YAAY,KAAG,OAWjD,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,MAAM,QAAQ,EAAE,MAAM,MAAM,KAAG,OAIzD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,MAAM,QAAQ,EAAE,MAAM,MAAM,KAAG,OAU1D,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,MAAM,QAAQ,EAAE,MAAM,MAAM,KAAG,OAOzD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,MAAM,QAAQ,KAAG,MAAM,EAGvD,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,YAAY,CAAC,UAAU,CAGxD,CAAC;AAEF,eAAO,MAAM,UAAU,QAAO,YAAY,EAGzC,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,QAAQ,YAAY,KAAG,OAShD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAQ,YAAY,KAAG,OAMnD,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,QAAQ,YAAY,KAAG,OAGhD,CAAC"}
@@ -0,0 +1,95 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import os from 'os';
4
+ const CONFIG_FILE = path.join(os.homedir(), '.claude', 'moicle-config.json');
5
+ const defaultConfig = {
6
+ targets: [],
7
+ disabled: {
8
+ agents: [],
9
+ commands: [],
10
+ skills: [],
11
+ },
12
+ };
13
+ export const loadConfig = () => {
14
+ try {
15
+ if (fs.existsSync(CONFIG_FILE)) {
16
+ const content = fs.readFileSync(CONFIG_FILE, 'utf-8');
17
+ return { ...defaultConfig, ...JSON.parse(content) };
18
+ }
19
+ }
20
+ catch {
21
+ // ignore
22
+ }
23
+ return { ...defaultConfig };
24
+ };
25
+ export const saveConfig = (config) => {
26
+ try {
27
+ const dir = path.dirname(CONFIG_FILE);
28
+ if (!fs.existsSync(dir)) {
29
+ fs.mkdirSync(dir, { recursive: true });
30
+ }
31
+ fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));
32
+ return true;
33
+ }
34
+ catch {
35
+ return false;
36
+ }
37
+ };
38
+ export const isDisabled = (type, name) => {
39
+ const config = loadConfig();
40
+ const cleanName = name.replace('.md', '').replace('.disabled', '');
41
+ return config.disabled[type]?.includes(cleanName) || false;
42
+ };
43
+ export const disableItem = (type, name) => {
44
+ const config = loadConfig();
45
+ const cleanName = name.replace('.md', '').replace('.disabled', '');
46
+ if (!config.disabled[type]) {
47
+ config.disabled[type] = [];
48
+ }
49
+ if (!config.disabled[type].includes(cleanName)) {
50
+ config.disabled[type].push(cleanName);
51
+ }
52
+ return saveConfig(config);
53
+ };
54
+ export const enableItem = (type, name) => {
55
+ const config = loadConfig();
56
+ const cleanName = name.replace('.md', '').replace('.disabled', '');
57
+ if (config.disabled[type]) {
58
+ config.disabled[type] = config.disabled[type].filter((n) => n !== cleanName);
59
+ }
60
+ return saveConfig(config);
61
+ };
62
+ export const getDisabledItems = (type) => {
63
+ const config = loadConfig();
64
+ return config.disabled[type] || [];
65
+ };
66
+ export const getAllDisabled = () => {
67
+ const config = loadConfig();
68
+ return config.disabled;
69
+ };
70
+ export const getTargets = () => {
71
+ const config = loadConfig();
72
+ return config.targets || [];
73
+ };
74
+ export const addTarget = (target) => {
75
+ const config = loadConfig();
76
+ if (!config.targets) {
77
+ config.targets = [];
78
+ }
79
+ if (!config.targets.includes(target)) {
80
+ config.targets.push(target);
81
+ }
82
+ return saveConfig(config);
83
+ };
84
+ export const removeTarget = (target) => {
85
+ const config = loadConfig();
86
+ if (config.targets) {
87
+ config.targets = config.targets.filter((t) => t !== target);
88
+ }
89
+ return saveConfig(config);
90
+ };
91
+ export const hasTarget = (target) => {
92
+ const config = loadConfig();
93
+ return config.targets?.includes(target) || false;
94
+ };
95
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { EditorConfig, EditorTarget, FileResult, ListItem, Scope } from '../types.js';
2
+ export declare const PACKAGE_ROOT: string;
3
+ export declare const ASSETS_DIR: string;
4
+ export declare const EDITOR_CONFIGS: Record<EditorTarget, EditorConfig>;
5
+ export declare const getEditorConfig: (target: EditorTarget) => EditorConfig;
6
+ export declare const getEditorDir: (target: EditorTarget, scope?: Scope) => string;
7
+ export declare const getEditorAgentsDir: (target: EditorTarget, scope?: Scope) => string;
8
+ export declare const getEditorCommandsDir: (target: EditorTarget, scope?: Scope) => string;
9
+ export declare const getEditorSkillsDir: (target: EditorTarget, scope?: Scope) => string;
10
+ export declare const getClaudeDir: (scope?: Scope) => string;
11
+ export declare const getAgentsDir: (scope?: Scope) => string;
12
+ export declare const getCommandsDir: (scope?: Scope) => string;
13
+ export declare const getSkillsDir: (scope?: Scope) => string;
14
+ export declare const getArchitectureDir: (scope?: Scope) => string;
15
+ export declare const ensureDir: (dir: string) => boolean;
16
+ export declare const createSymlink: (source: string, target: string) => FileResult;
17
+ export declare const copyFile: (source: string, target: string) => FileResult;
18
+ export declare const copyDir: (source: string, target: string) => FileResult;
19
+ export declare const removeItem: (target: string) => FileResult;
20
+ export declare const listItems: (dir: string) => ListItem[];
21
+ export declare const getFiles: (dir: string, depth?: number) => string[];
22
+ export declare const getDirs: (dir: string) => string[];
23
+ export declare const mergeAgentsToFile: (targetFile: string, target: EditorTarget) => FileResult;
24
+ //# sourceMappingURL=symlink.d.ts.map
@@ -0,0 +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,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"}