opengstack 0.14.0 → 0.14.2

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.
Files changed (69) hide show
  1. package/AGENTS.md +4 -4
  2. package/CLAUDE.md +127 -110
  3. package/README.md +10 -5
  4. package/SKILL.md +500 -70
  5. package/bin/opengstack.js +69 -69
  6. package/commands/autoplan.md +7 -9
  7. package/commands/benchmark.md +84 -91
  8. package/commands/browse.md +60 -64
  9. package/commands/canary.md +7 -9
  10. package/commands/careful.md +2 -2
  11. package/commands/codex.md +7 -9
  12. package/commands/connect-chrome.md +7 -9
  13. package/commands/cso.md +7 -9
  14. package/commands/design-consultation.md +7 -9
  15. package/commands/design-review.md +7 -9
  16. package/commands/design-shotgun.md +7 -9
  17. package/commands/document-release.md +7 -9
  18. package/commands/freeze.md +3 -3
  19. package/commands/guard.md +4 -4
  20. package/commands/investigate.md +7 -9
  21. package/commands/land-and-deploy.md +7 -9
  22. package/commands/office-hours.md +7 -9
  23. package/commands/{gstack-upgrade.md → opengstack-upgrade.md} +64 -65
  24. package/commands/plan-ceo-review.md +7 -9
  25. package/commands/plan-design-review.md +7 -9
  26. package/commands/plan-eng-review.md +7 -9
  27. package/commands/qa-only.md +7 -9
  28. package/commands/qa.md +7 -9
  29. package/commands/retro.md +7 -9
  30. package/commands/review.md +7 -9
  31. package/commands/setup-browser-cookies.md +22 -26
  32. package/commands/setup-deploy.md +7 -9
  33. package/commands/ship.md +7 -9
  34. package/commands/unfreeze.md +7 -7
  35. package/docs/designs/CHROME_VS_CHROMIUM_EXPLORATION.md +9 -9
  36. package/docs/designs/CONDUCTOR_CHROME_SIDEBAR_INTEGRATION.md +2 -2
  37. package/docs/designs/CONDUCTOR_SESSION_API.md +16 -16
  38. package/docs/designs/DESIGN_SHOTGUN.md +74 -74
  39. package/docs/designs/DESIGN_TOOLS_V1.md +111 -111
  40. package/docs/skills.md +483 -202
  41. package/package.json +42 -43
  42. package/scripts/analytics.ts +188 -0
  43. package/scripts/dev-skill.ts +83 -0
  44. package/scripts/discover-skills.ts +39 -0
  45. package/scripts/eval-compare.ts +97 -0
  46. package/scripts/eval-list.ts +117 -0
  47. package/scripts/eval-select.ts +86 -0
  48. package/scripts/eval-summary.ts +188 -0
  49. package/scripts/eval-watch.ts +172 -0
  50. package/scripts/gen-skill-docs.ts +473 -0
  51. package/scripts/resolvers/browse.ts +129 -0
  52. package/scripts/resolvers/codex-helpers.ts +133 -0
  53. package/scripts/resolvers/composition.ts +48 -0
  54. package/scripts/resolvers/confidence.ts +37 -0
  55. package/scripts/resolvers/constants.ts +50 -0
  56. package/scripts/resolvers/design.ts +950 -0
  57. package/scripts/resolvers/index.ts +59 -0
  58. package/scripts/resolvers/learnings.ts +96 -0
  59. package/scripts/resolvers/preamble.ts +505 -0
  60. package/scripts/resolvers/review.ts +884 -0
  61. package/scripts/resolvers/testing.ts +573 -0
  62. package/scripts/resolvers/types.ts +45 -0
  63. package/scripts/resolvers/utility.ts +421 -0
  64. package/scripts/skill-check.ts +190 -0
  65. package/scripts/cleanup.py +0 -100
  66. package/scripts/filter-skills.sh +0 -114
  67. package/scripts/filter_skills.py +0 -164
  68. package/scripts/install-commands.js +0 -45
  69. package/scripts/install-skills.js +0 -60
@@ -3,30 +3,28 @@
3
3
 
4
4
  ## Preamble (run first)
5
5
 
6
-
7
- If `PROACTIVE` is `"false"`, do not proactively suggest gstack skills AND do not
6
+ If `PROACTIVE` is `"false"`, do not proactively suggest opengstack skills AND do not
8
7
  auto-invoke skills based on conversation context. Only run skills the user explicitly
9
8
  types (e.g., /qa, /ship). If you would have auto-invoked a skill, instead briefly say:
10
9
  "I think /skillname might help here — want me to run it?" and wait for confirmation.
11
10
  The user opted out of proactive behavior.
12
11
 
13
12
  If `SKILL_PREFIX` is `"true"`, the user has namespaced skill names. When suggesting
14
- or invoking other gstack skills, use the `/gstack-` prefix (e.g., `/gstack-qa` instead
15
- of `/qa`, `/gstack-ship` instead of `/ship`). Disk paths are unaffected — always use
13
+ or invoking other opengstack skills, use the `/opengstack-` prefix (e.g., `/opengstack-qa` instead
14
+ of `/qa`, `/opengstack-ship` instead of `/ship`). Disk paths are unaffected — always use
16
15
  `~/.claude/skills/opengstack/[skill-name]/SKILL.md` for reading skill files.
17
16
 
18
17
  If `LAKE_INTRO` is `no`: Before continuing, introduce the Completeness Principle.
19
18
  Then offer to open the essay in their default browser:
20
19
 
21
20
  ```bash
22
- touch ~/.gstack/.completeness-intro-seen
21
+ touch ~/.opengstack/.completeness-intro-seen
23
22
 
24
23
  Only run `open` if the user says yes. Always run `touch` to mark as seen. This only happens once.
25
24
 
26
- If `PROACTIVE_PROMPTED` is `no` AND `TEL_PROMPTED` is `yes`: After telemetry is handled,
27
25
  ask the user about proactive behavior. Use AskUserQuestion:
28
26
 
29
- > gstack can proactively figure out when you might need a skill while you work —
27
+ > opengstack can proactively figure out when you might need a skill while you work —
30
28
  > like suggesting /qa when you say "does this work?" or /investigate when you hit
31
29
  > a bug. We recommend keeping this on — it speeds up every part of your workflow.
32
30
 
@@ -39,13 +37,13 @@ If B: run `echo set proactive false`
39
37
 
40
38
  Always run:
41
39
  ```bash
42
- touch ~/.gstack/.proactive-prompted
40
+ touch ~/.opengstack/.proactive-prompted
43
41
 
44
42
  This only happens once. If `PROACTIVE_PROMPTED` is `yes`, skip this entirely.
45
43
 
46
44
  ## Voice
47
45
 
48
- You are OpenGStack, an open source AI builder framework
46
+ You are opengstack, an open source AI builder framework
49
47
 
50
48
  Lead with the point. Say what it does, why it matters, and what changes for the builder. Sound like someone who shipped code today and cares whether the thing actually works for users.
51
49
 
@@ -7,8 +7,8 @@ Lock file edits to a specific directory. Any Edit or Write operation targeting
7
7
  a file outside the allowed path will be **blocked** (not just warned).
8
8
 
9
9
  ```bash
10
- mkdir -p ~/.gstack/analytics
11
- echo '{"skill":"freeze","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || echo "unknown")'"}' >> ~/.gstack/analytics/skill-usage.jsonl 2>/dev/null || true
10
+ mkdir -p ~/.opengstack/analytics
11
+ echo '{"skill":"freeze","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || echo "unknown")'"}' >> ~/.opengstack/analytics/skill-usage.jsonl 2>/dev/null || true
12
12
 
13
13
  ## Setup
14
14
 
@@ -27,7 +27,7 @@ echo "$FREEZE_DIR"
27
27
  2. Ensure trailing slash and save to the freeze state file:
28
28
  ```bash
29
29
  FREEZE_DIR="${FREEZE_DIR%/}/"
30
- STATE_DIR="${CLAUDE_PLUGIN_DATA:-$HOME/.gstack}"
30
+ STATE_DIR="${CLAUDE_PLUGIN_DATA:-$HOME/.OpenGStack}"
31
31
  mkdir -p "$STATE_DIR"
32
32
  echo "$FREEZE_DIR" > "$STATE_DIR/freeze-dir.txt"
33
33
  echo "Freeze boundary set: $FREEZE_DIR"
package/commands/guard.md CHANGED
@@ -8,11 +8,11 @@ This is the combination of `/careful` + `/freeze` in a single command.
8
8
 
9
9
  **Dependency note:** This skill references hook scripts from the sibling `/careful`
10
10
  and `/freeze` skill directories. Both must be installed (they are installed together
11
- by the gstack setup script).
11
+ by the opengstack setup script).
12
12
 
13
13
  ```bash
14
- mkdir -p ~/.gstack/analytics
15
- echo '{"skill":"guard","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || echo "unknown")'"}' >> ~/.gstack/analytics/skill-usage.jsonl 2>/dev/null || true
14
+ mkdir -p ~/.opengstack/analytics
15
+ echo '{"skill":"guard","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || echo "unknown")'"}' >> ~/.opengstack/analytics/skill-usage.jsonl 2>/dev/null || true
16
16
 
17
17
  ## Setup
18
18
 
@@ -31,7 +31,7 @@ echo "$FREEZE_DIR"
31
31
  2. Ensure trailing slash and save to the freeze state file:
32
32
  ```bash
33
33
  FREEZE_DIR="${FREEZE_DIR%/}/"
34
- STATE_DIR="${CLAUDE_PLUGIN_DATA:-$HOME/.gstack}"
34
+ STATE_DIR="${CLAUDE_PLUGIN_DATA:-$HOME/.OpenGStack}"
35
35
  mkdir -p "$STATE_DIR"
36
36
  echo "$FREEZE_DIR" > "$STATE_DIR/freeze-dir.txt"
37
37
  echo "Freeze boundary set: $FREEZE_DIR"
@@ -3,30 +3,28 @@
3
3
 
4
4
  ## Preamble (run first)
5
5
 
6
-
7
- If `PROACTIVE` is `"false"`, do not proactively suggest gstack skills AND do not
6
+ If `PROACTIVE` is `"false"`, do not proactively suggest opengstack skills AND do not
8
7
  auto-invoke skills based on conversation context. Only run skills the user explicitly
9
8
  types (e.g., /qa, /ship). If you would have auto-invoked a skill, instead briefly say:
10
9
  "I think /skillname might help here — want me to run it?" and wait for confirmation.
11
10
  The user opted out of proactive behavior.
12
11
 
13
12
  If `SKILL_PREFIX` is `"true"`, the user has namespaced skill names. When suggesting
14
- or invoking other gstack skills, use the `/gstack-` prefix (e.g., `/gstack-qa` instead
15
- of `/qa`, `/gstack-ship` instead of `/ship`). Disk paths are unaffected — always use
13
+ or invoking other opengstack skills, use the `/opengstack-` prefix (e.g., `/opengstack-qa` instead
14
+ of `/qa`, `/opengstack-ship` instead of `/ship`). Disk paths are unaffected — always use
16
15
  `~/.claude/skills/opengstack/[skill-name]/SKILL.md` for reading skill files.
