Big Sky Dev Conf · 2026

Agentic Engineering
for JVM Developers

Thomas Schilling tschuehly.de Montana · July 2026
Thomas Schilling
JVM BUILDER · PRODUCT FOUNDER · SPEAKER
Thomas Schilling
@tschuehly
Stuttgart · Germany
LinkedIn QR code
LET'S CONNECTLinkedIn
01
EmbabelJVM agent framework
02
PhotoQuestSpring Boot · Kotlin · HTMX
03
Spring ViewComponentOpen source
04
Spring I/O · JavaZone · DevoxxConference speaker
The acceleration
DEC 29 → JUN 30
PhotoQuest commit velocity from December 29, 2025 through June 30, 2026
3,200+commits
1,900+sessions
100+prompts / day
12×commit velocity

Coding agents let you move faster.
Agentic engineering helps you ship with confidence.

MY JOURNEY THROUGH FOUR LEVELS OF AGENTIC ENGINEERING
pair programming
tell - watch - steer
plan mode
what to do · how to do it
spec-driven
behavior · user interaction
FAILURE STATE
big specs
12 user stories → one session
sliced loops
1–3 stories per session
three parts of agentic engineering
HUMAN ATTENTION
ALIGNMENT
IMPLEMENTATION
REVIEW
certainty picks the level
certainty · scope · complexity
LARGE · COMPLEXSMALL · SIMPLE
PAIRprototype · learn
PLANsmall · known change
SPECbehavior · explicit
NEED CERTAINTY? ALIGN FIRST.
SLICED LOOPSlarge · known change
LOW CERTAINTYHIGH CERTAINTY
ALIGNMENT GRILL WITH DOCS Matt Pocock · aihero.dev
grill with docs
HUMAN
🧠
“I want to do…”
AGENT
🤖
repository exploration
focused questions
decision
SHARED UNDERSTANDING
grill with docs
HUMAN
🧠
“Build the Ranking Game”
AGENT
🤖
repository exploration
QUESTION Where does the manager find the Ranking Game?
DECISION Wedding manager ≠ PhotoQuest admin
SHARED LANGUAGEGuest · Manager · Admin
Decisions That Outlive the Session
TEMPORARY GRILLING SESSION
YOU🧠
AGENT🤖
shared understanding
PERSIST
ARCHITECTURE DECISION RECORDS decisionreasonrejected option
SHARED DOMAIN LANGUAGE same termsame meaninghuman ↔ agent
FUTURE SESSION 01ADRDOMAIN LANGUAGE
FUTURE SESSION 02ADRDOMAIN LANGUAGE
FUTURE SESSION NADRDOMAIN LANGUAGE
KNOWLEDGE COMPOUNDS
IMPLEMENTATION ENGINEER THE ENVIRONMENT FEEDBACK · CONTEXT · ENFORCEMENT
one compiled toolchain
Kotlintypes
jOOQqueries
KTEtemplates
every layer
compiles
milliseconds— the fastest feedback
catcheswhat the agent can't see
your stack is your advantage
onboard every fresh session
FRESH SESSION AGENT NO PRIOR CONTEXT
READS AT START
AGENTS.md / CLAUDE.md REPOSITORY ONBOARDING
EVERY SESSION BUILD · TEST ARCHITECTURE RULES
POINT TO DETAILS MULTI-INSTANCE RULE → AdvisoryLock.kt
WHEN RELEVANT
AdvisoryLock.kt
/** * Coordinates work across app / * Spring Boot instances. * * Same business key → * one lock holder. * * Database-backed coordination. */ withLock(businessKey) { ... }
reload expertise at the moment of action
AGENTS.md always-on guidance attention drifts
TASK NEEDS EXPERTISE
SKILL fresh instructions loaded on demand
THE RIGHT CONTEXT · WHEN THE ACTION STARTS
JVM skills should add new knowledge
expert-authored production practices
GENERAL SKILLS Spring Boot 101 the model already knows
JVMSKILLS.COM
deep JVM knowledge
built by JVM experts you can trust
QR code for jvmskills.com
TASK NEEDS MULTISET
JVM SKILL jOOQ skill
LOADS ONE TOPIC knowledge/multiset.md
ENTERS CONTEXT expert context
give agents JVM tools
shell search → semantic tools
CURRENT shell + search rg → edit → compile many round trips
INTELLIJ MCP semantic rename rename_refactoring one semantic operation
JavaDoc Central
current documentation beats stale model memory
MODEL MEMORY · OUTDATED
http.authorizeRequests()
    .antMatchers("/admin/**").hasRole("ADMIN")
    .anyRequest().permitAll()
    .and()
