Full one-time global installation of the Graphify + Caveman + Superpower combo stack on a fresh machine or Claude Code setup. Installs all tools, writes the global CLAUDE.md, sets up the global .gitignore, and verifies every component. Run this ONCE per machine before using scaffold-new-project or integrate-existing-project. Trigger: user says "install combo stack", "set up claude code tools", "install graphify caveman superpower", "fresh setup", "new machine setup", or "I don't have the skills installed".
This skill installs and configures every global component of the Graphify + Caveman + Superpower token-optimisation stack. Run it once per machine. It is idempotent — safe to re-run if something failed.
Before starting, Claude will verify:
# Check Claude Code
claude --version 2>/dev/null && echo "✅ Claude Code" || echo "❌ Claude Code not found"
# Check Node / npx
node --version 2>/dev/null && echo "✅ Node.js" || echo "❌ Node.js not found"
npx --version 2>/dev/null && echo "✅ npx" || echo "❌ npx not found"
# Check Python / pip
python3 --version 2>/dev/null && echo "✅ Python 3" || echo "❌ Python 3 not found"
pip3 --version 2>/dev/null && echo "✅ pip" || echo "❌ pip not found"
If Claude Code is missing, stop and direct the user to:
https://docs.claude.com → Claude Code → Installation.
If Node.js is missing, direct to https://nodejs.org (LTS version).
If Python 3 is missing, direct to https://python.org.
npx skills add JuliusBrussee/caveman
Verify:
npx skills list | grep caveman && echo "✅ Caveman installed" || echo "❌ Failed"
Caveman auto-activates via a SessionStart hook for every Claude Code
session. No manual invocation needed. You can still call /caveman,
/caveman lite, /caveman full, or /caveman-compress manually.
If npx skills is not available, use the Claude Code plugin marketplace:
claude plugin marketplace add JuliusBrussee/caveman
claude plugin install caveman@caveman
pip3 install graphifyy
Verify:
graphify --version 2>/dev/null && echo "✅ Graphify installed" || echo "❌ Failed"
Graphify is a project-level tool. The graphify claude install command
(run per-project) wires the PreToolUse hook. The global install here just
makes the graphify CLI available everywhere.
~/.claude/CLAUDE.mdCheck if it exists:
cat ~/.claude/CLAUDE.md 2>/dev/null || echo "Creating..."
If it doesn't exist or is empty, create it with this lean template:
## Output Rules
- No greetings, sign-offs, or preamble
- No narrating what you're about to do — just do it
- Code blocks: always include language tag
- Errors: show exact message + fix only
- Never use filler phrases ("Great!", "Certainly!", "Of course!")
## Model Routing
- Default: sonnet (80% of tasks)
- Switch to opus only for: architecture decisions, complex multi-file refactors
- Use /model opus and /model sonnet to switch
## Session Hygiene
- Use /compact when context grows long mid-task
- Use /clear when switching to an unrelated task
- Use /update after adding new files to a project
- Use /graphify . after major structural refactors
If it already exists, do not overwrite — show the user the existing content and suggest they manually add any missing sections.
.gitignore_global# Check if global gitignore is configured
git config --global core.excludesfile 2>/dev/null || echo "not set"
If not set:
touch ~/.gitignore_global
git config --global core.excludesfile ~/.gitignore_global
echo "✅ Global gitignore configured at ~/.gitignore_global"
Append stack entries (check for duplicates first):
cat ~/.gitignore_global 2>/dev/null | grep -q "graphify-out" \
&& echo "✅ graphify-out already in global gitignore" \
|| echo "graphify-out/" >> ~/.gitignore_global
cat ~/.gitignore_global 2>/dev/null | grep -q "CLAUDE.original" \
&& echo "✅ CLAUDE.original.md already in global gitignore" \
|| echo "CLAUDE.original.md" >> ~/.gitignore_global
cat ~/.gitignore_global 2>/dev/null | grep -q "settings.local.json" \
&& echo "✅ settings.local.json already in global gitignore" \
|| echo ".claude/settings.local.json" >> ~/.gitignore_global
Option A — Plain Markdown notes (recommended, zero dependencies):
mkdir -p ~/notes/{architecture,decisions,logs}
echo "✅ ~/notes/ created for cross-session memory"
Add to ~/.claude/CLAUDE.md:
## Memory
- Global notes: ~/notes/
- Per-project notes: ~/notes/<project-name>/
- Read logs/ before starting a session for recent context
Option B — Obsidian vault (skip if not using Obsidian):
# Install Obsidian from https://obsidian.md
# Then create vault structure:
mkdir -p ~/vault/{permanent,inbox,templates,logs}
echo "✅ ~/vault/ structure created"
Add to ~/.claude/CLAUDE.md:
## Memory
- Vault: ~/vault/CLAUDE.md — read for cross-session context
- Per-project: ~/vault/<project-name>/
Run this verification block and report results to the user:
echo "=== Combo Stack Installation Verification ==="
echo ""
# Caveman
npx skills list 2>/dev/null | grep -q caveman \
&& echo "✅ Caveman installed" \
|| echo "❌ Caveman NOT found — re-run: npx skills add JuliusBrussee/caveman"
# Graphify
command -v graphify &>/dev/null \
&& echo "✅ Graphify CLI installed ($(graphify --version 2>/dev/null || echo 'version unknown'))" \
|| echo "❌ Graphify CLI NOT found — re-run: pip3 install graphifyy"
# Global CLAUDE.md
test -f ~/.claude/CLAUDE.md \
&& echo "✅ ~/.claude/CLAUDE.md exists ($(wc -l < ~/.claude/CLAUDE.md) lines)" \
|| echo "❌ ~/.claude/CLAUDE.md missing — check Step 3"
# Global gitignore
git config --global core.excludesfile &>/dev/null \
&& echo "✅ Global .gitignore configured at $(git config --global core.excludesfile)" \
|| echo "❌ Global .gitignore not set — check Step 4"
# Graphify hook (set per-project, so this may be empty on fresh install)
cat ~/.claude/settings.json 2>/dev/null | grep -q graphify \
&& echo "✅ Graphify hook installed in ~/.claude/settings.json" \
|| echo "ℹ️ Graphify hook not yet installed (run 'graphify claude install' in each project)"
echo ""
echo "=== Done ==="
✅ Global installation complete.
To set up a NEW project:
cd /path/to/new-project
/scaffold-new-project
To wire the stack into an EXISTING project:
cd /path/to/existing-project
/integrate-existing-project
Per-session commands (all automatic after setup):
Caveman → fires automatically via SessionStart hook
Graphify → fires automatically before every Glob/Grep
Manual commands you'll use regularly:
/compact → compress long context mid-session
/clear → fresh context for unrelated work
/update → re-index after adding new files
/graphify . → full re-index after major refactor
/model opus → switch to Opus for heavy architecture work
/model sonnet → switch back to Sonnet
Caveman modes:
/caveman → toggle on/off
/caveman lite → semi-compressed (grammar intact)
/caveman full → maximum terseness
/caveman-compress → compress CLAUDE.md (~46% reduction)
npx skills command not found# Ensure Claude Code is installed and on PATH
claude --version
# If Claude Code is missing, install from https://docs.claude.com
graphify not on PATH after pip install# Check pip install location
pip3 show graphifyy | grep Location
# Add pip bin to PATH:
export PATH="$HOME/.local/bin:$PATH"
# Add to ~/.bashrc or ~/.zshrc permanently
# Confirm location
ls -la ~/.claude/CLAUDE.md
# Claude Code reads ~/.claude/CLAUDE.md automatically for all sessions
# If not working, check Claude Code version: claude --version
# Check settings.json for the hook
cat ~/.claude/settings.json | python3 -m json.tool | grep -A5 "preToolUse"
# If missing, run from inside any project:
graphify claude install
# Check SessionStart hook
cat ~/.claude/settings.json | python3 -m json.tool | grep -A5 "sessionStart"
# Re-install caveman:
npx skills remove caveman 2>/dev/null
npx skills add JuliusBrussee/caveman
| Component | Location | Scope | Committed to Git? |
|---|---|---|---|
| Caveman skill | ~/.claude/skills/ | Global | ❌ No |
| Graphify CLI | pip/system PATH | Global | ❌ No |
~/.claude/CLAUDE.md | ~/.claude/ | Global | ❌ No |
~/.gitignore_global | ~/ | Global | ❌ No |
| Graphify PreToolUse hook | ~/.claude/settings.json | Global | ❌ No |
graphify-out/ | <project-root>/ | Per-project | ❌ No (gitignored) |
CLAUDE.md | <project-root>/ | Per-project | ✅ Yes |
RULES.md | <project-root>/ | Per-project | ✅ Yes |
.claudeignore | <project-root>/ | Per-project | ✅ Yes |