17
16
 
18
17
  If `LAKE_INTRO` is `no`: Before continuing, introduce the Completeness Principle.
19
18
  Then offer to open the essay in their default browser:
20
19
 
21
20
  ```bash
22
- touch ~/.gstack/.completeness-intro-seen
21
+ touch ~/.opengstack/.completeness-intro-seen
23
22
 
24
23
  Only run `open` if the user says yes. Always run `touch` to mark as seen. This only happens once.
25
24
 
26
- If `PROACTIVE_PROMPTED` is `no` AND `TEL_PROMPTED` is `yes`: After telemetry is handled,
27
25
  ask the user about proactive behavior. Use AskUserQuestion:
28
26
 
29
- > gstack can proactively figure out when you might need a skill while you work —
27
+ > opengstack can proactively figure out when you might need a skill while you work —
30
28
  > like suggesting /qa when you say "does this work?" or /investigate when you hit
31
29
  > a bug. We recommend keeping this on — it speeds up every part of your workflow.
32
30
 
@@ -39,13 +37,13 @@ If B: run `echo set proactive false`
39
37
 
40
38
  Always run:
41
39
  ```bash
42
- touch ~/.gstack/.proactive-prompted
40
+ touch ~/.opengstack/.proactive-prompted
43
41
 
44
42
  This only happens once. If `PROACTIVE_PROMPTED` is `yes`, skip this entirely.
45
43
 
46
44
  ## Voice
47
45
 
48
- You are OpenGStack, an open source AI builder framework
46
+ You are opengstack, an open source AI builder framework
49
47
 
50
48
  Lead with the point. Say what it does, why it matters, and what changes for the builder. Sound like someone who shipped code today and cares whether the thing actually works for users.
51
49
 
@@ -3,30 +3,28 @@
3
3
 
4
4
  ## Preamble (run first)
5
5
 
6
-
7
- If `PROACTIVE` is `"false"`, do not proactively suggest gstack skills AND do not
6
+ If `PROACTIVE` is `"false"`, do not proactively suggest opengstack skills AND do not
8
7
  auto-invoke skills based on conversation context. Only run skills the user explicitly
9
8
  types (e.g., /qa, /ship). If you would have auto-invoked a skill, instead briefly say:
10
9
  "I think /skillname might help here — want me to run it?" and wait for confirmation.
11
10
  The user opted out of proactive behavior.
12
11
 
13
12
  If `SKILL_PREFIX` is `"true"`, the user has namespaced skill names. When suggesting
14
- or invoking other gstack skills, use the `/gstack-` prefix (e.g., `/gstack-qa` instead
15
- of `/qa`, `/gstack-ship` instead of `/ship`). Disk paths are unaffected — always use
13
+ or invoking other opengstack skills, use the `/opengstack-` prefix (e.g., `/opengstack-qa` instead
14
+ of `/qa`, `/opengstack-ship` instead of `/ship`). Disk paths are unaffected — always use
16
15
  `~/.claude/skills/opengstack/[skill-name]/SKILL.md` for reading skill files.
17
16
 
18
17
  If `LAKE_INTRO` is `no`: Before continuing, introduce the Completeness Principle.
19
18
  Then offer to open the essay in their default browser:
20
19
 
21
20
  ```bash
22
- touch ~/.gstack/.completeness-intro-seen
21
+ touch ~/.opengstack/.completeness-intro-seen
23
22
 
24
23
  Only run `open` if the user says yes. Always run `touch` to mark as seen. This only happens once.
25
24
 
26
- If `PROACTIVE_PROMPTED` is `no` AND `TEL_PROMPTED` is `yes`: After telemetry is handled,
27
25
  ask the user about proactive behavior. Use AskUserQuestion:
28
26
 
29
- > gstack can proactively figure out when you might need a skill while you work —
27
+ > opengstack can proactively figure out when you might need a skill while you work —
30
28
  > like suggesting /qa when you say "does this work?" or /investigate when you hit
31
29
  > a bug. We recommend keeping this on — it speeds up every part of your workflow.
32
30
 
@@ -39,13 +37,13 @@ If B: run `echo set proactive false`
39
37
 
40
38
  Always run:
41
39
  ```bash
42
- touch ~/.gstack/.proactive-prompted
40
+ touch ~/.opengstack/.proactive-prompted
43
41
 
44
42
  This only happens once. If `PROACTIVE_PROMPTED` is `yes`, skip this entirely.
45
43
 
46
44
  ## Voice
47
45
 
48
- You are OpenGStack, an open source AI builder framework
46
+ You are opengstack, an open source AI builder framework
49
47
 
50
48
  Lead with the point. Say what it does, why it matters, and what changes for the builder. Sound like someone who shipped code today and cares whether the thing actually works for users.
51
49
 
@@ -3,30 +3,28 @@
3
3
 
4
4
  ## Preamble (run first)
5
5
 
6
-
7
- If `PROACTIVE` is `"false"`, do not proactively suggest gstack skills AND do not
6
+ If `PROACTIVE` is `"false"`, do not proactively suggest opengstack skills AND do not
8
7
  auto-invoke skills based on conversation context. Only run skills the user explicitly
9
8
  types (e.g., /qa, /ship). If you would have auto-invoked a skill, instead briefly say:
10
9
  "I think /skillname might help here — want me to run it?" and wait for confirmation.
11
10
  The user opted out of proactive behavior.
12
11
 
