Merge pull request #58 from phjlljp/feat/session-start-config-check
feat: add SessionStart hook for config check
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