MANUAL FALLBACK source JAR unzip · search docs
JAVADOC CENTRAL MCP 1–3 tool calls current documentation
SPRING SECURITY 7 · KOTLIN DSL
authorizeHttpRequests {
    authorize("/admin/**",
        hasRole("ADMIN"))
}
turn failures into guardrails
Kotlin compiled · Spring failed at runtime
1 · RUNTIME FAILURE TemplateInputException missing @ResponseBody framework convention escaped compilation
2 · CUSTOM INSPECTION MissingResponseBody checks every controller the lesson becomes executable
3 · BUILD GATE [MissingResponseBody] BUILD FAILED the mistake cannot continue
PAIR FIRSTDETERMINISTIC GUARDRAILTHEN AUTOMATE
better code, one loop at a time
FRESH CONTEXT JUDGES EVERY LOOP
IMPLEMENT SESSIONTDD WORKFLOW
RED
TEST
IMPLEMENT GREEN
TEST
REVIEW BOARDRUN 1 … N
SPEC AGENTOPUS
SECURITY AGENTFABLE
TEST AGENTGPT
FINDINGS → RED
VERIFIED
NEXT UNITFRESH SESSION
different models, different blind spots
ONE EXPERIMENT · SAME BRANCH · SAME PROMPT
CLAUDE CODE concurrency + state
  • timer hangs
  • guest redirect
  • budget race
CODEX authorization + security
  • manager controls exposed
  • script injection
  • budget race
REVIEW FOCUS HUMAN JUDGMENT EVIDENCE · RISK · ATTENTION

the loop delivered

12days
204commits
+45,745added
−59,219deleted

good code.

the wall

my plan: review every line

+9days
115commits

just re-slicing the output for review

no confidence to ship. abandoned.

the lifecycle of a software project years, compressed into days
good at code easy to createa LOT of code
CONTRACTdefines correct
TESTchecks behavior
EVIDENCEmakes reviewable
verification-report.html
PR #96

STORY VERIFICATIONONBOARDING-18POST-PURCHASE ACQUISITION SURVEY

VERIFIED
01BEHAVIOR CONTRACTSPEC
02EXECUTABLE TESTPASSED
03VISUAL EVIDENCE2 SCREENSHOTS
verification-report.html
PR #96

STORY VERIFICATIONONBOARDING-18POST-PURCHASE ACQUISITION SURVEY

VERIFIED
01BEHAVIOR CONTRACTSPEC
ONBOARDING-18 · POST-PURCHASE SURVEY

“How did you hear about PhotoQuest?”

CONTRACTPROOF
TRIGGERAfter paymentSurvey is visible
ACTIONSelect a sourceAnswer is stored · Thank-you appears
verification-report.html
PR #96

STORY VERIFICATIONONBOARDING-18POST-PURCHASE ACQUISITION SURVEY

VERIFIED
02EXECUTABLE TESTPASSED
@Story("ONBOARDING-18")
@Test
fun `asks once after purchase`() {
    openPaidOrderReview()
    survey.shouldBeVisible()

    choose(INSTAGRAM_TIKTOK)
    answer.shouldBeSaved()
    thankYou.shouldBeVisible()

    reload()
    survey.shouldBeHidden()
}
verification-report.html
PR #96

STORY VERIFICATIONONBOARDING-18POST-PURCHASE ACQUISITION SURVEY

VERIFIED
03VISUAL EVIDENCE2 SCREENSHOTS
TRIGGERAFTER PAYMENTSURVEY VISIBLE
PhotoQuest acquisition survey before an answer
ACTIONAFTER ANSWERSTORED + THANK-YOU VISIBLE
PhotoQuest acquisition survey after an answer

match judgment and verification to the task

HIGHLOW
HUMAN JUDGMENT
SYSTEM DESIGN
AUTHORIZATION
DOC UPDATE
PATTERNED CRUD
AGENT VERIFICATION
LOWHIGH
01 Align before the agent builds.
02 Build through verified feedback loops.
03 Turn behavior into
reviewable evidence.
Talk resources QR code

@tschuehly
tschuehly.de