Agents Only Need Four Tools

Everything else is CLIs and skills files

How do you share context and capabilities between autonomous agents and human devs? In a way that actually scales?

tbh I think the answer is just: CLI tools + Skills (a directory with a SKILL.md + optional additional context).

There’s really only 4 true tools an agent needs: read, write, edit, bash.

That’s it. Everything else is a subset.

Writing tools as CLIs means agents can use them via bash, nothing fancy needed. Even Claude Code harness features like subagents, hooks, tasks could really just be CLI tools underneath. And humans already know CLIs.

Skills are just files. They tell the agent how to do something. The agent is flexible enough to figure it out, and if there’s issues, to work through them. Humans can read them too.

Agents really are just a while loop aimed at a goal: read skills, bash CLIs, write code, done.

This scales for humans too. I built an internal plugin marketplace at work with tooling to easily install and scaffold plugins, and the adoption has been a success with many different teams and domains creating plugins.

Instead of writing a library or SDK or MCP server, just write a CLI. Hand that CLI to an agent. Ideally the CLI is written so the agent can figure out exactly how to use it from docstrings and --help commands. Skills can provide more context on how to use the CLI for specific tasks.

As models improve, this setup gives agents enough flexibility to get better without locking them into rigid workflows. For maximum agent capability and reusability, CLIs + Skills are the way to go.

Package it, share it.

(This idea largely inspired by Pi, which takes it to the logical extreme. Background.)