Customizing agents
This course is about the layer between you and the agent. Instructions, skills, tools and permissions turn a general-purpose coding agent into one that works well in your project.
0%
- getting started
- halfway
- almost there
- complete
tutorialProject instructions: AGENTS.mdtutorialWriting your first skilltutorialConnecting your first tool servertutorialHardening a tool connectiontutorialChoosing a permission mode per tasktutorialAllowing the commands the task needstutorialDelegating to a subagent with narrower permissionstutorialReading what the agent rememberstutorialDirecting the summary before compactiontutorialHanding work to the next sessionexplanationTurning repeated work into something the agent keeps
tutorialLoad it, point at it, or cut itexplanationInstruction, skill or tool?explanationWho invokes a skill, and where it livestutorialTesting a skill from a fresh sessionexplanationConnecting an agent to your systems with MCPtutorialLogging from a stdio servertutorialMeasuring what a tool server costsexplanationWhere a setting comes fromtutorialWriting a hook that blocks a mistakeexplanationNotes that go stale
Lesson plan (26 lessons, 26 live)
| # | Lesson | Status | Mode | Minutes | Covers | Serves | Exercise | After | Issue |
|---|---|---|---|---|---|---|---|---|---|
| Project instructions | |||||||||
| 1 | Project instructions: AGENTS.mdcustomizing-agents/instructions | live | tutorial | 25 estimate | instructions | writes-project-instructions | do | ||
| 2 | Load it, point at it, or cut itcustomizing-agents/load-point-prune | live | tutorial | 25 estimate | instructions | chooses-load-or-pointprunes-instructions | do | Project instructions: AGENTS.md | #686 |
| Agent skills | |||||||||
| 3 | Instruction, skill or tool?customizing-agents/skill-or-tool-or-instruction | live | explanation | 25 estimate | skills | chooses-skill-over-tool | judge | Project instructions: AGENTS.md | #159 |
| 4 | Writing your first skillcustomizing-agents/first-skill | live | tutorial | 25 estimate | skills | packages-a-procedure | do | Instruction, skill or tool? | #162 |
| 5 | Who invokes a skill, and where it livescustomizing-agents/who-invokes-a-skill | live | explanation | 20 estimate | skills | chooses-invocation-and-scope | judge | Writing your first skill | #691 |
| 6 | Testing a skill from a fresh sessioncustomizing-agents/testing-a-skill | live | tutorial | 30 estimate | skills | packages-a-procedure | do | Writing your first skill | #165 |
| 7 | Loading only what the skill needscustomizing-agents/progressive-disclosure | live | tutorial | 25 estimate | skills | discloses-progressively | do | Writing your first skill | #167 |
| 8 | Reading a plugin before you install itcustomizing-agents/plugins | live | explanation | 25 estimate | skills | evaluates-a-plugin | judge | Writing your first skill | #170 |
| 9 | Adopting a published skill setcustomizing-agents/adopting-a-skill-set | live | tutorial | 30 estimate | skills | vets-a-skill-setadopts-skills-gradually | do | Reading a plugin before you install it | #685 |
| Connecting tools with MCP | |||||||||
| 10 | Connecting an agent to your systems with MCPcustomizing-agents/mcp | live | explanation | 35 estimate | mcp | adds-a-toolweighs-tool-costhardens-a-connection | do | ||
| 11 | Connecting your first tool servercustomizing-agents/mcp-first-server | live | tutorial | 30 estimate | mcp | adds-a-tool | do | Connecting an agent to your systems with MCP | #171 |
| 12 | Logging from a stdio servercustomizing-agents/logging-from-a-stdio-server | live | tutorial | 20 estimate | mcp | adds-a-tool | do | Connecting your first tool server | #687 |
| 13 | Measuring what a tool server costscustomizing-agents/mcp-tool-cost | live | tutorial | 25 estimate | mcp | weighs-tool-cost | judge | Connecting your first tool server | #173 |
| 14 | Hardening a tool connectioncustomizing-agents/mcp-hardening | live | tutorial | 25 estimate | mcp | hardens-a-connection | do | Connecting your first tool server | #175 |
| Inspecting the agent | |||||||||
| 15 | Seeing what the agent sendscustomizing-agents/seeing-what-the-agent-sends | live | tutorial | 25 estimate | inspecting-the-agent | inspects-requests | do | Measuring what a tool server costs | #690 |
| Hooks, permissions, settings | |||||||||
| 16 | Choosing a permission mode per taskcustomizing-agents/permission-modes | live | tutorial | 25 estimate | hooks-permissions | sets-permissions | do | Project instructions: AGENTS.md | |
| 17 | Allowing the commands the task needscustomizing-agents/allowlists | live | tutorial | 25 estimate | hooks-permissions | sets-permissions | do | Choosing a permission mode per task | |
| 18 | Where a setting comes fromcustomizing-agents/settings-layering | live | explanation | 25 estimate | hooks-permissions | sets-permissions | judge | Allowing the commands the task needs | |
| 19 | Writing a hook that blocks a mistakecustomizing-agents/first-hook | live | tutorial | 30 estimate | hooks-permissions | adds-a-hook | do | Allowing the commands the task needs | #184 |
| 20 | Keeping the project in chargecustomizing-agents/project-stays-in-charge | live | tutorial | 35 estimate | hooks-permissions | keeps-the-project-in-charge | do | Writing a hook that blocks a mistake, Adopting a published skill set | #689 |
| 21 | Delegating to a subagent with narrower permissionscustomizing-agents/subagents | live | tutorial | 25 estimate | hooks-permissions | sets-permissions | do | Allowing the commands the task needs | #187 |
| Memory and session context | |||||||||
| 22 | Reading what the agent rememberscustomizing-agents/memory-review | live | tutorial | 30 estimate | memory | manages-memory | do | Writing your first skill | #189 |
| 23 | Notes that go stalecustomizing-agents/notes-that-go-stale | live | explanation | 20 estimate | memory | manages-memory | judge | Reading what the agent remembers | #688 |
| 24 | Directing the summary before compactioncustomizing-agents/compaction | live | tutorial | 25 estimate | memory | manages-memory | do | Reading what the agent remembers | #192 |
| 25 | Handing work to the next sessioncustomizing-agents/session-handoff | live | tutorial | 30 estimate | memory | manages-memory | do | Directing the summary before compaction | #195 |
| 26 | Turning repeated work into something the agent keepscustomizing-agents/repeated-work | live | explanation | 30 estimate | memory | manages-memoryadds-a-hook | judge | Handing work to the next session, Writing a hook that blocks a mistake | #197 |