Skill Design Patterns Agentic AI's lesson on skill design patterns identifies six recurring shapes—workflow, decision, validator, transformation, lookup, and feedback—that every skill falls into, and teaches engineers to match a problem to the correct pattern before writing SKILL.md. The lesson includes worked examples such as an invoice approval workflow and an expense routing decision skill, and warns that skills drifting toward multiple patterns often need rewriting. · Agentic AI · 7 min read 📋 Prerequisites - From Prototype to Production previous lesson 🎯 What You'll Learn - Name and recognize six recurring skill design patterns - Match a new problem to the correct pattern before writing a line of SKILL.md - Explain how patterns combine, and when a skill is trying to be more than one at once You’ve Already Built These, Unnamed If you completed the free course’s capstone, you built five skills without being told what kind of skill each one was — a checklist skill, a validation skill, a transformation skill, a lookup skill, a feedback skill. That wasn’t an accident. Skills consistently fall into a small number of recurring shapes, and knowing the shape before you write the first line of SKILL.md is what separates a skill that’s well-scoped on the first attempt from one that gets rewritten three times because it was quietly trying to be two different things at once. This lesson names six patterns. Every skill you build for the rest of this course — and the enterprise packs in the project-based course after it — will be one of these, or a composition of more than one composition gets its own lesson: Skill Composition /courses/production-agent-skills-engineering/skill-composition . 1. Workflow Skill Shape: A fixed sequence of steps, done the same way every time, in order. step 1 → step 2 → step 3 → ... → done When to use it: The task doesn’t branch — every valid input goes through the same sequence. An invoice approval process, a release checklist, an onboarding runbook. Worked example — invoice approval: Process an invoice 1. Extract vendor, amount, and line items from the invoice. 2. Match the vendor against the approved-vendor list in references/vendors.md . 3. Check the amount against the requester's approval limit. 4. If everything matches, route to the requester's manager for sign-off. 5. Record the decision and amount in the ledger. Watch for: A workflow skill that starts accumulating if statements at every step is drifting toward the next pattern. 2. Decision Skill Shape: Branching logic — the path taken depends on the input. ┌─ condition A → outcome A input ──┤ └─ condition B → outcome B When to use it: The task’s correct next action genuinely depends on something about the input — not “always do X then Y,” but “do X if this, Y if that.” Worked example — expense approval routing: Route an expense report - If the amount is under $500 and matches a standard category, auto-approve. - If the amount is $500-$5,000, route to the direct manager. - If the amount exceeds $5,000, or the category is "other," route to finance for manual review. - If the expense lacks a receipt and exceeds $75, reject with an explanation regardless of amount. Watch for: A decision skill with more than four or five branches is a sign the branching logic itself might deserve its own reference file references/routing-rules.md , read on demand, rather than living entirely in the body. 3. Validator Skill Shape: Check input against rules; report exactly what’s wrong. input → validate → pass, or specific errors When to use it: The job is confirming correctness, not producing new output. A config file’s required fields, a commit message format, a schema check. Worked example — commit message validator: Validate a commit message Check against these rules, and report every rule that fails — not just the first one: 1. First line is 72 characters or fewer. 2. First line starts with a type: feat , fix , docs , refactor , test , or chore . 3. First line does not end with a period. 4. If the body is present, there's a blank line between it and the subject. Report failures as: "Rule N failed: