cli-ai-skills 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.
package/README.md ADDED
@@ -0,0 +1,257 @@
1
+ # CLI AI Skills Installer
2
+
3
+ Install AI skills for **GitHub Copilot CLI** and **Claude Code** with a single command.
4
+
5
+ ```bash
6
+ npx cli-ai-skills install
7
+ ```
8
+
9
+ ## ✨ Features
10
+
11
+ - šŸŽÆ **Interactive Installation** - Choose skills, platforms, and scope
12
+ - šŸ” **Smart Version Detection** - Automatically detects outdated skills
13
+ - šŸ“¦ **Multi-Platform Support** - GitHub Copilot CLI and Claude Code
14
+ - šŸŒ **Global or Local** - Install globally or per-repository
15
+ - šŸ”— **Symlink Support** - Auto-updates with repository changes
16
+ - šŸ“Š **Progress Gauge** - Visual progress tracking
17
+ - šŸ„ **Doctor Command** - Diagnose installation issues
18
+
19
+ ## šŸš€ Quick Start
20
+
21
+ ### Install All Skills
22
+
23
+ ```bash
24
+ npx cli-ai-skills install --all
25
+ ```
26
+
27
+ ### Install Specific Skill
28
+
29
+ ```bash
30
+ npx cli-ai-skills install prompt-engineer
31
+ ```
32
+
33
+ ### Interactive Installation
34
+
35
+ ```bash
36
+ npx cli-ai-skills install
37
+ ```
38
+
39
+ You'll be prompted to select:
40
+ - **Scope**: Global or Local
41
+ - **Platforms**: GitHub Copilot CLI, Claude Code, or both
42
+ - **Skills**: Which skills to install
43
+
44
+ ## šŸ“¦ Available Skills
45
+
46
+ - **prompt-engineer** - Transform prompts using 11 established frameworks
47
+ - **skill-creator** - Create new skills interactively
48
+ - **youtube-summarizer** - Extract and summarize YouTube videos
49
+
50
+ ## šŸ“– Commands
51
+
52
+ ### `install [skills...]`
53
+
54
+ Install AI skills.
55
+
56
+ ```bash
57
+ # Install all skills
58
+ npx cli-ai-skills install --all
59
+
60
+ # Install specific skills
61
+ npx cli-ai-skills install prompt-engineer skill-creator
62
+
63
+ # Install for specific platform
64
+ npx cli-ai-skills install --copilot
65
+ npx cli-ai-skills install --claude
66
+
67
+ # Install locally (in current repository)
68
+ npx cli-ai-skills install --local
69
+
70
+ # Silent installation (skip prompts)
71
+ npx cli-ai-skills install --all --yes
72
+ ```
73
+
74
+ **Options:**
75
+ - `-a, --all` - Install all available skills
76
+ - `-g, --global` - Install globally (default)
77
+ - `-l, --local` - Install in current repository
78
+ - `--copilot` - Install only for GitHub Copilot CLI
79
+ - `--claude` - Install only for Claude Code
80
+ - `-y, --yes` - Skip confirmations
81
+ - `--copy` - Copy files instead of symlinks
82
+
83
+ ### `list`
84
+
85
+ List available and installed skills.
86
+
87
+ ```bash
88
+ npx cli-ai-skills list
89
+ ```
90
+
91
+ Shows:
92
+ - āœ… Installed skills with versions
93
+ - āš ļø Skills with updates available
94
+ - ⬜ Skills not yet installed
95
+
96
+ ### `update [skills...]`
97
+
98
+ Update installed skills.
99
+
100
+ ```bash
101
+ # Update all skills
102
+ npx cli-ai-skills update --all
103
+
104
+ # Update specific skill
105
+ npx cli-ai-skills update prompt-engineer
106
+ ```
107
+
108
+ ### `uninstall <skill>`
109
+
110
+ Remove an installed skill.
111
+
112
+ ```bash
113
+ npx cli-ai-skills uninstall youtube-summarizer
114
+ ```
115
+
116
+ ### `doctor`
117
+
118
+ Diagnose installation issues.
119
+
120
+ ```bash
121
+ npx cli-ai-skills doctor
122
+ ```
123
+
124
+ Checks:
125
+ - āœ… Node.js version
126
+ - āœ… Platform installations (Copilot/Claude)
127
+ - āœ… Directory permissions
128
+ - āœ… Network connectivity
129
+
130
+ ## šŸŽØ Example Usage
131
+
132
+ ### First-Time Installation
133
+
134
+ ```bash
135
+ $ npx cli-ai-skills install
136
+
137
+ šŸ¤– CLI AI Skills Installer v1.0.0
138
+
139
+ [ā–ˆā–ˆā–ˆā–ˆā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘] 20% - Step 1/5: Detecting platforms
140
+ šŸ” Platform Detection:
141
+ āœ… GitHub Copilot CLI found (gh version 2.50.0)
142
+ āœ… Claude Code detected (~/.claude/)
143
+
144
+ šŸ“ Where do you want to install skills?
145
+ āÆ Global (available for all projects)
146
+ Local (current repository only)
147
+
148
+ šŸ“¦ Select platforms to install skills for:
149
+ āÆā—‰ GitHub Copilot CLI (~/.copilot/skills/)
150
+ ā—‰ Claude Code (~/.claude/skills/)
151
+
152
+ šŸŽÆ Which skills do you want to install?
153
+ āÆā—‰ prompt-engineer v1.0.0 - Transform prompts
154
+ ā—‰ skill-creator v1.1.0 - Create new skills
155
+ ā—Æ youtube-summarizer v1.0.0 - Summarize videos
156
+ ā—Æ All skills
157
+
158
+ [ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆ] 100% - Installation complete!
159
+
160
+ šŸŽ‰ 2 skills installed successfully on 2 platforms!
161
+ ```
162
+
163
+ ### Updating Skills
164
+
165
+ ```bash
166
+ $ npx cli-ai-skills list
167
+
168
+ šŸ“¦ CLI AI Skills
169
+
170
+ āœ… prompt-engineer v1.0.0 (installed)
171
+ āš ļø skill-creator v1.0.0 (v1.1.0 available)
172
+ ⬜ youtube-summarizer v1.0.0
173
+
174
+ $ npx cli-ai-skills update skill-creator
175
+
176
+ šŸ”„ Updating skill-creator v1.0.0 → v1.1.0...
177
+ āœ… Updated successfully
178
+
179
+ šŸŽ‰ skill-creator updated to v1.1.0!
180
+ ```
181
+
182
+ ## šŸ”§ Global vs Local Installation
183
+
184
+ ### Global Installation (Default)
185
+
186
+ ```bash
187
+ npx cli-ai-skills install --global
188
+ ```
189
+
190
+ - Skills available in **all projects**
191
+ - Installed in `~/.copilot/skills/` and `~/.claude/skills/`
192
+ - Uses **symlinks** (auto-updates on `git pull`)
193
+
194
+ ### Local Installation
195
+
196
+ ```bash
197
+ npx cli-ai-skills install --local
198
+ ```
199
+
200
+ - Skills available **only in current repository**
201
+ - Installed in `.github/skills/` and `.claude/skills/`
202
+ - Uses **copy** (commit to share with team)
203
+
204
+ ## šŸ› Troubleshooting
205
+
206
+ ### Platforms Not Detected
207
+
208
+ ```bash
209
+ npx cli-ai-skills doctor
210
+ ```
211
+
212
+ This will diagnose:
213
+ - Missing GitHub Copilot CLI or Claude Code
214
+ - Permission issues
215
+ - Network connectivity problems
216
+
217
+ ### Skills Not Working After Installation
218
+
219
+ 1. **Open a new terminal** (environment needs to refresh)
220
+ 2. Verify installation: `npx cli-ai-skills list`
221
+ 3. Check permissions: `npx cli-ai-skills doctor`
222
+
223
+ ### Update Fails
224
+
225
+ If update fails, try reinstalling:
226
+
227
+ ```bash
228
+ npx cli-ai-skills uninstall <skill>
229
+ npx cli-ai-skills install <skill>
230
+ ```
231
+
232
+ ## šŸ“ Requirements
233
+
234
+ - **Node.js** >= 14.0.0
235
+ - **GitHub Copilot CLI** (optional) - [Install](https://docs.github.com/copilot/cli)
236
+ - **Claude Code** (optional) - [Install](https://claude.ai/code)
237
+
238
+ At least one AI platform is required.
239
+
240
+ ## šŸ¤ Contributing
241
+
242
+ Found a bug or have a feature request? [Open an issue](https://github.com/ericgandrade/cli-ai-skills/issues).
243
+
244
+ ## šŸ“„ License
245
+
246
+ MIT Ā© Eric Andrade
247
+
248
+ ## šŸ”— Links
249
+
250
+ - **Repository**: https://github.com/ericgandrade/cli-ai-skills
251
+ - **Skills Documentation**: https://github.com/ericgandrade/cli-ai-skills#readme
252
+ - **GitHub Copilot**: https://docs.github.com/copilot/cli
253
+ - **Claude Code**: https://claude.ai/code
254
+
255
+ ---
256
+
257
+ **Made with ā¤ļø for AI-assisted development**
package/bin/cli.js ADDED
@@ -0,0 +1,108 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { Command } = require('commander');
4
+ const chalk = require('chalk');
5
+ const packageJson = require('../package.json');
6
+
7
+ const program = new Command();
8
+
9
+ program
10
+ .name('cli-ai-skills')
11
+ .description(chalk.cyan('šŸ¤– Install AI skills for GitHub Copilot CLI and Claude Code'))
12
+ .version(packageJson.version, '-v, --version', 'Output the current version');
13
+
14
+ // Command: install
15
+ program
16
+ .command('install [skills...]')
17
+ .description('Install AI skills')
18
+ .option('-a, --all', 'Install all available skills')
19
+ .option('-g, --global', 'Install globally (default)')
20
+ .option('-l, --local', 'Install in current repository')
21
+ .option('--copilot', 'Install only for GitHub Copilot CLI')
22
+ .option('--claude', 'Install only for Claude Code')
23
+ .option('-y, --yes', 'Skip confirmations')
24
+ .option('--copy', 'Copy files instead of symlinks')
25
+ .action(async (skillNames, options) => {
26
+ try {
27
+ const installCommand = require('../lib/commands/install');
28
+ await installCommand(skillNames, options);
29
+ } catch (error) {
30
+ console.error(chalk.red(`\nāŒ Error: ${error.message}`));
31
+ process.exit(1);
32
+ }
33
+ });
34
+
35
+ // Command: uninstall
36
+ program
37
+ .command('uninstall <skill>')
38
+ .description('Uninstall a skill')
39
+ .option('-g, --global', 'Uninstall from global location')
40
+ .option('-l, --local', 'Uninstall from local repository')
41
+ .action(async (skill, options) => {
42
+ try {
43
+ const uninstallCommand = require('../lib/commands/uninstall');
44
+ await uninstallCommand(skill, options);
45
+ } catch (error) {
46
+ console.error(chalk.red(`\nāŒ Error: ${error.message}`));
47
+ process.exit(1);
48
+ }
49
+ });
50
+
51
+ // Command: list
52
+ program
53
+ .command('list')
54
+ .alias('ls')
55
+ .description('List available and installed skills')
56
+ .option('-i, --installed', 'Show only installed skills')
57
+ .option('-a, --available', 'Show only available skills')
58
+ .action(async (options) => {
59
+ try {
60
+ const listCommand = require('../lib/commands/list');
61
+ await listCommand(options);
62
+ } catch (error) {
63
+ console.error(chalk.red(`\nāŒ Error: ${error.message}`));
64
+ process.exit(1);
65
+ }
66
+ });
67
+
68
+ // Command: update
69
+ program
70
+ .command('update [skills...]')
71
+ .description('Update installed skills')
72
+ .option('-a, --all', 'Update all skills')
73
+ .option('-y, --yes', 'Skip confirmations')
74
+ .action(async (skillNames, options) => {
75
+ try {
76
+ const updateCommand = require('../lib/commands/update');
77
+ await updateCommand(skillNames, options);
78
+ } catch (error) {
79
+ console.error(chalk.red(`\nāŒ Error: ${error.message}`));
80
+ process.exit(1);
81
+ }
82
+ });
83
+
84
+ // Command: doctor
85
+ program
86
+ .command('doctor')
87
+ .description('Diagnose installation issues')
88
+ .action(async () => {
89
+ try {
90
+ const doctorCommand = require('../lib/commands/doctor');
91
+ await doctorCommand();
92
+ } catch (error) {
93
+ console.error(chalk.red(`\nāŒ Error: ${error.message}`));
94
+ process.exit(1);
95
+ }
96
+ });
97
+
98
+ // Error handling
99
+ program.configureOutput({
100
+ writeErr: (str) => process.stderr.write(chalk.red(str))
101
+ });
102
+
103
+ program.parse(process.argv);
104
+
105
+ // Show help if no command
106
+ if (!process.argv.slice(2).length) {
107
+ program.outputHelp();
108
+ }
@@ -0,0 +1,119 @@
1
+ const chalk = require('chalk');
2
+ const PlatformDetector = require('../core/detector');
3
+ const { execSync } = require('child_process');
4
+
5
+ async function doctorCommand() {
6
+ console.log(chalk.cyan.bold('\nšŸ” CLI AI Skills Doctor\n'));
7
+ console.log('Running diagnostics...\n');
8
+
9
+ const detector = new PlatformDetector();
10
+ let issues = 0;
11
+ let warnings = 0;
12
+
13
+ console.log(chalk.cyan('━'.repeat(60)));
14
+ console.log(chalk.bold('\nSystem Environment:\n'));
15
+
16
+ // Check Node.js version
17
+ console.log(chalk.bold('Node.js:'));
18
+ const nodeVersion = process.version;
19
+ const nodeMajor = parseInt(nodeVersion.slice(1).split('.')[0]);
20
+ if (nodeMajor >= 14) {
21
+ console.log(chalk.green(` āœ… ${nodeVersion}`));
22
+ } else {
23
+ console.log(chalk.red(` āŒ ${nodeVersion} (require >= 14.0.0)`));
24
+ console.log(chalk.dim(` Update Node.js: https://nodejs.org/`));
25
+ issues++;
26
+ }
27
+
28
+ // Check OS
29
+ console.log(chalk.bold('\nOperating System:'));
30
+ const platform = process.platform;
31
+ const osMap = {
32
+ 'darwin': 'macOS',
33
+ 'linux': 'Linux',
34
+ 'win32': 'Windows'
35
+ };
36
+ console.log(chalk.green(` āœ… ${osMap[platform] || platform}`));
37
+
38
+ console.log(chalk.cyan('\n' + '━'.repeat(60)));
39
+ console.log(chalk.bold('\nAI Platforms:\n'));
40
+
41
+ // Check GitHub Copilot
42
+ console.log(chalk.bold('GitHub Copilot CLI:'));
43
+ const copilotInfo = await detector.detectCopilot();
44
+ if (copilotInfo.cliInstalled) {
45
+ console.log(chalk.green(` āœ… Installed (${copilotInfo.version})`));
46
+ console.log(chalk.dim(` Skills directory: ${copilotInfo.globalPath}`));
47
+
48
+ const writable = await detector.isWritable(copilotInfo.globalPath);
49
+ if (writable) {
50
+ console.log(chalk.green(` āœ… Directory writable`));
51
+ } else {
52
+ console.log(chalk.yellow(` āš ļø Directory not writable`));
53
+ warnings++;
54
+ }
55
+ } else if (copilotInfo.installed) {
56
+ console.log(chalk.yellow(' āš ļø Directory exists but CLI not installed'));
57
+ console.log(chalk.dim(` Install: https://docs.github.com/copilot/cli`));
58
+ warnings++;
59
+ } else {
60
+ console.log(chalk.yellow(' āš ļø Not installed'));
61
+ console.log(chalk.dim(` Install: https://docs.github.com/copilot/cli`));
62
+ }
63
+
64
+ // Check Claude Code
65
+ console.log(chalk.bold('\nClaude Code:'));
66
+ const claudeInfo = await detector.detectClaude();
67
+ if (claudeInfo.installed) {
68
+ console.log(chalk.green(' āœ… Detected'));
69
+ console.log(chalk.dim(` Skills directory: ${claudeInfo.globalPath}`));
70
+
71
+ const writable = await detector.isWritable(claudeInfo.globalPath);
72
+ if (writable) {
73
+ console.log(chalk.green(` āœ… Directory writable`));
74
+ } else {
75
+ console.log(chalk.yellow(` āš ļø Directory not writable`));
76
+ warnings++;
77
+ }
78
+ } else {
79
+ console.log(chalk.yellow(' āš ļø Not detected'));
80
+ console.log(chalk.dim(` Install: https://claude.ai/code`));
81
+ }
82
+
83
+ console.log(chalk.cyan('\n' + '━'.repeat(60)));
84
+ console.log(chalk.bold('\nNetwork Connectivity:\n'));
85
+
86
+ // Check GitHub access
87
+ console.log(chalk.bold('GitHub API:'));
88
+ try {
89
+ execSync('ping -c 1 api.github.com', { stdio: 'ignore' });
90
+ console.log(chalk.green(' āœ… Reachable (https://api.github.com)'));
91
+ } catch (error) {
92
+ console.log(chalk.red(' āŒ Cannot reach GitHub API'));
93
+ console.log(chalk.dim(' Check your internet connection'));
94
+ issues++;
95
+ }
96
+
97
+ console.log(chalk.cyan('\n' + '━'.repeat(60)));
98
+
99
+ // Summary
100
+ console.log();
101
+ if (issues === 0 && warnings === 0) {
102
+ console.log(chalk.green.bold('✨ Everything looks good!\n'));
103
+ } else if (issues === 0) {
104
+ console.log(chalk.yellow.bold(`āš ļø Found ${warnings} warning(s)\n`));
105
+ } else {
106
+ console.log(chalk.red.bold(`āŒ Found ${issues} error(s) and ${warnings} warning(s)\n`));
107
+ }
108
+
109
+ console.log(chalk.cyan('šŸ“Š Diagnostics Summary:'));
110
+ const checks = 3 + (copilotInfo.cliInstalled ? 1 : 0) + (claudeInfo.installed ? 1 : 0);
111
+ const passed = checks - issues - warnings;
112
+ console.log(chalk.dim(` āœ… ${passed} checks passed`));
113
+ if (warnings > 0) console.log(chalk.dim(` āš ļø ${warnings} warnings`));
114
+ if (issues > 0) console.log(chalk.dim(` āŒ ${issues} errors`));
115
+
116
+ console.log();
117
+ }
118
+
119
+ module.exports = doctorCommand;