@ruyfranca/myskills 1.0.36 → 1.0.38
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/index.js +38 -13
- package/package.json +9 -1
- package/plugin.json +8 -0
- package/test-yaml.js +0 -31
package/index.js
CHANGED
|
@@ -331,26 +331,51 @@ program
|
|
|
331
331
|
|
|
332
332
|
program
|
|
333
333
|
.command('install-global')
|
|
334
|
-
.description('Instala
|
|
334
|
+
.description('Instala as skills, agents e workflows globalmente no Antigravity')
|
|
335
335
|
.action(async () => {
|
|
336
336
|
const homeDir = process.env.HOME || process.env.USERPROFILE || '';
|
|
337
|
+
|
|
338
|
+
// Instalar como Plugin oficial
|
|
339
|
+
const pluginDir = path.join(homeDir, '.gemini', 'config', 'plugins', 'myskills');
|
|
337
340
|
const globalWorkflowsDir = path.join(homeDir, '.gemini', 'antigravity', 'global_workflows');
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
console.log(chalk.cyan('\n🌐 Instalando workflows globalmente...\n'));
|
|
341
|
+
|
|
342
|
+
console.log(chalk.cyan('\n🌐 Instalando myskills globalmente como um Plugin do Antigravity...\n'));
|
|
341
343
|
|
|
342
344
|
try {
|
|
343
|
-
await fs.mkdir(
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
345
|
+
await fs.mkdir(pluginDir, { recursive: true });
|
|
346
|
+
|
|
347
|
+
// Copiar plugin.json
|
|
348
|
+
if (existsSync(path.join(__dirname, 'plugin.json'))) {
|
|
349
|
+
await fs.copyFile(path.join(__dirname, 'plugin.json'), path.join(pluginDir, 'plugin.json'));
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// Copiar Skills e Agents para o Plugin
|
|
353
|
+
const dirs = ['skills', 'agents'];
|
|
354
|
+
for (const dir of dirs) {
|
|
355
|
+
const src = path.join(__dirname, '.agent', dir);
|
|
356
|
+
if (existsSync(src)) {
|
|
357
|
+
await copyRecursively(src, path.join(pluginDir, dir));
|
|
358
|
+
console.log(chalk.green(` ✅ ${dir} copiados para o Plugin.`));
|
|
350
359
|
}
|
|
351
360
|
}
|
|
352
|
-
|
|
353
|
-
|
|
361
|
+
|
|
362
|
+
// Copiar Workflows para global_workflows e workflows do plugin (caso suportado)
|
|
363
|
+
const workflowsSrc = path.join(__dirname, '.agent', 'workflows');
|
|
364
|
+
if (existsSync(workflowsSrc)) {
|
|
365
|
+
await fs.mkdir(globalWorkflowsDir, { recursive: true });
|
|
366
|
+
await copyRecursively(workflowsSrc, path.join(pluginDir, 'workflows'));
|
|
367
|
+
const files = await fs.readdir(workflowsSrc);
|
|
368
|
+
let copied = 0;
|
|
369
|
+
for (const file of files) {
|
|
370
|
+
if (file.endsWith('.md')) {
|
|
371
|
+
await copyRecursively(path.join(workflowsSrc, file), path.join(globalWorkflowsDir, file));
|
|
372
|
+
copied++;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
console.log(chalk.green(` ✅ ${copied} workflows instalados globalmente.`));
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
console.log(chalk.cyan.bold('\n✨ Feito! Reinicie o Antigravity para as skills e workflows estarem disponíveis em qualquer projeto.\n'));
|
|
354
379
|
} catch (err) {
|
|
355
380
|
console.error(chalk.red(` ❌ Erro: ${err.message}`));
|
|
356
381
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ruyfranca/myskills",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.38",
|
|
4
4
|
"description": "Biblioteca de skills customizadas para Antigravity / Claude Code",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -19,6 +19,14 @@
|
|
|
19
19
|
],
|
|
20
20
|
"author": "Ruy",
|
|
21
21
|
"license": "MIT",
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "git+https://github.com/RuyXingubit/mySkills.git"
|
|
25
|
+
},
|
|
26
|
+
"bugs": {
|
|
27
|
+
"url": "https://github.com/RuyXingubit/mySkills/issues"
|
|
28
|
+
},
|
|
29
|
+
"homepage": "https://github.com/RuyXingubit/mySkills#readme",
|
|
22
30
|
"dependencies": {
|
|
23
31
|
"chalk": "^5.3.0",
|
|
24
32
|
"commander": "^12.0.0"
|
package/plugin.json
ADDED
package/test-yaml.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
|
|
4
|
-
function checkDir(dir) {
|
|
5
|
-
let files = fs.readdirSync(dir, { withFileTypes: true });
|
|
6
|
-
for (let f of files) {
|
|
7
|
-
let full = path.join(dir, f.name);
|
|
8
|
-
if (f.isDirectory()) {
|
|
9
|
-
checkDir(full);
|
|
10
|
-
} else if (f.name.endsWith('.md')) {
|
|
11
|
-
let content = fs.readFileSync(full, 'utf8');
|
|
12
|
-
if (content.startsWith('---')) {
|
|
13
|
-
let closing = content.indexOf('\n---', 3);
|
|
14
|
-
if (closing === -1) {
|
|
15
|
-
console.log('Error: No closing --- in', full);
|
|
16
|
-
} else {
|
|
17
|
-
// extract
|
|
18
|
-
let yamlStr = content.substring(4, closing);
|
|
19
|
-
// check if there's another block immediately following
|
|
20
|
-
let rest = content.substring(closing + 4).trimStart();
|
|
21
|
-
if (rest.startsWith('---')) {
|
|
22
|
-
console.log('Error: Duplicate frontmatter block in', full);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
checkDir('.agent');
|
|
31
|
-
console.log('Done checking.');
|