
I use Claude Code every day at work, where I've inherited a few repositories from previous developers. A lot of the code was generated by earlier models, and its quality is — putting it mildly — not great. Reading it is next to impossible, and figuring out how a given feature works is a research project in itself.
So the only viable option left was to work with the code exclusively through Claude Code with the latest models. Luckily, the previous developers left more or less decent CLAUDE.md files in almost every repository. And in the main one they even wrote nearly three dozen internal skills that describe in great detail how to implement one feature or another.
Working on a project that's split across several repositories whose functionality is tightly coupled is really hard, even with Anthropic's top models. The problem is that Claude doesn't know all the nuances of the neighboring repository, its API docs...
For a while I just wrote enormous task descriptions, pasting all the information I needed from the neighboring repositories into a single document, right next to the task itself. But it quickly became clear that this workflow eats up a lot of time.
So I decided to build a plugin I had been thinking about for a long time. Its job would come down to generalizing and transferring information about a project. A kind of generator and manager of hyperskills, which can include both classic skills and a distilled overview of the project. The key part: being able to package that knowledge into a bundle you can install inside another project.
That's how leaxp was born — a knowledge package manager for Claude Code. It's a plugin that installs with just two commands and lets your agent understand context without extra words.
pip install leaxp
exp use --with claude
By default, leaxp configures Claude to work with an internal MCP that runs fully locally and autonomously. No API keys, no third-party services. On every request you make to the agent, it saves important notes, and the relevant ones then surface as extra context at the start of each following session.
leaxp is very efficient with the context window — that extra context stays under 1000 tokens thanks to the use of headings and a lightweight local embedding model for vector search. From my own experience, token usage in the discovery phase drops by 25–30% once there are enough records in leaxp.
So how do you create those records if the project already exists and has a large codebase? One simple command helps here:
exp learn --goal "learn the high-level architecture"
This command creates the initial records about the project — studying the architecture and the decisions behind it the way the goal specifies.
Conveniently, all records are stored as Markdown files in a separate .xp/ folder, so you can keep everything right in git without any hassle. The knowledge in that folder is split into local and external. Local ones belong to this project; external ones are skills installed from outside, or packages from other projects.
How do you create a hyperskill for a project so you can use it in another project?
First, describe the project properly with that same exp learn:
exp learn --goal "describe the project in form of documentation for external agent; include public interfaces like: API endpoints, DTOs etc"
Then fuse it all into a single hyperskill:
exp fuse
And package it, after describing the package in leaxp.toml:
exp share -o my-project.xp
Then install it in the other project and enjoy a much smoother experience.
The project is fully open source, 100% covered by tests, and available under the Apache-2.0 license:
BTW, leaxp fully supports a traditional skills as well:
exp install https://github.com/org/repo --skill skill-name
...will install skill into a .xp/share and add a repo to leaxp.toml (so you collegues will also install it using exp sync).