Skip to main content

What’s an Agent?

In my (expert, totally informed, nuanced, considered) view:

It’s a program that calls an LLM in a loop to accomplish a goal. It can be told to use external tools. It quits looping when it reaches its goal or when some specified exit condition is met (e.g. “stop after 10 tries”.)

That’s no more than 50 lines of Python, the 80%. The other 20% is what consumes 99% of the time of developers who create agents that do non-trivial things (e.g. how do you stream events?)

If it’s that simple, can you build one?​

Sure. A most instructive post for people who want to do this is by Mario Zechner, the original author of the pi coding agent which powered OpenClaw: “What I learned building an opinionated and minimal coding agent.”

He calls Claude Code a “spaceship with 80% of functionality I have no use for”. Pi is small, modular, pluggable, extensible, inspectable, understandable over a weekend or two. Consider that it does just four things out of the box: read, write, edit, run bash.

What’s a Tool?​

It’s an external program the agent calls. The program does something and produces an output that the agent uses to move closer to the goal you gave it.

What’s a Skill?​

At its simplest, it’s a Markdown file that contains instructions on how to perform a task. You can specify which tools to call or even include them in the skills folder.

skill-name/
├── SKILL.md # Required: metadata + instructions
├── scripts/ # Optional: executable code
├── references/ # Optional: documentation
├── assets/ # Optional: templates, resources
└── ... # Any additional files or directories

In most harnesses you invoke this skill by typing /skill-name. You can pass it parameters too.

Now you don’t just write this Markdown file willy-nilly! Don’t be vague (“Draw the rest of the owl”.) The best way to develop a skill is to go through the task with the agent and pay attention to what worked, what didn’t, where it screwed up or got stuck, what tools it needed, what additional files (“context”) it needed, and so on.

Also pay attention to when additional information may be needed (“See references/mitigation-plan.md if the call to the anonymized database fails”; they call this “progressive disclosure”.) This is good for you and your time and your wallet. And the planet I guess.

Resources​