Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions .claude/hooks/session-start.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#!/bin/bash
# .claude/hooks/session-start.sh
# Session-start hook for Claude Code on the web.
# Installs AIWB runtime and dev dependencies (bats, shellcheck, fzf, gum).
# Idempotent — safe to re-run on session resume/clear.

set -euo pipefail

# Only run in remote Claude Code sessions
if [ "${CLAUDE_CODE_REMOTE:-}" != "true" ]; then
exit 0
fi

# ── Charm apt repo (needed for gum) ──────────────────────────────────────────
if ! command -v gum >/dev/null 2>&1; then
echo "==> Adding Charm apt repo for gum..."
mkdir -p /etc/apt/keyrings
curl -fsSL https://repo.charm.sh/apt/gpg.key \
| gpg --dearmor -o /etc/apt/keyrings/charm.gpg
echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" \
> /etc/apt/sources.list.d/charm.list
fi

# ── Determine which packages actually need installing ─────────────────────────
MISSING=()
command -v bats >/dev/null 2>&1 || MISSING+=(bats)
command -v shellcheck >/dev/null 2>&1 || MISSING+=(shellcheck)
command -v fzf >/dev/null 2>&1 || MISSING+=(fzf)
command -v gum >/dev/null 2>&1 || MISSING+=(gum)

if [ ${#MISSING[@]} -eq 0 ]; then
echo "==> All AIWB dependencies already installed."
exit 0
fi

echo "==> Installing missing packages: ${MISSING[*]}"
apt-get update -qq
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
"${MISSING[@]}"

# ── Verify ────────────────────────────────────────────────────────────────────
echo "==> Verifying installed tools:"
bats --version
shellcheck --version | head -1
fzf --version
gum --version

echo "==> AIWB session-start hook complete."
14 changes: 13 additions & 1 deletion .claude/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,17 @@
"scripts/**",
"examples/**",
"templates/**"
]
],
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/session-start.sh"
}
]
}
]
}
}
Loading