Installation
Install MeowKit and get it running in your project.
Prerequisites
- Node.js 24 or later
- Python 3.9 or later.
mewkit setupcreates a virtualenv at.claude/skills/.venvand pip-installsgoogle-genai,pillow, andpython-dotenv, plus any per-skillrequirements.txt - Git installed and configured
- Claude Code installed (claude.ai/code)
Install
npx mewkit initOn a fresh install, mewkit init first asks which toolkits to set up, a multiselect of Claude Code (preselected), Codex, and Cursor, then provisions each: Claude Code generates the .claude/ directory, Codex copies the authored Codex bundle, Cursor installs .claude/ and exports it to .cursor/. Selecting only Codex yields a codex-only project.
Interactive setup
On a fresh install the CLI prompts, in order:
| Prompt | Default |
|---|---|
| Toolkits, a multiselect of Claude Code / Codex / Cursor | Claude Code preselected |
| Install profile | full |
| Project description (optional) | skipped |
Install Python skill dependencies into .claude/skills/.venv | no |
| Gemini API key (optional) | no |
| Fallback API keys for external providers (optional) | no |
All other settings use fixed defaults: cost tracking enabled, memory enabled, mode set to balanced. Stack detection is not performed. In update mode (an existing .claude/), the toolkit picker is skipped and init just refreshes .claude/.
CLI flags
Skip the interactive prompts with flags:
npx mewkit init --target codex # Skip the picker, Codex-only toolkit
npx mewkit init --target cursor # Skip the picker, .claude/ plus export to Cursor
npx mewkit init --force # Overwrite existing .claude/
npx mewkit init --dry-run # Preview without writing
npx mewkit init --profile core # Install a right-sized profile subsetPassing --target (or --migrate) skips the toolkit multiselect and runs that flow directly.
What gets generated
.claude/ What Claude Code reads
├── agents/ Specialist agents for each phase
├── skills/ Domain skills with mk: namespace
├── hooks/ Lifecycle hooks
├── rules/ Enforcement rules
├── scripts/ Python validators
│ └── bin/ Shell utilities
├── modes/ Behavioral modes
└── settings.json Hook registrations
.meowkit/ Your project's own state
├── config.json Project configuration, commit this
├── .env API keys, gitignored, shared by every provider
├── metadata.json What this install put on disk, and what you have edited since
├── pack-manifest.json Which packs this release ships
├── harness-inventory.json Generated registry of .claude/ artifacts
├── memory/ Fix patterns, review patterns, architecture decisions
├── telemetry/ Cost log, trace log
├── state/ Session markers
└── cache/ Derived wiki index, rebuildable
CLAUDE.md Entry point for Claude Code
.mcp.json.example Optional MCP server configThe split follows ownership: .claude/ holds what Claude Code itself reads, so
settings.json and .mcp.json stay there. Everything MeowKit owns lives in .meowkit/.
Only config.json is meant to be committed; the state directories are machine-written
and belong in .gitignore (mewkit setup appends them for you).
metadata.json is worth knowing about even though you never edit it. It records what the
install wrote and what its contents were, which is how mewkit upgrade can tell a file you
edited from one it shipped. Delete it and the next upgrade has no baseline, so it treats every
file as untouched.
An install created before these files moved keeps working: readers fall back to the old
.claude/ locations, and the next upgrade migrates each one forward.
Verify installation
npx mewkit doctorThis checks: Node.js version, Python version, Git availability, hooks executable, scripts present.
Post-install setup
MCP servers (optional)
Copy .mcp.json.example to .mcp.json and configure servers you need:
cp .mcp.json.example .mcp.jsonAvailable MCP servers: Context7 (docs), Playwright (QA), Sequential Thinking.
Gemini API key (optional)
For mk:multimodal (image/video/audio analysis):
# Add to .meowkit/.env, gitignored, secrets stay local
echo "MEOWKIT_GEMINI_API_KEY=your-key" >> .meowkit/.envGet a key at aistudio.google.com/apikey.
Troubleshooting
| Issue | Fix |
|---|---|
.claude/ already exists | Use --force flag or delete manually |
| Hooks not executable | Run chmod +x .claude/hooks/*.sh |
| Python scripts fail | Ensure Python 3.9+ is in PATH |
| Claude Code doesn't load CLAUDE.md | Restart Claude Code session |
| The agent refuses to edit any file | Gate 1 is unapproved, which is the gate working. See When a gate blocks you |
doctor reports hooks not executable after a fresh clone | npx mewkit doctor fixes this itself; permissions do not survive some archive formats |
Next steps
After scaffolding, finalize setup:
npx mewkit setup # Post-scaffold configuration (venv, MCP, env, gitignore)
npx mewkit doctor # Verify installation- Quick Start: your first task with MeowKit
- Configuration: customize MeowKit for your project