claude-code-toolkit 1.0.7

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 (46) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +476 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +183 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/install.d.ts +8 -0
  8. package/dist/commands/install.d.ts.map +1 -0
  9. package/dist/commands/install.js +184 -0
  10. package/dist/commands/install.js.map +1 -0
  11. package/dist/commands/list.d.ts +2 -0
  12. package/dist/commands/list.d.ts.map +1 -0
  13. package/dist/commands/list.js +134 -0
  14. package/dist/commands/list.js.map +1 -0
  15. package/dist/commands/template.d.ts +2 -0
  16. package/dist/commands/template.d.ts.map +1 -0
  17. package/dist/commands/template.js +299 -0
  18. package/dist/commands/template.js.map +1 -0
  19. package/dist/commands/update.d.ts +2 -0
  20. package/dist/commands/update.d.ts.map +1 -0
  21. package/dist/commands/update.js +21 -0
  22. package/dist/commands/update.js.map +1 -0
  23. package/dist/index.d.ts +7 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +19 -0
  26. package/dist/index.js.map +1 -0
  27. package/package.json +65 -0
  28. package/templates/.claude/hooks/README.md +342 -0
  29. package/templates/.claude/hooks/custom/intelligent-workflows.sh +336 -0
  30. package/templates/.claude/hooks/hook-manager.sh +300 -0
  31. package/templates/.claude/hooks/post-commit/smart-automations.sh +249 -0
  32. package/templates/.claude/hooks/pre-commit/code-quality-guardian.sh +257 -0
  33. package/templates/.claude/hooks/pre-push/deployment-guardian.sh +334 -0
  34. package/templates/.claude/memory/context.md +39 -0
  35. package/templates/.claude/memory/decisions.md +29 -0
  36. package/templates/.claude/memory/learnings.md +31 -0
  37. package/templates/.claude/memory/patterns.md +72 -0
  38. package/templates/.claude/memory/preferences.md +23 -0
  39. package/templates/.claude/skills/claude-code-hooks-master/SKILL.md +358 -0
  40. package/templates/.claude/skills/mobile-ui-ux-master/MobileCardGrid.tsx +270 -0
  41. package/templates/.claude/skills/mobile-ui-ux-master/SKILL.md +172 -0
  42. package/templates/.claude/skills/mobile-ui-ux-master/card-grid-template.html +260 -0
  43. package/templates/.claude/skills/mobile-ui-ux-master/mobile-ux-checklist.md +140 -0
  44. package/templates/.claude/skills/professional-documentation-writer/SKILL.md +42 -0
  45. package/templates/AGENTS.md +127 -0
  46. package/templates/CLAUDE.md +101 -0