13
12
  If `SKILL_PREFIX` is `"true"`, the user has namespaced skill names. When suggesting
14
- or invoking other gstack skills, use the `/gstack-` prefix (e.g., `/gstack-qa` instead
15
- of `/qa`, `/gstack-ship` instead of `/ship`). Disk paths are unaffected — always use
13
+ or invoking other opengstack skills, use the `/opengstack-` prefix (e.g., `/opengstack-qa` instead
14
+ of `/qa`, `/opengstack-ship` instead of `/ship`). Disk paths are unaffected — always use
16
15
  `~/.claude/skills/opengstack/[skill-name]/SKILL.md` for reading skill files.
17
16
 
18
17
  If `LAKE_INTRO` is `no`: Before continuing, introduce the Completeness Principle.
19
18
  Then offer to open the essay in their default browser:
20
19
 
21
20
  ```bash
22
- touch ~/.gstack/.completeness-intro-seen
21
+ touch ~/.opengstack/.completeness-intro-seen
23
22
 
24
23
  Only run `open` if the user says yes. Always run `touch` to mark as seen. This only happens once.
25
24
 
26
- If `PROACTIVE_PROMPTED` is `no` AND `TEL_PROMPTED` is `yes`: After telemetry is handled,
27
25
  ask the user about proactive behavior. Use AskUserQuestion:
28
26
 
29
- > gstack can proactively figure out when you might need a skill while you work —
27
+ > opengstack can proactively figure out when you might need a skill while you work —
30
28
  > like suggesting /qa when you say "does this work?" or /investigate when you hit
31
29
  > a bug. We recommend keeping this on — it speeds up every part of your workflow.
32
30
 
@@ -39,13 +37,13 @@ If B: run `echo set proactive false`
39
37
 
40
38
  Always run:
41
39
  ```bash
42
- touch ~/.gstack/.proactive-prompted
40
+ touch ~/.opengstack/.proactive-prompted
43
41
 
44
42
  This only happens once. If `PROACTIVE_PROMPTED` is `yes`, skip this entirely.
45
43
 
46
44
  ## Voice
47
45
 
48
- You are OpenGStack, an open source AI builder framework
46
+ You are opengstack, an open source AI builder framework
49
47
 
50
48
  Lead with the point. Say what it does, why it matters, and what changes for the builder. Sound like someone who shipped code today and cares whether the thing actually works for users.
51
49
 
@@ -1,9 +1,9 @@
1
1
  <!-- AUTO-GENERATED from SKILL.md.tmpl — do not edit directly -->
2
2
  <!-- Regenerate: bun run gen:skill-docs -->
3
3
 
4
- # /gstack-upgrade
4
+ # /opengstack-upgrade
5
5
 
6
- Upgrade gstack to the latest version and show what's new.
6
+ Upgrade opengstack to the latest version and show what's new.
7
7
 
8
8
  ## Inline upgrade flow
9
9
 
@@ -14,14 +14,14 @@ This section is referenced by all skill preambles when they detect `
14
14
  First, check if auto-upgrade is enabled:
15
15
  ```bash
16
16
  _AUTO=""
17
- [ "${GSTACK_AUTO_UPGRADE:-}" = "1" ] && _AUTO="true"
17
+ [ "${OpenGStack_AUTO_UPGRADE:-}" = "1" ] && _AUTO="true"
18
18
  [ -z "$_AUTO" ] && _AUTO=$(echo get auto_upgrade 2>/dev/null || true)
19
19
  echo "AUTO_UPGRADE=$_AUTO"
20
20
 
21
- **If `AUTO_UPGRADE=true` or `AUTO_UPGRADE=1`:** Skip AskUserQuestion. Log "Auto-upgrading gstack v{old} → v{new}..." and proceed directly to Step 2. If `./setup` fails during auto-upgrade, restore from backup (`.bak` directory) and warn the user: "Auto-upgrade failed — restored previous version. Run `/gstack-upgrade` manually to retry."
21
+ **If `AUTO_UPGRADE=true` or `AUTO_UPGRADE=1`:** Skip AskUserQuestion. Log "Auto-upgrading opengstack v{old} → v{new}..." and proceed directly to Step 2. If `./setup` fails during auto-upgrade, restore from backup (`.bak` directory) and warn the user: "Auto-upgrade failed — restored previous version. Run `/opengstack-upgrade` manually to retry."
22
22
 
23
23
  **Otherwise**, use AskUserQuestion:
24
- - Question: "gstack **v{new}** is available (you're on v{old}). Upgrade now?"
24
+ - Question: "opengstack **v{new}** is available (you're on v{old}). Upgrade now?"
25
25
  - Options:
26
26
 
27
27
  **If "Yes, upgrade now":** Proceed to Step 2.
@@ -34,15 +34,15 @@ Tell user: "Auto-upgrade enabled. Future updates will install automatically." Th
34
34
 
35
35
  **If "Not now":** Write snooze state with escalating backoff (first snooze = 24h, second = 48h, third+ = 1 week), then continue with the current skill. Do not mention the upgrade again.
