feat: add SessionStart hook for config check
Add a lightweight hook that runs on session start to check if any API keys are configured. Warns users if no config is found and checks file permissions on existing config files. Checks (in order): .claude/last30days.env, ~/.config/last30days/.env, OPENAI_API_KEY env var, SCRAPECREATORS_API_KEY env var. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -21,5 +21,6 @@
|
|||||||
"prompts",
|
"prompts",
|
||||||
"polymarket"
|
"polymarket"
|
||||||
],
|
],
|
||||||
"skills": ["./"]
|
"skills": ["./"],
|
||||||
|
"hooks": ["./hooks/"]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"hooks": {
|
||||||
|
"SessionStart": [
|
||||||
|
{
|
||||||
|
"matcher": "",
|
||||||
|
"hooks": [
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"command": "bash ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/check-config.sh",
|
||||||
|
"timeout": 5
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
Executable
+51
@@ -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
|
||||||
Reference in New Issue
Block a user