driftdetect 0.4.6 → 0.5.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/LICENSE +21 -0
- package/dist/bin/drift.js +27 -1
- package/dist/bin/drift.js.map +1 -1
- package/dist/commands/approve.d.ts +20 -0
- package/dist/commands/approve.d.ts.map +1 -1
- package/dist/commands/approve.js +38 -72
- package/dist/commands/approve.js.map +1 -1
- package/dist/commands/callgraph.js +4 -4
- package/dist/commands/callgraph.js.map +1 -1
- package/dist/commands/check.d.ts +41 -0
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +21 -11
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/coupling.d.ts +17 -0
- package/dist/commands/coupling.d.ts.map +1 -0
- package/dist/commands/coupling.js +726 -0
- package/dist/commands/coupling.js.map +1 -0
- package/dist/commands/error-handling.d.ts +15 -0
- package/dist/commands/error-handling.d.ts.map +1 -0
- package/dist/commands/error-handling.js +608 -0
- package/dist/commands/error-handling.js.map +1 -0
- package/dist/commands/export.d.ts +16 -0
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +46 -50
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/files.d.ts +15 -0
- package/dist/commands/files.d.ts.map +1 -1
- package/dist/commands/files.js +27 -48
- package/dist/commands/files.js.map +1 -1
- package/dist/commands/ignore.d.ts +20 -0
- package/dist/commands/ignore.d.ts.map +1 -1
- package/dist/commands/ignore.js +25 -48
- package/dist/commands/ignore.js.map +1 -1
- package/dist/commands/index.d.ts +6 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +7 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/migrate-storage.d.ts +23 -0
- package/dist/commands/migrate-storage.d.ts.map +1 -0
- package/dist/commands/migrate-storage.js +337 -0
- package/dist/commands/migrate-storage.js.map +1 -0
- package/dist/commands/report.d.ts +22 -0
- package/dist/commands/report.d.ts.map +1 -1
- package/dist/commands/report.js +19 -10
- package/dist/commands/report.js.map +1 -1
- package/dist/commands/scan.d.ts +37 -0
- package/dist/commands/scan.d.ts.map +1 -1
- package/dist/commands/scan.js +233 -8
- package/dist/commands/scan.js.map +1 -1
- package/dist/commands/skills.d.ts +16 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +409 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/status.d.ts +20 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +74 -72
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/test-topology.d.ts +15 -0
- package/dist/commands/test-topology.d.ts.map +1 -0
- package/dist/commands/test-topology.js +589 -0
- package/dist/commands/test-topology.js.map +1 -0
- package/dist/commands/where.d.ts +15 -0
- package/dist/commands/where.d.ts.map +1 -1
- package/dist/commands/where.js +41 -88
- package/dist/commands/where.js.map +1 -1
- package/dist/commands/wrappers.d.ts +16 -0
- package/dist/commands/wrappers.d.ts.map +1 -0
- package/dist/commands/wrappers.js +181 -0
- package/dist/commands/wrappers.js.map +1 -0
- package/dist/services/pattern-service-factory.d.ts +37 -0
- package/dist/services/pattern-service-factory.d.ts.map +1 -0
- package/dist/services/pattern-service-factory.js +41 -0
- package/dist/services/pattern-service-factory.js.map +1 -0
- package/dist/services/scanner-service.d.ts +210 -0
- package/dist/services/scanner-service.d.ts.map +1 -1
- package/dist/services/scanner-service.js +298 -102
- package/dist/services/scanner-service.js.map +1 -1
- package/dist/workers/detector-worker.d.ts +107 -0
- package/dist/workers/detector-worker.d.ts.map +1 -0
- package/dist/workers/detector-worker.js +293 -0
- package/dist/workers/detector-worker.js.map +1 -0
- package/package.json +18 -17
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skills Command - drift skills
|
|
3
|
+
*
|
|
4
|
+
* Manage Agent Skills for AI-assisted development.
|
|
5
|
+
* Skills are folders of instructions, scripts, and resources that AI agents
|
|
6
|
+
* can load to perform specialized tasks.
|
|
7
|
+
*
|
|
8
|
+
* Commands:
|
|
9
|
+
* - drift skills list - List available skills
|
|
10
|
+
* - drift skills install - Install a skill to your project
|
|
11
|
+
* - drift skills info - Show skill details
|
|
12
|
+
* - drift skills search - Search skills by keyword
|
|
13
|
+
*/
|
|
14
|
+
import { Command } from 'commander';
|
|
15
|
+
import chalk from 'chalk';
|
|
16
|
+
import * as fs from 'fs';
|
|
17
|
+
import * as path from 'path';
|
|
18
|
+
import { fileURLToPath } from 'url';
|
|
19
|
+
import { createSpinner, status } from '../ui/spinner.js';
|
|
20
|
+
import { confirmPrompt, selectPrompt } from '../ui/prompts.js';
|
|
21
|
+
// ESM compatibility
|
|
22
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
23
|
+
const __dirname = path.dirname(__filename);
|
|
24
|
+
// ============================================================================
|
|
25
|
+
// Skill Discovery
|
|
26
|
+
// ============================================================================
|
|
27
|
+
function getSkillsDirectory() {
|
|
28
|
+
// Skills are bundled with the drift package
|
|
29
|
+
// Look in multiple locations for development vs installed
|
|
30
|
+
const possiblePaths = [
|
|
31
|
+
path.join(__dirname, '../../../../skills'), // Development
|
|
32
|
+
path.join(__dirname, '../../../skills'), // Built
|
|
33
|
+
path.join(process.cwd(), 'node_modules/driftdetect-cli/skills'),
|
|
34
|
+
path.join(process.cwd(), 'skills'), // Local skills
|
|
35
|
+
];
|
|
36
|
+
for (const p of possiblePaths) {
|
|
37
|
+
if (fs.existsSync(p)) {
|
|
38
|
+
return p;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Fallback to drift repo skills
|
|
42
|
+
return path.join(__dirname, '../../../../skills');
|
|
43
|
+
}
|
|
44
|
+
function parseSkillMd(content) {
|
|
45
|
+
// Parse YAML frontmatter
|
|
46
|
+
const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
47
|
+
if (!frontmatterMatch || !frontmatterMatch[1])
|
|
48
|
+
return null;
|
|
49
|
+
const frontmatter = frontmatterMatch[1];
|
|
50
|
+
const metadata = {};
|
|
51
|
+
// Simple YAML parsing for frontmatter
|
|
52
|
+
const lines = frontmatter.split('\n');
|
|
53
|
+
let inMetadata = false;
|
|
54
|
+
const metadataObj = {};
|
|
55
|
+
for (const line of lines) {
|
|
56
|
+
if (line.startsWith('metadata:')) {
|
|
57
|
+
inMetadata = true;
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
if (inMetadata && line.startsWith(' ')) {
|
|
61
|
+
const match = line.match(/^\s+(\w+):\s*(.+)/);
|
|
62
|
+
if (match && match[1]) {
|
|
63
|
+
metadataObj[match[1]] = match[2]?.trim() ?? '';
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else if (line.includes(':')) {
|
|
67
|
+
inMetadata = false;
|
|
68
|
+
const colonIndex = line.indexOf(':');
|
|
69
|
+
const key = line.slice(0, colonIndex).trim();
|
|
70
|
+
const value = line.slice(colonIndex + 1).trim();
|
|
71
|
+
if (key) {
|
|
72
|
+
metadata[key] = value;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (Object.keys(metadataObj).length > 0) {
|
|
77
|
+
metadata['metadata'] = metadataObj;
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
name: metadata['name'] || '',
|
|
81
|
+
description: metadata['description'] || '',
|
|
82
|
+
license: metadata['license'],
|
|
83
|
+
compatibility: metadata['compatibility'],
|
|
84
|
+
metadata: metadata['metadata'],
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function discoverSkills(skillsDir) {
|
|
88
|
+
const skills = [];
|
|
89
|
+
if (!fs.existsSync(skillsDir)) {
|
|
90
|
+
return skills;
|
|
91
|
+
}
|
|
92
|
+
const entries = fs.readdirSync(skillsDir, { withFileTypes: true });
|
|
93
|
+
for (const entry of entries) {
|
|
94
|
+
if (!entry.isDirectory())
|
|
95
|
+
continue;
|
|
96
|
+
if (entry.name.startsWith('_'))
|
|
97
|
+
continue; // Skip templates
|
|
98
|
+
const skillPath = path.join(skillsDir, entry.name);
|
|
99
|
+
const skillMdPath = path.join(skillPath, 'SKILL.md');
|
|
100
|
+
if (!fs.existsSync(skillMdPath))
|
|
101
|
+
continue;
|
|
102
|
+
const content = fs.readFileSync(skillMdPath, 'utf-8');
|
|
103
|
+
const metadata = parseSkillMd(content);
|
|
104
|
+
if (!metadata)
|
|
105
|
+
continue;
|
|
106
|
+
// Get all files in skill directory
|
|
107
|
+
const files = fs.readdirSync(skillPath);
|
|
108
|
+
skills.push({
|
|
109
|
+
...metadata,
|
|
110
|
+
path: skillPath,
|
|
111
|
+
files,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
return skills;
|
|
115
|
+
}
|
|
116
|
+
// ============================================================================
|
|
117
|
+
// Formatters
|
|
118
|
+
// ============================================================================
|
|
119
|
+
function formatCategory(category) {
|
|
120
|
+
const colors = {
|
|
121
|
+
resilience: chalk.yellow,
|
|
122
|
+
api: chalk.blue,
|
|
123
|
+
auth: chalk.green,
|
|
124
|
+
integrations: chalk.magenta,
|
|
125
|
+
workers: chalk.cyan,
|
|
126
|
+
database: chalk.red,
|
|
127
|
+
frontend: chalk.rgb(255, 165, 0),
|
|
128
|
+
};
|
|
129
|
+
if (!category)
|
|
130
|
+
return chalk.gray('general');
|
|
131
|
+
return (colors[category] ?? chalk.gray)(category);
|
|
132
|
+
}
|
|
133
|
+
function formatTime(time) {
|
|
134
|
+
if (!time)
|
|
135
|
+
return chalk.gray('-');
|
|
136
|
+
return chalk.white(time);
|
|
137
|
+
}
|
|
138
|
+
async function listAction(options) {
|
|
139
|
+
const skillsDir = getSkillsDirectory();
|
|
140
|
+
let skills = discoverSkills(skillsDir);
|
|
141
|
+
if (options.category) {
|
|
142
|
+
skills = skills.filter(s => s.metadata?.category?.toLowerCase() === options.category.toLowerCase());
|
|
143
|
+
}
|
|
144
|
+
// Sort by category then name
|
|
145
|
+
skills.sort((a, b) => {
|
|
146
|
+
const catA = a.metadata?.category || 'zzz';
|
|
147
|
+
const catB = b.metadata?.category || 'zzz';
|
|
148
|
+
if (catA !== catB)
|
|
149
|
+
return catA.localeCompare(catB);
|
|
150
|
+
return a.name.localeCompare(b.name);
|
|
151
|
+
});
|
|
152
|
+
if (options.json) {
|
|
153
|
+
console.log(JSON.stringify(skills, null, 2));
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
if (skills.length === 0) {
|
|
157
|
+
console.log();
|
|
158
|
+
console.log(chalk.yellow('No skills found.'));
|
|
159
|
+
console.log(chalk.gray('Skills directory: ' + skillsDir));
|
|
160
|
+
console.log();
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
console.log();
|
|
164
|
+
console.log(chalk.bold(`🎯 Available Skills (${skills.length})`));
|
|
165
|
+
console.log();
|
|
166
|
+
// Table header
|
|
167
|
+
console.log(chalk.gray(' ' +
|
|
168
|
+
'Name'.padEnd(22) +
|
|
169
|
+
'Category'.padEnd(14) +
|
|
170
|
+
'Time'.padEnd(8) +
|
|
171
|
+
'Description'));
|
|
172
|
+
console.log(chalk.gray(' ' + '─'.repeat(90)));
|
|
173
|
+
for (const skill of skills) {
|
|
174
|
+
const name = chalk.cyan(skill.name.padEnd(22));
|
|
175
|
+
const category = formatCategory(skill.metadata?.category).padEnd(14);
|
|
176
|
+
const time = formatTime(skill.metadata?.time).padEnd(8);
|
|
177
|
+
const desc = skill.description.slice(0, 45) + (skill.description.length > 45 ? '...' : '');
|
|
178
|
+
console.log(` ${name}${category}${time}${chalk.gray(desc)}`);
|
|
179
|
+
}
|
|
180
|
+
console.log();
|
|
181
|
+
console.log(chalk.gray('Install a skill: drift skills install <name>'));
|
|
182
|
+
console.log(chalk.gray('View details: drift skills info <name>'));
|
|
183
|
+
console.log();
|
|
184
|
+
}
|
|
185
|
+
async function installAction(skillNames, options) {
|
|
186
|
+
const skillsDir = getSkillsDirectory();
|
|
187
|
+
const skills = discoverSkills(skillsDir);
|
|
188
|
+
const targetDir = path.join(process.cwd(), '.github', 'skills');
|
|
189
|
+
// If --all, install all skills
|
|
190
|
+
if (options.all) {
|
|
191
|
+
skillNames = skills.map(s => s.name);
|
|
192
|
+
}
|
|
193
|
+
if (skillNames.length === 0) {
|
|
194
|
+
// Interactive selection
|
|
195
|
+
const choices = skills.map(s => ({
|
|
196
|
+
name: `${s.name} - ${s.description.slice(0, 50)}...`,
|
|
197
|
+
value: s.name,
|
|
198
|
+
}));
|
|
199
|
+
const selected = await selectPrompt('Select skill to install:', choices);
|
|
200
|
+
skillNames = [selected];
|
|
201
|
+
}
|
|
202
|
+
// Ensure target directory exists
|
|
203
|
+
if (!fs.existsSync(targetDir)) {
|
|
204
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
205
|
+
}
|
|
206
|
+
let installed = 0;
|
|
207
|
+
let skipped = 0;
|
|
208
|
+
for (const skillName of skillNames) {
|
|
209
|
+
const skill = skills.find(s => s.name === skillName);
|
|
210
|
+
if (!skill) {
|
|
211
|
+
status.error(`Skill not found: ${skillName}`);
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
const destPath = path.join(targetDir, skill.name);
|
|
215
|
+
// Check if already installed
|
|
216
|
+
if (fs.existsSync(destPath) && !options.force) {
|
|
217
|
+
status.info(`Skill already installed: ${skill.name} (use --force to overwrite)`);
|
|
218
|
+
skipped++;
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
const spinner = createSpinner(`Installing ${skill.name}...`);
|
|
222
|
+
spinner.start();
|
|
223
|
+
try {
|
|
224
|
+
// Copy skill directory
|
|
225
|
+
copyDirectory(skill.path, destPath);
|
|
226
|
+
spinner.succeed(`Installed ${chalk.cyan(skill.name)}`);
|
|
227
|
+
installed++;
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
spinner.fail(`Failed to install ${skill.name}`);
|
|
231
|
+
console.error(chalk.red(error.message));
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
console.log();
|
|
235
|
+
if (installed > 0) {
|
|
236
|
+
status.success(`Installed ${installed} skill(s) to ${chalk.gray('.github/skills/')}`);
|
|
237
|
+
}
|
|
238
|
+
if (skipped > 0) {
|
|
239
|
+
console.log(chalk.gray(`Skipped ${skipped} already installed skill(s)`));
|
|
240
|
+
}
|
|
241
|
+
console.log();
|
|
242
|
+
}
|
|
243
|
+
function copyDirectory(src, dest) {
|
|
244
|
+
if (!fs.existsSync(dest)) {
|
|
245
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
246
|
+
}
|
|
247
|
+
const entries = fs.readdirSync(src, { withFileTypes: true });
|
|
248
|
+
for (const entry of entries) {
|
|
249
|
+
const srcPath = path.join(src, entry.name);
|
|
250
|
+
const destPath = path.join(dest, entry.name);
|
|
251
|
+
if (entry.isDirectory()) {
|
|
252
|
+
copyDirectory(srcPath, destPath);
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
fs.copyFileSync(srcPath, destPath);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
// ============================================================================
|
|
260
|
+
// Info Command
|
|
261
|
+
// ============================================================================
|
|
262
|
+
async function infoAction(skillName) {
|
|
263
|
+
const skillsDir = getSkillsDirectory();
|
|
264
|
+
const skills = discoverSkills(skillsDir);
|
|
265
|
+
let skill;
|
|
266
|
+
if (skillName) {
|
|
267
|
+
skill = skills.find(s => s.name === skillName);
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
// Interactive selection
|
|
271
|
+
const choices = skills.map(s => ({
|
|
272
|
+
name: `${s.name} - ${s.description.slice(0, 40)}...`,
|
|
273
|
+
value: s.name,
|
|
274
|
+
}));
|
|
275
|
+
const selected = await selectPrompt('Select skill:', choices);
|
|
276
|
+
skill = skills.find(s => s.name === selected);
|
|
277
|
+
}
|
|
278
|
+
if (!skill) {
|
|
279
|
+
status.error(`Skill not found: ${skillName}`);
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
console.log();
|
|
283
|
+
console.log(chalk.bold(`🎯 ${skill.name}`));
|
|
284
|
+
console.log();
|
|
285
|
+
console.log(chalk.gray(' Description: ') + skill.description);
|
|
286
|
+
console.log(chalk.gray(' Category: ') + formatCategory(skill.metadata?.category));
|
|
287
|
+
console.log(chalk.gray(' Time: ') + formatTime(skill.metadata?.time));
|
|
288
|
+
console.log(chalk.gray(' Compatibility: ') + (skill.compatibility || 'Any'));
|
|
289
|
+
console.log(chalk.gray(' License: ') + (skill.license || 'MIT'));
|
|
290
|
+
console.log();
|
|
291
|
+
console.log(chalk.gray(' Files:'));
|
|
292
|
+
for (const file of skill.files) {
|
|
293
|
+
console.log(chalk.gray(' - ') + file);
|
|
294
|
+
}
|
|
295
|
+
console.log();
|
|
296
|
+
console.log(chalk.gray(' Path: ') + skill.path);
|
|
297
|
+
console.log();
|
|
298
|
+
// Show preview of SKILL.md
|
|
299
|
+
const skillMdPath = path.join(skill.path, 'SKILL.md');
|
|
300
|
+
const content = fs.readFileSync(skillMdPath, 'utf-8');
|
|
301
|
+
// Extract first section after frontmatter
|
|
302
|
+
const bodyMatch = content.match(/^---[\s\S]*?---\n\n([\s\S]*?)(?=\n## |$)/);
|
|
303
|
+
if (bodyMatch && bodyMatch[1]) {
|
|
304
|
+
console.log(chalk.bold(' Preview:'));
|
|
305
|
+
console.log();
|
|
306
|
+
const preview = bodyMatch[1].split('\n').slice(0, 10).map(l => ' ' + l).join('\n');
|
|
307
|
+
console.log(chalk.gray(preview));
|
|
308
|
+
console.log(chalk.gray(' ...'));
|
|
309
|
+
}
|
|
310
|
+
console.log();
|
|
311
|
+
console.log(chalk.gray(`Install: drift skills install ${skill.name}`));
|
|
312
|
+
console.log();
|
|
313
|
+
}
|
|
314
|
+
// ============================================================================
|
|
315
|
+
// Search Command
|
|
316
|
+
// ============================================================================
|
|
317
|
+
async function searchAction(query) {
|
|
318
|
+
const skillsDir = getSkillsDirectory();
|
|
319
|
+
const skills = discoverSkills(skillsDir);
|
|
320
|
+
const queryLower = query.toLowerCase();
|
|
321
|
+
const matches = skills.filter(s => s.name.toLowerCase().includes(queryLower) ||
|
|
322
|
+
s.description.toLowerCase().includes(queryLower) ||
|
|
323
|
+
s.metadata?.category?.toLowerCase().includes(queryLower));
|
|
324
|
+
if (matches.length === 0) {
|
|
325
|
+
console.log();
|
|
326
|
+
console.log(chalk.yellow(`No skills found matching "${query}"`));
|
|
327
|
+
console.log();
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
console.log();
|
|
331
|
+
console.log(chalk.bold(`🔍 Search Results for "${query}" (${matches.length})`));
|
|
332
|
+
console.log();
|
|
333
|
+
for (const skill of matches) {
|
|
334
|
+
console.log(` ${chalk.cyan(skill.name.padEnd(20))} ${formatCategory(skill.metadata?.category).padEnd(12)} ${chalk.gray(skill.description.slice(0, 50))}...`);
|
|
335
|
+
}
|
|
336
|
+
console.log();
|
|
337
|
+
}
|
|
338
|
+
// ============================================================================
|
|
339
|
+
// Uninstall Command
|
|
340
|
+
// ============================================================================
|
|
341
|
+
async function uninstallAction(skillName) {
|
|
342
|
+
const targetDir = path.join(process.cwd(), '.github', 'skills');
|
|
343
|
+
if (!fs.existsSync(targetDir)) {
|
|
344
|
+
status.error('No skills installed');
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
const installed = fs.readdirSync(targetDir, { withFileTypes: true })
|
|
348
|
+
.filter(e => e.isDirectory() && !e.name.startsWith('_'))
|
|
349
|
+
.map(e => e.name);
|
|
350
|
+
if (installed.length === 0) {
|
|
351
|
+
status.error('No skills installed');
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
354
|
+
let toRemove;
|
|
355
|
+
if (skillName) {
|
|
356
|
+
if (!installed.includes(skillName)) {
|
|
357
|
+
status.error(`Skill not installed: ${skillName}`);
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
toRemove = skillName;
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
// Interactive selection
|
|
364
|
+
const choices = installed.map(name => ({ name, value: name }));
|
|
365
|
+
toRemove = await selectPrompt('Select skill to uninstall:', choices);
|
|
366
|
+
}
|
|
367
|
+
const confirmed = await confirmPrompt(`Uninstall ${toRemove}?`, false);
|
|
368
|
+
if (!confirmed) {
|
|
369
|
+
status.info('Cancelled');
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
const skillPath = path.join(targetDir, toRemove);
|
|
373
|
+
fs.rmSync(skillPath, { recursive: true });
|
|
374
|
+
status.success(`Uninstalled ${toRemove}`);
|
|
375
|
+
}
|
|
376
|
+
// ============================================================================
|
|
377
|
+
// Command Registration
|
|
378
|
+
// ============================================================================
|
|
379
|
+
export const skillsCommand = new Command('skills')
|
|
380
|
+
.description('Manage Agent Skills for AI-assisted development')
|
|
381
|
+
.addCommand(new Command('list')
|
|
382
|
+
.alias('ls')
|
|
383
|
+
.description('List available skills')
|
|
384
|
+
.option('--json', 'Output as JSON')
|
|
385
|
+
.option('-c, --category <category>', 'Filter by category')
|
|
386
|
+
.action(listAction))
|
|
387
|
+
.addCommand(new Command('install')
|
|
388
|
+
.alias('i')
|
|
389
|
+
.description('Install skill(s) to your project')
|
|
390
|
+
.argument('[skills...]', 'Skill name(s) to install')
|
|
391
|
+
.option('-f, --force', 'Overwrite existing skills')
|
|
392
|
+
.option('-a, --all', 'Install all available skills')
|
|
393
|
+
.action(installAction))
|
|
394
|
+
.addCommand(new Command('info')
|
|
395
|
+
.description('Show skill details')
|
|
396
|
+
.argument('[name]', 'Skill name')
|
|
397
|
+
.action(infoAction))
|
|
398
|
+
.addCommand(new Command('search')
|
|
399
|
+
.description('Search skills by keyword')
|
|
400
|
+
.argument('<query>', 'Search query')
|
|
401
|
+
.action(searchAction))
|
|
402
|
+
.addCommand(new Command('uninstall')
|
|
403
|
+
.alias('rm')
|
|
404
|
+
.description('Uninstall a skill from your project')
|
|
405
|
+
.argument('[name]', 'Skill name')
|
|
406
|
+
.action(uninstallAction));
|
|
407
|
+
// Default action (list)
|
|
408
|
+
skillsCommand.action(listAction);
|
|
409
|
+
//# sourceMappingURL=skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/commands/skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status Command - drift status
|
|
3
|
+
*
|
|
4
|
+
* Show current drift status including patterns and violations.
|
|
5
|
+
*
|
|
6
|
+
* MIGRATION: Now uses IPatternService for pattern operations.
|
|
7
|
+
*
|
|
8
|
+
* @requirements 29.4
|
|
9
|
+
*/
|
|
10
|
+
import { Command } from 'commander';
|
|
11
|
+
export interface StatusOptions {
|
|
12
|
+
/** Show detailed information */
|
|
13
|
+
detailed?: boolean;
|
|
14
|
+
/** Output format */
|
|
15
|
+
format?: 'text' | 'json';
|
|
16
|
+
/** Enable verbose output */
|
|
17
|
+
verbose?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export declare const statusCommand: Command;
|
|
20
|
+
//# sourceMappingURL=status.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,MAAM,WAAW,aAAa;IAC5B,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAgND,eAAO,MAAM,aAAa,SAKH,CAAC"}
|