Merge pull request #58 from phjlljp/feat/session-start-config-check

feat: add SessionStart hook for config check
This commit is contained in:
Matt Van Horn
2026-03-09 21:55:57 -07:00
committed by GitHub
3 changed files with 69 additions and 1 deletions
+2 -1
View File
@@ -21,5 +21,6 @@
"prompts",
"polymarket"
],
"skills": ["./"]
"skills": ["./"],
"hooks": ["./hooks/"]
}
+16
View File
@@ -0,0 +1,16 @@
{
"hooks": {
"SessionStart": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "bash ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/check-config.sh",
"timeout": 5
}
]
}
]
}
}
+51
View File
@@ -0,0 +1,51 @@
#!/bin/bash
set -euo pipefail
# Check if last30days has any configuration source available.
# Priority: .claude/last30days.env > ~/.config/last30days/.env > env vars
PROJECT_ENV=".claude/last30days.env"
GLOBAL_ENV="$HOME/.config/last30days/.env"
# Helper: warn if file permissions are too open
check_perms() {
local file="$1"
if [[ ! -f "$file" ]]; then return; fi
local perms
perms=$(stat -f '%Lp' "$file" 2>/dev/null || stat -c '%a' "$file" 2>/dev/null || echo "")
if [[ -n "$perms" && "$perms" != "600" && "$perms" != "400" ]]; then
echo "/last30days: WARNING — $file has permissions $perms (should be 600)."
echo " Fix: chmod 600 $file"
fi
}
# Check per-project config
if [[ -f "$PROJECT_ENV" ]]; then
check_perms "$PROJECT_ENV"
exit 0
fi
# Check global config
if [[ -f "$GLOBAL_ENV" ]]; then
check_perms "$GLOBAL_ENV"
exit 0
fi
# Check if OPENAI_API_KEY is set in environment (minimum requirement)
if [[ -n "${OPENAI_API_KEY:-}" ]]; then
exit 0
fi
# Check if SCRAPECREATORS_API_KEY is set (also sufficient)
if [[ -n "${SCRAPECREATORS_API_KEY:-}" ]]; then
exit 0
fi
# No config found — inform user
cat <<'EOF'
/last30days: No API keys configured.
Create .claude/last30days.env with your API keys, or create
~/.config/last30days/.env globally. At minimum, SCRAPECREATORS_API_KEY
or OPENAI_API_KEY is required. See the README for setup instructions.
EOF