Files
claude-code-glm-suite/verify-claude-setup.sh
uroma 8b8a474703 Update installers for new agents and sync script
Interactive installer:
- Fix agents source path (was claude-complete-package/agents, now agents/)
- Add mkdir -p for each agent category
- Install sync-agents.sh script to ~/.claude/
- Remove duplicate bonus section

Verify script:
- Add checks for new critical agents:
  - experiment-tracker
  - studio-coach
  - agent-updater
- Add sync-agents.sh existence and executable check
2026-01-16 09:10:42 +00:00

238 lines
10 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
################################################################################
# Claude Code Setup Verification Script
# Checks if all customizations are properly installed
################################################################################
set -e
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
CLAUDE_DIR="$HOME/.claude"
AGENTS_DIR="$CLAUDE_DIR/agents"
PLUGINS_DIR="$CLAUDE_DIR/plugins"
PASSED=0
FAILED=0
WARNINGS=0
check_pass() {
echo -e "${GREEN}${NC} $1"
PASSED=$((PASSED+1))
}
check_fail() {
echo -e "${RED}${NC} $1"
FAILED=$((FAILED+1))
}
check_warn() {
echo -e "${YELLOW}${NC} $1"
WARNINGS=$((WARNINGS+1))
}
check_info() {
echo -e "${BLUE}${NC} $1"
}
echo -e "${BLUE}╔════════════════════════════════════════════════════════════╗${NC}"
echo -e "${BLUE}║ Claude Code Customizations - Verification ║${NC}"
echo -e "${BLUE}╚════════════════════════════════════════════════════════════╝${NC}"
echo ""
# 1. Check directory structure
echo "═══════════════════════════════════════════════════════════"
echo "Directory Structure"
echo "═══════════════════════════════════════════════════════════"
[ -d "$CLAUDE_DIR" ] && check_pass "Claude directory exists" || check_fail "Claude directory missing"
[ -d "$AGENTS_DIR" ] && check_pass "Agents directory exists" || check_fail "Agents directory missing"
[ -d "$PLUGINS_DIR" ] && check_pass "Plugins directory exists" || check_fail "Plugins directory missing"
echo ""
echo "═══════════════════════════════════════════════════════════"
echo "Agent Categories"
echo "═══════════════════════════════════════════════════════════"
CATEGORIES=("engineering" "marketing" "product" "studio-operations" "project-management" "testing" "design" "bonus")
AGENT_COUNT=0
for category in "${CATEGORIES[@]}"; do
if [ -d "$AGENTS_DIR/$category" ]; then
count=$(ls -1 "$AGENTS_DIR/$category"/*.md 2>/dev/null | wc -l)
if [ $count -gt 0 ]; then
echo -e "${GREEN}${NC} $category: $count agents"
AGENT_COUNT=$((AGENT_COUNT + count))
else
check_warn "$category: directory exists but no agents"
fi
else
check_fail "$category: directory missing"
fi
done
echo ""
check_info "Total agents: $AGENT_COUNT"
# 2. Check configuration files
echo ""
echo "═══════════════════════════════════════════════════════════"
echo "Configuration Files"
echo "═══════════════════════════════════════════════════════════"
[ -f "$CLAUDE_DIR/settings.json" ] && check_pass "settings.json exists" || check_fail "settings.json missing"
[ -f "$CLAUDE_DIR/settings.local.json" ] && check_pass "settings.local.json exists" || check_fail "settings.local.json missing"
[ -f "$PLUGINS_DIR/installed_plugins.json" ] && check_pass "installed_plugins.json exists" || check_fail "installed_plugins.json missing"
[ -f "$PLUGINS_DIR/known_marketplaces.json" ] && check_pass "known_marketplaces.json exists" || check_fail "known_marketplaces.json missing"
# 3. Check MCP tools
echo ""
echo "═══════════════════════════════════════════════════════════"
echo "MCP Tools"
echo "═══════════════════════════════════════════════════════════"
if command -v npx &> /dev/null; then
check_pass "npx available"
# Check if @z_ai/mcp-server can be accessed
if npx -y @z_ai/mcp-server --help &> /dev/null; then
check_pass "@z_ai/mcp-server accessible"
else
check_warn "@z_ai/mcp-server not directly accessible (may download on first use)"
fi
# Check if @z_ai/coding-helper can be accessed
if npx -y @z_ai/coding-helper --help &> /dev/null; then
check_pass "@z_ai/coding-helper accessible"
else
check_warn "@z_ai/coding-helper not directly accessible (may download on first use)"
fi
else
check_fail "npx not available - MCP tools may not work"
fi
# 4. Check plugins
echo ""
echo "═══════════════════════════════════════════════════════════"
echo "Plugins"
echo "═══════════════════════════════════════════════════════════"
if [ -f "$PLUGINS_DIR/installed_plugins.json" ]; then
# Check if GLM plugins are registered
if grep -q "glm-plan-bug" "$PLUGINS_DIR/installed_plugins.json" 2>/dev/null; then
check_pass "glm-plan-bug plugin registered"
else
check_warn "glm-plan-bug plugin not registered"
fi
if grep -q "glm-plan-usage" "$PLUGINS_DIR/installed_plugins.json" 2>/dev/null; then
check_pass "glm-plan-usage plugin registered"
else
check_warn "glm-plan-usage plugin not registered"
fi
fi
# 5. Sample agent check
echo ""
echo "═══════════════════════════════════════════════════════════"
echo "Agent Content Verification"
echo "═══════════════════════════════════════════════════════════"
CRITICAL_AGENTS=(
"engineering/test-writer-fixer.md"
"engineering/frontend-developer.md"
"marketing/tiktok-strategist.md"
"product/sprint-prioritizer.md"
"project-management/studio-producer.md"
"project-management/project-shipper.md"
"project-management/experiment-tracker.md"
"design/whimsy-injector.md"
"bonus/studio-coach.md"
"bonus/agent-updater.md"
)
for agent in "${CRITICAL_AGENTS[@]}"; do
if [ -f "$AGENTS_DIR/$agent" ]; then
# Check file has content
if [ -s "$AGENTS_DIR/$agent" ]; then
check_pass "$agent exists and has content"
else
check_warn "$agent exists but is empty"
fi
else
check_warn "$agent missing"
fi
done
# 6. Settings validation
echo ""
echo "═══════════════════════════════════════════════════════════"
echo "Settings Validation"
echo "═══════════════════════════════════════════════════════════"
if [ -f "$CLAUDE_DIR/settings.json" ]; then
# Check if JSON is valid
if python3 -m json.tool "$CLAUDE_DIR/settings.json" &> /dev/null; then
check_pass "settings.json is valid JSON"
# Check for API token placeholder
if grep -q "YOUR_API_TOKEN_HERE\|YOUR_TOKEN_HERE" "$CLAUDE_DIR/settings.json" 2>/dev/null; then
check_warn "API token not configured (still placeholder)"
else
if grep -q "ANTHROPIC_AUTH_TOKEN" "$CLAUDE_DIR/settings.json" 2>/dev/null; then
check_pass "ANTHROPIC_AUTH_TOKEN is set"
fi
fi
else
check_fail "settings.json is not valid JSON"
fi
fi
# 7. Sync Script Check
echo ""
echo "═══════════════════════════════════════════════════════════"
echo "Sync Script Check"
echo "═══════════════════════════════════════════════════════════"
if [ -f "$CLAUDE_DIR/sync-agents.sh" ]; then
check_pass "sync-agents.sh script exists"
if [ -x "$CLAUDE_DIR/sync-agents.sh" ]; then
check_pass "sync-agents.sh is executable"
else
check_warn "sync-agents.sh exists but is not executable"
fi
else
check_warn "sync-agents.sh not found (optional, for updating agents)"
fi
# 8. Summary
echo ""
echo "═══════════════════════════════════════════════════════════"
echo "Summary"
echo "═══════════════════════════════════════════════════════════"
if [ $FAILED -eq 0 ]; then
echo -e "${GREEN}✓ All critical checks passed!${NC}"
echo ""
echo "Passed: $PASSED"
echo "Warnings: $WARNINGS"
echo "Failed: $FAILED"
echo ""
echo -e "${GREEN}Your Claude Code setup is ready to use!${NC}"
exit 0
else
echo -e "${RED}✗ Some checks failed${NC}"
echo ""
echo "Passed: $PASSED"
echo "Warnings: $WARNINGS"
echo "Failed: $FAILED"
echo ""
echo "Please fix the failed checks above."
exit 1
fi