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,313 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import os from 'os';
4
+ import { fileURLToPath } from 'url';
5
+ const __filename = fileURLToPath(import.meta.url);
6
+ const __dirname = path.dirname(__filename);
7
+ export const PACKAGE_ROOT = path.resolve(__dirname, '..', '..');
8
+ export const ASSETS_DIR = path.join(PACKAGE_ROOT, 'assets');
9
+ export const EDITOR_CONFIGS = {
10
+ claude: {
11
+ name: 'Claude Code',
12
+ globalDir: path.join(os.homedir(), '.claude'),
13
+ agentsDir: 'agents',
14
+ commandsDir: 'commands',
15
+ skillsDir: 'skills',
16
+ supportsAgents: true,
17
+ supportsCommands: true,
18
+ supportsSkills: true,
19
+ },
20
+ cursor: {
21
+ name: 'Cursor',
22
+ globalDir: path.join(os.homedir(), '.cursor'),
23
+ agentsDir: 'rules',
24
+ commandsDir: 'rules',
25
+ skillsDir: 'rules',
26
+ rulesFile: 'AGENTS.md',
27
+ supportsAgents: true,
28
+ supportsCommands: false,
29
+ supportsSkills: false,
30
+ },
31
+ windsurf: {
32
+ name: 'Windsurf',
33
+ globalDir: path.join(os.homedir(), '.codeium', 'windsurf', 'memories'),
34
+ agentsDir: '.',
35
+ commandsDir: '.',
36
+ skillsDir: '.',
37
+ rulesFile: 'global_rules.md',
38
+ supportsAgents: true,
39
+ supportsCommands: false,
40
+ supportsSkills: false,
41
+ },
42
+ antigravity: {
43
+ name: 'Antigravity',
44
+ globalDir: path.join(os.homedir(), '.gemini'),
45
+ agentsDir: '.',
46
+ commandsDir: '.',
47
+ skillsDir: '.',
48
+ rulesFile: 'GEMINI.md',
49
+ supportsAgents: true,
50
+ supportsCommands: false,
51
+ supportsSkills: false,
52
+ },
53
+ };
54
+ export const getEditorConfig = (target) => {
55
+ return EDITOR_CONFIGS[target];
56
+ };
57
+ export const getEditorDir = (target, scope = 'global') => {
58
+ const config = EDITOR_CONFIGS[target];
59
+ if (scope === 'global') {
60
+ return config.globalDir;
61
+ }
62
+ if (target === 'claude') {
63
+ return path.join(process.cwd(), '.claude');
64
+ }
65
+ if (target === 'cursor') {
66
+ return path.join(process.cwd(), '.cursor');
67
+ }
68
+ if (target === 'windsurf') {
69
+ return path.join(process.cwd(), '.windsurf', 'rules');
70
+ }
71
+ return path.join(process.cwd(), '.gemini');
72
+ };
73
+ export const getEditorAgentsDir = (target, scope = 'global') => {
74
+ const baseDir = getEditorDir(target, scope);
75
+ const config = EDITOR_CONFIGS[target];
76
+ return path.join(baseDir, config.agentsDir);
77
+ };
78
+ export const getEditorCommandsDir = (target, scope = 'global') => {
79
+ const baseDir = getEditorDir(target, scope);
80
+ const config = EDITOR_CONFIGS[target];
81
+ return path.join(baseDir, config.commandsDir);
82
+ };
83
+ export const getEditorSkillsDir = (target, scope = 'global') => {
84
+ const baseDir = getEditorDir(target, scope);
85
+ const config = EDITOR_CONFIGS[target];
86
+ return path.join(baseDir, config.skillsDir);
87
+ };
88
+ export const getClaudeDir = (scope = 'global') => {
89
+ return getEditorDir('claude', scope);
90
+ };
91
+ export const getAgentsDir = (scope = 'global') => path.join(getClaudeDir(scope), 'agents');
92
+ export const getCommandsDir = (scope = 'global') => path.join(getClaudeDir(scope), 'commands');
93
+ export const getSkillsDir = (scope = 'global') => path.join(getClaudeDir(scope), 'skills');
94
+ export const getArchitectureDir = (scope = 'global') => path.join(getClaudeDir(scope), 'architecture');
95
+ export const ensureDir = (dir) => {
96
+ if (!fs.existsSync(dir)) {
97
+ fs.mkdirSync(dir, { recursive: true });
98
+ return true;
99
+ }
100
+ return false;
101
+ };
102
+ export const createSymlink = (source, target) => {
103
+ const name = path.basename(source);
104
+ try {
105
+ if (fs.lstatSync(target).isSymbolicLink()) {
106
+ const currentSource = fs.readlinkSync(target);
107
+ if (currentSource === source) {
108
+ return { status: 'exists', name };
109
+ }
110
+ fs.unlinkSync(target);
111
+ fs.symlinkSync(source, target);
112
+ return { status: 'updated', name };
113
+ }
114
+ }
115
+ catch (err) {
116
+ const error = err;
117
+ if (error.code !== 'ENOENT') {
118
+ if (fs.existsSync(target)) {
119
+ return { status: 'skipped', name, reason: 'file exists' };
120
+ }
121
+ }
122
+ }
123
+ try {
124
+ fs.symlinkSync(source, target);
125
+ return { status: 'created', name };
126
+ }
127
+ catch (err) {
128
+ const error = err;
129
+ return { status: 'error', name, reason: error.message };
130
+ }
131
+ };
132
+ export const copyFile = (source, target) => {
133
+ const name = path.basename(source);
134
+ try {
135
+ if (fs.existsSync(target)) {
136
+ const sourceContent = fs.readFileSync(source);
137
+ const targetContent = fs.readFileSync(target);
138
+ if (sourceContent.equals(targetContent)) {
139
+ return { status: 'exists', name };
140
+ }
141
+ fs.copyFileSync(source, target);
142
+ return { status: 'updated', name };
143
+ }
144
+ fs.copyFileSync(source, target);
145
+ return { status: 'created', name };
146
+ }
147
+ catch (err) {
148
+ const error = err;
149
+ return { status: 'error', name, reason: error.message };
150
+ }
151
+ };
152
+ export const copyDir = (source, target) => {
153
+ const name = path.basename(source);
154
+ try {
155
+ ensureDir(target);
156
+ const items = fs.readdirSync(source);
157
+ for (const item of items) {
158
+ const srcPath = path.join(source, item);
159
+ const destPath = path.join(target, item);
160
+ const stat = fs.statSync(srcPath);
161
+ if (stat.isDirectory()) {
162
+ copyDir(srcPath, destPath);
163
+ }
164
+ else {
165
+ fs.copyFileSync(srcPath, destPath);
166
+ }
167
+ }
168
+ return { status: 'created', name };
169
+ }
170
+ catch (err) {
171
+ const error = err;
172
+ return { status: 'error', name, reason: error.message };
173
+ }
174
+ };
175
+ export const removeItem = (target) => {
176
+ const name = path.basename(target);
177
+ try {
178
+ if (fs.lstatSync(target).isSymbolicLink()) {
179
+ fs.unlinkSync(target);
180
+ return { status: 'removed', name };
181
+ }
182
+ if (fs.existsSync(target)) {
183
+ fs.rmSync(target, { recursive: true });
184
+ return { status: 'removed', name };
185
+ }
186
+ return { status: 'not_found', name };
187
+ }
188
+ catch (err) {
189
+ const error = err;
190
+ if (error.code === 'ENOENT') {
191
+ return { status: 'not_found', name };
192
+ }
193
+ return { status: 'error', name, reason: error.message };
194
+ }
195
+ };
196
+ export const listItems = (dir) => {
197
+ try {
198
+ if (!fs.existsSync(dir)) {
199
+ return [];
200
+ }
201
+ const items = fs.readdirSync(dir);
202
+ return items.map((name) => {
203
+ const fullPath = path.join(dir, name);
204
+ let isSymlink = false;
205
+ let target = null;
206
+ try {
207
+ isSymlink = fs.lstatSync(fullPath).isSymbolicLink();
208
+ if (isSymlink) {
209
+ target = fs.readlinkSync(fullPath);
210
+ }
211
+ }
212
+ catch {
213
+ // Ignore errors
214
+ }
215
+ return { name, path: fullPath, isSymlink, target };
216
+ });
217
+ }
218
+ catch {
219
+ return [];
220
+ }
221
+ };
222
+ export const getFiles = (dir, depth = 1) => {
223
+ const files = [];
224
+ if (!fs.existsSync(dir)) {
225
+ return files;
226
+ }
227
+ const items = fs.readdirSync(dir);
228
+ for (const item of items) {
229
+ const fullPath = path.join(dir, item);
230
+ const stat = fs.statSync(fullPath);
231
+ if (stat.isFile()) {
232
+ files.push(fullPath);
233
+ }
234
+ else if (stat.isDirectory() && depth > 0) {
235
+ files.push(...getFiles(fullPath, depth - 1));
236
+ }
237
+ }
238
+ return files;
239
+ };
240
+ export const getDirs = (dir) => {
241
+ const dirs = [];
242
+ if (!fs.existsSync(dir)) {
243
+ return dirs;
244
+ }
245
+ const items = fs.readdirSync(dir);
246
+ for (const item of items) {
247
+ const fullPath = path.join(dir, item);
248
+ const stat = fs.statSync(fullPath);
249
+ if (stat.isDirectory()) {
250
+ dirs.push(fullPath);
251
+ }
252
+ }
253
+ return dirs;
254
+ };
255
+ const getEditorPaths = (target) => {
256
+ switch (target) {
257
+ case 'cursor':
258
+ return { globalPath: '~/.cursor', projectPath: '.cursor' };
259
+ case 'windsurf':
260
+ return { globalPath: '~/.codeium/windsurf/memories', projectPath: '.windsurf/rules' };
261
+ case 'antigravity':
262
+ return { globalPath: '~/.gemini', projectPath: '.gemini' };
263
+ default:
264
+ return { globalPath: '~/.claude', projectPath: '.claude' };
265
+ }
266
+ };
267
+ export const mergeAgentsToFile = (targetFile, target) => {
268
+ const name = path.basename(targetFile);
269
+ try {
270
+ const developersDir = path.join(ASSETS_DIR, 'agents', 'developers');
271
+ const utilitiesDir = path.join(ASSETS_DIR, 'agents', 'utilities');
272
+ const editorPaths = getEditorPaths(target);
273
+ let content = '# MoiCle Agents\n\n';
274
+ content += 'This file contains all available agents from MoiCle.\n\n';
275
+ const processAgentFile = (filePath) => {
276
+ let fileContent = fs.readFileSync(filePath, 'utf-8');
277
+ fileContent = fileContent.replace(/~\/\.claude\//g, `${editorPaths.globalPath}/`);
278
+ fileContent = fileContent.replace(/\.claude\//g, `${editorPaths.projectPath}/`);
279
+ const agentName = path.basename(filePath, '.md');
280
+ return `## @${agentName}\n\n${fileContent}\n\n---\n\n`;
281
+ };
282
+ if (fs.existsSync(developersDir)) {
283
+ content += '# Developer Agents\n\n';
284
+ const files = getFiles(developersDir);
285
+ for (const file of files) {
286
+ if (file.endsWith('.md')) {
287
+ content += processAgentFile(file);
288
+ }
289
+ }
290
+ }
291
+ if (fs.existsSync(utilitiesDir)) {
292
+ content += '# Utility Agents\n\n';
293
+ const files = getFiles(utilitiesDir);
294
+ for (const file of files) {
295
+ if (file.endsWith('.md')) {
296
+ content += processAgentFile(file);
297
+ }
298
+ }
299
+ }
300
+ ensureDir(path.dirname(targetFile));
301
+ if (fs.existsSync(targetFile)) {
302
+ fs.writeFileSync(targetFile, content);
303
+ return { status: 'updated', name };
304
+ }
305
+ fs.writeFileSync(targetFile, content);
306
+ return { status: 'created', name };
307
+ }
308
+ catch (err) {
309
+ const error = err;
310
+ return { status: 'error', name, reason: error.message };
311
+ }
312
+ };
313
+ //# sourceMappingURL=symlink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symlink.js","sourceRoot":"","sources":["../../src/utils/symlink.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "moicle",
3
+ "version": "1.0.0",
4
+ "description": "Reusable AI agents, commands, skills, and architecture references for Claude Code",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "moicle": "./bin/cli.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "dev": "tsc --watch",
13
+ "test": "echo \"No tests yet\" && exit 0",
14
+ "prepublishOnly": "bun run build",
15
+ "pack:dist": "rm -rf release && mkdir -p release/moicle && cp -r bin dist assets package.json README.md release/moicle/ && cd release && zip -r moicle.zip moicle && echo 'Created release/moicle.zip'"
16
+ },
17
+ "keywords": [
18
+ "claude",
19
+ "claude-code",
20
+ "ai",
21
+ "agents",
22
+ "cli",
23
+ "developer-tools",
24
+ "automation"
25
+ ],
26
+ "author": "phuthuycoding",
27
+ "license": "GPL-3.0",
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "https://github.com/phuthuycoding/moicle.git"
31
+ },
32
+ "homepage": "https://github.com/phuthuycoding/moicle#readme",
33
+ "bugs": {
34
+ "url": "https://github.com/phuthuycoding/moicle/issues"
35
+ },
36
+ "engines": {
37
+ "node": ">=18.0.0"
38
+ },
39
+ "files": [
40
+ "bin/",
41
+ "dist/",
42
+ "assets/"
43
+ ],
44
+ "dependencies": {
45
+ "chalk": "^5.3.0",
46
+ "commander": "^12.1.0",
47
+ "inquirer": "^9.2.12",
48
+ "ora": "^8.0.1"
49
+ },
50
+ "devDependencies": {
51
+ "@types/inquirer": "^9.0.7",
52
+ "@types/node": "^20.11.0",
53
+ "typescript": "^5.3.3"
54
+ }
55
+ }