Enhanced fork of OpenWolf — a token-conscious second brain for Claude Code, with bounded storage, self-maintenance (openwolf doctor), .wolfignore scoping, and tunable retention. AGPL-3.0.
# Add to your Claude Code skills
git clone https://github.com/bassprofressor-lab/openwolf-enhancedGuides for using ai agents skills like openwolf-enhanced.
openwolf-enhanced is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by bassprofressor-lab. Enhanced fork of OpenWolf — a token-conscious second brain for Claude Code, with bounded storage, self-maintenance (openwolf doctor), .wolfignore scoping, and tunable retention. AGPL-3.0. It has 2 GitHub stars.
openwolf-enhanced's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/bassprofressor-lab/openwolf-enhanced" and add it to your Claude Code skills directory (see the Installation section above).
openwolf-enhanced is primarily written in TypeScript. It is open-source under bassprofressor-lab on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh openwolf-enhanced against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
This is an enhanced fork of OpenWolf by Cytostack Pvt Ltd. The original is a great idea; in long-lived projects its
.wolf/directory could grow without bound (multi-megabyte token ledgers, an ever-growing bug log, full-file rewrites on every edit). This fork keeps everything the original does and makes storage bounded, self-maintaining, and scopeable. The CLI is stillopenwolf, so it's a drop-in replacement. See what's enhanced and the CHANGELOG.
Claude Code is powerful but it works blind. It doesn't know what a file contains until it opens it. It can't tell a 50-token config from a 2,000-token module. It reads the same file multiple times in one session without noticing. It has no index of your project, no memory of your corrections, and no awareness of what it already tried.
OpenWolf gives Claude a second brain: a file index so it knows what files contain before reading them, a learning memory that accumulates your preferences and past mistakes, and a token ledger that tracks everything. All through 6 invisible hook scripts that fire on every Claude action.
Everything upstream does, plus — grouped by what it gives you:
| Area | Enhancement |
|---|---|
| 🩺 Self-maintenance | openwolf doctor reports the .wolf/ footprint and compacts everything (ledger, memory, bug log, backups, logs, tmp), flags cross-project registry issues, and suggests .wolfignore entries for noisy dirs. --dry-run previews. |
| 📦 Bounded, tunable storage | Ledger, bug log, cron queues and waste flags are all capped — no runaway multi-MB files. Every limit lives in openwolf.retention and survives updates (config is deep-merged, not overwritten). |
| 🧭 Smart session resume | On session start a compact, token-bounded digest is injected — STATUS + Do-Not-Repeat inline, recent activity as a one-line headline, the rest as an "Available on demand" index — so the model continues without re-reading. |
| 🔎 Searchable memory | openwolf recall <query> keyword-searches STATUS / cerebrum / memory / buglog and Claude's native Auto Memory, returning a compact file:line index. A query interface with no database. |
| 🧠 Native-memory interop | Reads Claude Code's own Auto Memory (read-only): doctor flags its blind spots (files the MEMORY.md index never loads, the 200-line cutoff, dead links), a dashboard panel browses it, and an MCP server (openwolf mcp) exposes recall/resume to Claude Desktop and other MCP clients — so OpenWolf works beyond Claude Code. |
| 🔒 Privacy | <private>…</private> content in any .wolf file is kept out of the injected context and out of search. |
| 🗒 Structured summaries | Each session gets a Did / Learned / Next / Files scaffold, keeping memory consistent and greppable. |
| 📤 Export | openwolf export <sessions|bugs> to JSON or CSV (RFC 4180). |
🎯 .wolfignore |
gitignore-style scoping for anatomy scanning and hook tracking; doctor suggests what to add. |
| 📊 Dashboard | Deep-linkable panels, a cross-project All Projects view, jump-to-file from AI insights, a Design QC thumbnail grid + lightbox, and a daemon-down banner. |
| 🔒 Security & correctness | Dashboard bound to loopback and token-gated, no command injection / path traversal, secret-file exclusion (.pem/.key/id_rsa…), plus ~15 adopted upstream security & bug fixes the inactive upstream never merged. |
| 🚀 Trusted releases | Published to npm via GitHub OIDC — no long-lived token — with SLSA provenance; CI builds and tests on every push. |
Every change is versioned in the CHANGELOG; attribution is in the NOTICE.
npm install -g openwolf-enhanced
Note: this is the maintained fork.
npm install -g openwolfinstalls the originalopenwolf(last released 1.0.4, March 2026, unmaintained) — a different package. Installopenwolf-enhancedfor the bounded-storage, self-maintenance and security work described above. Both provide the sameopenwolfcommand.
git clone https://github.com/bassprofressor-lab/openwolf-enhanced.git
cd openwolf-enhanced
pnpm install
pnpm build # builds CLI, hooks, and dashboard
npm install -g . # installs the `openwolf` command globally
Then, in any project:
cd your-project
openwolf init
That's it. Use claude normally. OpenWolf is watching.
Two things to know before you re-run pnpm build on a copy you have already installed globally:
prebuild deletes dist/ before compiling, and the global openwolf command is a symlink
into dist/bin/openwolf.js. If the build then fails, the CLI is gone until you build again. Back
dist/ up first if you are mid-change, or build in a clean checkout.<project>/.wolf/hooks/, invoked by .claude/settings.json — not the installed package. Run
openwolf update afterwards to push new hooks into your projects (it touches every registered
project; scope it with --project <name>).Upgrading the tool? The hooks that actually run are per-project copies in
<project>/.wolf/hooks/, not the global package. After rebuilding/reinstalling, runopenwolf update(oropenwolf update --project <name>) to copy the new hooks into your projects — a global reinstall alone does not update them.openwolf updatewith no--projectupdates all registered projects.
openwolf init creates a .wolf/ directory in your project:
| File | Purpose |
|---|---|
STATUS.md |
Single-source-of-truth handoff — current quest, next steps, gotchas; read first on resume |
anatomy.md |
Project file map with descriptions and token estimates |
cerebrum.md |
Learned preferences, corrections, Do-Not-Repeat list |
memory.md |
Chronological action log with token estimates |
buglog.json |
Bug fix memory, searchable, prevents re-discovery |
token-ledger.json |
Lifetime token tracking and session history |
hooks/ |
6 Claude Code lifecycle hooks (pure Node.js) |
config.json |
Configuration with sensible defaults (incl. retention) |
identity.md |
Agent persona for this project |
OPENWOLF.md |
Instructions Claude follows every session |
Before Claude reads a file, OpenWolf tells it what the file contains and how large it is. If Claude already read that file this session, OpenWolf warns it. Before Claude writes code, OpenWolf checks your cerebrum.md for known mistakes. After every write, it auto-updates the project map and logs token usage. You see none of this. It just happens.
You type a message
↓
Claude decides to read a file
↓
OpenWolf: "anatomy.md says this file is ~380 tokens. Description: Main entry point."
↓
Claude reads the file → OpenWolf logs the read, checks for repeated reads
↓
Claude writes code → OpenWolf checks cerebrum.md for known mistakes
↓
Claude finishes → OpenWolf updates anatomy.md, appends to memory.md, updates the ledger
.wolf/ HealthyThe .wolf/ directory is designed to stay small, but on very active projects you can compact it any time — no daemon required:
openwolf doctor --dry-run # report footprint + warnings, change nothing
openwolf doctor # compact ledger, consolidate memory, dedup buglog,
# prune backups, rotate logs, clear tmp
openwolf status shows the current footprint and warns before anything gets large.
Edit the openwolf.retention block in .wolf/config.json (defaults shown):
{
"openwolf": {
"retention": {
"token_ledger_max_sessions": 200,
"session_io_max": 100,
"buglog_max_entries": 200,
"backups_keep": 10,
"memory_consolidate_after_days": 7,
"memory_max_bytes": 262144,
"daemon_log_max_bytes": 524288
}
}
}
These survive openwolf update (config is deep-merged, not overwritten).
.wolfignoreCreate a .wolfignore at your project root to exclude paths from anatomy scanning and hook tracking (gitignore-style):
vendor/
dist/
**/*.generated.ts
*.log
openwolf init Initialize .wolf/ and register hooks
openwolf status Show health, stats, .wolf/ footprint, size warnings
openwolf doctor Report + compact .wolf/, suggest .wolfignore [--dry-run]
openwolf recall <query> Keyword-search .wolf + Claude's native memory [--limit N] [--json]
openwolf export <what> Export