How a tool gets into the toolbox: the file each tool has, the command that adds one, and the folder it belongs in.
- A tool file: what each tool's file holds
- Adding a tool:
bin/tool.js add, andrefresh - Filing the inbox: moving new tools into their folders
- Which folder: where a tool belongs
- Rebuilding the tree: the folder list in
README.md
Named owner_repo.md. GitHub owner names never hold a _, so the first one marks where the owner ends. The repo's README, cleaned of badges, images and HTML, sits beside it as owner_repo.readme.md.
---
description: "The Memory Layer for AI Agents - Drop-in memory infrastructure for AI agents and apps."
type: library
url: https://github.com/mem0ai/mem0
stars: 64.7k
language: Python
pushed: 2026-09-03
---
## Notes
### 2026-09-20, used in a project
- What worked, what broke, what to watch for.typesays how the tool gets installed:skill,plugin,mcp,cli,library,app,framework,collection,index,reference,templateortooling. A tool that is 2 of these lists both:cli, library.## Contents, above the notes of a tool typedcollection, lists its skills, plugins and subagents, each with its path inside the repo:- **deploy-to-vercel** `/skills/deploy-to-vercel/`: Deploy applications and websites to Vercel.- Each batch of notes goes under a heading with its date and where it came from.
- A tool with no GitHub repo of its own gets the same file written by hand, named after its maker:
anthropics_code-review.md, with onlydescription,typeandurl.
bin/tool.js add owner/repowritesinbox/owner_repo.readme.md, theninbox/owner_repo.md. It takes several repos at once and runs from any folder.--to agent-tools/memorywrites into that folder instead. The folder must already exist.- A tool already in the toolbox, in any folder, is skipped.
bin/tool.js refreshupdates the stars, language, last push, archived flag and README of every tool, and every collection's list. Name files or folders to refresh only those. It never changesdescription,typeor the notes, and skips a file written by hand.
grep -r "^description:" --exclude="*.readme.md" inbox/lists what waits.- Pick each tool's folder by Which folder. Read its README when the description is not enough.
- Fill in
type, anddescriptionwhen GitHub had none. mv inbox/owner_repo.md inbox/owner_repo.readme.md <folder>/- For a tool typed
collection,bin/tool.js refresh <folder>/owner_repo.mdwrites its list. grep -rl '^type: ""' agent-tools softwareprints nothing. It also catches a tool added with--to.- After adding a folder, rebuild the tree.
- Made for an AI agent to use or run inside, even partly? Yes goes to
agent-tools/, no goes tosoftware/. Then pick the folder for what the tool helps with. - A tool that is both, such as a library with its own MCP server, goes to
agent-tools/. - A product with a separate repo for each form is filed by the repo added:
microsoft/playwright-mcpgoes toagent-tools/browser/. - One repo that is both is filed by its own description. HyperFrames says it is built for agents, so
agent-tools/video/. Remotion does not, sosoftware/video/. - What belongs: what an agent uses, what a project builds on, and projects worth learning from. An app used only by hand does not.
- A folder splits in 2 only when it holds 2 sets of tools someone looks for separately.
Whoever adds, renames or removes a folder, or edits a .info, rebuilds the tree in README.md → ## The folders:
$ util fs tree . --except "*.md" --except "*.json" --except ".*" --except bin --into README.md