From Sidebar to Sub-Agents

A Live, Hands-On Intro to Building with AI Agents

Kyle Hoehns  ·  Source Allies

About Your Speaker

Kyle Hoehns

Staff Software Engineering Consultant · Source Allies

  • 15+ years shipping complex, production software.
  • Backend roots in Java & Go — scalable, efficient systems across many industries.
  • Firm believer in not taking myself too seriously.
Kyle Hoehns speaking at a podium

LIVE CODING AHEAD

First, check the weather

status.claude.com githubstatus.com

Level Up

LEVEL 0 / 6

We start from nothing

Blank repo. One trivial endpoint. Zero AI.

Demo: this is our baseline.

LEVEL 1 / 6  ·  GITHUB COPILOT  ·  HAIKU

AI as a smarter search box

Ask a question, paste a snippet.

Watch: it answers, but your hands still do all the work.

LEVEL 2 / 6  ·  GITHUB COPILOT  ·  HAIKU

Hands move from your keyboard to the assistant's

Describe the intent; it makes the edit.

Watch: you stop typing code and start directing it.

LEVEL 3 / 6  ·  SWITCH TO CLAUDE CODE  ·  SONNET

Give it the terminal

It adds persistence, runs the build, and fixes its own errors.

Watch: the self-correction loop. (Gotcha next.)

Gotcha: the Maven reflex

  • What bit us: on a Gradle project, the agent kept reaching for Maven.
  • The fix: an AGENTS.md with project context.
  • Lesson: give agents an AGENTS.md with what they need every interaction — build & test commands, how you write tests, version gotchas (“don't use Java 21 features”). Capture what they get wrong, not niche trivia.
  • Also: the standards are still settling — tooling isn't uniform yet.

LEVEL 4 / 6  ·  BACK TO HAIKU  ·  ON PURPOSE

Teach it your standards once

A custom skill auto-triggers and applies your conventions.

Watch: it picks the right imports without being told.

Gotcha: stale training vs. a breaking change

  • What bit us: Spring Boot 4 moved Jackson to tools.jackson and relocated @AutoConfigureMockMvc. A fast model confidently used the old imports.
  • The fix: the skill carries the current facts, closing the gap.
  • Lesson: skills inject knowledge the model's training doesn't have.
  • Bonus: with the stack facts in the skill, cheap Haiku produced the same correct tests as Sonnet. Routing down is viable when context is good.

LEVEL 5 / 6  ·  SONNET

Let the build hold the line

Quality gates — coverage and formatting — fail the build until the agent complies.

Watch: the same change goes red, and the agent writes the tests itself.

Guardrails turn intent into enforcement

Without guardrails

  • Ask for a feature — it ships the feature, nothing more.
  • No tests, no formatting pass — nothing told it to.
  • The agent isn't lazy; it just can't see your standards.

With guardrails

  • Same prompt — ./gradlew build goes red on the 80% coverage gate.
  • It reads the failure and writes the tests to get green.
  • Coverage, formatting, lint — the build enforces them, not you.

A failing build is the clearest spec you can hand an agent — enforce it, don't hope for it.

From doing to delegating

No vibe coding: you're in the driver's seat

Spec firstWrite the spec before any code gets typed.
Bounded tasksIndependent, reviewable chunks — the unit you can hand off.
Define doneThe agent executes; you decide what "done" means.

Spec it, scope it, define done — that's what makes it safe to hand off.

LEVEL 6 / 6  ·  SONNET

Your first direct reports

A skill orchestrates a team to build a feature — a four-wide review + docs fan-out.

Watch: the parent delegates, collects, and applies fixes.

Zooming out

It all comes down to the context window

Main thread — your context windowkeep it high-signal
the plan the files to touch a green diff ship it
↓ delegate ↑ summary ↓ delegate ↑ summary ↓ delegate ↑ summary
sub-agent · explore
read 40 filesgrepdead endbacktracktrace imports
sub-agent · build
write coderun buildstack traceretryfix
sub-agent · review
read the diffrun checksfalse alarmrechecknotes

Managing this window is the real skill now — “context engineering.” Sub-agents are firewalls: each floods its own window with noise, hands back only signal.

Skill or agent?

Skill = a recipe

  • Loads into your context window.
  • Teaches HOW — a procedure, your conventions, fresh facts.
  • Uses the tools you already have.
  • Best for: reusable expertise any agent should apply.

Agent = a coworker

  • Spawned as a sub-agent — its own context window, tools, and model.
  • Isolates WORK — noise, big or parallel tasks.
  • Scoped tools — least privilege by role.
  • Best for: work that floods your context or fans out.

A skill changes behavior; a sub-agent protects context — and they compose. Stack them and one command can run your whole pipeline.

Kick it off, go to lunch

◆ ship-feature one run on a ticket
  • ★ You leadplan it, then kick it off
  • read the ticketJira or GitHub
  • planADRs & a checked plan
  • ↓ “ship it” — your last keystroke
  • 🤖 Agent runs solothe rest is automatic — go to lunch 🍔
  • build the featurein a worktree, a team fans out:
    developer tester reviewer ×3 doc-writer 🔒 tests · coverage · format
  • shipcommit · push · open the PR
  • adversarial review ↻PR bots → auto-address → re-run
  • notify youback from lunch to a green PR

Generation is cheap. Review is the bottleneck.

  • The flip: writing code is nearly free now — the scarce thing is trusting what comes back.
  • The evidence: GitHub has run 60M+ Copilot code reviews; AI-heavy teams merge far more code, but review time balloons — even METR couldn't measure a clean speedup in 2026.
  • The answer: ship-feature spends most of its steps on review — the gates, three scoped reviewers, and the bots on the PR.

Your job moves up the stack: delegate, review, own.

An empty project became a team of agents — and you know how to start.

Start small: pick one bounded task, let the assistant draft it, you review.

Thanks for hanging out!

QR code to github.com/kylehoehns/dugout
Fork the repo github.com/kylehoehns/dugout — walk every level yourself
LinkedIn QR code for Kyle Hoehns
Let's connect linkedin.com/in/kylehoehns