-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinstall.sh
More file actions
executable file
·112 lines (98 loc) · 3.5 KB
/
Copy pathinstall.sh
File metadata and controls
executable file
·112 lines (98 loc) · 3.5 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
112
#!/usr/bin/env zsh
set -euo pipefail
repo_dir="$(cd "$(dirname "$0")" && pwd)"
mkdir -p "$HOME/.claude/skills" "$HOME/.codex/skills" "$HOME/.agents/skills" "$HOME/.cursor/rules" "$HOME/.hermes/skills"
if [[ -f "$repo_dir/local/AGENTS.append.md" ]]; then
combined="$HOME/.agents/AGENTS.combined.md"
cat "$repo_dir/AGENTS.md" "$repo_dir/local/AGENTS.append.md" > "$combined"
ln -sfn "$combined" "$HOME/AGENTS.md"
ln -sfn "$combined" "$HOME/.claude/AGENTS.md"
ln -sfn "$combined" "$HOME/.codex/AGENTS.md"
else
ln -sfn "$repo_dir/AGENTS.md" "$HOME/AGENTS.md"
ln -sfn "$repo_dir/.claude/AGENTS.md" "$HOME/.claude/AGENTS.md"
ln -sfn "$repo_dir/.codex/AGENTS.md" "$HOME/.codex/AGENTS.md"
fi
ln -sf "$repo_dir/CLAUDE.md" "$HOME/CLAUDE.md"
ln -sf "$repo_dir/.claude/CLAUDE.md" "$HOME/.claude/CLAUDE.md"
ln -sfn "$repo_dir/SOUL.md" "$HOME/.claude/SOUL.md"
ln -sfn "$repo_dir/SOUL.md" "$HOME/.codex/SOUL.md"
ln -sfn "$repo_dir/SOUL.md" "$HOME/.hermes/SOUL.md"
link_skill() {
local src="$1"
local name="$2"
for dest in "$HOME/.agents/skills/$name" "$HOME/.claude/skills/$name" "$HOME/.codex/skills/$name" "$HOME/.hermes/skills/$name"; do
if [[ -e "$dest" && ! -L "$dest" ]]; then
rm -rf "$dest"
fi
ln -sfn "$src" "$dest"
done
}
skills=(
agent-browser
brainstorming
development
figma-code-connect
find-skills
fix-pr-comments
go
handoff
i-have-adhd
implement-feature
less-code
message
performance
pr-comment-review
react
systematic-debugging
test-driven-development
vercel-react-best-practices
web-design-guidelines
webapp-testing
writing-design-proposals
)
for s in "${skills[@]}"; do
link_skill "$repo_dir/skills/$s" "$s"
done
if [[ -d "$repo_dir/local/skills" ]]; then
for s in "$repo_dir/local/skills"/*; do
[[ -d "$s" ]] || continue
link_skill "$s" "$(basename "$s")"
done
fi
# Keep Claude/Codex copies in lockstep with AGENTS.md for clones that have no local overlay.
sync_agents_copy() {
local dest="$1"
cmp -s "$repo_dir/AGENTS.md" "$dest" && return 0
cp "$repo_dir/AGENTS.md" "$dest"
}
sync_agents_copy "$repo_dir/.claude/AGENTS.md"
sync_agents_copy "$repo_dir/.codex/AGENTS.md"
for f in "$repo_dir"/cursor/rules/*.mdc "$repo_dir"/local/cursor/rules/*.mdc(N); do
[[ -f "$f" ]] || continue
ln -sfn "$f" "$HOME/.cursor/rules/$(basename "$f")"
done
if [[ -d "$HOME/wiki" ]]; then
ln -sfn "$repo_dir/cursor/rules/wiki.mdc" "$HOME/wiki/AGENTS.md"
fi
# Plugin cache re-applies on update. Re-run install after a GitLab/Granola plugin bump.
for f in "$HOME/.cursor/plugins/cache/cursor-public/gitlab/"*/rules/gitlab-workflow.mdc \
"$HOME/.cursor/plugins/cache/cursor-public/granola/"*/rules/check-meeting-context.mdc; do
[[ -f "$f" ]] || continue
perl -i -pe 's/^alwaysApply: true$/alwaysApply: false/' "$f"
done
# ── Hermes Agent ─────────────────────────────────────────────────────
mkdir -p "$HOME/.hermes"
if command -v hermes &>/dev/null; then
ln -sf "$repo_dir/hermes/config.yaml" "$HOME/.hermes/config.yaml"
# Link custom skins
mkdir -p "$HOME/.hermes/skins"
for skin in "$repo_dir"/hermes/skins/*.yaml; do
[[ -f "$skin" ]] && ln -sf "$skin" "$HOME/.hermes/skins/$(basename "$skin")"
done
if [[ ! -f "$HOME/.hermes/.env" ]]; then
cp "$repo_dir/hermes/.env.template" "$HOME/.hermes/.env"
chmod 600 "$HOME/.hermes/.env"
echo " Created ~/.hermes/.env — edit it with your API keys: $EDITOR ~/.hermes/.env"
fi
fi