154 lines
4.3 KiB
Markdown
154 lines
4.3 KiB
Markdown
# Cog Bootstrap — New Machine Setup
|
|
|
|
This document is intended to be read by a Claude Code instance to set up Cog on a new machine. If you are Claude: follow the steps below exactly, in order. If you are a human: hand this file to Claude with the instruction "read BOOTSTRAP.md and set up Cog on this machine".
|
|
|
|
---
|
|
|
|
## What This Does
|
|
|
|
Sets up Cog — a persistent memory and skills system for Claude Code. After setup, Claude will have access to memory, domain routing, and skills in every session on this machine.
|
|
|
|
---
|
|
|
|
## Prerequisites (verify before proceeding)
|
|
|
|
Run these checks first. Stop and tell the user if any fail:
|
|
|
|
```bash
|
|
# Git must be installed
|
|
git --version
|
|
|
|
# Claude Code must be installed and ~/.claude must exist
|
|
ls ~/.claude
|
|
|
|
# Must be on the artanis account (username check)
|
|
whoami
|
|
```
|
|
|
|
Expected: git version output, ~/.claude directory listing, username = `artanis`.
|
|
|
|
If the username is not `artanis`, stop and tell the user — the absolute paths in CLAUDE.md will need updating.
|
|
|
|
---
|
|
|
|
## Step 1 — Clone the repo
|
|
|
|
Check if `~/.cog` already exists:
|
|
|
|
```bash
|
|
ls ~/.cog 2>/dev/null && echo "EXISTS" || echo "NOT FOUND"
|
|
```
|
|
|
|
**If NOT FOUND:** clone it:
|
|
```bash
|
|
git clone https://gitea.bunny-wyvern.ts.net/artanis/Cog-Sync.git /home/artanis/.cog
|
|
```
|
|
|
|
**If EXISTS:** pull latest instead:
|
|
```bash
|
|
git -C /home/artanis/.cog pull --rebase --autostash
|
|
```
|
|
|
|
---
|
|
|
|
## Step 2 — Symlink CLAUDE.md globally
|
|
|
|
Check if `~/.claude/CLAUDE.md` already exists:
|
|
|
|
```bash
|
|
ls -la ~/.claude/CLAUDE.md 2>/dev/null && echo "EXISTS" || echo "NOT FOUND"
|
|
```
|
|
|
|
Replace whatever is there — existing `~/.claude/` files are safe to overwrite:
|
|
```bash
|
|
rm -f ~/.claude/CLAUDE.md && ln -s /home/artanis/.cog/CLAUDE.md ~/.claude/CLAUDE.md
|
|
```
|
|
|
|
---
|
|
|
|
## Step 3 — Symlink settings.json globally
|
|
|
|
`~/.claude/settings.json` should be a symlink to the Cog settings so hooks and permissions apply in every session.
|
|
|
|
Check what's there:
|
|
|
|
```bash
|
|
ls -la ~/.claude/settings.json 2>/dev/null && echo "EXISTS" || echo "NOT FOUND"
|
|
```
|
|
|
|
Replace whatever is there — existing `~/.claude/` files are safe to overwrite:
|
|
```bash
|
|
rm -f ~/.claude/settings.json && ln -s /home/artanis/.cog/.claude/settings.json ~/.claude/settings.json
|
|
```
|
|
|
|
---
|
|
|
|
## Step 4 — Symlink skills globally
|
|
|
|
Create the commands directory and symlink all Cog skills into it:
|
|
|
|
```bash
|
|
mkdir -p ~/.claude/commands
|
|
```
|
|
|
|
For each `.md` file in `/home/artanis/.cog/.claude/commands/`, create a symlink in `~/.claude/commands/`. If a file already exists at the target, skip it (don't overwrite — the user may have other skills there).
|
|
|
|
```bash
|
|
for f in /home/artanis/.cog/.claude/commands/*.md; do
|
|
target=~/.claude/commands/$(basename "$f")
|
|
if [ -e "$target" ]; then
|
|
echo "SKIP (exists): $(basename $f)"
|
|
else
|
|
ln -s "$f" "$target" && echo "linked: $(basename $f)"
|
|
fi
|
|
done
|
|
```
|
|
|
|
---
|
|
|
|
## Step 5 — Verify
|
|
|
|
Run a quick sanity check:
|
|
|
|
```bash
|
|
# CLAUDE.md symlink resolves correctly
|
|
readlink ~/.claude/CLAUDE.md
|
|
|
|
# settings.json symlink resolves correctly
|
|
readlink ~/.claude/settings.json
|
|
|
|
# Skills are linked
|
|
ls ~/.claude/commands/ | grep -E "personal|freelance|reflect|evolve"
|
|
|
|
# Repo is on main and clean
|
|
git -C /home/artanis/.cog status
|
|
git -C /home/artanis/.cog remote -v
|
|
```
|
|
|
|
Expected:
|
|
- First `readlink` → `/home/artanis/.cog/CLAUDE.md`
|
|
- Second `readlink` → `/home/artanis/.cog/.claude/settings.json`
|
|
- Skills listed
|
|
- Repo clean, `origin` points to `https://gitea.bunny-wyvern.ts.net/artanis/Cog-Sync.git`
|
|
|
|
---
|
|
|
|
## Step 6 — Done
|
|
|
|
Tell the user:
|
|
|
|
> Cog is set up. CLAUDE.md and settings.json are active globally. Skills available: `/personal`, `/freelance`, `/reflect`, `/evolve`, `/history`, `/scenario`, `/housekeeping`, `/foresight`, `/explainer`, `/humanizer`.
|
|
>
|
|
> Memory auto-syncs in every session: pulls from Gitea on session start, pushes on session end.
|
|
>
|
|
> To add domains or reconfigure, open Claude Code in `~/.cog` and run `/setup`.
|
|
|
|
---
|
|
|
|
## Notes
|
|
|
|
- **Don't edit files in `~/.cog` manually** — let Claude do it through the skills
|
|
- **Git remote `upstream`** points to the original Cog template repo on GitHub — useful if you want to pull framework updates later
|
|
- **`memory/` is gitignored? No** — memory is the whole point of syncing. Everything commits.
|
|
- **Conflicts on observations files** are handled by `merge=union` in `.gitattributes` — appends from different machines auto-merge
|