{
  "video": {
    "id": "SQMCtZX3trg",
    "title": "The Dark Arts of Skill Engineering — Paul Bakaus, Renaissance Geek (Impeccable)",
    "duration": 3893,
    "upload_date": null,
    "channel": "AI Engineer",
    "source": "AI Engineer",
    "event_format": "In person"
  },
  "analysis": {
    "video_id": "SQMCtZX3trg",
    "title": "The Dark Arts of Skill Engineering — Paul Bakaus, Renaissance Geek (Impeccable)",
    "one_liner": "Paul Bakaus, author of the open-source Impeccable design skill, argues that a skill is not a packaged prompt but a harness extension, and walks through nine concrete techniques — adversarial blind sub-agents, anti-attractor seeds, internal routing, cross-session memory, scripts that emit instructions on stdout, edit hooks, browser live-wiring, per-harness compilation and unskippable gates — for making skills behave across models.",
    "summary": "Bakaus built Impeccable after finding that Anthropic's front-end design skill — ~55 lines of named bans, no scripts, no routing, pure prose — couldn't hold a model off its defaults, because a ban just relocates the model to the next cluster in latent space (purple gradients from Tailwind gave way to 'claude beige'). His thesis: prompting is the starter level, harness engineering is the destination — a skill should be treated like MCP, an extension to whatever harness the user is in, combining prose with scripts, hooks, sub-agents and background tasks. He demos a critique command that spawns two mutually blind sub-agents (a design-director LLM and a deterministic design linter) synthesized by the main thread, and a 'live mode' that wires the harness's in-app browser to the chat thread via a local SSE poller whose exit message wakes the model. The last third is about shipping to strangers: harnesses differ on sub-agent permissions, ask-user tools, background-task wakeups and hook syntax, and every model is overfitted differently, so Impeccable compiles harness- and model-specific builds and every line in it is ablation-tested.",
    "key_points": [
      "Bans over-apply and relocate rather than diverge: telling a model not to use Inter just moves it to the next font in its cluster. 'The median is the model's gravity' — 250 lines of crafted prose won't move it. (He notes he caused the same problem once before: jQuery UI's default orange theme turned the web orange, as Tailwind's default later gave everyone purple gradients.)",
      "Impeccable's critique spawns two sub-agents blind to each other — one acting as a design director using browser tools, one running a deterministic design linter plus browser evidence — because a single thread rates a beautiful page 'bad' when the linter reports 500 issues, and an empty page 'great' when it reports none. The main thread synthesizes both.",
      "Codex will never spawn sub-agents unless the user explicitly grants it, so a distributed skill must instruct the model to stop and ask; and because Codex takes the easy route whenever it can get away with it, the skill must say that running without sub-agents means admitting to the user it is a degraded experience — 'codex hates that'.",
      "Three anti-attractor techniques for forcing divergence: (1) make the model name its top three picks then throw them away, repeated; (2) generate ~100 candidates from an unexpected creative seed and have a context-free sub-agent re-rank them (he seeded a 100-shader library, Radiant Shaders, with 'what would Rihanna look like as a shader?'); (3) seed from a script — Impeccable's color.js holds 100+ hand-picked primary colors read at project start.",
      "Instructions emitted from a script's stdout are followed far more reliably than the same rule buried in skill prose. Impeccable runs context.mjs on every invocation: it merges product.md and design.md into the session, and when they're missing it returns structured JSON telling the skill exactly what to do; it also handles self-update prompts. The cost is prompt caching — the dynamic shell result can't be cached, though the skill body still is.",
      "Impeccable ships design-lint hooks that install into Claude Code, Cursor, Codex and GitHub Copilot, firing on every edit so users get the skill without remembering to invoke it. Post-tool-use hooks (flag after write, model self-corrects) work for strong models; weaker ones like Composer need a pre-tool-use hook that blocks the write outright. Shipping granular ignore rules — per file, per CSS rule — is mandatory because hooks produce false positives.",
      "'Live mode' wires the harness's in-app browser to the chat thread without MCP: a background poller injects a snippet into the dev server, the page sends an SSE event back, the poller then exits, and its stdout message wakes the model, which generates marked-up CSS variants the user clicks through and accepts in the page.",
      "Harnesses and models diverge in ways that break 'works on my machine' skills: Claude spawns sub-agents programmatically, Codex needs the user, Cursor is agent-chosen; Codex's ask-user tool exists only in plan mode, so it silently infers instead of asking; Claude wakes when a background task finishes but Codex doesn't, so live mode runs as a blocking foreground task there. Model tails differ too — Gemini hover-zooms every image, Codex loves bad letter spacing, extreme border radii and hairline borders, and telling Claude not to letter-space sends it the opposite way — so rules are injected per model rather than shared.",
      "GPT-5 mini is a poor rule follower (it consistently won't load certain MD files or spin up live mode). Codex loves the word 'gate', so Impeccable loads a Codex-specific MD with eight gates it must pass, log the result of each, and is forbidden from compressing — because 'if the gate can be skipped it will be'.",
      "His eval harness (not open source) replicates the Claude Code SDK, Codex and Gemini plus their browser/screenshot tools, uses an LLM playing the user for interactive turns, judges with a mixture-of-experts design judge, and runs 5–10 tests across ~20 niches per model per release, including head-to-head against the front-end design skill. Every rule carries a unique XML identifier so it can be ablated — removed, re-evaluated, restored — and checked with the deterministic detector."
    ],
    "takeaways": [
      "Stop writing skills as one long prose file. Route internally to per-job MD files and switch registers (Impeccable detects brand vs product design, because 'avoid system fonts' is right for a landing page and wrong for product UI), and move hard rules out of prose into scripts whose stdout tells the model exactly what to do next.",
      "Never let a model grade its own work. Spawn two sub-agents blind to each other — one judgement-based, one deterministic — and synthesize in the main thread; the same shape works for code review, security audits, RFC critique and ranking.",
      "Fight convergence with an anti-attractor rather than a ban: a random seed from a script, an unexpected creative seed, a sub-agent re-rank, or forcing the model to discard its top picks.",
      "Pair your skill with an edit hook so it fires passively on every write instead of waiting to be invoked — and ship ignore rules at file and rule granularity from day one.",
      "If you distribute a skill, build for the weakest model and every target harness: test sub-agent permissions, ask-user tools, background-task wakeups and hook syntax per harness, make gates unskippable and logged, and expect to compile per-model builds (npx skills won't honour per-harness directories today)."
    ],
    "topics": [
      "agents",
      "skills",
      "harness-engineering",
      "evals",
      "design",
      "hooks",
      "sub-agents",
      "tooling"
    ],
    "tools": [
      "Impeccable (impeccable.style)",
      "Claude Code",
      "Codex",
      "Cursor",
      "Composer",
      "GitHub Copilot",
      "Gemini",
      "GPT-5 mini",
      "Opus",
      "Sonnet",
      "Grok",
      "Anthropic front-end design skill",
      "Claude Code SDK",
      "Playwright",
      "Tailwind",
      "jQuery UI",
      "Radiant Shaders",
      "MCP",
      "npx skills / skills.sh",
      "ESLint",
      "Apache 2.0"
    ],
    "quotes": [
      {
        "text": "the median is the model's gravity. Even 250 lines of like artisal, crafted, beautiful skill pros cannot change this.",
        "at": "06:13",
        "url": "https://www.youtube.com/watch?v=SQMCtZX3trg&t=373s"
      },
      {
        "text": "if you cannot use sub agents you must say that you are giving the user a degraded experience and codeex hates that",
        "at": "14:28",
        "url": "https://www.youtube.com/watch?v=SQMCtZX3trg&t=868s"
      },
      {
        "text": "if the gate can be skipped it will be",
        "at": "48:33",
        "url": "https://www.youtube.com/watch?v=SQMCtZX3trg&t=2913s"
      },
      {
        "text": "taste is scars and unique and once everybody uses the same taste uh it becomes ubiquitous and then we don't think it's tasteful anymore",
        "at": "56:48",
        "url": "https://www.youtube.com/watch?v=SQMCtZX3trg&t=3408s"
      }
    ],
    "words": 12179
  },
  "summary_url": "/#SQMCtZX3trg",
  "transcript": {
    "html": "/transcripts/SQMCtZX3trg.html",
    "txt": "/transcripts/SQMCtZX3trg.txt",
    "vtt": "/transcripts/SQMCtZX3trg.vtt"
  }
}