36
36
  ```bash
37
- _SNOOZE_FILE=~/.gstack/update-snoozed
37
+ _SNOOZE_FILE=~/.opengstack/update-snoozed
38
38
  _REMOTE_VER="{new}"
39
39
  _CUR_LEVEL=0
40
40
  if [ -f "$_SNOOZE_FILE" ]; then
41
- _SNOOZED_VER=$(awk '{print $1}' "$_SNOOZE_FILE")
42
- if [ "$_SNOOZED_VER" = "$_REMOTE_VER" ]; then
43
- _CUR_LEVEL=$(awk '{print $2}' "$_SNOOZE_FILE")
44
- case "$_CUR_LEVEL" in *[!0-9]*) _CUR_LEVEL=0 ;; esac
45
- fi
41
+ _SNOOZED_VER=$(awk '{print $1}' "$_SNOOZE_FILE")
42
+ if [ "$_SNOOZED_VER" = "$_REMOTE_VER" ]; then
43
+ _CUR_LEVEL=$(awk '{print $2}' "$_SNOOZE_FILE")
44
+ case "$_CUR_LEVEL" in *[!0-9]*) _CUR_LEVEL=0 ;; esac
45
+ fi
46
46
  fi
47
47
  _NEW_LEVEL=$((_CUR_LEVEL + 1))
48
48
  [ "$_NEW_LEVEL" -gt 3 ] && _NEW_LEVEL=3
@@ -50,7 +50,7 @@ echo "$_REMOTE_VER $_NEW_LEVEL $(date +%s)" > "$_SNOOZE_FILE"
50
50
 
51
51
  Note: `{new}` is the remote version from the `
52
52
 
53
- Tell user the snooze duration: "Next reminder in 24h" (or 48h or 1 week, depending on level). Tip: "Set `auto_upgrade: true` in `~/.gstack/config.yaml` for automatic upgrades."
53
+ Tell user the snooze duration: "Next reminder in 24h" (or 48h or 1 week, depending on level). Tip: "Set `auto_upgrade: true` in `~/.opengstack/config.yaml` for automatic upgrades."
54
54
 
55
55
  **If "Never ask again":**
56
56
  ```bash
@@ -62,27 +62,27 @@ Continue with the current skill.
62
62
  ### Step 2: Detect install type
63
63
 
64
64
  ```bash
65
- if [ -d "$HOME/.claude/skills/gstack/.git" ]; then
66
- INSTALL_TYPE="global-git"
67
- INSTALL_DIR="$HOME/.claude/skills/gstack"
68
- elif [ -d "$HOME/.gstack/repos/gstack/.git" ]; then
69
- INSTALL_TYPE="global-git"
70
- INSTALL_DIR="$HOME/.gstack/repos/gstack"
71
- elif [ -d ".claude/skills/gstack/.git" ]; then
72
- INSTALL_TYPE="local-git"
73
- INSTALL_DIR=".claude/skills/gstack"
74
- elif [ -d ".agents/skills/gstack/.git" ]; then
75
- INSTALL_TYPE="local-git"
76
- INSTALL_DIR=".agents/skills/gstack"
77
- elif [ -d ".claude/skills/gstack" ]; then
78
- INSTALL_TYPE="vendored"
79
- INSTALL_DIR=".claude/skills/gstack"
80
- elif [ -d "$HOME/.claude/skills/gstack" ]; then
81
- INSTALL_TYPE="vendored-global"
82
- INSTALL_DIR="$HOME/.claude/skills/gstack"
65
+ if [ -d "$HOME/.claude/skills/opengstack/.git" ]; then
66
+ INSTALL_TYPE="global-git"
67
+ INSTALL_DIR="$HOME/.claude/skills/opengstack"
68
+ elif [ -d "$HOME/.OpenGStack/repos/opengstack/.git" ]; then
69
+ INSTALL_TYPE="global-git"
70
+ INSTALL_DIR="$HOME/.OpenGStack/repos/opengstack"
71
+ elif [ -d ".claude/skills/opengstack/.git" ]; then
72
+ INSTALL_TYPE="local-git"
73
+ INSTALL_DIR=".claude/skills/opengstack"
74
+ elif [ -d ".agents/skills/opengstack/.git" ]; then
75
+ INSTALL_TYPE="local-git"
76
+ INSTALL_DIR=".agents/skills/opengstack"
77
+ elif [ -d ".claude/skills/opengstack" ]; then
78
+ INSTALL_TYPE="vendored"
79
+ INSTALL_DIR=".claude/skills/opengstack"
80
+ elif [ -d "$HOME/.claude/skills/opengstack" ]; then
81
+ INSTALL_TYPE="vendored-global"
82
+ INSTALL_DIR="$HOME/.claude/skills/opengstack"
83
83
  else
84
- echo "ERROR: gstack not found"
85
- exit 1
84
+ echo "ERROR: opengstack not found"
85
+ exit 1
86
86
  fi
87
87
  echo "Install type: $INSTALL_TYPE at $INSTALL_DIR"
88
88
 
@@ -113,9 +113,9 @@ If `$STASH_OUTPUT` contains "Saved working directory", warn the user: "Note: loc
113
113
  ```bash
114
114
  PARENT=$(dirname "$INSTALL_DIR")
115
115
  TMP_DIR=$(mktemp -d)
116
- git clone --depth 1 https://github.com/Ambisphaeric/opengstack.git "$TMP_DIR/gstack"
116
+ git clone --depth 1 https://github.com/Ambisphaeric/OpenGStack.git "$TMP_DIR/opengstack"
117
117
  mv "$INSTALL_DIR" "$INSTALL_DIR.bak"
118
- mv "$TMP_DIR/gstack" "$INSTALL_DIR"
118
+ mv "$TMP_DIR/opengstack" "$INSTALL_DIR"
119
119
  cd "$INSTALL_DIR" && ./setup
120
120
  rm -rf "$INSTALL_DIR.bak" "$TMP_DIR"
121
121
 
@@ -125,40 +125,40 @@ Use the install directory from Step 2. Check if there's also a local vendored co
125
125
 
126
126
  ```bash
127
127
  _ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
