Intro
I’m trying to learn about agents and coding agents specifically. I’m not totally sold but it’ll be good to be up to speed on these new tools.
This seemed appropriate after learning about Model-Context-Protocol (MCP) and Building a Simple MCP server.
How Coding Assistants Work
They collect context, “formulate” plans, and take action. Utilizing the tools available to them.
This iterative process, loop, is similar to how a developer would go about a task.

- Gather context - Understanding what the error refers to, which part of the codebase is affected, and what files are relevant
- Formulate a plan - Deciding how to solve the issue, such as changing code and running tests to verify the fix
- Take action - Actually implementing the solution by updating files and running commands
Steps 1 & 3 require interaction with outside systems, and executing actions not just reading content.
Since llms can only process text, they need “limbs” to take action. That’s where Tools come into play.
Tools
When prompted, assistatants inject instructions to get tools along with prompt.
Example flow:
- You ask: “What code is written in the main.go file?”
- The coding assistant adds tool instructions to your request
- The language model responds: “ReadFile: main.go”
- The coding assistant reads the actual file and sends its contents back to the model
- The language model provides a final answer based on the file contents

Benefits to Tool use
- Ability to handle tougher tasks: Claude can even use tools it’s not encountered before
- Extendable platform: can add new tools to Claude Code
- Security: Claude Code can navigate codebases without indexing, meaning code’s not sent to external servers often
// The emphasis is "often"...
Claude.md files
These markdown files provide Claude with an understanding of your project and what permissions it’s allowed.
There are three types:
CLAUDE.md: Generated by/initcommand and is committed to source version control to be sharedCLAUDE.local.md: Not shared, contains personal instructions and customization and configs for Claude~/.claude/CLAUDE.md: Used with all projects on your machine, contains instructions that you want Claude to follow on all projects
// These files are fed to Claude along every prompt, so they’re like a persistent codex for it to follow. Not exactly a robust solution…
Editing
Instead of manually, writing and editing you can tell claude to update the files using the # operator followed by the change you want.
File Mentions
To direct Claude to a specific file use @ operator followed by the name of the file
Ex: How does the quiz fetch work? @quizUtils.ts
This syntax can also be used in the Claude.md file
Custom Commands
In the .claude folder in a project, create a commands sub-folder, then you can create .md files that define a command.
The name of the file becomes the name of the command. jump.md will define a /jump command.
Arguments
Commands can even take arguments
.claude/commands/jump.md
Jump to the file: $ARGUMENT
Then do stuff