mirror of https://github.com/garrytan/gstack.git
fix(skill-preamble): use $HOME instead of literal ~ in quoted bin paths
- The artifacts-sync preamble assigned `_BRAIN_SYNC_BIN="~/.claude/..."` and the telemetry block `-x`-tested the same path; tilde inside double quotes is literal, so 42+ SKILL.md files silently no-op'd brain-sync - `2>/dev/null || true` swallowed the ENOENT, so users never saw failure while cross-machine artifact handoff quietly never pushed - Normalize `ctx.paths.binDir` to `$HOME/...` form for env-var-host (Codex etc.) paths, untouched - Add static invariants `="~/` and `[ -x "~/` so the pattern can't regress under future resolver edits Fixes #1656. Same shape as #785 / #843, different surface (binDir, not browseDir/designDir).
This commit is contained in:
parent
a3259400a3
commit
6cda3e5aea
10
SKILL.md
10
SKILL.md
|
|
@ -84,7 +84,7 @@ echo '{"skill":"gstack","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -337,8 +337,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ echo '{"skill":"autoplan","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_re
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -472,8 +472,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@ echo '{"skill":"benchmark-models","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo"
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -341,8 +341,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@ echo '{"skill":"benchmark","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_r
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -341,8 +341,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,7 @@ echo '{"skill":"browse","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -339,8 +339,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,7 @@ echo '{"skill":"canary","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -464,8 +464,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@ echo '{"skill":"codex","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo=
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -467,8 +467,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ echo '{"skill":"context-restore","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -468,8 +468,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@ echo '{"skill":"context-save","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -467,8 +467,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
10
cso/SKILL.md
10
cso/SKILL.md
|
|
@ -92,7 +92,7 @@ echo '{"skill":"cso","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo=$(
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -470,8 +470,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,7 @@ echo '{"skill":"design-consultation","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","re
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -490,8 +490,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ echo '{"skill":"design-html","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -471,8 +471,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ echo '{"skill":"design-review","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -468,8 +468,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,7 @@ echo '{"skill":"design-shotgun","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -485,8 +485,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@ echo '{"skill":"devex-review","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -470,8 +470,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@ echo '{"skill":"document-generate","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -470,8 +470,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ echo '{"skill":"document-release","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo"
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -468,8 +468,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@ echo '{"skill":"health","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -466,8 +466,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -127,7 +127,7 @@ echo '{"skill":"investigate","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -505,8 +505,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ echo '{"skill":"ios-clean","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_r
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -468,8 +468,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,7 @@ echo '{"skill":"ios-design-review","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -470,8 +470,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ echo '{"skill":"ios-fix","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_rep
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -471,8 +471,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,7 @@ echo '{"skill":"ios-qa","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -474,8 +474,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ echo '{"skill":"ios-sync","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_re
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -468,8 +468,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,7 @@ echo '{"skill":"land-and-deploy","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -463,8 +463,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,7 @@ echo '{"skill":"landing-report","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -464,8 +464,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@ echo '{"skill":"learn","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo=
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -466,8 +466,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,7 @@ echo '{"skill":"make-pdf","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_re
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -376,8 +376,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,7 @@ echo '{"skill":"office-hours","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -501,8 +501,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,7 @@ echo '{"skill":"open-gstack-browser","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","re
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -463,8 +463,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,7 @@ echo '{"skill":"pair-agent","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -465,8 +465,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ echo '{"skill":"plan-ceo-review","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -495,8 +495,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@ echo '{"skill":"plan-design-review","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","rep
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -467,8 +467,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ echo '{"skill":"plan-devex-review","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -473,8 +473,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ echo '{"skill":"plan-eng-review","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -471,8 +471,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@ echo '{"skill":"plan-tune","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_r
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -476,8 +476,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@ echo '{"skill":"qa-only","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_rep
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -466,8 +466,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
10
qa/SKILL.md
10
qa/SKILL.md
|
|
@ -94,7 +94,7 @@ echo '{"skill":"qa","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo=$(b
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -472,8 +472,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,7 @@ echo '{"skill":"retro","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo=
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -483,8 +483,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ echo '{"skill":"review","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -468,8 +468,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,7 @@ echo '{"skill":"scrape","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -464,8 +464,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,16 @@ import type { TemplateContext } from '../types';
|
||||||
|
|
||||||
export function generateBrainSyncBlock(ctx: TemplateContext): string {
|
export function generateBrainSyncBlock(ctx: TemplateContext): string {
|
||||||
const isBrainHost = ctx.host === 'gbrain' || ctx.host === 'hermes';
|
const isBrainHost = ctx.host === 'gbrain' || ctx.host === 'hermes';
|
||||||
|
// Issue #1656: tilde inside double quotes is literal — bash only expands `~`
|
||||||
|
// when unquoted at the start of a word. The brain-sync block assigns these
|
||||||
|
// bin paths to shell vars (`_BRAIN_SYNC_BIN="..."`) and then invokes them
|
||||||
|
// through the quoted expansion, so a leading `~` reaches exec(2) verbatim
|
||||||
|
// and ENOENTs are swallowed by the surrounding `|| true`. Rewrite the leading
|
||||||
|
// `~/` to `$HOME/`, which IS expanded inside double quotes, and keep
|
||||||
|
// env-var-host bin dirs (`$GSTACK_BIN`) untouched.
|
||||||
|
const binDir = ctx.paths.binDir.startsWith('~/')
|
||||||
|
? `$HOME/${ctx.paths.binDir.slice(2)}`
|
||||||
|
: ctx.paths.binDir;
|
||||||
return `## Artifacts Sync (skill start)
|
return `## Artifacts Sync (skill start)
|
||||||
|
|
||||||
\`\`\`bash
|
\`\`\`bash
|
||||||
|
|
@ -42,8 +52,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="${ctx.paths.binDir}/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="${binDir}/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="${ctx.paths.binDir}/gstack-config"
|
_BRAIN_CONFIG_BIN="${binDir}/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# Per-worktree pin: post-spike redesign uses kubectl-style \`.gbrain-source\` in the
|
||||||
|
|
@ -152,8 +162,8 @@ If A/B and \`~/.gstack/.git\` is missing, ask whether to run \`gstack-artifacts-
|
||||||
At skill END before telemetry:
|
At skill END before telemetry:
|
||||||
|
|
||||||
\`\`\`bash
|
\`\`\`bash
|
||||||
"${ctx.paths.binDir}/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"${binDir}/gstack-brain-sync" --discover-new 2>/dev/null || true
|
||||||
"${ctx.paths.binDir}/gstack-brain-sync" --once 2>/dev/null || true
|
"${binDir}/gstack-brain-sync" --once 2>/dev/null || true
|
||||||
\`\`\`
|
\`\`\`
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ echo '{"skill":"${ctx.skillName}","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo"
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
if [ -f "$_PF" ]; then
|
||||||
if [ "$_TEL" != "off" ] && [ -x "${ctx.paths.binDir}/gstack-telemetry-log" ]; then
|
if [ "$_TEL" != "off" ] && [ -x "${ctx.paths.binDir.startsWith('~/') ? `$HOME/${ctx.paths.binDir.slice(2)}` : 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
|
${ctx.paths.binDir}/gstack-telemetry-log --event-type skill_run --skill _pending_finalize --outcome unknown --session-id "$_SESSION_ID" 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@ echo '{"skill":"setup-browser-cookies","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -335,8 +335,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@ echo '{"skill":"setup-deploy","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -467,8 +467,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@ echo '{"skill":"setup-gbrain","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -466,8 +466,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ echo '{"skill":"ship","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_repo=$
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -468,8 +468,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,7 @@ echo '{"skill":"skillify","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(_re
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -464,8 +464,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@ echo '{"skill":"sync-gbrain","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(
|
||||||
fi
|
fi
|
||||||
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
for _PF in $(find ~/.gstack/analytics -maxdepth 1 -name '.pending-*' 2>/dev/null); do
|
||||||
if [ -f "$_PF" ]; then
|
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
|
~/.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
|
fi
|
||||||
rm -f "$_PF" 2>/dev/null || true
|
rm -f "$_PF" 2>/dev/null || true
|
||||||
|
|
@ -466,8 +466,8 @@ if [ -f "$HOME/.gstack-artifacts-remote.txt" ]; then
|
||||||
else
|
else
|
||||||
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
_BRAIN_REMOTE_FILE="$HOME/.gstack-brain-remote.txt"
|
||||||
fi
|
fi
|
||||||
_BRAIN_SYNC_BIN="~/.claude/skills/gstack/bin/gstack-brain-sync"
|
_BRAIN_SYNC_BIN="$HOME/.claude/skills/gstack/bin/gstack-brain-sync"
|
||||||
_BRAIN_CONFIG_BIN="~/.claude/skills/gstack/bin/gstack-config"
|
_BRAIN_CONFIG_BIN="$HOME/.claude/skills/gstack/bin/gstack-config"
|
||||||
|
|
||||||
# /sync-gbrain context-load: teach the agent to use gbrain when it's available.
|
# /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
|
# 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:
|
At skill END before telemetry:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
"~/.claude/skills/gstack/bin/gstack-brain-sync" --discover-new 2>/dev/null || true
|
"$HOME/.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" --once 2>/dev/null || true
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1899,6 +1899,65 @@ describe('no compiled binaries in git', () => {
|
||||||
// Terminal-pane invariants are covered by browse/test/sidebar-tabs.test.ts
|
// Terminal-pane invariants are covered by browse/test/sidebar-tabs.test.ts
|
||||||
// and browse/test/terminal-agent.test.ts.
|
// and browse/test/terminal-agent.test.ts.
|
||||||
|
|
||||||
|
// Issue #1656 (regression of #785): tilde inside double quotes is literal —
|
||||||
|
// bash only expands `~` when unquoted at the start of a word. SKILL.md files
|
||||||
|
// that assign a tilde-prefixed bin path inside double quotes, or `-x`-test it
|
||||||
|
// in quotes, silently break because the exec sees `~/...` verbatim. The
|
||||||
|
// surrounding `2>/dev/null || true` swallows the ENOENT and the brain-sync
|
||||||
|
// preamble becomes a no-op. Lock the generator output so the pattern cannot
|
||||||
|
// reappear under any resolver edit.
|
||||||
|
describe('SKILL.md: no literal tilde in quoted assignments or -x tests (issue #1656)', () => {
|
||||||
|
function listGeneratedSkillFiles(): string[] {
|
||||||
|
const out: string[] = [];
|
||||||
|
const rootSkill = path.join(ROOT, 'SKILL.md');
|
||||||
|
if (fs.existsSync(rootSkill)) out.push(rootSkill);
|
||||||
|
for (const entry of fs.readdirSync(ROOT, { withFileTypes: true })) {
|
||||||
|
if (!entry.isDirectory() || entry.name.startsWith('.') || entry.name === 'node_modules') continue;
|
||||||
|
const candidate = path.join(ROOT, entry.name, 'SKILL.md');
|
||||||
|
if (fs.existsSync(candidate)) out.push(candidate);
|
||||||
|
}
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
test('no SKILL.md contains `="~/` (tilde literal inside quoted assignment)', () => {
|
||||||
|
const offenders: Array<{ file: string; line: number; text: string }> = [];
|
||||||
|
for (const file of listGeneratedSkillFiles()) {
|
||||||
|
const lines = fs.readFileSync(file, 'utf-8').split('\n');
|
||||||
|
lines.forEach((line, idx) => {
|
||||||
|
if (/="~\//.test(line)) {
|
||||||
|
offenders.push({ file: path.relative(ROOT, file), line: idx + 1, text: line.trim() });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (offenders.length > 0) {
|
||||||
|
const sample = offenders.slice(0, 5).map(o => `${o.file}:${o.line}: ${o.text}`).join('\n');
|
||||||
|
throw new Error(
|
||||||
|
`Found ${offenders.length} tilde-literal-in-quoted-assignment site(s) in generated SKILL.md files (issue #1656). Use $HOME/ instead of ~/ in any double-quoted bash assignment. Sample:\n${sample}`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
expect(offenders.length).toBe(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('no SKILL.md contains `[ -x "~/` (tilde literal inside quoted -x test)', () => {
|
||||||
|
const offenders: Array<{ file: string; line: number; text: string }> = [];
|
||||||
|
for (const file of listGeneratedSkillFiles()) {
|
||||||
|
const lines = fs.readFileSync(file, 'utf-8').split('\n');
|
||||||
|
lines.forEach((line, idx) => {
|
||||||
|
if (/\[\s+-x\s+"~\//.test(line)) {
|
||||||
|
offenders.push({ file: path.relative(ROOT, file), line: idx + 1, text: line.trim() });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (offenders.length > 0) {
|
||||||
|
const sample = offenders.slice(0, 5).map(o => `${o.file}:${o.line}: ${o.text}`).join('\n');
|
||||||
|
throw new Error(
|
||||||
|
`Found ${offenders.length} \`[ -x "~/...\` site(s) in generated SKILL.md (issue #1656). The quoted tilde never expands, so the -x test always returns false and the gated block becomes dead code. Use $HOME instead. Sample:\n${sample}`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
expect(offenders.length).toBe(0);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
// ─── Browser-skills validation ──────────────────────────────────
|
// ─── Browser-skills validation ──────────────────────────────────
|
||||||
//
|
//
|
||||||
// Browser-skills are bundled in <gstack-root>/browser-skills/<name>/. Each
|
// Browser-skills are bundled in <gstack-root>/browser-skills/<name>/. Each
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue