Repository navigation
Expand file tree
/
Copy pathinstall.sh
More file actions
executable file
·111 lines (96 loc) · 3.29 KB
/
Copy pathinstall.sh
File metadata and controls
executable file
·111 lines (96 loc) · 3.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#!/usr/bin/env bash
#
# Install Claude Code configuration
# Copies CLAUDE.md, settings.json, and commands/ to ~/.claude/
#
# Usage: ./install.sh [--force]
# --force Overwrite existing files without prompting
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
CLAUDE_DIR="$HOME/.claude"
FORCE=false
if [[ "${1:-}" == "--force" ]]; then
FORCE=true
fi
# Colors
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m'
info() { echo -e "${GREEN}[+]${NC} $1"; }
warn() { echo -e "${YELLOW}[!]${NC} $1"; }
error() { echo -e "${RED}[x]${NC} $1"; }
confirm() {
if $FORCE; then return 0; fi
read -rp "$1 [y/N] " response
[[ "$response" =~ ^[Yy]$ ]]
}
# Ensure ~/.claude exists
mkdir -p "$CLAUDE_DIR"
mkdir -p "$CLAUDE_DIR/commands"
echo ""
echo "Claude Code Config Installer"
echo "=============================="
echo ""
# Install CLAUDE.md
if [[ -f "$CLAUDE_DIR/CLAUDE.md" ]] && ! $FORCE; then
warn "~/.claude/CLAUDE.md already exists."
warn " Your existing CLAUDE.md may contain custom instructions."
if confirm " Overwrite it? (Your current file will be backed up to CLAUDE.md.bak)"; then
cp "$CLAUDE_DIR/CLAUDE.md" "$CLAUDE_DIR/CLAUDE.md.bak"
info "Existing CLAUDE.md backed up to CLAUDE.md.bak"
cp "$SCRIPT_DIR/CLAUDE.md" "$CLAUDE_DIR/CLAUDE.md"
info "CLAUDE.md updated."
else
warn "Skipped CLAUDE.md."
fi
else
cp "$SCRIPT_DIR/CLAUDE.md" "$CLAUDE_DIR/CLAUDE.md"
info "CLAUDE.md installed."
fi
# Install settings.json
if [[ -f "$CLAUDE_DIR/settings.json" ]] && ! $FORCE; then
warn "~/.claude/settings.json already exists."
warn " Your existing settings may contain personal permissions and tool approvals."
if confirm " Overwrite it? (Your current settings will be backed up to settings.json.bak)"; then
cp "$CLAUDE_DIR/settings.json" "$CLAUDE_DIR/settings.json.bak"
info "Existing settings backed up to settings.json.bak"
cp "$SCRIPT_DIR/settings.json" "$CLAUDE_DIR/settings.json"
info "settings.json updated."
else
warn "Skipped settings.json."
fi
else
cp "$SCRIPT_DIR/settings.json" "$CLAUDE_DIR/settings.json"
info "settings.json installed."
fi
# Install commands
COMMANDS_INSTALLED=0
COMMANDS_SKIPPED=0
for cmd_file in "$SCRIPT_DIR"/commands/*.md; do
filename="$(basename "$cmd_file")"
target="$CLAUDE_DIR/commands/$filename"
if [[ -f "$target" ]] && ! $FORCE; then
COMMANDS_SKIPPED=$((COMMANDS_SKIPPED + 1))
else
cp "$cmd_file" "$target"
COMMANDS_INSTALLED=$((COMMANDS_INSTALLED + 1))
fi
done
if [[ $COMMANDS_INSTALLED -gt 0 ]]; then
info "$COMMANDS_INSTALLED command(s) installed to ~/.claude/commands/"
fi
if [[ $COMMANDS_SKIPPED -gt 0 ]]; then
warn "$COMMANDS_SKIPPED command(s) already existed (use --force to overwrite)."
fi
echo ""
info "Done! Restart Claude Code to pick up the new configuration."
echo ""
echo "Installed to: $CLAUDE_DIR"
echo ""
echo "What's included:"
echo " - CLAUDE.md Global instructions (writing style, safety, git, code quality)"
echo " - settings.json Permissions, hooks, status line, plugins"
echo " - commands/ 20 slash commands (/status, /deploy, /probe-start, etc.)"
echo ""
echo "Tip: Review settings.json and customize permissions for your workflow."