@paulduvall/claude-dev-toolkit 0.0.1-alpha.6 โ 0.0.1-alpha.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.
- package/README.md +3 -3
- package/bin/claude-commands +25 -59
- package/lib/installer.js +7 -11
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -41,7 +41,7 @@ npm install -g @paulduvall/claude-dev-toolkit
|
|
|
41
41
|
```bash
|
|
42
42
|
# Install specific command sets
|
|
43
43
|
claude-commands install --active # Install 13 production commands
|
|
44
|
-
claude-commands install --
|
|
44
|
+
claude-commands install --experiments # Install 45 experimental commands
|
|
45
45
|
claude-commands install --all # Install all 58 commands
|
|
46
46
|
```
|
|
47
47
|
|
|
@@ -89,7 +89,7 @@ Advanced commands for specialized workflows:
|
|
|
89
89
|
claude-commands list # List all available commands
|
|
90
90
|
claude-commands status # Show installation status
|
|
91
91
|
claude-commands install --active # Install production commands
|
|
92
|
-
claude-commands install --
|
|
92
|
+
claude-commands install --experiments # Install experimental commands
|
|
93
93
|
claude-commands install --all # Install all commands
|
|
94
94
|
|
|
95
95
|
# Configuration Management
|
|
@@ -203,7 +203,7 @@ claude-commands install --active # Reinstall commands
|
|
|
203
203
|
chmod 755 ~/.claude/commands/*.md # Fix permissions
|
|
204
204
|
|
|
205
205
|
# Missing experimental commands?
|
|
206
|
-
claude-commands install --
|
|
206
|
+
claude-commands install --experiments # Install experimental set
|
|
207
207
|
|
|
208
208
|
# Test failures?
|
|
209
209
|
npm test # Run full test suite
|
package/bin/claude-commands
CHANGED
|
@@ -20,60 +20,37 @@ program
|
|
|
20
20
|
.command('list')
|
|
21
21
|
.description('List all available commands')
|
|
22
22
|
.option('-a, --active', 'Show only active commands')
|
|
23
|
-
.option('-e, --
|
|
23
|
+
.option('-e, --experiments', 'Show only experimental commands')
|
|
24
24
|
.action((options) => {
|
|
25
25
|
const claudeDir = path.join(os.homedir(), '.claude', 'commands');
|
|
26
|
-
const activeDir = path.join(claudeDir, 'active');
|
|
27
|
-
const experimentalDir = path.join(claudeDir, 'experiments');
|
|
28
26
|
|
|
29
27
|
console.log('๐ฆ Claude Custom Commands\n');
|
|
30
28
|
|
|
31
|
-
if (
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
} else {
|
|
42
|
-
console.log(' No active commands found');
|
|
43
|
-
}
|
|
29
|
+
if (fs.existsSync(claudeDir)) {
|
|
30
|
+
const allCommands = fs.readdirSync(claudeDir)
|
|
31
|
+
.filter(f => f.endsWith('.md'))
|
|
32
|
+
.map(f => f.replace('.md', ''))
|
|
33
|
+
.sort();
|
|
34
|
+
|
|
35
|
+
if (allCommands.length > 0) {
|
|
36
|
+
console.log('๐ Available Commands:');
|
|
37
|
+
allCommands.forEach(cmd => console.log(` /${cmd}`));
|
|
38
|
+
console.log(`\n๐ Total: ${allCommands.length} commands`);
|
|
44
39
|
} else {
|
|
45
|
-
console.log('
|
|
40
|
+
console.log(' No commands found');
|
|
46
41
|
}
|
|
47
|
-
|
|
42
|
+
} else {
|
|
43
|
+
console.log(' Commands directory not found');
|
|
48
44
|
}
|
|
49
45
|
|
|
50
|
-
|
|
51
|
-
console.log('๐งช Experimental Commands:');
|
|
52
|
-
if (fs.existsSync(experimentalDir)) {
|
|
53
|
-
const expCommands = fs.readdirSync(experimentalDir)
|
|
54
|
-
.filter(f => f.endsWith('.md'))
|
|
55
|
-
.map(f => f.replace('.md', ''))
|
|
56
|
-
.sort();
|
|
57
|
-
|
|
58
|
-
if (expCommands.length > 0) {
|
|
59
|
-
expCommands.forEach(cmd => console.log(` /${cmd}`));
|
|
60
|
-
} else {
|
|
61
|
-
console.log(' No experimental commands found');
|
|
62
|
-
}
|
|
63
|
-
} else {
|
|
64
|
-
console.log(' Commands directory not found');
|
|
65
|
-
}
|
|
66
|
-
console.log('');
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
console.log('๐ก Usage: Try /xhelp in Claude Code to see all commands');
|
|
46
|
+
console.log('\n๐ก Usage: Try /xhelp in Claude Code to see all commands');
|
|
70
47
|
});
|
|
71
48
|
|
|
72
49
|
program
|
|
73
50
|
.command('install')
|
|
74
51
|
.description('Install command sets')
|
|
75
52
|
.option('--active', 'Install active commands only')
|
|
76
|
-
.option('--
|
|
53
|
+
.option('--experiments', 'Install experimental commands')
|
|
77
54
|
.option('--all', 'Install all commands')
|
|
78
55
|
.action((options) => {
|
|
79
56
|
const installer = require('../lib/installer');
|
|
@@ -85,33 +62,22 @@ program
|
|
|
85
62
|
.description('Show installation status')
|
|
86
63
|
.action(() => {
|
|
87
64
|
const claudeDir = path.join(os.homedir(), '.claude', 'commands');
|
|
88
|
-
const activeDir = path.join(claudeDir, 'active');
|
|
89
|
-
const experimentalDir = path.join(claudeDir, 'experiments');
|
|
90
65
|
|
|
91
66
|
console.log('๐ Claude Dev Toolkit Status\n');
|
|
92
67
|
|
|
93
68
|
// Check Claude directory
|
|
94
|
-
console.log('๐ Installation
|
|
95
|
-
console.log(`
|
|
96
|
-
console.log(` Active commands: ${fs.existsSync(activeDir) ? 'โ
' : 'โ'} ${activeDir}`);
|
|
97
|
-
console.log(` Experimental: ${fs.existsSync(experimentalDir) ? 'โ
' : 'โ'} ${experimentalDir}\n`);
|
|
69
|
+
console.log('๐ Installation Path:');
|
|
70
|
+
console.log(` Commands directory: ${fs.existsSync(claudeDir) ? 'โ
' : 'โ'} ${claudeDir}\n`);
|
|
98
71
|
|
|
99
72
|
// Count commands
|
|
100
|
-
let
|
|
101
|
-
let expCount = 0;
|
|
102
|
-
|
|
103
|
-
if (fs.existsSync(activeDir)) {
|
|
104
|
-
activeCount = fs.readdirSync(activeDir).filter(f => f.endsWith('.md')).length;
|
|
105
|
-
}
|
|
73
|
+
let totalCount = 0;
|
|
106
74
|
|
|
107
|
-
if (fs.existsSync(
|
|
108
|
-
|
|
75
|
+
if (fs.existsSync(claudeDir)) {
|
|
76
|
+
totalCount = fs.readdirSync(claudeDir).filter(f => f.endsWith('.md')).length;
|
|
109
77
|
}
|
|
110
78
|
|
|
111
79
|
console.log('๐ฆ Command Inventory:');
|
|
112
|
-
console.log(`
|
|
113
|
-
console.log(` Experimental commands: ${expCount}`);
|
|
114
|
-
console.log(` Total commands: ${activeCount + expCount}\n`);
|
|
80
|
+
console.log(` Total commands: ${totalCount}\n`);
|
|
115
81
|
|
|
116
82
|
// Package info
|
|
117
83
|
console.log('๐ Package Information:');
|
|
@@ -119,13 +85,13 @@ program
|
|
|
119
85
|
console.log(` CLI Location: ${process.argv[1]}\n`);
|
|
120
86
|
|
|
121
87
|
// Quick health check
|
|
122
|
-
const isHealthy = fs.existsSync(claudeDir) &&
|
|
88
|
+
const isHealthy = fs.existsSync(claudeDir) && totalCount > 0;
|
|
123
89
|
console.log(`๐ Overall Status: ${isHealthy ? 'โ
Healthy' : 'โ ๏ธ Issues detected'}`);
|
|
124
90
|
|
|
125
91
|
if (!isHealthy) {
|
|
126
92
|
console.log('\n๐ก Troubleshooting:');
|
|
127
|
-
console.log(' โข Try: npm install -g claude-dev-toolkit');
|
|
128
|
-
console.log(' โข Or reinstall
|
|
93
|
+
console.log(' โข Try: npm install -g @paulduvall/claude-dev-toolkit');
|
|
94
|
+
console.log(' โข Or reinstall: claude-commands install --all');
|
|
129
95
|
}
|
|
130
96
|
});
|
|
131
97
|
|
package/lib/installer.js
CHANGED
|
@@ -11,24 +11,21 @@ module.exports = {
|
|
|
11
11
|
|
|
12
12
|
console.log('๐ Installing Claude Custom Commands...\n');
|
|
13
13
|
|
|
14
|
-
// Ensure
|
|
14
|
+
// Ensure main commands directory exists
|
|
15
15
|
ensureDirectory(claudeDir);
|
|
16
|
-
ensureDirectory(path.join(claudeDir, 'active'));
|
|
17
|
-
ensureDirectory(path.join(claudeDir, 'experimental'));
|
|
18
16
|
|
|
19
17
|
let installedCount = 0;
|
|
20
18
|
|
|
21
|
-
// Install active commands
|
|
22
|
-
if (options.active || options.all || (!options.active && !options.
|
|
19
|
+
// Install active commands (directly to commands directory)
|
|
20
|
+
if (options.active || options.all || (!options.active && !options.experiments)) {
|
|
23
21
|
const activeSource = path.join(packageDir, 'commands', 'active');
|
|
24
|
-
const activeTarget = path.join(claudeDir, 'active');
|
|
25
22
|
|
|
26
23
|
if (fs.existsSync(activeSource)) {
|
|
27
24
|
const activeFiles = fs.readdirSync(activeSource).filter(f => f.endsWith('.md'));
|
|
28
25
|
activeFiles.forEach(file => {
|
|
29
26
|
fs.copyFileSync(
|
|
30
27
|
path.join(activeSource, file),
|
|
31
|
-
path.join(
|
|
28
|
+
path.join(claudeDir, file)
|
|
32
29
|
);
|
|
33
30
|
});
|
|
34
31
|
installedCount += activeFiles.length;
|
|
@@ -36,17 +33,16 @@ module.exports = {
|
|
|
36
33
|
}
|
|
37
34
|
}
|
|
38
35
|
|
|
39
|
-
// Install experimental commands
|
|
40
|
-
if (options.
|
|
36
|
+
// Install experimental commands (directly to commands directory)
|
|
37
|
+
if (options.experiments || options.all) {
|
|
41
38
|
const expSource = path.join(packageDir, 'commands', 'experiments');
|
|
42
|
-
const expTarget = path.join(claudeDir, 'experiments');
|
|
43
39
|
|
|
44
40
|
if (fs.existsSync(expSource)) {
|
|
45
41
|
const expFiles = fs.readdirSync(expSource).filter(f => f.endsWith('.md'));
|
|
46
42
|
expFiles.forEach(file => {
|
|
47
43
|
fs.copyFileSync(
|
|
48
44
|
path.join(expSource, file),
|
|
49
|
-
path.join(
|
|
45
|
+
path.join(claudeDir, file)
|
|
50
46
|
);
|
|
51
47
|
});
|
|
52
48
|
installedCount += expFiles.length;
|
package/package.json
CHANGED