feat: initial companion repo for CC-001 Agent Loop
This commit is contained in:
commit
06828d22f9
5 changed files with 510 additions and 0 deletions
40
CLAUDE.md
Normal file
40
CLAUDE.md
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
# The Agent Loop
|
||||||
|
|
||||||
|
## What this project is
|
||||||
|
|
||||||
|
A companion repo for the From AI to Chitta article on **The Agent Loop**
|
||||||
|
(concept ID: `CC-001`). It contains exercises that let you observe and
|
||||||
|
control Claude Code's core execution cycle.
|
||||||
|
|
||||||
|
Article: https://fromaitochitta.com/the-agent-loop
|
||||||
|
|
||||||
|
## How to use this
|
||||||
|
|
||||||
|
1. Open Claude Code in this directory: `cd claude-code-agent-loop && claude`
|
||||||
|
2. Work through exercises in order: `exercises/01-watch-the-loop.md`, then 02, then 03
|
||||||
|
3. Each exercise has a self-contained prompt you paste into Claude Code
|
||||||
|
4. Compare your output to the expected output described in each exercise
|
||||||
|
|
||||||
|
## Code quality expectations
|
||||||
|
|
||||||
|
- This is a learning repo. Clarity over cleverness.
|
||||||
|
- Every exercise must run without modification on a clean clone
|
||||||
|
- No external dependencies unless explicitly listed in the exercise
|
||||||
|
- If something does not work as expected, that is useful information: note it
|
||||||
|
|
||||||
|
## Project structure
|
||||||
|
|
||||||
|
```
|
||||||
|
exercises/ Numbered exercises with prompts and expected output
|
||||||
|
CLAUDE.md This file: project instructions
|
||||||
|
README.md Overview for anyone who clones this repo
|
||||||
|
```
|
||||||
|
|
||||||
|
## Domain
|
||||||
|
|
||||||
|
Claude Code Foundation
|
||||||
|
|
||||||
|
## Memory
|
||||||
|
|
||||||
|
Keep session notes in a local `MEMORY.md` (gitignored). This file
|
||||||
|
(CLAUDE.md) is for instructions. MEMORY.md is for state.
|
||||||
69
README.md
Normal file
69
README.md
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
# The Agent Loop
|
||||||
|
|
||||||
|
Claude Code reads, thinks, acts, and repeats until your task is done.
|
||||||
|
This is the core pattern that makes it different from every other AI
|
||||||
|
coding tool.
|
||||||
|
|
||||||
|
Companion repo for the article
|
||||||
|
[The Agent Loop](https://fromaitochitta.com/the-agent-loop) on From AI to Chitta.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## What You Will Learn
|
||||||
|
|
||||||
|
By working through the exercises in this repo, you will be able to:
|
||||||
|
|
||||||
|
- Recognize the agent loop in action and understand what Claude is doing at each step
|
||||||
|
- Control the loop with Plan Mode, /rewind, and manual intervention
|
||||||
|
- Design prompts that give the loop clear goals and produce reliable results
|
||||||
|
|
||||||
|
These are not theoretical outcomes. Complete the exercises and you will
|
||||||
|
see the loop working on your own tasks.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
- Claude Code installed (`claude --version` prints a version)
|
||||||
|
- A Claude Pro, Team, or Enterprise subscription
|
||||||
|
- Basic comfort with the terminal (cd, ls, opening files)
|
||||||
|
|
||||||
|
No npm install, no Docker, no build step.
|
||||||
|
|
||||||
|
## Exercises
|
||||||
|
|
||||||
|
| # | Exercise | What It Covers |
|
||||||
|
|---|----------|---------------|
|
||||||
|
| 01 | [Watch the Loop](exercises/01-watch-the-loop.md) | See the read-think-act cycle on a real task |
|
||||||
|
| 02 | [Control the Loop](exercises/02-control-the-loop.md) | Plan Mode, /rewind, stopping a runaway agent |
|
||||||
|
| 03 | [Design for the Loop](exercises/03-design-for-the-loop.md) | Write prompts that guide the loop effectively |
|
||||||
|
|
||||||
|
Start at `exercises/01-watch-the-loop.md`. Each exercise links to the next.
|
||||||
|
|
||||||
|
## How to Use This Repo
|
||||||
|
|
||||||
|
**"Show me what it does":** Browse `exercises/` and read through
|
||||||
|
the prompts. Understand the pattern before you run anything.
|
||||||
|
|
||||||
|
**"Let me actually do it":** Open Claude Code in this directory
|
||||||
|
and follow the exercises in order. Each one has an expected output
|
||||||
|
section so you know when you have succeeded.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://git.fromaitochitta.com/fromaitochitta/claude-code-agent-loop.git
|
||||||
|
cd claude-code-agent-loop
|
||||||
|
claude
|
||||||
|
```
|
||||||
|
|
||||||
|
Then open `exercises/01-watch-the-loop.md` and paste the prompt into Claude Code.
|
||||||
|
|
||||||
|
## Domain
|
||||||
|
|
||||||
|
**Claude Code** - This repo is part of the Claude Code Foundation series on
|
||||||
|
From AI to Chitta. See the full series for related concepts.
|
||||||
|
|
||||||
|
## About
|
||||||
|
|
||||||
|
Built by [Kjell Tore Guttormsen](https://fromaitochitta.com) as
|
||||||
|
part of the From AI to Chitta project, exploring the intersection
|
||||||
|
of AI tools and inner development.
|
||||||
|
|
||||||
|
MIT License.
|
||||||
107
exercises/01-watch-the-loop.md
Normal file
107
exercises/01-watch-the-loop.md
Normal file
|
|
@ -0,0 +1,107 @@
|
||||||
|
# Exercise 01: Watch the Loop
|
||||||
|
|
||||||
|
**Concept:** The Agent Loop (CC-001)
|
||||||
|
**Level:** Basic
|
||||||
|
**Time:** ~10 minutes
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Objective
|
||||||
|
|
||||||
|
Watch Claude Code execute a multi-step task from start to finish.
|
||||||
|
You will see the agent loop in action: Claude reads, thinks, picks
|
||||||
|
a tool, observes the result, and repeats until done.
|
||||||
|
|
||||||
|
This is your first hands-on contact with the agent loop. No prior
|
||||||
|
experience with Claude Code required beyond having it installed.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Before You Start
|
||||||
|
|
||||||
|
Confirm you have:
|
||||||
|
|
||||||
|
- [ ] Claude Code installed (`claude --version` prints a version)
|
||||||
|
- [ ] This repo cloned and open in your terminal
|
||||||
|
- [ ] Started Claude Code in this directory (`claude`)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
|
||||||
|
**Step 1:** Open Claude Code in this repo directory.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd claude-code-agent-loop
|
||||||
|
claude
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 2:** Paste this prompt into Claude Code:
|
||||||
|
|
||||||
|
```
|
||||||
|
Create a file called loop-demo.md that contains:
|
||||||
|
|
||||||
|
1. Today's date and time
|
||||||
|
2. A list of all files in this directory with their sizes
|
||||||
|
3. The first 5 lines of README.md
|
||||||
|
4. A summary sentence describing what this repo is about
|
||||||
|
|
||||||
|
Do not ask me any questions. Just do it.
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 3:** Watch the terminal output carefully as Claude works.
|
||||||
|
|
||||||
|
You will see Claude make a series of tool calls. Pay attention to:
|
||||||
|
- Which tools Claude picks (Bash, Read, Write, Glob)
|
||||||
|
- The order it chooses to do things
|
||||||
|
- How it uses the output of one step to inform the next
|
||||||
|
- That you did not tell it which tools to use or what order
|
||||||
|
|
||||||
|
**Step 4:** Read the generated `loop-demo.md` file.
|
||||||
|
|
||||||
|
Check that it contains all four items from the prompt. Claude gathered
|
||||||
|
information from multiple sources (system clock, file system, file
|
||||||
|
contents) and synthesized them into one output file.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Expected Output
|
||||||
|
|
||||||
|
After 15-30 seconds, you should see:
|
||||||
|
|
||||||
|
- A new file `loop-demo.md` in the repo root
|
||||||
|
- It contains today's date (from a Bash call to `date`)
|
||||||
|
- It lists files with sizes (from `ls -la` or similar)
|
||||||
|
- It includes the first 5 lines of README.md (from Read tool)
|
||||||
|
- It ends with a summary sentence about the repo
|
||||||
|
|
||||||
|
The exact content varies, but the structure should match.
|
||||||
|
|
||||||
|
**How you know the agent loop worked:**
|
||||||
|
- Claude made 3-5 tool calls without asking you anything between them
|
||||||
|
- Each tool call built on information from the previous one
|
||||||
|
- The final file synthesizes data from multiple sources
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## What You Learned
|
||||||
|
|
||||||
|
- **The loop is autonomous:** Claude decided the order and tools on its own
|
||||||
|
- **Each step informs the next:** The loop observes results before choosing the next action
|
||||||
|
- **The task, not the steps, is what you specify:** You said what you wanted, not how to get it
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Clean Up
|
||||||
|
|
||||||
|
Delete the generated file so the repo stays clean:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rm loop-demo.md
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Next
|
||||||
|
|
||||||
|
Ready to go further? Move to [Exercise 02: Control the Loop](./02-control-the-loop.md).
|
||||||
148
exercises/02-control-the-loop.md
Normal file
148
exercises/02-control-the-loop.md
Normal file
|
|
@ -0,0 +1,148 @@
|
||||||
|
# Exercise 02: Control the Loop
|
||||||
|
|
||||||
|
**Concept:** The Agent Loop (CC-001)
|
||||||
|
**Level:** Intermediate
|
||||||
|
**Time:** ~15 minutes
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Objective
|
||||||
|
|
||||||
|
Learn to steer the agent loop instead of just watching it. You will
|
||||||
|
use Plan Mode to preview what Claude intends to do before it acts,
|
||||||
|
and use /rewind to undo a wrong turn.
|
||||||
|
|
||||||
|
Exercise 01 showed the loop running freely. This exercise shows you
|
||||||
|
the controls.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Before You Start
|
||||||
|
|
||||||
|
Confirm you have:
|
||||||
|
|
||||||
|
- [ ] Completed Exercise 01 (or understand the basic loop concept)
|
||||||
|
- [ ] Claude Code open in this directory
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Part A: Plan Mode
|
||||||
|
|
||||||
|
**Step 1:** Press `Shift+Tab` until the mode indicator shows **plan**.
|
||||||
|
|
||||||
|
You should see the permission mode change in the bottom bar. In Plan
|
||||||
|
Mode, Claude will describe what it plans to do instead of doing it.
|
||||||
|
|
||||||
|
**Step 2:** Paste this prompt:
|
||||||
|
|
||||||
|
```
|
||||||
|
Create a project structure for a simple blog:
|
||||||
|
- A folder called blog/ with index.html, style.css, and posts/
|
||||||
|
- An about.html page
|
||||||
|
- A README.md explaining the structure
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 3:** Read Claude's plan.
|
||||||
|
|
||||||
|
Claude will describe the files it would create, the structure, and
|
||||||
|
the content. It will NOT create anything yet. This is the plan.
|
||||||
|
|
||||||
|
**Step 4:** If the plan looks good, type:
|
||||||
|
|
||||||
|
```
|
||||||
|
Go ahead, execute this plan.
|
||||||
|
```
|
||||||
|
|
||||||
|
Or press `Shift+Tab` back to a normal mode and re-send the prompt.
|
||||||
|
|
||||||
|
Claude now executes, creating the actual files.
|
||||||
|
|
||||||
|
**Why this matters:** For complex tasks where a wrong start wastes
|
||||||
|
time, Plan Mode lets you course-correct before any files are written.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Part B: Using /rewind
|
||||||
|
|
||||||
|
**Step 1:** Give Claude an intentionally vague prompt:
|
||||||
|
|
||||||
|
```
|
||||||
|
Improve the blog project.
|
||||||
|
```
|
||||||
|
|
||||||
|
Claude will likely make some changes you did not expect or want.
|
||||||
|
That is the point of this exercise.
|
||||||
|
|
||||||
|
**Step 2:** After Claude finishes, review what it changed. If the
|
||||||
|
changes are not what you wanted, type:
|
||||||
|
|
||||||
|
```
|
||||||
|
/rewind
|
||||||
|
```
|
||||||
|
|
||||||
|
This restores your context to the state before Claude's last action.
|
||||||
|
The files are unchanged (Claude did write them), but the conversation
|
||||||
|
context is rewound so you can try a different approach.
|
||||||
|
|
||||||
|
**Step 3:** Now give a more specific prompt:
|
||||||
|
|
||||||
|
```
|
||||||
|
Add a navigation bar to index.html that links to about.html.
|
||||||
|
Do not change anything else.
|
||||||
|
```
|
||||||
|
|
||||||
|
Notice how specificity gives the loop better direction.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Part C: Stopping a Runaway Loop
|
||||||
|
|
||||||
|
**Step 1:** Give Claude a deliberately open-ended task:
|
||||||
|
|
||||||
|
```
|
||||||
|
Make this blog production-ready.
|
||||||
|
```
|
||||||
|
|
||||||
|
**Step 2:** As Claude starts working (adding frameworks, build tools,
|
||||||
|
etc.), press `Escape` to interrupt.
|
||||||
|
|
||||||
|
Claude stops mid-execution. You can then redirect:
|
||||||
|
|
||||||
|
```
|
||||||
|
Stop. I just want the HTML and CSS to be clean and valid.
|
||||||
|
No frameworks, no build tools.
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Expected Output
|
||||||
|
|
||||||
|
After completing all three parts:
|
||||||
|
|
||||||
|
- A `blog/` directory with `index.html`, `style.css`, `posts/`, `about.html`, `README.md`
|
||||||
|
- You experienced Plan Mode (preview before execution)
|
||||||
|
- You used /rewind to undo a vague prompt
|
||||||
|
- You interrupted a runaway loop with Escape
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## What You Learned
|
||||||
|
|
||||||
|
- **Plan Mode previews:** Shift+Tab toggles Plan Mode, where Claude describes its plan before acting
|
||||||
|
- **/rewind undoes context:** It rolls back the conversation so you can try a different approach
|
||||||
|
- **Escape interrupts:** Press Escape to stop Claude mid-loop when it is going in the wrong direction
|
||||||
|
- **Specificity guides the loop:** Vague prompts produce unpredictable results. Specific prompts keep the loop on track.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Clean Up
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rm -rf blog/ about.html
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Next
|
||||||
|
|
||||||
|
Ready to design prompts that work with the loop? Move to [Exercise 03: Design for the Loop](./03-design-for-the-loop.md).
|
||||||
146
exercises/03-design-for-the-loop.md
Normal file
146
exercises/03-design-for-the-loop.md
Normal file
|
|
@ -0,0 +1,146 @@
|
||||||
|
# Exercise 03: Design for the Loop
|
||||||
|
|
||||||
|
**Concept:** The Agent Loop (CC-001)
|
||||||
|
**Level:** Advanced
|
||||||
|
**Time:** ~20 minutes
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Objective
|
||||||
|
|
||||||
|
Design a multi-step task that takes advantage of the agent loop's
|
||||||
|
strengths. You will write a prompt that requires Claude to gather
|
||||||
|
information from multiple sources, make decisions based on what it
|
||||||
|
finds, and produce a structured output.
|
||||||
|
|
||||||
|
This exercise has no step-by-step walkthrough. You get a scenario,
|
||||||
|
constraints, and success criteria. How you get there is up to you.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Before You Start
|
||||||
|
|
||||||
|
Confirm you have:
|
||||||
|
|
||||||
|
- [ ] Completed Exercises 01 and 02
|
||||||
|
- [ ] Claude Code open in this directory
|
||||||
|
- [ ] Internet access (Claude will use WebSearch)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## The Scenario
|
||||||
|
|
||||||
|
You want to evaluate whether a specific open-source tool is worth
|
||||||
|
adopting for your workflow. Instead of spending an hour researching
|
||||||
|
manually, you will write one prompt that makes Claude do the research
|
||||||
|
for you.
|
||||||
|
|
||||||
|
## Your Task
|
||||||
|
|
||||||
|
Write a prompt that makes Claude:
|
||||||
|
|
||||||
|
1. **Search** for information about a tool you are curious about
|
||||||
|
(pick any real tool: a CLI tool, a library, a framework)
|
||||||
|
2. **Read** the tool's documentation or README
|
||||||
|
3. **Compare** it against an alternative you already know
|
||||||
|
4. **Write** a structured evaluation to a file called `evaluation.md`
|
||||||
|
|
||||||
|
The evaluation file must include:
|
||||||
|
- Tool name and what it does (one sentence)
|
||||||
|
- Three strengths
|
||||||
|
- Three weaknesses or limitations
|
||||||
|
- A direct comparison with the alternative
|
||||||
|
- A verdict: adopt, wait, or skip
|
||||||
|
|
||||||
|
## Constraints
|
||||||
|
|
||||||
|
- Your prompt must be a single message (no back-and-forth)
|
||||||
|
- Do not tell Claude which tools to use (let the loop decide)
|
||||||
|
- The output must be a single file, not multiple files
|
||||||
|
- Use Plan Mode first to preview, then execute
|
||||||
|
|
||||||
|
## Success Criteria
|
||||||
|
|
||||||
|
- [ ] Claude made at least 5 tool calls to complete the task
|
||||||
|
- [ ] The evaluation file exists and contains all required sections
|
||||||
|
- [ ] The strengths and weaknesses are specific (not generic praise)
|
||||||
|
- [ ] The comparison is direct, not just two separate descriptions
|
||||||
|
- [ ] The verdict gives a clear recommendation with reasoning
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Hints (only if stuck)
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Hint 1: Prompt structure</summary>
|
||||||
|
|
||||||
|
A good prompt for the agent loop includes:
|
||||||
|
- What to research (specific tool name)
|
||||||
|
- What to compare against (specific alternative)
|
||||||
|
- What output to produce (file name and structure)
|
||||||
|
- What NOT to do (no installation, no code generation)
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Hint 2: Example prompt skeleton</summary>
|
||||||
|
|
||||||
|
```
|
||||||
|
Research [tool X] and compare it to [tool Y] for [use case].
|
||||||
|
|
||||||
|
Search the web for recent reviews and the official docs.
|
||||||
|
Write an evaluation to evaluation.md with:
|
||||||
|
- One-sentence description of each tool
|
||||||
|
- 3 specific strengths of [tool X]
|
||||||
|
- 3 specific weaknesses of [tool X]
|
||||||
|
- Direct comparison table: [tool X] vs [tool Y]
|
||||||
|
- Verdict: adopt, wait, or skip, with reasoning
|
||||||
|
|
||||||
|
Do not install anything. Do not write code. Research only.
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Reflection
|
||||||
|
|
||||||
|
After completing this exercise, consider:
|
||||||
|
|
||||||
|
- How many tool calls did Claude make? (Check the terminal output)
|
||||||
|
- Did the loop take any detours? Were they useful or wasteful?
|
||||||
|
- What would you change in your prompt to get a better result?
|
||||||
|
- How long would this research have taken you manually?
|
||||||
|
|
||||||
|
The agent loop is most powerful when the task requires gathering
|
||||||
|
and synthesizing information from multiple sources. A single prompt
|
||||||
|
replaces what used to be 30 minutes of tab-switching and note-taking.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## What You Learned
|
||||||
|
|
||||||
|
- **Single-prompt, multi-step tasks** are where the agent loop shines
|
||||||
|
- **Output structure in the prompt** gives the loop a clear target
|
||||||
|
- **Plan Mode first** lets you verify the approach before committing
|
||||||
|
- **The loop handles the how:** You specify the what and the where
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Clean Up
|
||||||
|
|
||||||
|
```bash
|
||||||
|
rm evaluation.md
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## What Comes Next
|
||||||
|
|
||||||
|
You now understand the agent loop: what it is (Exercise 01), how to
|
||||||
|
control it (Exercise 02), and how to design tasks for it (Exercise 03).
|
||||||
|
|
||||||
|
Next concepts to explore:
|
||||||
|
- **CC-002 Built-in Tools** - The specific tools the loop uses
|
||||||
|
- **CC-010 CLAUDE.md** - How to give the loop standing instructions
|
||||||
|
- **CC-006 Permissions** - How to control what the loop is allowed to do
|
||||||
Loading…
Add table
Add a link
Reference in a new issue