From directing agents to authoring the direction CORE
Everything you did in Modules 3 through 6 had the same shape: you held the steering wheel. You wrote the prompt. You chose the scope. You approved the draft. When the agent acted, it acted on your instructions, given that session, by you, with your attention on the result. Even when you put work on a schedule in Module 6, you still wrote the plan once and then let the scheduler replay it. You were directing.
Module 7 asks you to do something different. Instead of typing a new instruction every time a particular job shows up, you name the instruction. You give it a description, a scope, and a home on disk. You write it down in a way the agent can find later, on its own, when the right kind of request comes through. You are no longer telling the agent how to do this job each time; you are teaching it how to recognize the job and reach for the right instructions without you prompting it.
That named, reusable piece of instruction is an extension. A skill is one kind of extension. A plugin is a bundle of them. A memory is a lightweight one. An MCP connector is a different shape of one. There are others. The common thread is that every extension is a durable, reusable piece of capability that sits between you and the model — something you installed or authored once and that the agent consults many times.
A useful way to see the shift: in Module 3 you were the agent’s instructor — you told it what to do one interaction at a time. In Module 7 you become the agent’s librarian — you curate the reference shelf it will consult on its own. Two concrete examples of what that means in practice:
- Each time you do a research sweep, you type the same six-line prompt describing how you want sources triangulated, how fabricated citations should be surfaced, and what the output shape is. Eventually you write that prompt into a file called research-sweep/SKILL.md with a clear description, and now any time you say anything research-sweep-shaped — “check this topic” or “triangulate sources on X” — the agent reaches for the skill without you retyping the prompt. You stopped re-instructing; you started referencing.
- You find a community-authored plugin that adds a tidy daily-journal capability. It has a sensible description. It writes to a folder you control. It handles credentials cleanly. You install it. You did not write any of it, and you do not need to — but you did choose it, and you are responsible for it as long as it lives on your machine.
Both of those — authored and installed — are extensions. Both enter the register. Module 7 is the module where you learn to do both well. There is a temptation, right up front, to treat this as purely a productivity shortcut — “skills save me retyping my prompts.” That is not wrong, but it undersells the move. The deeper thing happening here is that you are making your working style legible to the agent. A skill is not just a saved prompt; it is a declaration of how you want a particular kind of work done, phrased in a way the agent can pick up on its own. Over a year, the stack of skills and plugins on your machine is a map of how you work. It is also a liability if you let it grow without care. Lessons 7.3 and 7.4 teach the authoring. Lesson 7.5 teaches the care.
The taxonomy: six places an instruction can live CORE
The word “extension” can mean a lot of things, so the module fixes a taxonomy early. Six common places an instruction can live, from most ephemeral to most shareable:
1. One-off prompt (in-session). You type the instruction in chat, the agent runs it, the session ends, the instruction is gone. Everything you did in Modules 3–6 at the per-session level lived here. Half of what you do after this module will still live here. This is where most of your instruction-giving happens and should stay.
2. Saved prompt / prompt snippet. You paste the same prompt from a note or a snippet manager at the start of each session. It persists across sessions, but only because you moved it by hand. The agent does not know it exists until you paste it in. This is the manual version of what a skill automates.
3. Memory. A short fact the agent carries across sessions — “I prefer concise responses,” “my research is for a college-prep class,” “skip the preamble on weekly reports.” Memories are conversational tuning, not capability. They shape how the agent talks to you. They do not add a new job the agent can do on its own.
4. Skill. A named, described, durable piece of capability stored as a file or folder the agent can consult. A skill has a trigger (a description the agent reads to decide whether this skill applies to the current request) and a body (the instructions, example inputs and outputs, and any supporting scripts). The agent reaches for a skill when its description matches the work the user is asking for, whether or not the user named the skill explicitly. A well-authored skill fires on phrases like “do a research sweep on X” or “run this through the weekly-report shape” — even when the user did not say the exact words “use the research-sweep skill.” This is the headline Module 7 object.
5. Plugin. A bundle of skills, plus optional tool wiring and optional commands, packaged as a single installable unit. A plugin is the shareable, removable wrapper around one or more skills. Installing a plugin is a single action that lands a coherent set of capabilities on a machine; uninstalling it removes them cleanly as a group. Plugins are the right shape when a set of capabilities goes together and you want them to live and die as a unit. Module 7 has you author one.
6. MCP connector. A tool that gives agents new verbs — a way to talk to Slack, Google Calendar, a database, a filesystem, an API — so a skill or a chat session can act outside the model’s own world. An MCP connector is not itself instruction; it is capability. Skills and plugins can use MCP connectors. In this module, you will install and wire at least one existing MCP connector into your plugin. You will not author one; that is a deeper topic.
Three observations about this taxonomy that matter for the rest of the module:
- Memories are not skills. Students often blur these because both “persist across sessions.” A memory tells the agent how you like to be talked to; a skill tells it how to do a specific kind of work. A memory is a sentence or two. A skill is a bounded piece of instruction with a trigger and a body. If you find yourself trying to do real capability work through memories, that is the signal to promote it to a skill. Lesson 7.3 names the boundary sharply.
- Plugins are bundles, not replacements. A plugin is not “a better skill.” It is a group of skills, sometimes with tools and commands around them. A single well-authored skill is often all a student needs; a plugin is for the case where multiple related skills and tools travel together and deserve a shared install/uninstall story.
- MCP connectors sit underneath both. Skills and plugins can call MCPs. The MCP is not “another level of skill” — it is the layer below, where the new verbs come from. The taxonomy is not strictly linear, but thinking of MCP connectors as underneath skills and plugins keeps the mental model clean.
When a skill earns its keep: the threshold test CORE
Not every prompt you type often should become a skill. This matters, because the most common Module 7 failure mode is premature extension-building — a student turns every half-memorable prompt into a skill in week one and then cannot tell which skill is still useful in week eight.
Use a three-part test. A prompt earns promotion to a skill when all three answers are yes:
1. Same shape. Are you doing the same kind of work — not just with the same tool, but with the same inputs, the same intermediate steps, and the same output shape? A skill fires on a shape, not a topic. “Research sweep on a topic I name” is a shape; “research sweep on nineteenth-century American history” is a topic (and probably belongs in memory or in a saved prompt, not a skill). If every instance you care about has the same inputs and produces the same kind of artifact, you have a shape.
2. Reliable enough. Can you describe the work clearly enough, in writing, that a stranger could run it without asking you questions? A skill has to work when you are not in the chat to clarify. If you find yourself saying “well, it depends on the situation” more than once or twice while writing the skill down, the shape is not yet stable enough to name. Let it mature as a saved prompt for a few more weeks.
3. Often and heavy enough. Is the work happening often enough — weekly, say, or several times a week — and is it heavy enough that the overhead of re-prompting feels like friction? A prompt you run once a month is not worth a skill. A prompt you run three times a week that takes one sentence to re-specify is also not worth a skill — the friction is zero. A prompt you run twice a week that takes six lines of set-up is a skill candidate. The threshold is the crossing of both frequency and per-run weight.
Concrete examples, applied:
- “Draft an inbox triage pass.” Same shape, reliable, heavy (the full triage prompt is long), happens daily. Skill.
- “Run a research sweep on a topic I name.” Same shape, reliable, heavy (triangulation + citation checks are five to six lines of specification), happens several times a week if the student does project work. Skill.
- “Summarize this one article.” Same shape, reliable, one-sentence prompt, happens often but is light. Not a skill. Keep as an in-session prompt.
- “Write me an essay about the French Revolution.” Different topic every time, the real work is the student’s thinking — not a shape the agent does on its own. Not a skill. This is writing, not a named job.
- “Format my capstone register entry.” Same shape, reliable, light (one or two lines). Not a skill — too light to be worth a name. Keep it as a saved prompt.
The test fails open. When in doubt, do not build a skill. Live with the prompt in chat or as a saved snippet for a few more weeks. If you reach for it the same way several times, the shape is stable enough. If you stopped reaching for it, the prompt was not load-bearing and the saved snippet quietly fades. A student who applies this test honestly ends Module 7 with fewer skills than they started the module expecting — a small number of named jobs, not a sprawl. That is the intended outcome. The register will end up larger than the authored column because the register also holds off-the-shelf entries; but the authored column stays small on purpose.
The pile-up failure mode CORE
Imagine a student who ignores the threshold test. Early on, they author several skills based on whatever prompts they happened to use that week. They install a handful of community plugins because the descriptions sounded interesting. A newer version of a plugin lands and silently adds skills under the hood. They author more skills because some do almost the same job as one of the plugins but not quite.
A few months in, there are many extensions on the machine. The student can name only some of them. Several have overlapping descriptions, so when they ask the agent for help, the agent sometimes picks the wrong one — and the student cannot tell whether it picked the wrong one or whether it picked the right one and ran it wrong. One plugin has updated itself and now reaches for an email connector the student does not remember granting it. A memory the student wrote months ago is quietly overriding a skill they wrote last week.
The student is now slower than they were before Module 7. Every request has more surface area than it needs to. The wrong skill fires and they lose time debugging. The right skill does not fire because a vaguer one matched first. They cannot tell what any of it is doing, because they never wrote down what any of it was for.
This is the pile-up failure mode. It is not unique to AI extensions — it is the same arc that eats Chrome extensions, VS Code plugins, browser bookmarks, and installed apps more broadly. In the AI setting it is quieter because the failure is invisible: the agent reaches for the wrong skill, produces a plausible-looking result, and nobody sees the problem unless someone reads carefully. By the time the student notices their workflow has degraded, they have lost the trail.
The rail that prevents the pile-up is an extension register, maintained over time. Every authored or installed extension lands in the register with:
- Name (what you call it in prose).
- Type (skill / plugin / memory / MCP).
- What it does (one sentence, in the same voice as a job description: “runs a research sweep on a named topic and produces a sources.md.”)
- Where it lives (folder path, URL, or install location).
- Invocation (how it fires — a phrase, a command, a chat cue).
- Audience (must be only me for anything the student authored; anything else is rejected).
- Budget / model (rough dollars per invocation and the model it calls).
- Next review date (≤ 90 days out).
- Keep or retire (the condition under which this extension earns its keep vs. the condition under which you will remove it).
A register row that is not renewed by its review date is paused, not left running. The register is the Module 7 parallel to Module 6’s automation register, and the failure mode it prevents is the same shape: silent, slow, invisible-until-expensive. You will set up an empty register this lesson. You will fill it across the rest of the module. You will freeze it at the end of Lesson 7.5.
The pile-up test
Once a month, look at the register and ask three questions, row by row:
- Can you describe what this extension does, in a sentence, without looking at the row?
- If you have not invoked it in the last 30 days, is there a specific upcoming event that would invoke it, or is the row stale?
- If you installed this from a third party, has it updated since you last read its changelog?
A row that fails any of the three goes on the next renewal list for the hygiene ritual in Lesson 7.5. You don’t act on failures here — you just surface them. The ritual is where the decisions get made.
Audience = only you, carried forward CORE
Module 6 installed the rule audience = only you for scheduled tasks: an agent runs on a schedule and delivers to the student, not to any other human. In Module 7, the same rule extends to any extension the student authors.
A custom skill may read anything on the student’s machine. It may draft anything. It may produce artifacts in any folder the student names. It may not auto-send, auto-post, auto-RSVP, or otherwise put text in front of any second person without a human-click approval. The same uniform rule, the same reasoning: carve-outs metastasize, and the student who writes the first auto-send skill in week four is the student who writes the second in week six and the third in week nine.
One place students ask for an exception is “but the plugin I am considering installing sends email on my behalf — am I not allowed to install it?” The answer is nuanced and matters for how you will fill the register starting in Lesson 7.2. Off-the-shelf extensions that offer send-capabilities are in scope for your register — you will see them, and you need a posture for them — but Module 7 asks you to evaluate them on minimum permissions. If the plugin has a drafts-only mode, you install it in that mode. If it does not, you either (a) install with the send permission disabled where possible, (b) decline the install and document why, or (c) document the install as a conscious, reviewed decision and add a near-term review date. There is no single right answer; there is a standard of care. Lesson 7.2’s minimum-viable-audit worksheet walks you through it.
Extensions you author are a different story. The authoring target this module sets is clean: a skill or a plugin you built delivers to you and to no one else. That is the only way you can be certain, in month nine, what your own extensions do. Any extension that fails this test is out of scope for Module 7’s custom work. If you want to build an autonomous outbound capability later, that is a post-course decision, made with your own eyes open, and not a Module 7 deliverable.
Where skills and plugins live on each path RECIPE
| Tool | Claude Code CLI (skill authoring path); Claude desktop app — Cowork tab (plugin authoring path); MCP connectors (both) |
| Last verified | 2026-04-18 |
| Next review | 2026-07-18 |
| Supported OSes | Skill authoring (CLI): macOS, Linux, Windows. Plugin authoring (Cowork tab): macOS, Windows. |
This is the only recipe block in Lesson 7.1. The details move as the tools move; the Recipe Book carries the canonical versions.
Claude Code skill path. A skill is a directory under one of three locations:
- ~/.claude/skills/<skill-name>/ — user-scoped; available to every project the user opens in Claude Code.
- <project-root>/.claude/skills/<skill-name>/ — project-scoped; available only when Claude Code is running against this project.
- <plugin-root>/skills/<skill-name>/ — bundled inside a plugin.
Inside the folder, the minimum file set is SKILL.md with frontmatter (name, description, and optional model/tool allowlist) plus a body. Any additional files — supporting scripts, templates, example inputs and outputs — live alongside. Claude Code discovers skills on startup and reads the frontmatter to build an internal registry. When a request arrives, it scans the registry to pick the best-matching skill. The description field is what the scanner reads — this is why description-tuning (Lesson 7.3) is the headline craft of the module.
Cowork plugin path. A Cowork plugin is a single installable unit with a manifest at its root and a conventional folder structure for the skills, MCPs, and commands it bundles. Plugins are installed from a marketplace or from a local path. Once installed, the plugin’s skills behave like any other skill — the agent reads their descriptions and dispatches to them when requests match. A plugin can be uninstalled in one move, which takes all of its skills with it. This is the key structural difference between authoring skills loose in .claude/skills/ and authoring them inside a plugin: the plugin is a removable group.
MCP connectors. These are not folders under .claude/skills/; they are separate server processes (or, more commonly for students, managed integrations you enable in a settings UI) that the agent can talk to. Plugins sometimes bundle an MCP connector’s configuration so installing the plugin wires the MCP. Skills use MCPs by calling the verbs the MCP exposes.
Safe default
Do not author any skills yet. You will not author a skill until Lesson 7.3 or package a plugin until Lesson 7.4. This lesson’s activity builds the register and the posture — the shape the authoring will live inside. Design comes before execution, in extensions as in everything else.
Try it — Stand up your extension register and your posture CORE
three deliverables · open the row-template worksheet →
Part 1 — Create the register draft.
- Open the extension-register-row-template.md worksheet in /resources/module-07/ and copy its header row into a new file at /capstone/extension-register-v1-draft.md.
- The file has one header row and no data rows yet. Do not fill in data rows in this lesson. You will fill in four off-the-shelf rows in Lesson 7.2, your custom skill row in Lesson 7.3, your custom plugin row in Lesson 7.4, and any remaining rows (for MCPs you have wired or memories you have set) in Lesson 7.5.
Part 2 — Add your Extension Posture.
Open your running my-first-loop.md capstone file (from earlier modules) and add a new section titled Extension Posture. Write three short paragraphs under it:
- When I will install vs. build. Name your rule for preferring off-the-shelf extensions when they exist and meet the audit, vs. building your own. Be specific: “I will install if an off-the-shelf extension meets the five audit questions and the documentation is current within 90 days; I will build only when no such option exists or when my version would be materially more specific.”
- My maximum active extensions. A soft ceiling for how many extensions you are willing to keep on the machine at once. Pick a number you can defend — a number you would be uncomfortable exceeding without a deliberate review. The ceiling is a commitment to yourself, not a rule an extension will enforce.
- My audience rule. Restate the Module 6 rule in your own words, with its extension into Module 7: “Every extension I author delivers to me only; off-the-shelf extensions I install are run in drafts-only mode wherever possible.”
Part 3 — Five-candidate sort.
List five prompts or workflows from your life — research, inbox, calendar, schoolwork, creative — that you have reached for repeatedly in the last four weeks. For each, apply the three-part threshold test and sort each into one of four piles:
- Skill candidate now.
- Skill candidate if the shape stabilizes.
- Keep as a saved prompt.
- Stay in-session — not a skill.
Write the sort into a short markdown block at the bottom of your draft register (not a data row — just a working-notes block). This is the pool you will draw from in Lesson 7.3 when you pick your custom skill.
If all five land in “stay in-session”
That is a legitimate outcome. The threshold test is deliberately strict. You will still build a custom skill in Lesson 7.3 — the work for that lesson is not to find a skill you would have built naturally, but to build one well. Think of the sort as calibration for your own sense of when a skill is earning its keep. If you end up with zero “skill candidate now” entries after this sort, pick the candidate closest to “skill candidate if the shape stabilizes” for your Lesson 7.3 work.
Deliverables. Three artifacts: /capstone/extension-register-v1-draft.md with the header row and a working-notes block at the bottom; my-first-loop.md with a new Extension Posture section; and the five-candidate sort written into the working-notes block.
Done with the hands-on?
When the recipe steps and any activity above are complete, mark this stage to unlock the assessment, reflection, and project checkpoint.
Quick check
Four questions. Tap a question to reveal the answer and the reasoning.
Show explanation
Answer: B. A describes a saved prompt — the manual version of what a skill automates. C is a memory (the tuning layer). D is an MCP connector (the verb layer). The distinguishing feature of a skill is the agent reaching for it on its own, cued by the description. That is why description-as-classifier is the headline craft insight of the module.
Show explanation
Answer: B. The threshold test requires frequency and per-run weight. A monthly, ten-second prompt is under the threshold on both counts. C conflates Module 6 and Module 7 — putting something on a schedule is separate from naming it as a skill. A is the exact trap that leads to the pile-up failure mode. When in doubt, do not build a skill.
Show explanation
Answer: B. Both persist across sessions. Both can include scripts. The defining property of a plugin is that it is a group — a shareable, installable, removable bundle that travels as one unit. A single well-authored skill is often all a student needs; a plugin is for the case where related skills belong together and should live and die as a unit.
Show explanation
Answer: C. A and B are both too fast — the collision is a symptom, not a root cause, and reflex deletions lose work you may want later. D is the pile-up pattern itself. The register exists precisely to surface collisions like this so you can decide which extension earns its keep and refine the descriptions. The hygiene ritual in Lesson 7.5 is designed for this move.
Reflection prompt
From directing to authoring: what shifts when you name a piece of instruction?
In 4–6 sentences, in your journal or my-first-loop.md: Before this lesson, if someone had asked you “how would you make the agent better at the specific work you actually do?”, what would you have answered? Compare that answer to what you now think. Where did you under-estimate the leverage of naming a piece of instruction? Where did you over-estimate it? Which pile in your five-candidate sort surprised you the most?
No length minimum past four sentences; no length maximum. The purpose is to notice the shift from directing to authoring that this module is asking you to make — and to notice where that shift already had a hold on you and where it did not.
Project checkpoint
Add an “Extension Posture” section to my-first-loop.md and stand up the empty register.
Open your my-first-loop.md capstone file. You already have sections for Goal, Model, Tools, Secrets, Cost Ceiling, Directed Edit Style, Research Surface, Personal Data Surface, and Automation Posture. Add a new section called Extension Posture with this template:
Extension Posture. My install-vs-build rule: I will install an off-the-shelf extension only when it passes the minimum viable audit and its documentation is current within 90 days; I will author my own only when no audited option exists or when my version would be materially more specific.
My maximum active extensions is [the number you can defend]. If the register crosses that ceiling, I will retire before I add.
My audience rule: every extension I author delivers to me only. Off-the-shelf extensions I install are run in drafts-only mode wherever possible. No auto-send, no auto-post, no auto-RSVP, no auto-reply authored into my own skills.
Every extension I keep has a row in extension-register-v1.md with every column filled in — or it does not run.
Then create a sibling capstone file, extension-register-v1-draft.md, with the header row from the extension-register row template and zero data rows. These two artifacts are entry 0 of your Module 7 capstone log.
Do not proceed to Lesson 7.2 until both are in place. The register comes before the first row.
Next in Module 7
Lesson 7.2 — Evaluating and using existing extensions.
Apply the minimum viable audit to four off-the-shelf extensions — two you end up installing, two you decline — and fill in their rows on the register. Meet the outbound decision matrix: clean audit, drafts-only, narrow-scope, decline, conscious override. Learn to read a manifest, a description, and a changelog before the install button.