Skip to main content
repofit. Your agents already know you. Now they know what to install. A sketch: AGENTS.md, CLAUDE.md, Cursor rules and Gemini chats go into repofit, which reads them on your machine. Out come ntfy, SciencePlots and actionlint, each pointing back at the chat it came from.

Tests Python 3.11+ No dependencies MCP server MIT

Stop scrolling trending. Ask the agent that has watched you work.

Every week another wave of repositories hits ten thousand stars, and every "tools you should try" list is written for everyone at once. Meanwhile your coding agents have been taking notes on you for months: what you build, what keeps breaking, what you complained about at 2 a.m. repofit reads those notes on your own machine, from Claude Code, Codex, Cursor and a dozen more, and turns them into picks you have not heard of and will actually use. Every pick shows you the moment in your own history that earned it.

Install

pipx install repofit

Then point the agents you use at repofit mcp. Most of them read the same MCP config:

{ "mcpServers": { "repofit": { "command": "repofit", "args": ["mcp"] } } }

That line goes in ~/.cursor/mcp.json for Cursor, ~/.gemini/settings.json for Gemini CLI, ~/.qwen/settings.json for Qwen Code, and the MCP settings of Cline, Windsurf or Claude Desktop. Codex reads TOML, and Claude Code adds servers from the command line:

# ~/.codex/config.toml
[mcp_servers.repofit]
command = "repofit"
args = ["mcp"]
claude mcp add repofit -- repofit mcp

repofit runs inside your agent, so your agent's own model does the thinking: no API key, no account, nothing to host. To skip the install step, use uv and make the command uvx repofit mcp.

Just ask

Open a new session in any agent you connected and talk to it like a colleague who has read your history:

  • "Use repofit to recommend some GitHub projects for me."
  • "Does github.com/owner/name fit me?"
  • "Is there a good tool for turning PDFs into Markdown?"
  • "Which of my installed skills do I never use?"

The agent shows you the picks in the chat, and the same list stays one command away:

Terminal output of repofit recommend --show. Three picks, each with the task it serves, why it fits and the session it was seen in: ntfy for training jobs on rented GPU servers, seen in a Claude Code session asking whether the run was done; SciencePlots for paper figures, seen in a Codex session about a chart layout; actionlint for GitHub Actions releases, seen in a Cursor session about a workflow typo. Below them: one skipped household name, installed skills and MCP servers no session ever called, and tools left out because they are already in use.

The picks come from a sample history. The text is exactly what the CLI prints.

Every pick has a receipt. No "because you starred X": the seen in line points at the session where the need showed up and quotes what you said. If repofit cannot point at your history, it does not make the pick.

The list at the bottom matters more than it sounds. Every skill and MCP server you installed and forgot still costs context on every single request, and repofit names the ones none of your sessions ever called.

How it picks

How repofit picks, as a sketch. Read memory files, rules and your own messages from every agent on your machine. Write a one-page profile where every line cites the chat it came from. Retrieve 30 of 18,338 repositories. Rank what you most likely do not know yet, crossing out what you already know.

Each agent stores its history differently, and the formats change every few months, so repofit ships one adapter per agent. The profile is written from a redacted, numbered evidence pack, and any claim that cites evidence that does not exist is thrown out by the code, not left to the model's good manners. Retrieval runs one query per task you actually do, with project names and search phrases the model adds, so it finds the library a task depends on even when you never typed its name. The ranker is told to skip the household names you already know. The candidate pool is rebuilt every Monday from the GitHub API: active repositories above 3,000 stars, new ones above 1,000, the agent ecosystem above 300, plus GitHub trending.