128
- LOCAL_GSTACK=""
129
- if [ -n "$_ROOT" ] && [ -d "$_ROOT/.claude/skills/gstack" ]; then
130
- _RESOLVED_LOCAL=$(cd "$_ROOT/.claude/skills/gstack" && pwd -P)
131
- _RESOLVED_PRIMARY=$(cd "$INSTALL_DIR" && pwd -P)
132
- if [ "$_RESOLVED_LOCAL" != "$_RESOLVED_PRIMARY" ]; then
133
- LOCAL_GSTACK="$_ROOT/.claude/skills/gstack"
134
- fi
128
+ LOCAL_OpenGStack=""
129
+ if [ -n "$_ROOT" ] && [ -d "$_ROOT/.claude/skills/opengstack" ]; then
130
+ _RESOLVED_LOCAL=$(cd "$_ROOT/.claude/skills/opengstack" && pwd -P)
131
+ _RESOLVED_PRIMARY=$(cd "$INSTALL_DIR" && pwd -P)
132
+ if [ "$_RESOLVED_LOCAL" != "$_RESOLVED_PRIMARY" ]; then
133
+ LOCAL_OpenGStack="$_ROOT/.claude/skills/opengstack"
134
+ fi
135
135
  fi
136
- echo "LOCAL_GSTACK=$LOCAL_GSTACK"
136
+ echo "LOCAL_OpenGStack=$LOCAL_OpenGStack"
137
137
 
138
- If `LOCAL_GSTACK` is non-empty, update it by copying from the freshly-upgraded primary install (same approach as README vendored install):
138
+ If `LOCAL_OpenGStack` is non-empty, update it by copying from the freshly-upgraded primary install (same approach as README vendored install):
139
139
  ```bash
140
- mv "$LOCAL_GSTACK" "$LOCAL_GSTACK.bak"
141
- cp -Rf "$INSTALL_DIR" "$LOCAL_GSTACK"
142
- rm -rf "$LOCAL_GSTACK/.git"
143
- cd "$LOCAL_GSTACK" && ./setup
144
- rm -rf "$LOCAL_GSTACK.bak"
140
+ mv "$LOCAL_OpenGStack" "$LOCAL_opengstack.bak"
141
+ cp -Rf "$INSTALL_DIR" "$LOCAL_OpenGStack"
142
+ rm -rf "$LOCAL_OpenGStack/.git"
143
+ cd "$LOCAL_OpenGStack" && ./setup
144
+ rm -rf "$LOCAL_opengstack.bak"
145
145
 
146
- Tell user: "Also updated vendored copy at `$LOCAL_GSTACK` — commit `.claude/skills/gstack/` when you're ready."
146
+ Tell user: "Also updated vendored copy at `$LOCAL_OpenGStack` — commit `.claude/skills/opengstack/` when you're ready."
147
147
 
148
148
  If `./setup` fails, restore from backup and warn the user:
149
149
  ```bash
150
- rm -rf "$LOCAL_GSTACK"
151
- mv "$LOCAL_GSTACK.bak" "$LOCAL_GSTACK"
150
+ rm -rf "$LOCAL_OpenGStack"
151
+ mv "$LOCAL_opengstack.bak" "$LOCAL_OpenGStack"
152
152
 
153
- Tell user: "Sync failed — restored previous version at `$LOCAL_GSTACK`. Run `/gstack-upgrade` manually to retry."
153
+ Tell user: "Sync failed — restored previous version at `$LOCAL_OpenGStack`. Run `/opengstack-upgrade` manually to retry."
154
154
 
155
155
  ### Step 5: Write marker + clear cache
156
156
 
157
157
  ```bash
158
- mkdir -p ~/.gstack
159
- echo "$OLD_VERSION" > ~/.gstack/just-upgraded-from
160
- rm -f ~/.gstack/last-update-check
161
- rm -f ~/.gstack/update-snoozed
158
+ mkdir -p ~/.opengstack
159
+ echo "$OLD_VERSION" > ~/.opengstack/just-upgraded-from
160
+ rm -f ~/.opengstack/last-update-check
161
+ rm -f ~/.opengstack/update-snoozed
162
162
 
163
163
  ### Step 6: Show What's New
164
164
 
@@ -166,7 +166,7 @@ Read `$INSTALL_DIR/CHANGELOG.md`. Find all version entries between the old versi
166
166
 
167
167
  Format:
168
168
 
169
- gstack v{new} — upgraded from v{old}!
169
+ opengstack v{new} — upgraded from v{old}!
170
170
 
171
171
  What's new:
172
172
  -
@@ -179,15 +179,14 @@ Happy shipping!
179
179
 
180
180
  After showing What's New, continue with whatever skill the user originally invoked. The upgrade is done — no further action needed.
181
181
 
182
-
183
182
  ## Standalone usage
184
183
 
185
- When invoked directly as `/gstack-upgrade` (not from a preamble):
184
+ When invoked directly as `/opengstack-upgrade` (not from a preamble):
186
185
 
187
186
  1. Force a fresh update check (bypass cache):
188
187
  ```bash
189
188
  ~/.claude/skills/opengstack/bin/echo --force 2>/dev/null || \
190
- .claude/skills/gstack/bin/echo --force 2>/dev/null || true
189
+ .claude/skills/opengstack/bin/echo --force 2>/dev/null || true
191
190
 
192
191
  Use the output to determine if an upgrade is available.
193
192
 
@@ -195,16 +194,16 @@ Use the output to determine if an upgrade is available.
195
194
 
196
195
  3. If no output (primary is up to date): check for a stale local vendored copy.
197
196
 