@@ -0,0 +1,8 @@
1
+ export interface InstallOptions {
2
+ force?: boolean;
3
+ noHooks?: boolean;
4
+ noSkills?: boolean;
5
+ noAgents?: boolean;
6
+ }
7
+ export declare function installToolkit(options?: InstallOptions): Promise<void>;
8
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,cAAc,CAAC,OAAO,GAAE,cAAmB,iBA4JhE"}
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.installToolkit = installToolkit;
37
+ const fs = __importStar(require("fs-extra"));
38
+ const path = __importStar(require("path"));
39
+ const child_process_1 = require("child_process");
40
+ async function installToolkit(options = {}) {
41
+ const cwd = process.cwd();
42
+ const toolkitRoot = path.dirname(path.dirname(__dirname));
43
+ const templatesDir = path.join(toolkitRoot, 'templates');
44
+ console.log('Installing Claude Code toolkit in:', cwd);
45
+ // Create .claude directory structure
46
+ const claudeDir = path.join(cwd, '.claude');
47
+ await fs.ensureDir(claudeDir);
48
+ // Copy agents configuration
49
+ if (!options.noAgents) {
50
+ const agentsSource = path.join(templatesDir, 'AGENTS.md');
51
+ const agentsDest = path.join(cwd, 'AGENTS.md');
52
+ if (await fs.pathExists(agentsSource)) {
53
+ if (options.force || !(await fs.pathExists(agentsDest))) {
54
+ await fs.copy(agentsSource, agentsDest);
55
+ console.log('✅ Agents configuration installed');
56
+ }
57
+ else {
58
+ console.log('⚠️ Agents configuration already exists (use --force to overwrite)');
59
+ }
60
+ }
61
+ }
62
+ // Copy CLAUDE.md configuration
63
+ const claudeConfigSource = path.join(templatesDir, 'CLAUDE.md');
64
+ const claudeConfigDest = path.join(cwd, 'CLAUDE.md');
65
+ if (await fs.pathExists(claudeConfigSource)) {
66
+ if (options.force || !(await fs.pathExists(claudeConfigDest))) {
67
+ await fs.copy(claudeConfigSource, claudeConfigDest);
68
+ console.log('✅ Claude configuration installed');
69
+ }
70
+ }
71
+ // Copy skills
72
+ if (!options.noSkills) {
73
+ const skillsSource = path.join(templatesDir, '.claude', 'skills');
74
+ const skillsDest = path.join(claudeDir, 'skills');
75
+ if (await fs.pathExists(skillsSource)) {
76
+ if (options.force || !(await fs.pathExists(skillsDest))) {
77
+ await fs.copy(skillsSource, skillsDest);
78
+ console.log('✅ Skills installed');
79
+ // Create ZIP files for each skill
80
+ const skills = await fs.readdir(skillsDest);
81
+ for (const skill of skills) {
82
+ const skillPath = path.join(skillsDest, skill);
83
+ if ((await fs.stat(skillPath)).isDirectory()) {
84
+ const zipName = `${skill}.zip`;
85
+ const zipPath = path.join(cwd, zipName);
86
+ try {
87
+ // Create ZIP using PowerShell (since we're on Windows)
88
+ const psCommand = `Compress-Archive -Path "${skillPath}" -DestinationPath "${zipPath}" -Force`;
89
+ (0, child_process_1.execSync)(`powershell -Command "${psCommand}"`, { stdio: 'inherit' });
90
+ console.log(`📦 ${skill} packaged as ${zipName}`);
91
+ }
92
+ catch (error) {
93
+ console.log(`⚠️ Could not create ZIP for ${skill}`);
94
+ }
95
+ }
96
+ }
97
+ }
98
+ else {
99
+ console.log('⚠️ Skills already exist (use --force to overwrite)');
100
+ }
101
+ }
102
+ }
103
+ // Copy hooks
104
+ if (!options.noHooks) {
105
+ const hooksSource = path.join(templatesDir, '.claude', 'hooks');
106
+ const hooksDest = path.join(claudeDir, 'hooks');
107
+ if (await fs.pathExists(hooksSource)) {
108
+ if (options.force || !(await fs.pathExists(hooksDest))) {
109
+ await fs.copy(hooksSource, hooksDest);
110
+ // Make hook scripts executable (on Unix-like systems)
111
+ try {
112
+ const hookFiles = await fs.readdir(hooksDest);
113
+ for (const file of hookFiles) {
114
+ if (file.endsWith('.sh')) {
115
+ const filePath = path.join(hooksDest, file);
116
+ // Note: chmod may not work on Windows, but we'll try
117
+ try {
118
+ fs.chmodSync(filePath, '755');
119
+ }
120
+ catch {
121
+ // Ignore on Windows
122
+ }
123
+ }
124
+ }
125
+ }
126
+ catch {
127
+ // Ignore chmod errors
128
+ }
129
+ console.log('✅ Hooks installed');
130
+ }
131
+ else {
132
+ console.log('⚠️ Hooks already exist (use --force to overwrite)');
133
+ }
134
+ }
135
+ }
136
+ // Copy memory system
137
+ const memorySource = path.join(templatesDir, '.claude', 'memory');
138
+ const memoryDest = path.join(claudeDir, 'memory');
139
+ if (await fs.pathExists(memorySource)) {
140
+ if (options.force || !(await fs.pathExists(memoryDest))) {
141
+ await fs.copy(memorySource, memoryDest);
142
+ console.log('✅ Memory system installed');
143
+ }
144
+ }
145
+ // Create initial project context
146
+ const contextFile = path.join(memoryDest, 'context.md');
147
+ if (await fs.pathExists(path.dirname(contextFile))) {
148
+ const projectName = path.basename(cwd);
149
+ const context = `# Current Project Context
150
+
151
+ ## Project Overview
152
+ **Name**: ${projectName}
153
+ **Type**: New project with Claude Code toolkit
154
+ **Status**: Setup phase - toolkit installed
155
+
156
+ ## Active Components
157
+ - Professional Documentation Writer skill
158
+ - Mobile UI/UX Master skill
159
+ - Claude Code Hooks Master skill
160
+ - Persistent Memory System skill
161
+ - Six specialized agents (code-reviewer, doc-writer, test-generator, debugger, researcher, mobile-ui-specialist)
162
+ - Global configuration in CLAUDE.md
163
+ - Hook automation system (pre-commit, post-commit, pre-push, custom)
164
+
165
+ ## Next Steps
166
+ 1. Upload skills to Claude settings
167
+ 2. Set up hooks: .claude/hooks/hook-manager.sh setup
168
+ 3. Install git hooks: .claude/hooks/hook-manager.sh install
169
+ 4. Start development with enhanced AI assistance
170
+
171
+ ## Recent Changes
172
+ - ${new Date().toISOString().split('T')[0]}: Claude Code toolkit installed
173
+ - Skills and hooks configured for optimal development workflow
174
+ `;
175
+ await fs.writeFile(contextFile, context);
176
+ }
177
+ console.log('\n🎉 Claude Code toolkit installation complete!');
178
+ console.log('\n📋 Next steps:');
179
+ console.log('1. Upload skill ZIP files to https://claude.ai/settings → Skills');
180
+ console.log('2. Set up hooks: .claude/hooks/hook-manager.sh setup');
181
+ console.log('3. Install git hooks: .claude/hooks/hook-manager.sh install');
182
+ console.log('4. Start coding with AI-enhanced workflows!');
183
+ }
184
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function listComponents(): Promise<void>;
2
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAIA,wBAAsB,cAAc,kBA2FnC"}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.listComponents = listComponents;
40
+ const fs = __importStar(require("fs-extra"));
41
+ const path = __importStar(require("path"));
42
+ const chalk_1 = __importDefault(require("chalk"));
43
+ async function listComponents() {
44
+ const cwd = process.cwd();
45
+ const claudeDir = path.join(cwd, '.claude');
46
+ console.log(chalk_1.default.blue('🔍 Claude Code Toolkit Components\n'));
47
+ // List agents
48
+ console.log(chalk_1.default.yellow('🤖 Agents:'));
49
+ const agentsFile = path.join(cwd, 'AGENTS.md');
50
+ if (await fs.pathExists(agentsFile)) {
51
+ const content = await fs.readFile(agentsFile, 'utf-8');
52
+ const agentMatches = content.match(/\*\*Name\*\*: ([^\n]+)/g);
53
+ if (agentMatches) {
54
+ agentMatches.forEach(match => {
55
+ const agentName = match.replace('**Name**: ', '');
56
+ console.log(` ✅ ${agentName}`);
57
+ });
58
+ }
59
+ }
60
+ else {
61
+ console.log(' ❌ No agents configuration found');
62
+ }
63
+ // List skills
64
+ console.log(chalk_1.default.yellow('\n🛠️ Skills:'));
65
+ const skillsDir = path.join(claudeDir, 'skills');
66
+ if (await fs.pathExists(skillsDir)) {
67
+ const skills = await fs.readdir(skillsDir);
68
+ for (const skill of skills) {
69
+ const skillPath = path.join(skillsDir, skill);
70
+ if ((await fs.stat(skillPath)).isDirectory()) {
71
+ const skillMdPath = path.join(skillPath, 'SKILL.md');
72
+ if (await fs.pathExists(skillMdPath)) {
73
+ const content = await fs.readFile(skillMdPath, 'utf-8');
74
+ const nameMatch = content.match(/name: ([^\n]+)/);
75
+ const descMatch = content.match(/description: ([^\n]+)/);
76
+ const name = nameMatch ? nameMatch[1] : skill;
77
+ const desc = descMatch ? descMatch[1] : 'No description';
78
+ console.log(` ✅ ${name}: ${desc}`);
79
+ }
80
+ else {
81
+ console.log(` ✅ ${skill}: Skill directory (no SKILL.md)`);
82
+ }
83
+ }
84
+ }
85
+ }
86
+ else {
87
+ console.log(' ❌ No skills directory found');
88
+ }
89
+ // List hooks
90
+ console.log(chalk_1.default.yellow('\n🔄 Hooks:'));
91
+ const hooksDir = path.join(claudeDir, 'hooks');
92
+ if (await fs.pathExists(hooksDir)) {
93
+ const hookTypes = ['pre-commit', 'post-commit', 'pre-push', 'custom'];
94
+ for (const hookType of hookTypes) {
95
+ const typeDir = path.join(hooksDir, hookType);
96
+ if (await fs.pathExists(typeDir)) {
97
+ const hooks = await fs.readdir(typeDir);
98
+ const scriptHooks = hooks.filter(h => h.endsWith('.sh'));
99
+ if (scriptHooks.length > 0) {
100
+ console.log(` ✅ ${hookType}: ${scriptHooks.join(', ')}`);
101
+ }
102
+ }
103
+ }
104
+ }
105
+ else {
106
+ console.log(' ❌ No hooks directory found');
107
+ }
108
+ // List memory system
109
+ console.log(chalk_1.default.yellow('\n🧠 Memory System:'));
110
+ const memoryDir = path.join(claudeDir, 'memory');
111
+ if (await fs.pathExists(memoryDir)) {
112
+ const memoryFiles = await fs.readdir(memoryDir);
113
+ memoryFiles.forEach(file => {
114
+ const fileName = file.replace('.md', '');
115
+ console.log(` ✅ ${fileName} tracking`);
116
+ });
117
+ }
118
+ else {
119
+ console.log(' ❌ No memory system found');
120
+ }
121
+ console.log(chalk_1.default.yellow('\n📊 Global Configuration:'));
122
+ const claudeMd = path.join(cwd, 'CLAUDE.md');
123
+ if (await fs.pathExists(claudeMd)) {
124
+ console.log(' ✅ CLAUDE.md: Global prompts and settings');
125
+ }
126
+ else {
127
+ console.log(' ❌ CLAUDE.md: Global configuration not found');
128
+ }
129
+ console.log(chalk_1.default.blue('\n💡 Usage:'));
130
+ console.log(' Install in current project: claude-toolkit install');
131
+ console.log(' Create new project: claude-toolkit template <name>');
132
+ console.log(' Check installation: claude-toolkit doctor');
133
+ }
134
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function createTemplate(projectName: string, type?: string): Promise<void>;
2
+ //# sourceMappingURL=template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/commands/template.ts"],"names":[],"mappings":"AAIA,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE,MAAgB,iBAyC/E"}
@@ -0,0 +1,299 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.createTemplate = createTemplate;
37
+ const fs = __importStar(require("fs-extra"));
38
+ const path = __importStar(require("path"));
39
+ const child_process_1 = require("child_process");
40
+ async function createTemplate(projectName, type = 'react') {
41
+ const cwd = process.cwd();
42
+ const projectPath = path.join(cwd, projectName);
43
+ const toolkitRoot = path.dirname(path.dirname(__dirname));
44
+ // Check if directory already exists
45
+ if (await fs.pathExists(projectPath)) {
46
+ throw new Error(`Directory "${projectName}" already exists`);
47
+ }
48
+ console.log(`Creating ${type} project "${projectName}" with Claude Code toolkit...`);
49
+ // Create project directory
50
+ await fs.ensureDir(projectPath);
51
+ // Copy appropriate template based on type
52
+ const templatesDir = path.join(toolkitRoot, 'templates');
53
+ const templatePath = path.join(templatesDir, type);
54
+ if (await fs.pathExists(templatePath)) {
55
+ // Copy template files
56
+ await fs.copy(templatePath, projectPath);
57
+ }
58
+ else {
59
+ // Create basic structure based on type
60
+ await createBasicStructure(projectPath, type);
61
+ }
62
+ // Install Claude Code toolkit
63
+ process.chdir(projectPath);
64
+ await installClaudeToolkit(projectPath, toolkitRoot);
65
+ // Initialize git repository
66
+ try {
67
+ (0, child_process_1.execSync)('git init', { stdio: 'inherit' });
68
+ (0, child_process_1.execSync)('git add .', { stdio: 'inherit' });
69
+ (0, child_process_1.execSync)('git commit -m "Initial commit with Claude Code toolkit"', { stdio: 'inherit' });
70
+ }
71
+ catch (error) {
72
+ console.log('⚠️ Git initialization skipped (git may not be available)');
73
+ }
74
+ console.log(`\n🎉 Project "${projectName}" created successfully!`);
75
+ }
76
+ async function createBasicStructure(projectPath, type) {
77
+ const packageJson = {
78
+ name: path.basename(projectPath),
79
+ version: '0.1.0',
80
+ private: true,
81
+ scripts: {
82
+ dev: 'echo "Start development server"',
83
+ build: 'echo "Build for production"',
84
+ test: 'echo "Run tests"'
85
+ }
86
+ };
87
+ // Type-specific configurations
88
+ switch (type) {
89
+ case 'react':
90
+ packageJson.scripts = {
91
+ dev: 'vite',
92
+ build: 'vite build',
93
+ preview: 'vite preview'
94
+ };
95
+ packageJson.dependencies = {
96
+ 'react': '^18.2.0',
97
+ 'react-dom': '^18.2.0'
98
+ };
99
+ packageJson.devDependencies = {
100
+ '@vitejs/plugin-react': '^4.0.0',
101
+ 'vite': '^4.3.0',
102
+ 'typescript': '^5.0.0'
103
+ };
104
+ // Create basic React files
105
+ await fs.writeFile(path.join(projectPath, 'index.html'), `<!DOCTYPE html>
106
+ <html lang="en">
107
+ <head>
108
+ <meta charset="UTF-8" />
109
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
110
+ <title>${packageJson.name}</title>
111
+ </head>
112
+ <body>
113
+ <div id="root"></div>
114
+ <script type="module" src="/src/main.tsx"></script>
115
+ </body>
116
+ </html>`);
117
+ await fs.ensureDir(path.join(projectPath, 'src'));
118
+ await fs.writeFile(path.join(projectPath, 'src/main.tsx'), `import React from 'react'
119
+ import ReactDOM from 'react-dom/client'
120
+ import App from './App.tsx'
121
+
122
+ ReactDOM.createRoot(document.getElementById('root')!).render(
123
+ <React.StrictMode>
124
+ <App />
125
+ </React.StrictMode>,
126
+ )`);
127
+ await fs.writeFile(path.join(projectPath, 'src/App.tsx'), `import React from 'react'
128
+
129
+ function App() {
130
+ return (
131
+ <div>
132
+ <h1>Welcome to ${packageJson.name}</h1>
133
+ <p>Built with Claude Code toolkit</p>
134
+ </div>
135
+ )
136
+ }
137
+
138
+ export default App`);
139
+ break;
140
+ case 'vue':
141
+ packageJson.scripts = {
142
+ dev: 'vite',
143
+ build: 'vite build',
144
+ preview: 'vite preview'
145
+ };
146
+ packageJson.dependencies = {
147
+ 'vue': '^3.3.0'
148
+ };
149
+ packageJson.devDependencies = {
150
+ '@vitejs/plugin-vue': '^4.2.0',
151
+ 'vite': '^4.3.0',
152
+ 'typescript': '^5.0.0'
153
+ };
154
+ break;
155
+ case 'node':
156
+ packageJson.scripts = {
157
+ start: 'node src/index.js',
158
+ dev: 'nodemon src/index.js',
159
+ test: 'jest'
160
+ };
161
+ packageJson.dependencies = {
162
+ 'express': '^4.18.0'
163
+ };
164
+ packageJson.devDependencies = {
165
+ 'nodemon': '^3.0.0',
166
+ 'jest': '^29.0.0'
167
+ };
168
+ await fs.ensureDir(path.join(projectPath, 'src'));
169
+ await fs.writeFile(path.join(projectPath, 'src/index.js'), `const express = require('express');
170
+ const app = express();
171
+ const port = process.env.PORT || 3000;
172
+
173
+ app.get('/', (req, res) => {
174
+ res.json({ message: 'Hello from ${packageJson.name}!' });
175
+ });
176
+
177
+ app.listen(port, () => {
178
+ console.log(\`Server running on port \${port}\`);
179
+ });`);
180
+ break;
181
+ case 'python':
182
+ packageJson.scripts = {
183
+ start: 'python src/main.py',
184
+ dev: 'python -m uvicorn src.main:app --reload',
185
+ test: 'pytest'
186
+ };
187
+ await fs.ensureDir(path.join(projectPath, 'src'));
188
+ await fs.writeFile(path.join(projectPath, 'src/main.py'), `from fastapi import FastAPI
189
+
190
+ app = FastAPI(title="${packageJson.name}")
191
+
192
+ @app.get("/")
193
+ async def root():
194
+ return {"message": "Hello from ${packageJson.name}!", "toolkit": "Claude Code"}
195
+
196
+ @app.get("/health")
197
+ async def health():
198
+ return {"status": "healthy"}`);
199
+ await fs.writeFile(path.join(projectPath, 'requirements.txt'), `fastapi==0.104.0
200
+ uvicorn[standard]==0.24.0
201
+ pytest==7.4.0`);
202
+ break;
203
+ default:
204
+ throw new Error(`Unsupported project type: ${type}`);
205
+ }
206
+ // Write package.json
207
+ await fs.writeJson(path.join(projectPath, 'package.json'), packageJson, { spaces: 2 });
208
+ // Create README
209
+ const readme = `# ${packageJson.name}
210
+
211
+ Created with Claude Code toolkit.
212
+
213
+ ## Getting Started
214
+
215
+ \`\`\`bash
216
+ npm install
217
+ npm run dev
218
+ \`\`\`
219
+
220
+ ## Claude Code Features
221
+
222
+ This project includes:
223
+ - 🤖 Specialized AI agents for development tasks
224
+ - 🛠️ Reusable skills for common workflows
225
+ - 🔄 Automated hooks for quality assurance
226
+ - 📚 Persistent memory system
227
+ - 🎨 Professional UI/UX patterns
228
+
229
+ ## Next Steps
230
+
231
+ 1. Upload skills to [Claude.ai settings](https://claude.ai/settings)
232
+ 2. Set up hooks: \`.claude/hooks/hook-manager.sh setup\`
233
+ 3. Install git hooks: \`.claude/hooks/hook-manager.sh install\`
234
+ 4. Start developing with AI-enhanced workflows!
235
+
236
+ ## Available Agents
237
+
238
+ - **code-reviewer**: Automated code quality checks
239
+ - **doc-writer**: Professional documentation generation
240
+ - **test-generator**: Comprehensive test suite creation
241
+ - **debugger**: Systematic debugging assistance
242
+ - **researcher**: Technical research and insights
243
+ - **mobile-ui-specialist**: Professional mobile UI/UX
244
+
245
+ ## Available Skills
246
+
247
+ - **professional-documentation-writer**: Creates comprehensive docs
248
+ - **mobile-ui-ux-master**: Eliminates layout and consistency issues
249
+ - **claude-code-hooks-master**: Automation and workflow enhancement
250
+ - **persistent-memory-system**: Project knowledge management
251
+ `;
252
+ await fs.writeFile(path.join(projectPath, 'README.md'), readme);
253
+ }
254
+ async function installClaudeToolkit(projectPath, toolkitRoot) {
255
+ const originalCwd = process.cwd();
256
+ try {
257
+ process.chdir(projectPath);
258
+ const templatesDir = path.join(toolkitRoot, 'templates');
259
+ // Copy Claude Code configurations from templates/.claude
260
+ const claudeSource = path.join(templatesDir, '.claude');
261
+ const claudeDest = path.join(projectPath, '.claude');
262
+ if (await fs.pathExists(claudeSource)) {
263
+ await fs.copy(claudeSource, claudeDest);
264
+ console.log('✅ Claude Code toolkit integrated');
265
+ }
266
+ else {
267
+ console.log('⚠️ Claude configuration templates not found at:', claudeSource);
268
+ }
269
+ // Copy AGENTS.md from templates
270
+ const agentsSource = path.join(templatesDir, 'AGENTS.md');
271
+ const agentsDest = path.join(projectPath, 'AGENTS.md');
272
+ if (await fs.pathExists(agentsSource)) {
273
+ await fs.copy(agentsSource, agentsDest);
274
+ console.log('✅ Agents configuration installed');
275
+ }
276
+ // Copy CLAUDE.md from templates
277
+ const claudeMdSource = path.join(templatesDir, 'CLAUDE.md');
278
+ const claudeMdDest = path.join(projectPath, 'CLAUDE.md');
279
+ if (await fs.pathExists(claudeMdSource)) {
280
+ await fs.copy(claudeMdSource, claudeMdDest);
281
+ console.log('✅ Claude global configuration installed');
282
+ }
283
+ // Install dependencies for toolkit features
284
+ const packageJson = await fs.readJson(path.join(projectPath, 'package.json'));
285
+ if (!packageJson.dependencies)
286
+ packageJson.dependencies = {};
287
+ if (!packageJson.devDependencies)
288
+ packageJson.devDependencies = {};
289
+ // Add styled-components for mobile UI skill
290
+ packageJson.dependencies['styled-components'] = '^6.1.0';
291
+ packageJson.devDependencies['@types/styled-components'] = '^5.1.0';
292
+ await fs.writeJson(path.join(projectPath, 'package.json'), packageJson, { spaces: 2 });
293
+ console.log('✅ Dependencies configured');
294
+ }
295
+ finally {
296
+ process.chdir(originalCwd);
297
+ }
298
+ }
299
+ //# sourceMappingURL=template.js.map