{"id":"13-skills-hooks","number":13,"slug":"skills-commands-hooks","title":"Skills, commands and hooks","short":"Skills, commands and hooks","module":"Your toolkit","summary":"A brilliant agent isn't the same as an expert one. Skills package your team's know-how into folders the agent loads only when needed. Commands save prompts you reuse. Hooks guarantee things happen every time. Here's what each is for, and how to grow them from real work.","voice":"Eric","scenes":[{"template":"title","chapter":"Intro","narration":"A brilliant agent isn't the same as an expert one. This lesson is about turning your team's know-how into something agents can pick up, exactly when they need it.","params":{"kicker":"Lesson 13","module":"Module 3 · Your toolkit","title":"Skills, commands and *hooks*","subtitle":"Teach your agent your team's know-how.","bubble":"Teach me once.","mood":"happy"},"start":0.5,"dur":10.917,"words":[{"text":"A","s":0.8,"e":0.96},{"text":"brilliant","s":1.04,"e":1.44},{"text":"agent","s":1.52,"e":1.92},{"text":"isn't","s":2,"e":2.24},{"text":"the","s":2.32,"e":2.4},{"text":"same","s":2.48,"e":2.72},{"text":"as","s":2.8,"e":2.88},{"text":"an","s":3,"e":3.12},{"text":"expert","s":3.32,"e":3.52},{"text":"one.","s":3.6,"e":4.4},{"text":"This","s":4.52,"e":4.64},{"text":"lesson","s":4.72,"e":5.04},{"text":"is","s":5.12,"e":5.2},{"text":"about","s":5.32,"e":5.44},{"text":"turning","s":5.56,"e":5.76},{"text":"your","s":5.84,"e":5.92},{"text":"team's","s":6,"e":6.32},{"text":"know-how","s":6.4,"e":6.96},{"text":"into","s":7.08,"e":7.2},{"text":"something","s":7.28,"e":7.6},{"text":"agents","s":7.68,"e":8},{"text":"can","s":8.08,"e":8.24},{"text":"pick","s":8.32,"e":8.4},{"text":"up,","s":8.48,"e":8.96},{"text":"exactly","s":9.12,"e":9.6},{"text":"when","s":9.68,"e":9.76},{"text":"they","s":9.84,"e":9.92},{"text":"need","s":10,"e":10.08},{"text":"it.","s":10.16,"e":10.56}]},{"template":"quote","chapter":"Genius vs expert","narration":"Barry Zhang from Anthropic uses a great analogy. You could ask a genius, like his colleague Mahesh, to do your taxes. But, he says, I don't want Mahesh to figure out the tax code from first principles. I need consistent execution from a domain expert. Skills are how you give an agent expertise.","params":{"text":"I don't want Mahesh to figure out the 2025 tax code from first principles. I need *consistent execution* from a domain expert.","who":"Barry Zhang","role":"Anthropic","src":"Don't Build Agents, Build Skills Instead · AI Engineer","t":158,"sync":false},"start":11.417,"dur":20.594,"words":[{"text":"Barry","s":11.717,"e":12.037},{"text":"Zhang","s":12.117,"e":12.437},{"text":"from","s":12.517,"e":12.597},{"text":"Anthropic","s":12.677,"e":13.397},{"text":"uses","s":13.477,"e":13.717},{"text":"a","s":13.797,"e":13.877},{"text":"great","s":13.957,"e":14.197},{"text":"analogy.","s":14.277,"e":15.117},{"text":"You","s":15.397,"e":15.477},{"text":"could","s":15.557,"e":15.637},{"text":"ask","s":15.717,"e":15.797},{"text":"a","s":15.877,"e":15.957},{"text":"genius,","s":16.037,"e":16.677},{"text":"like","s":16.757,"e":16.917},{"text":"his","s":16.997,"e":17.077},{"text":"colleague","s":17.157,"e":17.397},{"text":"Mahesh,","s":17.517,"e":18.037},{"text":"to","s":18.077,"e":18.117},{"text":"do","s":18.197,"e":18.237},{"text":"your","s":18.277,"e":18.357},{"text":"taxes.","s":18.437,"e":18.997},{"text":"But,","s":19.477,"e":19.877},{"text":"he","s":19.957,"e":20.117},{"text":"says,","s":20.277,"e":20.677},{"text":"I","s":20.917,"e":20.997},{"text":"don't","s":21.037,"e":21.157},{"text":"want","s":21.237,"e":21.317},{"text":"Mahesh","s":21.397,"e":21.797},{"text":"to","s":21.877,"e":21.957},{"text":"figure","s":22.037,"e":22.197},{"text":"out","s":22.277,"e":22.357},{"text":"the","s":22.397,"e":22.437},{"text":"tax","s":22.517,"e":22.837},{"text":"code","s":22.917,"e":23.077},{"text":"from","s":23.157,"e":23.237},{"text":"first","s":23.397,"e":23.557},{"text":"principles.","s":23.717,"e":24.357},{"text":"I","s":24.837,"e":24.917},{"text":"need","s":24.997,"e":25.157},{"text":"consistent","s":25.477,"e":25.797},{"text":"execution","s":25.877,"e":26.517},{"text":"from","s":26.597,"e":26.677},{"text":"a","s":26.757,"e":26.797},{"text":"domain","s":26.837,"e":27.237},{"text":"expert.","s":27.317,"e":27.797},{"text":"Skills","s":28.437,"e":28.997},{"text":"are","s":29.077,"e":29.157},{"text":"how","s":29.237,"e":29.317},{"text":"you","s":29.397,"e":29.477},{"text":"give","s":29.557,"e":29.637},{"text":"an","s":29.717,"e":29.797},{"text":"agent","s":29.877,"e":30.197},{"text":"expertise.","s":30.277,"e":31.397}]},{"template":"filetree","chapter":"What a skill is","narration":"So what is a skill? Anthropic's answer: organized collections of files that package procedural knowledge for agents. In other words, they're folders. Inside, a SKILL file with a name and a description, plus any scripts, templates or reference docs it needs. Building one is like writing an onboarding guide for a new hire.","params":{"title":"A skill is a folder","sub":"“Like an onboarding guide for a new hire.”","root":".claude/skills/","items":[{"path":"release/","at":"folders"},{"path":"release/SKILL.md","note":"name + description + steps","hl":true,"at":"SKILL file"},{"path":"release/scripts/","at":"scripts"},{"path":"release/scripts/bump_version.py","note":"runs, never read","at":"templates"},{"path":"release/CHANGELOG-STYLE.md","note":"loaded if needed","at":"reference docs"}]},"start":32.011,"dur":21.299,"words":[{"text":"So","s":32.311,"e":32.551},{"text":"what","s":32.871,"e":33.031},{"text":"is","s":33.111,"e":33.271},{"text":"a","s":33.351,"e":33.431},{"text":"skill?","s":33.511,"e":33.911},{"text":"Anthropic's","s":34.471,"e":35.031},{"text":"answer:","s":35.111,"e":35.511},{"text":"organized","s":35.991,"e":36.471},{"text":"collections","s":36.711,"e":36.951},{"text":"of","s":37.031,"e":37.111},{"text":"files","s":37.351,"e":37.591},{"text":"that","s":37.671,"e":37.751},{"text":"package","s":37.831,"e":38.151},{"text":"procedural","s":38.231,"e":38.871},{"text":"knowledge","s":38.951,"e":39.271},{"text":"for","s":39.351,"e":39.431},{"text":"agents.","s":39.511,"e":40.231},{"text":"In","s":40.471,"e":40.551},{"text":"other","s":40.631,"e":40.711},{"text":"words,","s":40.791,"e":41.351},{"text":"they're","s":41.391,"e":41.511},{"text":"folders.","s":41.751,"e":42.071},{"text":"Inside,","s":42.551,"e":43.271},{"text":"a","s":43.311,"e":43.351},{"text":"SKILL","s":43.431,"e":43.671},{"text":"file","s":43.751,"e":43.991},{"text":"with","s":44.071,"e":44.151},{"text":"a","s":44.231,"e":44.311},{"text":"name","s":44.391,"e":44.631},{"text":"and","s":44.711,"e":44.791},{"text":"a","s":44.831,"e":44.871},{"text":"description,","s":45.191,"e":45.671},{"text":"plus","s":45.831,"e":45.991},{"text":"any","s":46.071,"e":46.231},{"text":"scripts,","s":46.311,"e":46.951},{"text":"templates","s":47.191,"e":47.431},{"text":"or","s":47.511,"e":47.671},{"text":"reference","s":47.751,"e":48.071},{"text":"docs","s":48.151,"e":48.391},{"text":"it","s":48.431,"e":48.471},{"text":"needs.","s":48.551,"e":49.151},{"text":"Building","s":49.431,"e":49.751},{"text":"one","s":49.831,"e":49.911},{"text":"is","s":49.991,"e":50.071},{"text":"like","s":50.151,"e":50.311},{"text":"writing","s":50.391,"e":50.631},{"text":"an","s":50.671,"e":50.711},{"text":"onboarding","s":50.871,"e":51.351},{"text":"guide","s":51.431,"e":51.591},{"text":"for","s":51.671,"e":51.751},{"text":"a","s":51.831,"e":51.871},{"text":"new","s":51.911,"e":51.991},{"text":"hire.","s":52.071,"e":52.711}]},{"template":"code","chapter":"What a skill is","narration":"Here's what the file looks like. The front matter has a name and a description, and the description matters most: it's how the agent decides when to use the skill. Then come the steps, including how to verify. Scripts are run, not read, so they don't cost context.","params":{"file":".claude/skills/release/SKILL.md","lang":"md","lines":["---","name: release","description: Cut a release. Use when asked to release, ship or tag a version.","---","1. Run `scripts/bump_version.py` with major, minor or patch","2. Update CHANGELOG.md following CHANGELOG-STYLE.md","3. Verify: `pnpm test && pnpm build` must pass","4. Tag and push; never force-push"],"hl":[{"from":2,"to":3,"at":"description","label":"when to use it","tone":"agent"},{"from":7,"to":7,"at":"verify","label":"how to check","tone":"good"}]},"start":53.31,"dur":17.616,"words":[{"text":"Here's","s":53.61,"e":53.85},{"text":"what","s":53.93,"e":54.01},{"text":"the","s":54.05,"e":54.09},{"text":"file","s":54.17,"e":54.41},{"text":"looks","s":54.49,"e":54.65},{"text":"like.","s":54.73,"e":55.21},{"text":"The","s":55.45,"e":55.53},{"text":"front","s":55.61,"e":55.77},{"text":"matter","s":55.85,"e":56.17},{"text":"has","s":56.25,"e":56.33},{"text":"a","s":56.41,"e":56.49},{"text":"name","s":56.57,"e":56.89},{"text":"and","s":56.97,"e":57.05},{"text":"a","s":57.13,"e":57.343},{"text":"description,","s":57.557,"e":58.17},{"text":"and","s":58.21,"e":58.25},{"text":"the","s":58.33,"e":58.37},{"text":"description","s":58.41,"e":59.05},{"text":"matters","s":59.13,"e":59.37},{"text":"most:","s":59.53,"e":60.33},{"text":"it's","s":60.37,"e":60.49},{"text":"how","s":60.57,"e":60.65},{"text":"the","s":60.69,"e":60.73},{"text":"agent","s":60.81,"e":61.05},{"text":"decides","s":61.13,"e":61.61},{"text":"when","s":61.69,"e":61.85},{"text":"to","s":61.93,"e":62.01},{"text":"use","s":62.09,"e":62.25},{"text":"the","s":62.33,"e":62.37},{"text":"skill.","s":62.41,"e":63.13},{"text":"Then","s":63.45,"e":63.69},{"text":"come","s":63.77,"e":63.93},{"text":"the","s":63.97,"e":64.01},{"text":"steps,","s":64.09,"e":64.73},{"text":"including","s":64.97,"e":65.21},{"text":"how","s":65.29,"e":65.37},{"text":"to","s":65.41,"e":65.45},{"text":"verify.","s":65.53,"e":66.09},{"text":"Scripts","s":66.57,"e":66.97},{"text":"are","s":67.05,"e":67.13},{"text":"run,","s":67.21,"e":67.69},{"text":"not","s":67.77,"e":67.93},{"text":"read,","s":68.01,"e":68.57},{"text":"so","s":68.65,"e":68.73},{"text":"they","s":68.77,"e":68.81},{"text":"don't","s":68.85,"e":69.05},{"text":"cost","s":69.21,"e":69.37},{"text":"context.","s":69.45,"e":70.33}]},{"template":"stack","chapter":"Progressive disclosure","narration":"The magic is progressive disclosure. At startup, the agent only sees each skill's name and description, a few dozen tokens. When a task matches, it reads the full file. Linked references and scripts are pulled in only as needed. Daisy Hollman calls a skill a lazy system prompt.","params":{"title":"Progressive disclosure","sub":"“A lazy system prompt.” — Daisy Hollman","layers":[{"label":"Name + description","sub":"always loaded · a few dozen tokens","tone":"agent","icon":"list","at":"name and description"},{"label":"SKILL.md body","sub":"read when a task matches","tone":"soft","icon":"doc","at":"full file"},{"label":"References and scripts","sub":"pulled in only as needed","tone":"paper","icon":"box","at":"as needed"}]},"start":70.926,"dur":19.236,"words":[{"text":"The","s":71.226,"e":71.306},{"text":"magic","s":71.466,"e":71.866},{"text":"is","s":72.026,"e":72.106},{"text":"progressive","s":72.186,"e":72.746},{"text":"disclosure.","s":72.826,"e":73.546},{"text":"At","s":74.026,"e":74.186},{"text":"startup,","s":74.266,"e":74.906},{"text":"the","s":74.986,"e":75.066},{"text":"agent","s":75.146,"e":75.386},{"text":"only","s":75.466,"e":75.706},{"text":"sees","s":75.786,"e":76.106},{"text":"each","s":76.186,"e":76.266},{"text":"skill's","s":76.346,"e":76.746},{"text":"name","s":76.906,"e":77.066},{"text":"and","s":77.106,"e":77.146},{"text":"description,","s":77.226,"e":78.026},{"text":"a","s":78.106,"e":78.146},{"text":"few","s":78.186,"e":78.266},{"text":"dozen","s":78.346,"e":78.586},{"text":"tokens.","s":78.666,"e":79.386},{"text":"When","s":79.626,"e":79.706},{"text":"a","s":79.746,"e":79.786},{"text":"task","s":79.866,"e":80.186},{"text":"matches,","s":80.266,"e":80.906},{"text":"it","s":80.986,"e":81.066},{"text":"reads","s":81.146,"e":81.386},{"text":"the","s":81.426,"e":81.466},{"text":"full","s":81.626,"e":81.786},{"text":"file.","s":81.946,"e":82.346},{"text":"Linked","s":82.746,"e":82.986},{"text":"references","s":83.066,"e":83.546},{"text":"and","s":83.586,"e":83.626},{"text":"scripts","s":83.706,"e":84.106},{"text":"are","s":84.186,"e":84.266},{"text":"pulled","s":84.346,"e":84.506},{"text":"in","s":84.586,"e":84.826},{"text":"only","s":84.986,"e":85.146},{"text":"as","s":85.226,"e":85.306},{"text":"needed.","s":85.386,"e":85.946},{"text":"Daisy","s":86.186,"e":86.506},{"text":"Hollman","s":86.586,"e":86.906},{"text":"calls","s":86.986,"e":87.226},{"text":"a","s":87.266,"e":87.306},{"text":"skill","s":87.386,"e":87.706},{"text":"a","s":87.866,"e":87.946},{"text":"lazy","s":88.026,"e":88.426},{"text":"system","s":88.506,"e":88.826},{"text":"prompt.","s":88.906,"e":89.546}]},{"template":"list","chapter":"Where skills come from","narration":"Where do good skills come from? From real work. Anthropic noticed Claude writing the same styling script over and over, so they had it save the script inside a skill. Lauren Tan turns every failure mode she sees into a skill. And at Uber, teams asked Claude to read their past code reviews and write a review skill. You can simply ask your agent to write one.","params":{"title":"Grow skills from real work","items":[{"text":"A script it keeps rewriting","sub":"save it into a skill","at":"same styling script"},{"text":"A mistake it keeps making","sub":"Lauren Tan: every failure mode → a skill","at":"failure mode"},{"text":"A workflow you keep explaining","sub":"Uber: “read our past reviews, write a skill”","at":"Uber"},{"text":"Just ask the agent to write it","at":"simply ask"}]},"start":90.162,"dur":23.311,"words":[{"text":"Where","s":90.462,"e":90.702},{"text":"do","s":90.742,"e":90.782},{"text":"good","s":90.942,"e":91.102},{"text":"skills","s":91.182,"e":91.502},{"text":"come","s":91.582,"e":91.742},{"text":"from?","s":91.822,"e":92.542},{"text":"From","s":92.622,"e":92.782},{"text":"real","s":92.942,"e":93.182},{"text":"work.","s":93.342,"e":93.942},{"text":"Anthropic","s":94.222,"e":94.782},{"text":"noticed","s":94.862,"e":95.182},{"text":"Claude","s":95.262,"e":95.582},{"text":"writing","s":95.742,"e":95.902},{"text":"the","s":95.982,"e":96.062},{"text":"same","s":96.142,"e":96.382},{"text":"styling","s":96.462,"e":96.862},{"text":"script","s":96.942,"e":97.262},{"text":"over","s":97.342,"e":97.662},{"text":"and","s":97.742,"e":97.822},{"text":"over,","s":97.902,"e":98.542},{"text":"so","s":98.662,"e":98.782},{"text":"they","s":98.862,"e":98.942},{"text":"had","s":99.022,"e":99.102},{"text":"it","s":99.182,"e":99.262},{"text":"save","s":99.342,"e":99.502},{"text":"the","s":99.582,"e":99.662},{"text":"script","s":99.822,"e":99.982},{"text":"inside","s":100.142,"e":100.302},{"text":"a","s":100.342,"e":100.382},{"text":"skill.","s":100.462,"e":101.342},{"text":"Lauren","s":101.422,"e":101.742},{"text":"Tan","s":101.902,"e":102.062},{"text":"turns","s":102.142,"e":102.542},{"text":"every","s":102.702,"e":102.862},{"text":"failure","s":102.942,"e":103.262},{"text":"mode","s":103.342,"e":103.502},{"text":"she","s":103.622,"e":103.742},{"text":"sees","s":103.782,"e":104.062},{"text":"into","s":104.142,"e":104.382},{"text":"a","s":104.422,"e":104.462},{"text":"skill.","s":104.542,"e":105.422},{"text":"And","s":105.502,"e":105.582},{"text":"at","s":105.662,"e":105.742},{"text":"Uber,","s":105.822,"e":106.382},{"text":"teams","s":106.542,"e":106.702},{"text":"asked","s":106.782,"e":107.022},{"text":"Claude","s":107.102,"e":107.422},{"text":"to","s":107.502,"e":107.582},{"text":"read","s":107.662,"e":107.742},{"text":"their","s":107.822,"e":107.902},{"text":"past","s":107.982,"e":108.222},{"text":"code","s":108.302,"e":108.462},{"text":"reviews","s":108.542,"e":109.022},{"text":"and","s":109.102,"e":109.182},{"text":"write","s":109.262,"e":109.342},{"text":"a","s":109.382,"e":109.422},{"text":"review","s":109.502,"e":109.742},{"text":"skill.","s":109.822,"e":110.622},{"text":"You","s":110.702,"e":110.782},{"text":"can","s":110.862,"e":110.942},{"text":"simply","s":111.022,"e":111.342},{"text":"ask","s":111.462,"e":111.582},{"text":"your","s":111.662,"e":111.742},{"text":"agent","s":111.902,"e":112.062},{"text":"to","s":112.142,"e":112.222},{"text":"write","s":112.302,"e":112.382},{"text":"one.","s":112.462,"e":112.862}]},{"template":"statement","chapter":"Commands","narration":"Commands are simpler. A slash command, or prompt file, is just a saved prompt you trigger yourself, like a review checklist or a weekly changelog. Skills are chosen by the agent when relevant. Commands are chosen by you.","params":{"text":"A command is a *saved prompt* you trigger yourself.","sub":"/review · /changelog · /new-endpoint — skills are picked by the agent, commands by you.","art":"terminal","tone":"human","sync":false},"start":113.473,"dur":15.552,"words":[{"text":"Commands","s":113.773,"e":114.253},{"text":"are","s":114.333,"e":114.413},{"text":"simpler.","s":114.573,"e":115.213},{"text":"A","s":115.453,"e":115.613},{"text":"slash","s":115.813,"e":116.013},{"text":"command,","s":116.253,"e":116.573},{"text":"or","s":116.653,"e":116.813},{"text":"prompt","s":116.973,"e":117.293},{"text":"file,","s":117.373,"e":117.933},{"text":"is","s":118.013,"e":118.173},{"text":"just","s":118.253,"e":118.413},{"text":"a","s":118.493,"e":118.573},{"text":"saved","s":118.653,"e":118.893},{"text":"prompt","s":118.973,"e":119.293},{"text":"you","s":119.373,"e":119.453},{"text":"trigger","s":119.613,"e":119.773},{"text":"yourself,","s":119.893,"e":120.573},{"text":"like","s":120.693,"e":120.813},{"text":"a","s":120.853,"e":120.893},{"text":"review","s":120.973,"e":121.213},{"text":"checklist","s":121.293,"e":121.853},{"text":"or","s":121.933,"e":122.013},{"text":"a","s":122.093,"e":122.133},{"text":"weekly","s":122.173,"e":122.413},{"text":"changelog.","s":122.493,"e":123.693},{"text":"Skills","s":123.773,"e":124.173},{"text":"are","s":124.253,"e":124.333},{"text":"chosen","s":124.493,"e":124.653},{"text":"by","s":124.733,"e":124.813},{"text":"the","s":124.853,"e":124.893},{"text":"agent","s":125.053,"e":125.453},{"text":"when","s":125.533,"e":125.613},{"text":"relevant.","s":125.693,"e":126.573},{"text":"Commands","s":126.853,"e":127.133},{"text":"are","s":127.213,"e":127.293},{"text":"chosen","s":127.373,"e":127.613},{"text":"by","s":127.693,"e":127.853},{"text":"you.","s":127.933,"e":128.413}]},{"template":"code","chapter":"Hooks","narration":"Hooks are different again. They're scripts that run on agent events, like after every file edit, before every shell command, or when the agent stops. Use them for anything that must happen every single time: format the code, run the linter, block a dangerous command.","params":{"file":".claude/settings.json (hooks)","lang":"js","lines":["\"hooks\": {","  \"PostToolUse\": [{ \"matcher\": \"Edit|Write\",","    \"hooks\": [{ \"type\": \"command\",","      \"command\": \"./scripts/format-changed.sh\" }] }],","  \"PreToolUse\": [{ \"matcher\": \"Bash\",","    \"hooks\": [{ \"type\": \"command\",","      \"command\": \"./scripts/block-dangerous.sh\" }] }]","}"],"hl":[{"from":2,"to":4,"at":"every file edit","label":"after each edit","tone":"good"},{"from":5,"to":7,"at":"before every","label":"before each command","tone":"bad"}],"caption":"Simplified. Exact formats differ between agents; check your tool's docs."},"start":129.025,"dur":18.269,"words":[{"text":"Hooks","s":129.325,"e":129.725},{"text":"are","s":129.805,"e":129.885},{"text":"different","s":129.965,"e":130.205},{"text":"again.","s":130.405,"e":130.685},{"text":"They're","s":131.165,"e":131.405},{"text":"scripts","s":131.565,"e":131.725},{"text":"that","s":131.805,"e":131.885},{"text":"run","s":131.965,"e":132.125},{"text":"on","s":132.245,"e":132.365},{"text":"agent","s":132.525,"e":132.685},{"text":"events,","s":132.765,"e":133.405},{"text":"like","s":133.485,"e":133.805},{"text":"after","s":133.965,"e":134.285},{"text":"every","s":134.405,"e":134.525},{"text":"file","s":134.605,"e":134.845},{"text":"edit,","s":134.925,"e":135.485},{"text":"before","s":135.645,"e":135.805},{"text":"every","s":135.885,"e":136.045},{"text":"shell","s":136.125,"e":136.365},{"text":"command,","s":136.445,"e":137.165},{"text":"or","s":137.285,"e":137.405},{"text":"when","s":137.485,"e":137.565},{"text":"the","s":137.645,"e":137.685},{"text":"agent","s":137.725,"e":138.045},{"text":"stops.","s":138.125,"e":138.925},{"text":"Use","s":139.245,"e":139.405},{"text":"them","s":139.485,"e":139.565},{"text":"for","s":139.685,"e":139.805},{"text":"anything","s":139.885,"e":140.205},{"text":"that","s":140.285,"e":140.365},{"text":"must","s":140.605,"e":140.845},{"text":"happen","s":140.925,"e":141.165},{"text":"every","s":141.405,"e":141.645},{"text":"single","s":141.725,"e":141.965},{"text":"time:","s":142.045,"e":142.845},{"text":"format","s":142.925,"e":143.245},{"text":"the","s":143.285,"e":143.325},{"text":"code,","s":143.405,"e":144.045},{"text":"run","s":144.125,"e":144.205},{"text":"the","s":144.245,"e":144.285},{"text":"linter,","s":144.365,"e":145.085},{"text":"block","s":145.165,"e":145.405},{"text":"a","s":145.445,"e":145.485},{"text":"dangerous","s":145.565,"e":145.965},{"text":"command.","s":146.205,"e":146.685}]},{"template":"compare","chapter":"Suggestion vs guarantee","narration":"Here's the key difference. An instruction in a prompt or a memory file is a suggestion. The model will usually follow it, but not always. A hook is a guarantee, because it's ordinary code that runs every time. Daisy Hollman adds that hooks scale well: they put nothing in the context unless they have something to say.","params":{"left":{"title":"Instruction","tone":"neutral","items":["“Always run prettier”","Usually followed","Costs context every session"],"at":"suggestion"},"right":{"title":"Hook","tone":"good","items":["Runs after every edit","Always happens","Silent unless it has something to say"],"at":"guarantee"}},"start":147.294,"dur":21.717,"words":[{"text":"Here's","s":147.594,"e":147.874},{"text":"the","s":147.914,"e":147.994},{"text":"key","s":148.074,"e":148.234},{"text":"difference.","s":148.314,"e":149.074},{"text":"An","s":149.354,"e":149.434},{"text":"instruction","s":149.514,"e":150.074},{"text":"in","s":150.154,"e":150.234},{"text":"a","s":150.287,"e":150.341},{"text":"prompt","s":150.394,"e":150.794},{"text":"or","s":150.874,"e":150.954},{"text":"a","s":151.034,"e":151.074},{"text":"memory","s":151.114,"e":151.434},{"text":"file","s":151.514,"e":151.914},{"text":"is","s":151.994,"e":152.074},{"text":"a","s":152.154,"e":152.234},{"text":"suggestion.","s":152.274,"e":153.514},{"text":"The","s":153.554,"e":153.594},{"text":"model","s":153.674,"e":153.914},{"text":"will","s":153.994,"e":154.234},{"text":"usually","s":154.314,"e":154.714},{"text":"follow","s":154.794,"e":155.034},{"text":"it,","s":155.114,"e":155.434},{"text":"but","s":155.554,"e":155.674},{"text":"not","s":155.754,"e":155.914},{"text":"always.","s":155.994,"e":156.954},{"text":"A","s":157.074,"e":157.194},{"text":"hook","s":157.434,"e":157.674},{"text":"is","s":157.714,"e":157.754},{"text":"a","s":157.834,"e":157.914},{"text":"guarantee,","s":157.994,"e":158.954},{"text":"because","s":159.074,"e":159.194},{"text":"it's","s":159.274,"e":159.514},{"text":"ordinary","s":159.754,"e":159.994},{"text":"code","s":160.074,"e":160.314},{"text":"that","s":160.394,"e":160.474},{"text":"runs","s":160.554,"e":160.874},{"text":"every","s":160.954,"e":161.194},{"text":"time.","s":161.274,"e":162.154},{"text":"Daisy","s":162.194,"e":162.474},{"text":"Hollman","s":162.514,"e":162.874},{"text":"adds","s":163.034,"e":163.194},{"text":"that","s":163.274,"e":163.354},{"text":"hooks","s":163.434,"e":163.834},{"text":"scale","s":163.914,"e":164.234},{"text":"well:","s":164.314,"e":165.034},{"text":"they","s":165.114,"e":165.194},{"text":"put","s":165.314,"e":165.434},{"text":"nothing","s":165.514,"e":165.754},{"text":"in","s":165.834,"e":165.874},{"text":"the","s":165.914,"e":165.994},{"text":"context","s":166.314,"e":166.634},{"text":"unless","s":166.834,"e":167.034},{"text":"they","s":167.114,"e":167.194},{"text":"have","s":167.274,"e":167.354},{"text":"something","s":167.514,"e":167.674},{"text":"to","s":167.754,"e":167.834},{"text":"say.","s":167.994,"e":168.394}]},{"template":"list","chapter":"Which one when?","narration":"So which do you use when? Facts needed every session go in the memory file. Know-how needed only sometimes becomes a skill. Prompts you reuse become commands. Anything that must happen every time becomes a hook. And new abilities come from tools and CLIs.","params":{"title":"Which one when?","style":"num","items":[{"text":"Memory file","sub":"facts needed in every session","at":"every session"},{"text":"Skill","sub":"know-how needed sometimes","at":"sometimes"},{"text":"Command","sub":"a prompt you reuse","at":"reuse"},{"text":"Hook","sub":"must happen every time","at":"must happen"},{"text":"Tool / CLI","sub":"a new ability","at":"abilities"}]},"start":169.011,"dur":19.941,"words":[{"text":"So","s":169.311,"e":169.711},{"text":"which","s":169.951,"e":170.111},{"text":"do","s":170.191,"e":170.271},{"text":"you","s":170.351,"e":170.431},{"text":"use","s":170.511,"e":170.671},{"text":"when?","s":170.751,"e":171.151},{"text":"Facts","s":171.711,"e":172.031},{"text":"needed","s":172.111,"e":172.431},{"text":"every","s":172.511,"e":172.751},{"text":"session","s":172.911,"e":173.311},{"text":"go","s":173.471,"e":173.551},{"text":"in","s":173.631,"e":173.671},{"text":"the","s":173.711,"e":173.751},{"text":"memory","s":173.791,"e":174.111},{"text":"file.","s":174.191,"e":174.791},{"text":"Know-how","s":175.071,"e":175.471},{"text":"needed","s":175.551,"e":175.871},{"text":"only","s":176.031,"e":176.351},{"text":"sometimes","s":176.511,"e":177.071},{"text":"becomes","s":177.151,"e":177.471},{"text":"a","s":177.511,"e":177.551},{"text":"skill.","s":177.631,"e":178.031},{"text":"Prompts","s":178.511,"e":178.831},{"text":"you","s":178.911,"e":178.991},{"text":"reuse","s":179.071,"e":179.631},{"text":"become","s":179.791,"e":180.111},{"text":"commands.","s":180.191,"e":180.991},{"text":"Anything","s":181.231,"e":181.551},{"text":"that","s":181.631,"e":181.711},{"text":"must","s":181.951,"e":182.191},{"text":"happen","s":182.271,"e":182.591},{"text":"every","s":182.671,"e":182.991},{"text":"time","s":183.071,"e":183.391},{"text":"becomes","s":183.551,"e":183.871},{"text":"a","s":183.951,"e":183.991},{"text":"hook.","s":184.031,"e":184.591},{"text":"And","s":184.831,"e":185.151},{"text":"new","s":185.391,"e":185.471},{"text":"abilities","s":185.551,"e":186.111},{"text":"come","s":186.191,"e":186.271},{"text":"from","s":186.351,"e":186.511},{"text":"tools","s":186.591,"e":187.071},{"text":"and","s":187.151,"e":187.231},{"text":"CLIs.","s":187.311,"e":188.351}]},{"template":"statement","chapter":"Compound engineering","narration":"Dan Shipper's team at Every calls this compounding engineering. Every feature should make the next one easier, by codifying what you learned into prompts, skills and commands. Do that consistently, and your setup gets better every week.","params":{"text":"Every feature should make the *next one easier*.","sub":"Compounding engineering: codify each lesson into prompts, skills and commands. — Dan Shipper, Every","art":"spark","tone":"agent","sync":false},"start":188.952,"dur":15.474,"words":[{"text":"Dan","s":189.252,"e":189.492},{"text":"Shipper's","s":189.572,"e":189.972},{"text":"team","s":190.092,"e":190.212},{"text":"at","s":190.252,"e":190.292},{"text":"Every","s":190.452,"e":190.852},{"text":"calls","s":190.932,"e":191.172},{"text":"this","s":191.252,"e":191.412},{"text":"compounding","s":191.572,"e":192.292},{"text":"engineering.","s":192.612,"e":193.212},{"text":"Every","s":193.492,"e":193.732},{"text":"feature","s":193.812,"e":194.132},{"text":"should","s":194.212,"e":194.372},{"text":"make","s":194.452,"e":194.532},{"text":"the","s":194.572,"e":194.612},{"text":"next","s":194.772,"e":195.012},{"text":"one","s":195.092,"e":195.252},{"text":"easier,","s":195.332,"e":196.132},{"text":"by","s":196.212,"e":196.372},{"text":"codifying","s":196.452,"e":196.932},{"text":"what","s":197.012,"e":197.092},{"text":"you","s":197.132,"e":197.172},{"text":"learned","s":197.332,"e":197.572},{"text":"into","s":197.652,"e":197.892},{"text":"prompts,","s":197.972,"e":198.612},{"text":"skills","s":198.852,"e":199.092},{"text":"and","s":199.172,"e":199.252},{"text":"commands.","s":199.332,"e":200.172},{"text":"Do","s":200.452,"e":200.612},{"text":"that","s":200.652,"e":200.692},{"text":"consistently,","s":200.772,"e":201.732},{"text":"and","s":201.772,"e":201.812},{"text":"your","s":201.892,"e":201.972},{"text":"setup","s":202.052,"e":202.292},{"text":"gets","s":202.412,"e":202.532},{"text":"better","s":202.612,"e":202.932},{"text":"every","s":203.012,"e":203.252},{"text":"week.","s":203.332,"e":203.812}]},{"template":"quiz","chapter":"Quick check","narration":"Quick check. You want your code formatted after every single edit the agent makes, without exception. What should you use? Tap your answer.","params":{"q":"You want code formatted after every single edit, no exceptions. What do you use?","options":["A line in your memory file","A skill about formatting","A hook that runs after each edit","A reminder in every prompt"],"answer":2,"explain":"Instructions are suggestions. A hook is code that runs every time."},"start":204.426,"dur":14.669,"words":[{"text":"Quick","s":204.726,"e":204.966},{"text":"check.","s":205.046,"e":205.366},{"text":"You","s":205.846,"e":205.926},{"text":"want","s":206.006,"e":206.086},{"text":"your","s":206.166,"e":206.246},{"text":"code","s":206.326,"e":206.566},{"text":"formatted","s":206.646,"e":207.126},{"text":"after","s":207.206,"e":207.526},{"text":"every","s":207.686,"e":207.926},{"text":"single","s":208.086,"e":208.326},{"text":"edit","s":208.486,"e":208.646},{"text":"the","s":208.726,"e":208.806},{"text":"agent","s":208.886,"e":209.126},{"text":"makes,","s":209.206,"e":209.846},{"text":"without","s":210.046,"e":210.246},{"text":"exception.","s":210.406,"e":211.046},{"text":"What","s":211.526,"e":211.686},{"text":"should","s":211.766,"e":211.846},{"text":"you","s":211.926,"e":212.006},{"text":"use?","s":212.086,"e":212.646},{"text":"Tap","s":212.886,"e":213.126},{"text":"your","s":213.206,"e":213.286},{"text":"answer.","s":213.446,"e":213.926}]},{"template":"exercise","chapter":"Try it","narration":"Write your first skill from real work. This prompt has the agent find a workflow you repeat and turn it into a skill, with verification built in.","params":{"title":"Try it with your agent","intro":"Turn a repeated workflow into a skill:","prompt":"Look at our recent git history and this repo. Find a workflow we\nrepeat (adding an endpoint, a release, a migration...). Write it as\n.claude/skills/<name>/SKILL.md: a precise name and description of\nwhen to use it, the steps, and how to verify. Put scripts in scripts/."},"start":219.095,"dur":10.197,"words":[{"text":"Write","s":219.395,"e":219.715},{"text":"your","s":219.795,"e":219.875},{"text":"first","s":219.955,"e":220.195},{"text":"skill","s":220.275,"e":220.595},{"text":"from","s":220.755,"e":220.915},{"text":"real","s":220.995,"e":221.235},{"text":"work.","s":221.315,"e":222.035},{"text":"This","s":222.355,"e":222.515},{"text":"prompt","s":222.595,"e":222.835},{"text":"has","s":222.915,"e":223.075},{"text":"the","s":223.115,"e":223.155},{"text":"agent","s":223.235,"e":223.475},{"text":"find","s":223.635,"e":223.795},{"text":"a","s":223.875,"e":223.915},{"text":"workflow","s":223.955,"e":224.435},{"text":"you","s":224.515,"e":224.595},{"text":"repeat","s":224.875,"e":225.155},{"text":"and","s":225.315,"e":225.475},{"text":"turn","s":225.595,"e":225.715},{"text":"it","s":225.755,"e":225.795},{"text":"into","s":225.875,"e":226.115},{"text":"a","s":226.155,"e":226.195},{"text":"skill,","s":226.275,"e":226.915},{"text":"with","s":226.995,"e":227.075},{"text":"verification","s":227.155,"e":227.795},{"text":"built","s":227.955,"e":228.115},{"text":"in.","s":228.195,"e":228.675}]},{"template":"recap","chapter":"Recap","narration":"Recap. Skills are folders of know-how, loaded only when needed. Grow them from real work, or just ask the agent to write them. Commands are saved prompts. Hooks are guarantees. And every feature should make the next one easier. Next: git, your safety net.","params":{"items":["Skills: know-how, *loaded when needed*","Grow them from real work","Commands: saved prompts you trigger","Hooks: guarantees, not suggestions"],"next":"Git is your safety net","next_at":"Next"},"start":229.292,"dur":21.622,"words":[{"text":"Recap.","s":229.592,"e":230.312},{"text":"Skills","s":230.792,"e":231.272},{"text":"are","s":231.352,"e":231.512},{"text":"folders","s":231.592,"e":231.992},{"text":"of","s":232.032,"e":232.072},{"text":"know-how,","s":232.232,"e":232.952},{"text":"loaded","s":233.112,"e":233.272},{"text":"only","s":233.432,"e":233.752},{"text":"when","s":233.832,"e":233.912},{"text":"needed.","s":233.992,"e":234.392},{"text":"Grow","s":234.872,"e":235.112},{"text":"them","s":235.192,"e":235.272},{"text":"from","s":235.352,"e":235.512},{"text":"real","s":235.592,"e":235.832},{"text":"work,","s":235.912,"e":236.472},{"text":"or","s":236.592,"e":236.712},{"text":"just","s":236.872,"e":237.032},{"text":"ask","s":237.112,"e":237.272},{"text":"the","s":237.352,"e":237.432},{"text":"agent","s":237.552,"e":237.672},{"text":"to","s":237.752,"e":237.832},{"text":"write","s":237.952,"e":238.072},{"text":"them.","s":238.152,"e":238.312},{"text":"Commands","s":238.872,"e":239.432},{"text":"are","s":239.512,"e":239.672},{"text":"saved","s":239.752,"e":240.072},{"text":"prompts.","s":240.152,"e":240.712},{"text":"Hooks","s":241.192,"e":241.592},{"text":"are","s":241.752,"e":241.832},{"text":"guarantees.","s":241.912,"e":242.952},{"text":"And","s":243.192,"e":243.432},{"text":"every","s":243.592,"e":243.832},{"text":"feature","s":243.912,"e":244.312},{"text":"should","s":244.392,"e":244.552},{"text":"make","s":244.632,"e":244.712},{"text":"the","s":244.752,"e":244.792},{"text":"next","s":244.952,"e":245.192},{"text":"one","s":245.272,"e":245.432},{"text":"easier.","s":245.592,"e":246.072},{"text":"Next:","s":247.112,"e":247.592},{"text":"git,","s":247.912,"e":248.312},{"text":"your","s":248.472,"e":248.512},{"text":"safety","s":248.552,"e":248.992},{"text":"net.","s":249.112,"e":249.352}]}],"total":251.314,"audio":"/audio/13-skills-hooks.mp3"}