Skilled Agents
Claude and I recently ran a security audit on the tars code base (more about tars here). We decided to create a sub-agent and give it a YAA (‘You Are A’) persona as a security engineer. Carol is the name we gave the sub-agent. The audit took a few minutes, and produced a structured report with nine findings across five severity levels. And so we made a bunch of fixes. Her persona file carried the entire specification of what to do and how to do it, we just asked her to look. You can see Carol’s persona over on GitHub.
After a chat Claude and I decided that it could be useful to keep the agent as a standing persona we could ask for a review in the future. We discussed whether.the agent should be project local or available everywhere. Claude’s view was Carol’s analysis was generically useful and she should be able to assess any codebase. We settled on agent personas residing in ~/.claude/agents/. and defined, like skills, as plain Markdown.
We could then spin up a known agent using an /agent —name command template. When you run /agent --name=carol "audit tars/api.py", Claude Code reads that file, adopts the identity it describes, and produces output shaped by its constraints. The /agent command is a custom one that lives in ~/.claude/commands/. You can see it here: agent.md
That's the whole mechanism. The agent is a markdown file that defines an identity, a methodology, an output format, and a personality. You invoke it and it acts accordingly. If roles are easier to remember than names for you, with very little effort this could be tuned to be role based: /agent --role=prodsec`. This scales to multiple roles and personalties and goes beyond software roles. For example Claude Cowork users who aren’t programming can add finance or design personas and so on. Many agents will be focused individual experts, like Carol who act as delegates, but maybe where things get really interesting is when skilled agents can have a discussion amongst themselves and work as a team.