{
  "video": {
    "id": "UNzCG3lw6O0",
    "title": "Building Great Agent Skills: The Missing Manual",
    "duration": 1243,
    "upload_date": null,
    "channel": "AI Engineer",
    "source": "AI Engineer",
    "event_format": "Online"
  },
  "analysis": {
    "video_id": "UNzCG3lw6O0",
    "title": "Building Great Agent Skills: The Missing Manual",
    "one_liner": "Matt Pocock's four-part checklist — trigger, structure, steering, pruning — for telling a good agent skill from a bad one and getting out of \"skill hell\".",
    "summary": "Pocock argues that the missing piece in the skills ecosystem is a shared rubric: people download and stack skills without being able to tell a good one from a bad one, individually and at organisation level. He offers a four-item checklist — how the skill is triggered (user-invoked vs model-invoked, and the context load / cognitive load trade-off each imposes), the internal structure (steps plus reference, with branch-only reference material hidden behind context pointers to keep SKILL.md tiny), steering (leading words like \"vertical slice\", and splitting skills to force more legwork on the current step), and pruning (duplication, sediment, no-ops). He illustrates each with his own skills — 2 PRD, domain modeling, grill with docs, grill me — and has encoded the whole framework as a skill called \"writing great skills\" in his repo.",
    "key_points": [
      "\"Skill hell\" is the new tutorial hell / framework hell: masses of freely available skills, no understanding of how the pieces fit, and results that fall short of what the skills promise — true for individuals and for organisations trying to turn operating procedures into things an agent can do.",
      "A skill's description is a \"context pointer\" that sits in the agent's context window pointing at SKILL.md; setting `disable model invocation: true` (as in his grill me skill) removes it, making the skill user-invocable only.",
      "The trade-off is symmetrical: every model-invoked skill adds context load (100 skills = 100 descriptions costing tokens on every request, plus another thing for the agent to weigh), while every user-invoked skill adds cognitive load on the pilot, who must hold the skill set in their head.",
      "Superpowers is primarily model-invoked; Pocock's own repo is primarily user-invoked because model invocation buys \"a cost in unpredictability\" — the model can simply decline to follow a perfectly applicable pointer, which forces people to eval their skills to check they fire at the right time.",
      "Skills decompose into two units — steps and reference. His 2 PRD skill has three steps (find the relevant context, confirm the test seams with the user as a human-in-the-loop checkpoint, write the PRD) served by two pieces of reference (what a test seam is, and a literal markdown PRD template).",
      "Branch analysis decides what stays in SKILL.md: 2 PRD has one branch so all its reference belongs inline, whereas domain modeling has two or three branches (update the context.md glossary, write an ADR, or neither) so both templates move out into separate markdown files behind context pointers — \"external references\" bundled with the skill.",
      "Leading words are the talk's central technique: pack meaning into a short phrase such as \"vertical slice\" (instead of \"don't code layer by layer\") to trigger the agent's priors, repeat it consistently through the skill, and verify it worked by watching the phrase come back in the reasoning traces and thinking tokens.",
      "Agents shortchange legwork on early steps: in every plan mode implementation he has tried, \"ask clarifying questions\" gets a token effort because the agent can see the real goal is producing a plan. His fix is to split the phases into separate skills — grill with docs, then 2 PRD — so the agent only ever sees one step at a time.",
      "Pruning failure modes behind massive skills: repetition (every part should have a single source of truth, including across reference material), sediment (shared markdown everyone adds to and nobody feels brave enough to delete), and no-ops — e.g. a paragraph telling the agent to write a long detailed commit message that it would write anyway if you deleted the paragraph."
    ],
    "takeaways": [
      "Make the invocation mode an explicit design decision per skill rather than defaulting to model-invoked for flexibility; if you can't tolerate the unpredictability of the agent ignoring a pointer, ship it user-invoked and accept the cognitive load instead of building evals for trigger behaviour.",
      "Write skills as steps plus reference, then audit the branches: any reference material used by only some branches moves out of SKILL.md into a separate file behind a one-line context pointer.",
      "Replace verbose behavioural instructions with consistent leading words, and check the reasoning traces for the phrase to confirm the steering landed.",
      "When a step isn't getting enough effort, split it into its own skill so the future phase is hidden from the agent.",
      "Run a deletion test over every paragraph — if removing it wouldn't change the agent's behaviour, it's a no-op; also hunt duplication and sediment, which is how his skills stay small."
    ],
    "topics": [
      "agents",
      "skills",
      "context-engineering",
      "prompt-engineering",
      "agent-tooling",
      "planning",
      "documentation"
    ],
    "tools": [
      "Matt Pocock skills (his skills repo)",
      "superpowers (skills repo)",
      "writing great skills (skill)",
      "2 PRD (skill)",
      "domain modeling (skill)",
      "grill with docs (skill)",
      "grill me (skill)",
      "SKILL.md",
      "plan mode",
      "architectural decision records (ADRs)",
      "aihero.dev",
      "AI Engineer World's Fair"
    ],
    "quotes": [
      {
        "text": "Just one more skill, bro. That's kind of seems like what we're saying.",
        "at": "01:31",
        "url": "https://www.youtube.com/watch?v=UNzCG3lw6O0&t=91s"
      },
      {
        "text": "every time you have a model invoked skill, it basically you get a cost in unpredictability. Because every time you have a context pointer pointing from one resource to another, the model may just choose not to follow it",
        "at": "06:36",
        "url": "https://www.youtube.com/watch?v=UNzCG3lw6O0&t=396s"
      },
      {
        "text": "English is a pretty wide API in terms of different functions you can call, different things you can experiment with, and there are many leading word candidates out there.",
        "at": "14:45",
        "url": "https://www.youtube.com/watch?v=UNzCG3lw6O0&t=885s"
      },
      {
        "text": "Massive skills are usually a kind of symptom of something else going wrong.",
        "at": "16:59",
        "url": "https://www.youtube.com/watch?v=UNzCG3lw6O0&t=1019s"
      }
    ],
    "words": 4801
  },
  "summary_url": "/#UNzCG3lw6O0",
  "transcript": {
    "html": "/transcripts/UNzCG3lw6O0.html",
    "txt": "/transcripts/UNzCG3lw6O0.txt",
    "vtt": "/transcripts/UNzCG3lw6O0.vtt"
  }
}