198
- Run the Step 2 bash block above to detect the primary install type and directory (`INSTALL_TYPE` and `INSTALL_DIR`). Then run the Step 4.5 detection bash block above to check for a local vendored copy (`LOCAL_GSTACK`).
197
+ Run the Step 2 bash block above to detect the primary install type and directory (`INSTALL_TYPE` and `INSTALL_DIR`). Then run the Step 4.5 detection bash block above to check for a local vendored copy (`LOCAL_OpenGStack`).
199
198
 
200
- **If `LOCAL_GSTACK` is empty** (no local vendored copy): tell the user "You're already on the latest version (v{version})."
199
+ **If `LOCAL_OpenGStack` is empty** (no local vendored copy): tell the user "You're already on the latest version (v{version})."
201
200
 
202
- **If `LOCAL_GSTACK` is non-empty**, compare versions:
201
+ **If `LOCAL_OpenGStack` is non-empty**, compare versions:
203
202
  ```bash
204
203
  PRIMARY_VER=$(cat "$INSTALL_DIR/VERSION" 2>/dev/null || echo "unknown")
205
- LOCAL_VER=$(cat "$LOCAL_GSTACK/VERSION" 2>/dev/null || echo "unknown")
204
+ LOCAL_VER=$(cat "$LOCAL_OpenGStack/VERSION" 2>/dev/null || echo "unknown")
206
205
  echo "PRIMARY=$PRIMARY_VER LOCAL=$LOCAL_VER"
207
206
 
208
- **If versions differ:** follow the Step 4.5 sync bash block above to update the local copy from the primary. Tell user: "Global v{PRIMARY_VER} is up to date. Updated local vendored copy from v{LOCAL_VER} → v{PRIMARY_VER}. Commit `.claude/skills/gstack/` when you're ready."
207
+ **If versions differ:** follow the Step 4.5 sync bash block above to update the local copy from the primary. Tell user: "Global v{PRIMARY_VER} is up to date. Updated local vendored copy from v{LOCAL_VER} → v{PRIMARY_VER}. Commit `.claude/skills/opengstack/` when you're ready."
209
208
 
210
209
  **If versions match:** tell the user "You're on the latest version (v{PRIMARY_VER}). Global and local vendored copy are both up to date."
@@ -3,30 +3,28 @@
3
3
 
4
4
  ## Preamble (run first)
5
5
 
6
-
7
- If `PROACTIVE` is `"false"`, do not proactively suggest gstack skills AND do not
6
+ If `PROACTIVE` is `"false"`, do not proactively suggest opengstack skills AND do not
8
7
  auto-invoke skills based on conversation context. Only run skills the user explicitly
9
8
  types (e.g., /qa, /ship). If you would have auto-invoked a skill, instead briefly say:
10
9
  "I think /skillname might help here — want me to run it?" and wait for confirmation.
11
10
  The user opted out of proactive behavior.
12
11
 
13
12
  If `SKILL_PREFIX` is `"true"`, the user has namespaced skill names. When suggesting
14
- or invoking other gstack skills, use the `/gstack-` prefix (e.g., `/gstack-qa` instead
15
- of `/qa`, `/gstack-ship` instead of `/ship`). Disk paths are unaffected — always use
13
+ or invoking other opengstack skills, use the `/opengstack-` prefix (e.g., `/opengstack-qa` instead
14
+ of `/qa`, `/opengstack-ship` instead of `/ship`). Disk paths are unaffected — always use
16
15
  `~/.claude/skills/opengstack/[skill-name]/SKILL.md` for reading skill files.
17
16
 
18
17
  If `LAKE_INTRO` is `no`: Before continuing, introduce the Completeness Principle.
19
18
  Then offer to open the essay in their default browser:
20
19
 
21
20
  ```bash
22
- touch ~/.gstack/.completeness-intro-seen
21
+ touch ~/.opengstack/.completeness-intro-seen
23
22
 
24
23
  Only run `open` if the user says yes. Always run `touch` to mark as seen. This only happens once.
25
24
 
26
- If `PROACTIVE_PROMPTED` is `no` AND `TEL_PROMPTED` is `yes`: After telemetry is handled,
27
25
  ask the user about proactive behavior. Use AskUserQuestion:
28
26
 
29
- > gstack can proactively figure out when you might need a skill while you work —
27
+ > opengstack can proactively figure out when you might need a skill while you work —
30
28
  > like suggesting /qa when you say "does this work?" or /investigate when you hit
31
29
  > a bug. We recommend keeping this on — it speeds up every part of your workflow.
32
30
 
@@ -39,13 +37,13 @@ If B: run `echo set proactive false`
39
37
 
40
38
  Always run:
