Install OpenWolf
Install the third-party openwolf npm package and initialize it in the current project (cwd at invocation). The plugin itself contains no openwolf code — it shells out to the published binary.
Self-Evolving Skill: If install steps drift (renamed flags, new prerequisites, npm vs pnpm churn), fix this file. Only update for real, reproducible issues.
Prerequisites
| Component | Required | Check |
| ------------ | -------- | ------------------------------------------------------------------------------ |
| Node.js 20+ | Yes | node --version |
| npm/pnpm/bun | One | command -v npm pnpm bun |
| PM2 | Optional | command -v pm2 (for the auto-started daemon — degrades gracefully if absent) |
When NOT to run this
Confirm with the user before initializing in any of these:
- The cc-skills marketplace repo itself (this repo) — anatomy.md would be noise across 197 skills.
- Tiny one-shot scripts or directories without a clear "project" boundary.
- Any project where
.claude/settings.jsonis auto-managed by another tool that does not preserve foreign hook entries.
Workflow
Step 1: Preflight + confirm
node --version || { echo "FAIL: Node.js 20+ required"; exit 1; }
PROJECT_ROOT="$(pwd)"
echo "Will install openwolf globally and initialize in: $PROJECT_ROOT"
[ -d "$PROJECT_ROOT/.wolf" ] && echo "NOTE: .wolf/ already exists — init will run in upgrade mode (preserves user data)."
If CLAUDE.md already exists in the project, warn the user that openwolf will prepend a 225-byte snippet to it. Use AskUserQuestion if the project's CLAUDE.md has structured top-of-file metadata that the user might not want disturbed.
Step 2: Install the global binary
Pick the first available package manager:
if command -v pnpm >/dev/null; then pnpm add -g openwolf
elif command -v bun >/dev/null; then bun add -g openwolf
else npm install -g openwolf
fi
openwolf --version || { echo "FAIL: openwolf binary not on PATH after install"; exit 1; }
Step 3: Initialize in the current project
cd "$PROJECT_ROOT" && openwolf init
This creates .wolf/, merges 6 hooks into .claude/settings.json, writes .claude/rules/openwolf.md, prepends a snippet to CLAUDE.md, registers in ~/.openwolf/registry.json, and (if PM2 is installed) starts daemon openwolf-$(basename "$PROJECT_ROOT").
Step 4: Verify
openwolf status
Confirm: .wolf/ files present, hook scripts present, hooks registered, anatomy file count matches expectations.
Step 5: Surface what was added
Tell the user concisely:
.wolf/directory at$PROJECT_ROOT/.wolf/(data the user owns)- 6 hooks merged into
$PROJECT_ROOT/.claude/settings.json - Snippet prepended to
$PROJECT_ROOT/CLAUDE.md - Rules file at
$PROJECT_ROOT/.claude/rules/openwolf.md - Registry entry at
~/.openwolf/registry.json - Daemon: whatever
openwolf statusreported
To remove cleanly later: /openwolf:remove.
Post-Execution Reflection
After this skill completes, before closing the task:
- Locate yourself. — This SKILL.md path before editing.
- What failed? — Fix the failing step here, not in a separate doc.
- Did the package manager preference order misfire? — Reorder pnpm/bun/npm if needed.
- Did
openwolf initmutate something unexpected? — Document under "When NOT to run this".
Do NOT defer. The next invocation inherits whatever you leave behind.