Install
npx github:webventurer/codefu-coreThis copies skills, commands, hooks, and tools into your project's .claude/ directory and merges hook config into your existing settings.json.
Requirements
Claude Code
Install the Claude Code CLI:
npm install -g @anthropic-ai/claude-codeLinear MCP server
The /linear commands need the Linear MCP server. Add it to your Claude Code MCP config (~/.claude/mcp.json):
{
"mcpServers": {
"linear": {
"command": "npx",
"args": ["-y", "@anthropic-ai/linear-mcp-server"],
"env": {
"LINEAR_API_KEY": "lin_api_..."
}
}
}
}Get your Linear API key at linear.app/settings/api.
GitHub CLI
Install the GitHub CLI (gh) for PR operations:
brew install gh # macOS
# or: https://cli.github.com/ for other platformsThen authenticate:
gh auth loginPython tools
The cross-model feedback loop in /linear:plan-work uses a Python script to send drafts to ChatGPT via OpenRouter. Dependencies are managed inline with uv — no venv or pip install needed.
brew install uv # macOS
# or: curl -LsSf https://astral.sh/uv/install.sh | shAdd your OpenRouter API key to ~/.env:
OPEN_ROUTER_API_KEY=sk-or-...Get your key at openrouter.ai/keys.
What gets installed
.claude/
├── skills/commit/ # skill + workflow + reference docs
├── commands/linear/ # 5 commands + reference docs
├── hooks/ # commit wrapper + bare-commit blocker
└── docs/ # supporting patterns and conceptsThe install script merges hook config into your existing .claude/settings.json — it won't overwrite your other settings.
Known limitations
No versioning
There's no version number, changelog, or upgrade path. When you install, you get the current state of the repo. If you install again later, files are overwritten with whatever's current — no diff, no migration notes.
What this means: you won't know what changed between installs. If the repo goes private or gets renamed, your project still works (the files are local), but updates stop with no warning.
Workaround: pin to a specific commit if stability matters:
npx github:webventurer/codefu-core#<commit-sha>Hook scripts require bash
The commit safety hook (block_bare_git_commit.sh) is a shell script. If it fails — wrong shell, missing permissions, Windows without WSL — the enforcement disappears silently. The agent will happily use bare git commit without the four-pass methodology.
Check it's working: if you can run .claude/hooks/do_commit.sh --help without errors, you're fine. If not, check that the scripts are executable (chmod +x .claude/hooks/*.sh).
Settings merge strategy
When you already have a .claude/settings.json, the install script asks before merging. If you say yes, it uses a deep merge:
- Objects are merged recursively — your keys are preserved, codefu's keys are added alongside
- Arrays (like hook lists) are appended with deduplication — if a hook already exists, it's skipped
- Scalar values — codefu's value wins if both sides set the same key
The merge is additive — it never removes your existing settings. But if you have a hook on the same event with different behaviour, both will run. Review .claude/settings.json after install if you have existing hooks.