diff --git a/SKILL.md b/SKILL.md index d209bda8f..daec6134b 100644 --- a/SKILL.md +++ b/SKILL.md @@ -84,7 +84,7 @@ echo '{"skill":"gstack","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -337,8 +337,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -447,8 +447,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/autoplan/SKILL.md b/autoplan/SKILL.md index 480654db7..6c74f7359 100644 --- a/autoplan/SKILL.md +++ b/autoplan/SKILL.md @@ -94,7 +94,7 @@ echo '{"skill":"autoplan","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_re fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -472,8 +472,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -582,8 +582,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/benchmark-models/SKILL.md b/benchmark-models/SKILL.md index c8aef7d8e..31af504c7 100644 --- a/benchmark-models/SKILL.md +++ b/benchmark-models/SKILL.md @@ -88,7 +88,7 @@ echo '{"skill":"benchmark-models","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo" fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -341,8 +341,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -451,8 +451,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/benchmark/SKILL.md b/benchmark/SKILL.md index e3b05e6bc..15510a488 100644 --- a/benchmark/SKILL.md +++ b/benchmark/SKILL.md @@ -88,7 +88,7 @@ echo '{"skill":"benchmark","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_r fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -341,8 +341,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -451,8 +451,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/browse/SKILL.md b/browse/SKILL.md index 2a3621b8c..1f4638f8b 100644 --- a/browse/SKILL.md +++ b/browse/SKILL.md @@ -86,7 +86,7 @@ echo '{"skill":"browse","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -339,8 +339,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -449,8 +449,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/canary/SKILL.md b/canary/SKILL.md index b973f6dff..d666a8d97 100644 --- a/canary/SKILL.md +++ b/canary/SKILL.md @@ -86,7 +86,7 @@ echo '{"skill":"canary","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -464,8 +464,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -574,8 +574,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/codex/SKILL.md b/codex/SKILL.md index b037dbc6e..7c3917aa1 100644 --- a/codex/SKILL.md +++ b/codex/SKILL.md @@ -89,7 +89,7 @@ echo '{"skill":"codex","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo= fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -467,8 +467,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -577,8 +577,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/context-restore/SKILL.md b/context-restore/SKILL.md index 084657127..fcbe2ae3c 100644 --- a/context-restore/SKILL.md +++ b/context-restore/SKILL.md @@ -90,7 +90,7 @@ echo '{"skill":"context-restore","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo": fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -468,8 +468,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -578,8 +578,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/context-save/SKILL.md b/context-save/SKILL.md index eabcb8698..48ec085e4 100644 --- a/context-save/SKILL.md +++ b/context-save/SKILL.md @@ -89,7 +89,7 @@ echo '{"skill":"context-save","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$ fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -467,8 +467,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -577,8 +577,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/cso/SKILL.md b/cso/SKILL.md index a4db4ef1c..cee475ba0 100644 --- a/cso/SKILL.md +++ b/cso/SKILL.md @@ -92,7 +92,7 @@ echo '{"skill":"cso","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo=$( fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -470,8 +470,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -580,8 +580,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/design-consultation/SKILL.md b/design-consultation/SKILL.md index 31bdd5304..47b3fe910 100644 --- a/design-consultation/SKILL.md +++ b/design-consultation/SKILL.md @@ -112,7 +112,7 @@ echo '{"skill":"design-consultation","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","re fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -490,8 +490,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -600,8 +600,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/design-html/SKILL.md b/design-html/SKILL.md index 9821e49f3..c27a93c03 100644 --- a/design-html/SKILL.md +++ b/design-html/SKILL.md @@ -93,7 +93,7 @@ echo '{"skill":"design-html","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$( fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -471,8 +471,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -581,8 +581,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/design-review/SKILL.md b/design-review/SKILL.md index 2c03f2a23..6a8d4e8d8 100644 --- a/design-review/SKILL.md +++ b/design-review/SKILL.md @@ -90,7 +90,7 @@ echo '{"skill":"design-review","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"' fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -468,8 +468,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -578,8 +578,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/design-shotgun/SKILL.md b/design-shotgun/SKILL.md index 67ea8f7a7..b4808a61f 100644 --- a/design-shotgun/SKILL.md +++ b/design-shotgun/SKILL.md @@ -107,7 +107,7 @@ echo '{"skill":"design-shotgun","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":" fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -485,8 +485,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -595,8 +595,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/devex-review/SKILL.md b/devex-review/SKILL.md index b3955f591..14f71c277 100644 --- a/devex-review/SKILL.md +++ b/devex-review/SKILL.md @@ -92,7 +92,7 @@ echo '{"skill":"devex-review","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$ fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -470,8 +470,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -580,8 +580,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/diagram/SKILL.md b/diagram/SKILL.md index 2ec942940..08e8bbbb3 100644 --- a/diagram/SKILL.md +++ b/diagram/SKILL.md @@ -87,7 +87,7 @@ echo '{"skill":"diagram","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_rep fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -465,8 +465,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -575,8 +575,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/document-generate/SKILL.md b/document-generate/SKILL.md index 902cf27ab..c4a4e9b04 100644 --- a/document-generate/SKILL.md +++ b/document-generate/SKILL.md @@ -92,7 +92,7 @@ echo '{"skill":"document-generate","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -470,8 +470,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -580,8 +580,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/document-release/SKILL.md b/document-release/SKILL.md index b4f3207a6..1ccdc8a80 100644 --- a/document-release/SKILL.md +++ b/document-release/SKILL.md @@ -90,7 +90,7 @@ echo '{"skill":"document-release","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo" fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -468,8 +468,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -578,8 +578,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/health/SKILL.md b/health/SKILL.md index c962c1f88..bbb4859e5 100644 --- a/health/SKILL.md +++ b/health/SKILL.md @@ -88,7 +88,7 @@ echo '{"skill":"health","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -466,8 +466,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -576,8 +576,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/investigate/SKILL.md b/investigate/SKILL.md index f17426d42..7f7c4f0fe 100644 --- a/investigate/SKILL.md +++ b/investigate/SKILL.md @@ -127,7 +127,7 @@ echo '{"skill":"investigate","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$( fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -505,8 +505,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -615,8 +615,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/ios-clean/SKILL.md b/ios-clean/SKILL.md index 521b0353d..dd896dbef 100644 --- a/ios-clean/SKILL.md +++ b/ios-clean/SKILL.md @@ -90,7 +90,7 @@ echo '{"skill":"ios-clean","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_r fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -468,8 +468,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -578,8 +578,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/ios-design-review/SKILL.md b/ios-design-review/SKILL.md index 2be91ffee..bbcf28064 100644 --- a/ios-design-review/SKILL.md +++ b/ios-design-review/SKILL.md @@ -92,7 +92,7 @@ echo '{"skill":"ios-design-review","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -470,8 +470,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -580,8 +580,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/ios-fix/SKILL.md b/ios-fix/SKILL.md index 83b0432fe..f5e1d44b6 100644 --- a/ios-fix/SKILL.md +++ b/ios-fix/SKILL.md @@ -93,7 +93,7 @@ echo '{"skill":"ios-fix","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_rep fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -471,8 +471,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -581,8 +581,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/ios-qa/SKILL.md b/ios-qa/SKILL.md index af2844443..d2d41b739 100644 --- a/ios-qa/SKILL.md +++ b/ios-qa/SKILL.md @@ -96,7 +96,7 @@ echo '{"skill":"ios-qa","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -474,8 +474,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -584,8 +584,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/ios-sync/SKILL.md b/ios-sync/SKILL.md index df69a07d4..562a58b77 100644 --- a/ios-sync/SKILL.md +++ b/ios-sync/SKILL.md @@ -90,7 +90,7 @@ echo '{"skill":"ios-sync","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_re fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -468,8 +468,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -578,8 +578,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/land-and-deploy/SKILL.md b/land-and-deploy/SKILL.md index b0bf7f662..21d5ecc9e 100644 --- a/land-and-deploy/SKILL.md +++ b/land-and-deploy/SKILL.md @@ -85,7 +85,7 @@ echo '{"skill":"land-and-deploy","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo": fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -463,8 +463,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -573,8 +573,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/landing-report/SKILL.md b/landing-report/SKILL.md index 83eae8a12..0b3ac8b74 100644 --- a/landing-report/SKILL.md +++ b/landing-report/SKILL.md @@ -86,7 +86,7 @@ echo '{"skill":"landing-report","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":" fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -464,8 +464,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -574,8 +574,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/learn/SKILL.md b/learn/SKILL.md index a05c3039d..808c29b86 100644 --- a/learn/SKILL.md +++ b/learn/SKILL.md @@ -88,7 +88,7 @@ echo '{"skill":"learn","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo= fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -466,8 +466,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -576,8 +576,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/make-pdf/SKILL.md b/make-pdf/SKILL.md index 3d5ac16a2..0b8090cfd 100644 --- a/make-pdf/SKILL.md +++ b/make-pdf/SKILL.md @@ -87,7 +87,7 @@ echo '{"skill":"make-pdf","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_re fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -376,8 +376,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -486,8 +486,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/office-hours/SKILL.md b/office-hours/SKILL.md index 31d7736b2..d5d7d9752 100644 --- a/office-hours/SKILL.md +++ b/office-hours/SKILL.md @@ -123,7 +123,7 @@ echo '{"skill":"office-hours","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$ fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -501,8 +501,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -611,8 +611,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/open-gstack-browser/SKILL.md b/open-gstack-browser/SKILL.md index 603f7345a..e685176f6 100644 --- a/open-gstack-browser/SKILL.md +++ b/open-gstack-browser/SKILL.md @@ -85,7 +85,7 @@ echo '{"skill":"open-gstack-browser","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","re fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -463,8 +463,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -573,8 +573,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/pair-agent/SKILL.md b/pair-agent/SKILL.md index 8b3589d0e..c45f4f0c3 100644 --- a/pair-agent/SKILL.md +++ b/pair-agent/SKILL.md @@ -87,7 +87,7 @@ echo '{"skill":"pair-agent","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_ fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -465,8 +465,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -575,8 +575,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/plan-ceo-review/SKILL.md b/plan-ceo-review/SKILL.md index d4b6b6fbf..0f4df4067 100644 --- a/plan-ceo-review/SKILL.md +++ b/plan-ceo-review/SKILL.md @@ -117,7 +117,7 @@ echo '{"skill":"plan-ceo-review","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo": fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -495,8 +495,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -605,8 +605,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/plan-design-review/SKILL.md b/plan-design-review/SKILL.md index b6f0be633..f926aeffa 100644 --- a/plan-design-review/SKILL.md +++ b/plan-design-review/SKILL.md @@ -89,7 +89,7 @@ echo '{"skill":"plan-design-review","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","rep fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -467,8 +467,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -577,8 +577,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/plan-devex-review/SKILL.md b/plan-devex-review/SKILL.md index e47d45907..7ca4379a8 100644 --- a/plan-devex-review/SKILL.md +++ b/plan-devex-review/SKILL.md @@ -95,7 +95,7 @@ echo '{"skill":"plan-devex-review","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -473,8 +473,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -583,8 +583,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/plan-eng-review/SKILL.md b/plan-eng-review/SKILL.md index 151df2fb9..9681ec57a 100644 --- a/plan-eng-review/SKILL.md +++ b/plan-eng-review/SKILL.md @@ -93,7 +93,7 @@ echo '{"skill":"plan-eng-review","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo": fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -471,8 +471,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -581,8 +581,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/plan-tune/SKILL.md b/plan-tune/SKILL.md index 2ad31174f..7018956c2 100644 --- a/plan-tune/SKILL.md +++ b/plan-tune/SKILL.md @@ -98,7 +98,7 @@ echo '{"skill":"plan-tune","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_r fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -476,8 +476,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -586,8 +586,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/qa-only/SKILL.md b/qa-only/SKILL.md index 947ef9ef4..4f93ddafa 100644 --- a/qa-only/SKILL.md +++ b/qa-only/SKILL.md @@ -88,7 +88,7 @@ echo '{"skill":"qa-only","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_rep fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -466,8 +466,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -576,8 +576,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/qa/SKILL.md b/qa/SKILL.md index e7b6d026f..5cad6ae06 100644 --- a/qa/SKILL.md +++ b/qa/SKILL.md @@ -94,7 +94,7 @@ echo '{"skill":"qa","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo=$(b fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -472,8 +472,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -582,8 +582,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/retro/SKILL.md b/retro/SKILL.md index a40be4111..123b6e749 100644 --- a/retro/SKILL.md +++ b/retro/SKILL.md @@ -105,7 +105,7 @@ echo '{"skill":"retro","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo= fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -483,8 +483,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -593,8 +593,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/review/SKILL.md b/review/SKILL.md index fcf3777ba..d0c5cc15b 100644 --- a/review/SKILL.md +++ b/review/SKILL.md @@ -90,7 +90,7 @@ echo '{"skill":"review","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -468,8 +468,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -578,8 +578,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/scrape/SKILL.md b/scrape/SKILL.md index a505a41f4..ba4d1f74c 100644 --- a/scrape/SKILL.md +++ b/scrape/SKILL.md @@ -86,7 +86,7 @@ echo '{"skill":"scrape","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -464,8 +464,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -574,8 +574,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/scripts/resolvers/preamble/generate-brain-sync-block.ts b/scripts/resolvers/preamble/generate-brain-sync-block.ts index 1486f3c3f..bbd18c2bc 100644 --- a/scripts/resolvers/preamble/generate-brain-sync-block.ts +++ b/scripts/resolvers/preamble/generate-brain-sync-block.ts @@ -28,6 +28,7 @@ * to `gstack-brain-sync --discover-new` + `--once`. */ import type { TemplateContext } from '../types'; +import { quoteSafePath } from '../types'; export function generateBrainSyncBlock(ctx: TemplateContext): string { const isBrainHost = ctx.host === 'gbrain' || ctx.host === 'hermes'; @@ -42,8 +43,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="${ctx.paths.binDir}/gstack-brain-sync" -_BRAIN_CONFIG_BIN="${ctx.paths.binDir}/gstack-config" +_BRAIN_SYNC_BIN="${quoteSafePath(ctx.paths.binDir)}/gstack-brain-sync" +_BRAIN_CONFIG_BIN="${quoteSafePath(ctx.paths.binDir)}/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style \`.gbrain-source\` in the @@ -152,8 +153,8 @@ If A/B and \`~/.gstack/.git\` is missing, ask whether to run \`gstack-artifacts- At skill END before telemetry: \`\`\`bash -"${ctx.paths.binDir}/gstack-brain-sync" --discover-new 2>/dev/null || true -"${ctx.paths.binDir}/gstack-brain-sync" --once 2>/dev/null || true +"${quoteSafePath(ctx.paths.binDir)}/gstack-brain-sync" --discover-new 2>/dev/null || true +"${quoteSafePath(ctx.paths.binDir)}/gstack-brain-sync" --once 2>/dev/null || true \`\`\` `; } diff --git a/scripts/resolvers/preamble/generate-preamble-bash.ts b/scripts/resolvers/preamble/generate-preamble-bash.ts index f0bc57b4b..df8eed5bc 100644 --- a/scripts/resolvers/preamble/generate-preamble-bash.ts +++ b/scripts/resolvers/preamble/generate-preamble-bash.ts @@ -1,4 +1,5 @@ import type { TemplateContext } from '../types'; +import { quoteSafePath } from '../types'; import { getHostConfig } from '../../../hosts/index'; export function generatePreambleBash(ctx: TemplateContext): string { @@ -73,7 +74,7 @@ echo '{"skill":"${ctx.skillName}","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo" fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "${ctx.paths.binDir}/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "${quoteSafePath(ctx.paths.binDir)}/gstack-telemetry-log" ]; then ${ctx.paths.binDir}/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true diff --git a/scripts/resolvers/types.ts b/scripts/resolvers/types.ts index 40afed160..e56a0cf6c 100644 --- a/scripts/resolvers/types.ts +++ b/scripts/resolvers/types.ts @@ -16,6 +16,27 @@ export interface HostPaths { makePdfDir: string; } +/** + * Make a host path safe to interpolate INSIDE DOUBLE QUOTES in generated bash. + * + * Tilde-based hosts (Claude, factory) resolve to paths like + * `~/.claude/skills/gstack/bin`. Bash only performs tilde expansion when the + * `~` is UNQUOTED, so `"~/.claude/..."` is a literal relative path that never + * resolves. A `[ -x "~/..." ]` test is therefore always false and a + * `"~/..." --flag` invocation always fails — the surrounding block silently + * becomes dead code rather than erroring. + * + * Env-var hosts already use `$GSTACK_BIN`, which expands correctly when + * quoted, so they pass through untouched. + * + * Use this ONLY where the path lands inside double quotes. Unquoted + * interpolations (`${ctx.paths.binDir}/gstack-slug`) expand fine as-is and are + * left alone so generated docs keep the more readable `~`. + */ +export function quoteSafePath(hostPath: string): string { + return hostPath.startsWith('~/') ? `$HOME/${hostPath.slice(2)}` : hostPath; +} + /** * HOST_PATHS — derived from host configs. * Each config's globalRoot/localSkillRoot determines the path structure. diff --git a/setup-browser-cookies/SKILL.md b/setup-browser-cookies/SKILL.md index 2b065b205..ca0cae2c7 100644 --- a/setup-browser-cookies/SKILL.md +++ b/setup-browser-cookies/SKILL.md @@ -82,7 +82,7 @@ echo '{"skill":"setup-browser-cookies","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'"," fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -335,8 +335,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -445,8 +445,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/setup-deploy/SKILL.md b/setup-deploy/SKILL.md index fcc4b7a9b..352e5230b 100644 --- a/setup-deploy/SKILL.md +++ b/setup-deploy/SKILL.md @@ -89,7 +89,7 @@ echo '{"skill":"setup-deploy","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$ fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -467,8 +467,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -577,8 +577,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/setup-gbrain/SKILL.md b/setup-gbrain/SKILL.md index fe2bbad75..0bbd097b0 100644 --- a/setup-gbrain/SKILL.md +++ b/setup-gbrain/SKILL.md @@ -88,7 +88,7 @@ echo '{"skill":"setup-gbrain","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$ fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -466,8 +466,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -576,8 +576,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/ship/SKILL.md b/ship/SKILL.md index d49a20238..34da5d6d8 100644 --- a/ship/SKILL.md +++ b/ship/SKILL.md @@ -90,7 +90,7 @@ echo '{"skill":"ship","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo=$ fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -468,8 +468,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -578,8 +578,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/skillify/SKILL.md b/skillify/SKILL.md index c1aed10ca..fd84f47cf 100644 --- a/skillify/SKILL.md +++ b/skillify/SKILL.md @@ -86,7 +86,7 @@ echo '{"skill":"skillify","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_re fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -464,8 +464,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -574,8 +574,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/spec/SKILL.md b/spec/SKILL.md index d5f3aeff1..92759b87d 100644 --- a/spec/SKILL.md +++ b/spec/SKILL.md @@ -87,7 +87,7 @@ echo '{"skill":"spec","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo=$ fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -465,8 +465,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -575,8 +575,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` @@ -1157,7 +1157,7 @@ echo '{"skill":"spec","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo=$ fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -1535,8 +1535,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -1645,8 +1645,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/sync-gbrain/SKILL.md b/sync-gbrain/SKILL.md index 4c3e903e1..a64eb856c 100644 --- a/sync-gbrain/SKILL.md +++ b/sync-gbrain/SKILL.md @@ -88,7 +88,7 @@ echo '{"skill":"sync-gbrain","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$( fi for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do if [ -f "$_PF" ]; then - if [ "$_TEL" != "off" ] && [ -x "~/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then + if [ "$_TEL" != "off" ] && [ -x "$HOME/.claude/skills/gstack/bin/gstack-telemetry-log" ]; then ~/.claude/skills/gstack/bin/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true fi rm -f "$_PF" 2>/dev/null || true @@ -466,8 +466,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then else _BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt" fi -_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync" -_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config" +_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync" +_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config" # /sync-gbrain context-load: teach the agent to use gbrain when it's available. # Per-worktree pin: post-spike redesign uses kubectl-style `.gbrain-source` in the @@ -576,8 +576,8 @@ If A/B and `~/.gstack/.git` is missing, ask whether to run `gstack-artifacts-ini At skill END before telemetry: ```bash -"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true -"~/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true +"$HOME/.claude/skills/gstack/bin/gstack-brain-sync" --once 2>/dev/null || true ``` diff --git a/test/no-quoted-tilde-assignments.test.ts b/test/no-quoted-tilde-assignments.test.ts new file mode 100644 index 000000000..b3f69d884 --- /dev/null +++ b/test/no-quoted-tilde-assignments.test.ts @@ -0,0 +1,51 @@ +import { describe, test, expect } from 'bun:test'; +import * as fs from 'fs'; +import * as path from 'path'; + +// #1656 / #1715 (regression of #785): a tilde inside double quotes never +// expands — `_BIN="~/.claude/..."` silently resolves to a literal ./~ path, +// so the Artifacts Sync and telemetry-finalize blocks were dead code in every +// generated skill. The resolvers now emit $HOME-based paths; this tripwire +// fails the suite if a quoted-tilde assignment ever reappears in generated +// output. + +const ROOT = path.resolve(import.meta.dir, '..'); +const QUOTED_TILDE_ASSIGN = /=\s*"~\//; + +function generatedDocs(): string[] { + const out: string[] = []; + for (const entry of fs.readdirSync(ROOT, { withFileTypes: true })) { + if (!entry.isDirectory() || entry.name.startsWith('.') || entry.name === 'node_modules') continue; + const skill = path.join(ROOT, entry.name, 'SKILL.md'); + if (fs.existsSync(skill)) out.push(skill); + const sections = path.join(ROOT, entry.name, 'sections'); + if (fs.existsSync(sections)) { + for (const f of fs.readdirSync(sections)) { + if (f.endsWith('.md')) out.push(path.join(sections, f)); + } + } + } + const rootSkill = path.join(ROOT, 'SKILL.md'); + if (fs.existsSync(rootSkill)) out.push(rootSkill); + return out; +} + +describe('quoted-tilde assignments (#1656/#1715)', () => { + test('no generated doc assigns a double-quoted tilde path', () => { + const violations: string[] = []; + for (const file of generatedDocs()) { + const lines = fs.readFileSync(file, 'utf-8').split('\n'); + for (let i = 0; i < lines.length; i++) { + if (QUOTED_TILDE_ASSIGN.test(lines[i])) { + violations.push(`${path.relative(ROOT, file)}:${i + 1}: ${lines[i].trim()}`); + } + } + } + expect(violations).toEqual([]); + }); + + test('detector self-check: the pre-fix shape is caught', () => { + expect(QUOTED_TILDE_ASSIGN.test('_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"')).toBe(true); + expect(QUOTED_TILDE_ASSIGN.test('_BIN="$HOME/.claude/skills/gstack/bin/x"')).toBe(false); + }); +});