Your history stays yours

  • Everything runs on your machine. repofit reads the files your agents already keep and writes its own to ~/.repofit.
  • You choose the depth: installed tools only, plus memory and instruction files (the default), or plus your own messages and tool calls.
  • Before any model sees a line, API keys, tokens, passwords, emails, phone numbers and random-looking strings (yes, including the password you once pasted after ssh) are stripped, and your home folder becomes ~.
  • With MCP, the text goes to the model your agent already uses. From the command line it goes only to the provider you name, after you confirm.
  • Your notes and other people's READMEs can hide instructions. repofit hands everything over as data, and the agent is told never to follow what it finds inside.

Supported agents

Agent Sessions Memory and instructions Installed tools
Claude Code yes CLAUDE.md, project memory skills, plugins, MCP servers
Codex yes, CLI and desktop AGENTS.md, memories/ skills, plugins, MCP servers
Cursor yes user rules, pending memories MCP servers, extensions
Hermes Agent yes USER.md, MEMORY.md skills, MCP servers
Gemini CLI, Qwen Code yes GEMINI.md, QWEN.md MCP servers, extensions
Cline, Roo Code, Kilo Code yes .clinerules MCP servers
Continue yes rules/ MCP servers
VS Code Copilot yes copilot-instructions.md MCP servers, extensions
Kimi CLI, Aider yes
OpenCode counted AGENTS.md MCP servers
Windsurf, Claude Desktop, WorkBuddy, Trae no local sessions memories where present MCP servers

Project instruction files (AGENTS.md, CLAUDE.md, .cursorrules and friends) are read too. Run repofit scan to see what it finds on your machine. If your agent hides its data somewhere else, open an issue with the path and it gets an adapter.

Command line, no agent needed

Install with pipx install repofit, or put uvx in front of each command.

repofit scan                                    # which agents are installed and what each one stores
repofit profile build --level L2 --provider deepseek
repofit recommend --provider deepseek --lang zh

Providers: deepseek, openai, ollama, anthropic, or any OpenAI-compatible endpoint with --provider compatible --base-url ... --model .... Keys come from DEEPSEEK_API_KEY, OPENAI_API_KEY or ANTHROPIC_API_KEY, and repofit shows how much text it will send before it sends anything.

No provider at all? Each model step prints a prompt to paste into any chat and imports the answer:

repofit profile prompt --level L2 > prompt.md   # then: repofit profile apply answer.json
repofit profile expand --prompt                 # then: repofit profile expand --apply answer.json
repofit recommend --prompt --lang en            # then: repofit recommend --apply answer.json
repofit recommend --no-llm                      # keyword retrieval only, nothing leaves your machine

Development

git clone https://github.com/pth2002/repofit && cd repofit
python -m pip install -e . pytest
python -m pytest
repofit index build      # rebuild the candidate pool yourself; needs a GitHub token

License

MIT

Metadata

Release files for repofit 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for repofit 0.1.1
File Size Uploaded Provenance Actions
repofit-0.1.1.tar.gz 72.0 kB Without provenance Details for repofit-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for repofit 0.1.1
File Interpreter ABI Platform Actions
repofit-0.1.1-py3-none-any.whl Python 3 none any Details for repofit-0.1.1-py3-none-any.whl

Total release size: 154.5 kB

Release files / repofit-0.1.1.tar.gz

Download URL repofit-0.1.1.tar.gz
Size 72.0 kB
Tags Source
SHA-256 checksum
How to use checksums
3e48dcc073f148f58d9641e8082dc20fe0fab8bd243227e6ffd4bfbdd85ce52a
BLAKE2b-256 checksum
How to use checksums
8198287e346cc6eede84c527768da695609c8b796cf287e758bb842e33a77025
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / repofit-0.1.1-py3-none-any.whl

Download URL repofit-0.1.1-py3-none-any.whl
Size 82.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
21bf0cf46801e835bcd811cc2e35b43d1b80f5d82fa730bf3b5c11556d445f4e
BLAKE2b-256 checksum
How to use checksums
bd1e8c42efe97f4e3b70b66dfe31b25345e0f90e3409a52282ec1388bafacbbc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Security for repofit 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page