opengstack 0.13.8 → 0.13.10

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.8",
3
+ "version": "0.13.10",
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": [
@@ -10,16 +10,31 @@ const TARGET_DIRS = [
10
10
  path.join(os.homedir(), '.agents', 'skills') // other agents
11
11
  ];
12
12
 
13
- function copySkills() {
13
+ function copyDir(src, dest) {
14
+ // Create destination directory (including parents)
15
+ fs.mkdirSync(dest, { recursive: true });
16
+
17
+ fs.readdirSync(src).forEach(item => {
18
+ const srcPath = path.join(src, item);
19
+ const destPath = path.join(dest, item);
20
+
21
+ if (fs.statSync(srcPath).isDirectory()) {
22
+ copyDir(srcPath, destPath);
23
+ } else {
24
+ fs.copyFileSync(srcPath, destPath);
25
+ }
26
+ });
27
+ }
28
+
29
+ function installSkills() {
14
30
  if (!fs.existsSync(SKILLS_SOURCE)) {
15
31
  console.error('❌ No skills/ folder found in package');
16
32
  process.exit(1);
17
33
  }
18
34
 
19
35
  TARGET_DIRS.forEach(target => {
20
- if (!fs.existsSync(target)) {
21
- fs.mkdirSync(target, { recursive: true });
22
- }
36
+ // Ensure parent directories exist
37
+ fs.mkdirSync(target, { recursive: true });
23
38
 
24
39
  fs.readdirSync(SKILLS_SOURCE).forEach(skillName => {
25
40
  const src = path.join(SKILLS_SOURCE, skillName);
@@ -33,7 +48,7 @@ function copySkills() {
33
48
  return;
34
49
  }
35
50
 
36
- fs.cpSync(src, dest, { recursive: true, force: true });
51
+ copyDir(src, dest);
37
52
  console.log(`✅ Installed skill: /${skillName}`);
38
53
  });
39
54
  });
@@ -42,4 +57,4 @@ function copySkills() {
42
57
  console.log('Now just type /qa directly — no /skills menu needed.');
43
58
  }
44
59
 
45
- copySkills();
60
+ installSkills();