opengstack 0.13.5 → 0.13.6

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opengstack",
3
- "version": "0.13.5",
3
+ "version": "0.13.6",
4
4
  "private": false,
5
5
  "description": "AI Engineering Workflow - SKILL.md files that give AI agents structured roles for software development. Forked from gstack but scrubbed clean of all the YC/Garry Tan cruft and telemetry.",
6
6
  "keywords": [
@@ -3,7 +3,10 @@
3
3
  const fs = require('fs');
4
4
  const path = require('path');
5
5
 
6
- const SKILLS_DIR = path.join(process.env.HOME || process.env.USERPROFILE, '.claude', 'skills');
6
+ const SKILLS_DIRS = [
7
+ path.join(process.env.HOME || process.env.USERPROFILE, '.claude', 'skills'),
8
+ path.join(process.env.HOME || process.env.USERPROFILE, '.opencode')
9
+ ];
7
10
  const PKG_DIR = path.dirname(__dirname);
8
11
 
9
12
  // List of skill directories
@@ -17,49 +20,55 @@ const skills = [
17
20
  'setup-deploy', 'ship', 'unfreeze'
18
21
  ];
19
22
 
20
- console.log('šŸ”— Installing OpenGStack skills to ~/.claude/skills/...');
23
+ console.log('šŸ”— Installing OpenGStack skills...');
21
24
 
22
- // Ensure skills directory exists
23
- if (!fs.existsSync(SKILLS_DIR)) {
24
- fs.mkdirSync(SKILLS_DIR, { recursive: true });
25
- }
25
+ // Install to all skill directories
26
+ for (const SKILLS_DIR of SKILLS_DIRS) {
27
+ console.log(`\nšŸ“ Installing to ${SKILLS_DIR}...`);
28
+
29
+ // Ensure skills directory exists
30
+ if (!fs.existsSync(SKILLS_DIR)) {
31
+ fs.mkdirSync(SKILLS_DIR, { recursive: true });
32
+ }
26
33
 
27
- // Create symlinks for each skill
28
- let installed = 0;
29
- let skipped = 0;
34
+ // Create symlinks for each skill
35
+ let installed = 0;
36
+ let skipped = 0;
30
37
 
31
- for (const skill of skills) {
32
- const srcPath = path.join(PKG_DIR, skill);
33
- const destPath = path.join(SKILLS_DIR, skill);
38
+ for (const skill of skills) {
39
+ const srcPath = path.join(PKG_DIR, skill);
40
+ const destPath = path.join(SKILLS_DIR, skill);
34
41
 
35
- if (!fs.existsSync(srcPath)) {
36
- console.warn(`āš ļø Skill not found: ${skill}`);
37
- skipped++;
38
- continue;
39
- }
42
+ if (!fs.existsSync(srcPath)) {
43
+ console.warn(`āš ļø Skill not found: ${skill}`);
44
+ skipped++;
45
+ continue;
46
+ }
40
47
 
41
- try {
42
- // Remove existing if it's a symlink
43
- if (fs.existsSync(destPath)) {
44
- const stat = fs.lstatSync(destPath);
45
- if (stat.isSymbolicLink()) {
46
- fs.unlinkSync(destPath);
47
- } else {
48
- console.log(`ā­ļø Skipping ${skill} (already exists)`);
49
- skipped++;
50
- continue;
48
+ try {
49
+ // Remove existing if it's a symlink
50
+ if (fs.existsSync(destPath)) {
51
+ const stat = fs.lstatSync(destPath);
52
+ if (stat.isSymbolicLink()) {
53
+ fs.unlinkSync(destPath);
54
+ } else {
55
+ console.log(`ā­ļø Skipping ${skill} (already exists)`);
56
+ skipped++;
57
+ continue;
58
+ }
51
59
  }
52
- }
53
60
 
54
- // Create symlink
55
- fs.symlinkSync(srcPath, destPath, 'dir');
56
- console.log(`āœ“ ${skill}`);
57
- installed++;
58
- } catch (err) {
59
- console.error(`āœ— ${skill}: ${err.message}`);
60
- skipped++;
61
+ // Create symlink
62
+ fs.symlinkSync(srcPath, destPath, 'dir');
63
+ console.log(`āœ“ ${skill}`);
64
+ installed++;
65
+ } catch (err) {
66
+ console.error(`āœ— ${skill}: ${err.message}`);
67
+ skipped++;
68
+ }
61
69
  }
70
+
71
+ console.log(`\nāœ… Installed ${installed} skills, skipped ${skipped}`);
62
72
  }
63
73
 
64
- console.log(`\nāœ… Installed ${installed} skills, skipped ${skipped}`);
65
- console.log('šŸŽÆ Skills are now available in opencode/Claude');
74
+ console.log('\nšŸŽÆ Skills are now available in opencode/Claude');