by cytostack
Sharper context. Fewer tokens. Open-source middleware for Claude Code.
# Add to your Claude Code skills
git clone https://github.com/cytostack/openwolfGuides for using cli tools skills like openwolf.
Last scanned: 5/2/2026
{
"issues": [
{
"type": "npm-audit",
"message": "esbuild: esbuild enables any website to send any requests to the development server and read the response",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "node-cron: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "uuid: uuid: Missing buffer bounds check in v3/v5/v6 when buf is provided",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "vite: Vite Vulnerable to Path Traversal in Optimized Deps `.map` Handling",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "vitepress: Vulnerability found",
"severity": "medium"
}
],
"status": "PASSED",
"scannedAt": "2026-05-02T06:11:10.729Z",
"semgrepRan": false,
"npmAuditRan": true,
"pipAuditRan": true
}openwolf is an open-source cli tools skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by cytostack. Sharper context. Fewer tokens. Open-source middleware for Claude Code. It has 2,169 GitHub stars.
Yes. openwolf passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/cytostack/openwolf" and add it to your Claude Code skills directory (see the Installation section above).
openwolf is primarily written in TypeScript. It is open-source under cytostack on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other CLI Tools skills you can browse and compare side by side. Open the CLI Tools category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh openwolf against similar tools.
No comments yet. Be the first to share your thoughts!
Top skills in this category by stars
Based on votes and bookmarks from developers who liked this skill
| Without OpenWolf | With OpenWolf |
|---|---|
| The agent rereads a file it already saw (~2,000 tokens) | It reads the one-line description first, or skips the read entirely |
| Whole-file reads just to find one function | Symbol-level hints give exact line ranges for offset/limit reads |
| Context compaction wipes what the session did | A PreCompact snapshot and restore keep the work in context |
| Every agent starts from a cold prompt | One shared .wolf/ brain across Codex, OpenCode, Claude Code, Cursor, and Antigravity |
| No idea where your tokens went | Usage measured from harness transcripts, plus a live local dashboard |
Coding agents are powerful but they work blind. An agent does not know what a file contains until it opens it. It cannot tell a 50-token config from a 2,000-token module. It rereads the same file in one session without noticing, forgets your corrections between sessions, and loses everything when its context window compacts.
OpenWolf gives your agent a second brain that fixes all of that:
npm install -g openwolf
cd your-project
openwolf init
That is it. init auto-detects the coding agents installed on your machine
and wires each of them to the same .wolf/ brain. Use your agents normally;
OpenWolf works underneath.
One .wolf/ brain, many agents:
| Agent | Integration | Depth |
|---|---|---|
| Codex CLI | .codex/hooks.json lifecycle hooks + AGENTS.md |
Full (hooks + context) |
| OpenCode | Native plugin + AGENTS.md |
Full (hooks + context) |
| Claude Code | 7 lifecycle hooks + CLAUDE.md |
Full (hooks + context) |
| Cursor | .cursor/rules/openwolf.mdc (always applied) |
Beta (context) |
| Antigravity | AGENTS.md protocol block |
Beta (context) |
| Gemini CLI | GEMINI.md protocol block |
Beta (context) |
openwolf init # auto-detect installed agents (recommended)
openwolf init --agent codex opencode # wire exactly these
openwolf init --agent all # wire every detected agent
openwolf init --agent claude # Claude Code only
Protocol blocks are marker-fenced: your own content in AGENTS.md or
GEMINI.md is never touched, and re-running init never duplicates anything.
openwolf init creates a .wolf/ directory in your project:
| File | Purpose |
|---|---|
anatomy-index.json |
Durable project index: descriptions, token estimates, content hashes, symbols |
anatomy.md |
Human-readable render of the index, kept in sync automatically |
cerebrum.md |
Learned preferences, corrections, Do-Not-Repeat list |
memory.md |
Chronological action log with token estimates |
STATUS.md |
Session handoff: resume any session in one small read |
buglog.json |
Bug fix memory, searchable, prevents rediscovery |
token-ledger.json |
Estimated and measured token usage, per session and per agent |
hooks/ |
7 lifecycle hooks (pure Node.js, zero dependencies) |
config.json |
Configuration, including per-agent context budgets |
OPENWOLF.md |
The operating protocol your agents follow |
Session starts
|
OpenWolf injects a token-budgeted digest: current goals, known mistakes,
recent bug fixes, project map pointer
|
Agent decides to read a big file
|
OpenWolf: "auth.ts (~2,900 tok). Symbols: validateToken L82-140 ~450 tok.
Read with offset/limit to fetch just the part you need."
|
Agent edits files
|
OpenWolf updates the index under a cross-process lock, logs the action,
estimates the cost
|
Context compacts mid-session
|
OpenWolf snapshots state before compaction and re-injects a digest of the
files already modified, so the agent does not redo finished work
|
Session ends
|
OpenWolf reads the real token usage from the transcript into the ledger
The index is a durable store (anatomy-index.json) with a rendered,
human-readable view (anatomy.md). Writers coordinate through a
cross-process lock, so concurrent hook fires cannot lose entries. Edits made
to the markdown by hand or by older hook versions are detected by content
hash and absorbed additively.
Files above 500 estimated tokens also index their top-level symbols:
- `shared.ts` (~3,200 tok)
- fn `parseAnatomy` L82-104 (~180 tok)
- fn `serializeAnatomy` L106-129 (~200 tok)
Before the agent reads a large file, the hint lists the biggest symbols with line ranges so it can fetch one function with offset/limit instead of the whole file. Hints are suppressed automatically if the file changed since indexing; a stale range is never allowed to misdirect a read. Languages with symbol support today: TypeScript, JavaScript, Python, Go, Rust.
Estimates are useful; measurements are trustworthy. At session end OpenWolf reads the real usage from the harness transcript: input tokens, output tokens, cache reads, cache writes, and API calls, attributed to the agent that ran the session.
openwolf report
Estimated (char-ratio heuristic)
Total tokens: 1,549,658
Est. savings vs bare: 1,772,690
Measured (from harness transcripts)
API calls: 29
Input tokens: 57,489
Cache reads: 309,141
Field results from 1.x deployments (20 projects, 132+ sessions) averaged a 65.8% estimated token reduction, with 71% of repeated file reads caught and blocked. Those figures are heuristic estimates; 2.0 exists so your own numbers are measured, not modeled.
.npmrc, .env
and friends) never enter the index or the memory log.pnpm test.openwolf init installs two slash commands into every configured agent
(Claude Code, Codex, OpenCode):
/security-audit [scope]: layered audit covering dependencies,
secrets, injection surfaces, and authorization, ending in