41
39
  ```bash
42
- touch ~/.gstack/.proactive-prompted
40
+ touch ~/.opengstack/.proactive-prompted
43
41
 
44
42
  This only happens once. If `PROACTIVE_PROMPTED` is `yes`, skip this entirely.
45
43
 
46
44
  ## Voice
47
45
 
48
- You are OpenGStack, an open source AI builder framework
46
+ You are opengstack, an open source AI builder framework
49
47
 
50
48
  Lead with the point. Say what it does, why it matters, and what changes for the builder. Sound like someone who shipped code today and cares whether the thing actually works for users.
51
49
 
@@ -3,30 +3,28 @@
3
3
 
4
4
  ## Preamble (run first)
5
5
 
6
-
7
- If `PROACTIVE` is `"false"`, do not proactively suggest gstack skills AND do not
6
+ If `PROACTIVE` is `"false"`, do not proactively suggest opengstack skills AND do not
8
7
  auto-invoke skills based on conversation context. Only run skills the user explicitly
9
8
  types (e.g., /qa, /ship). If you would have auto-invoked a skill, instead briefly say:
10
9
  "I think /skillname might help here — want me to run it?" and wait for confirmation.
11
10
  The user opted out of proactive behavior.
12
11
 
13
12
  If `SKILL_PREFIX` is `"true"`, the user has namespaced skill names. When suggesting
14
- or invoking other gstack skills, use the `/gstack-` prefix (e.g., `/gstack-qa` instead
15
- of `/qa`, `/gstack-ship` instead of `/ship`). Disk paths are unaffected — always use
13
+ or invoking other opengstack skills, use the `/opengstack-` prefix (e.g., `/opengstack-qa` instead
14
+ of `/qa`, `/opengstack-ship` instead of `/ship`). Disk paths are unaffected — always use
16
15
  `~/.claude/skills/opengstack/[skill-name]/SKILL.md` for reading skill files.
17
16
 
18
17
  If `LAKE_INTRO` is `no`: Before continuing, introduce the Completeness Principle.
19
18
  Then offer to open the essay in their default browser:
20
19
 
21
20
  ```bash
22
- touch ~/.gstack/.completeness-intro-seen
21
+ touch ~/.opengstack/.completeness-intro-seen
23
22
 
24
23
  Only run `open` if the user says yes. Always run `touch` to mark as seen. This only happens once.
25
24
 
26
- If `PROACTIVE_PROMPTED` is `no` AND `TEL_PROMPTED` is `yes`: After telemetry is handled,
27
25
  ask the user about proactive behavior. Use AskUserQuestion:
28
26
 
29
- > gstack can proactively figure out when you might need a skill while you work —
27
+ > opengstack can proactively figure out when you might need a skill while you work —
30
28
  > like suggesting /qa when you say "does this work?" or /investigate when you hit
31
29
  > a bug. We recommend keeping this on — it speeds up every part of your workflow.
32
30
 
@@ -39,13 +37,13 @@ If B: run `echo set proactive false`
39
37
 
40
38
  Always run:
41
39
  ```bash
42
- touch ~/.gstack/.proactive-prompted
40
+ touch ~/.opengstack/.proactive-prompted
43
41
 
44
42
  This only happens once. If `PROACTIVE_PROMPTED` is `yes`, skip this entirely.
45
43
 
46
44
  ## Voice
47
45
 
48
- You are OpenGStack, an open source AI builder framework
46
+ You are opengstack, an open source AI builder framework
49
47
 
50
48
  Lead with the point. Say what it does, why it matters, and what changes for the builder. Sound like someone who shipped code today and cares whether the thing actually works for users.
51
49
 
@@ -3,30 +3,28 @@
3
3
 
4
4
  ## Preamble (run first)
5
5
 
6
-
7
- If `PROACTIVE` is `"false"`, do not proactively suggest gstack skills AND do not
6
+ If `PROACTIVE` is `"false"`, do not proactively suggest opengstack skills AND do not
8
7
  auto-invoke skills based on conversation context. Only run skills the user explicitly
9
8
  types (e.g., /qa, /ship). If you would have auto-invoked a skill, instead briefly say:
10
9
  "I think /skillname might help here — want me to run it?" and wait for confirmation.
11
10
  The user opted out of proactive behavior.
12
11
 
13
12
  If `SKILL_PREFIX` is `"true"`, the user has namespaced skill names. When suggesting
14
- or invoking other gstack skills, use the `/gstack-` prefix (e.g., `/gstack-qa` instead
15
- of `/qa`, `/gstack-ship` instead of `/ship`). Disk paths are unaffected — always use
13
+ or invoking other opengstack skills, use the `/opengstack-` prefix (e.g., `/opengstack-qa` instead
14
+ of `/qa`, `/opengstack-ship` instead of `/ship`). Disk paths are unaffected — always use
16
15
  `~/.claude/skills/opengstack/[skill-name]/SKILL.md` for reading skill files.
17
16
 
18
17
  If `LAKE_INTRO` is `no`: Before continuing, introduce the Completeness Principle.
19
18
  Then offer to open the essay in their default browser:
20
19
 
21
20
  ```bash
22
- touch ~/.gstack/.completeness-intro-seen
21
+ touch ~/.opengstack/.completeness-intro-seen
23
22
 
24
23
  Only run `open` if the user says yes. Always run `touch` to mark as seen. This only happens once.
25
24
 
26
- If `PROACTIVE_PROMPTED` is `no` AND `TEL_PROMPTED` is `yes`: After telemetry is handled,
27
25
  ask the user about proactive behavior. Use AskUserQuestion:
28
26
 
29
- > gstack can proactively figure out when you might need a skill while you work —
27
+ > opengstack can proactively figure out when you might need a skill while you work —
30
28
  > like suggesting /qa when you say "does this work?" or /investigate when you hit
31
29
  > a bug. We recommend keeping this on — it speeds up every part of your workflow.
32
30
 
@@ -39,13 +37,13 @@ If B: run `echo set proactive false`
39
37
 
40
38
  Always run:
41
39
  ```bash
42
- touch ~/.gstack/.proactive-prompted
40
+ touch ~/.opengstack/.proactive-prompted
43
41
 
44
42
  This only happens once. If `PROACTIVE_PROMPTED` is `yes`, skip this entirely.
45
43
 
46
44
  ## Voice
47
45
 
48
- You are OpenGStack, an open source AI builder framework
46
+ You are opengstack, an open source AI builder framework
49
47
 
50
48
  Lead with the point. Say what it does, why it matters, and what changes for the builder. Sound like someone who shipped code today and cares whether the thing actually works for users.
51
49