Builder's playbook GitHub Copilot Real software · real metrics

223 Pull Requests
in 11 Days

The recipe for building real software with AI agents.
Drive a fleet of agents by day, a few deep plans by night. Merge the wins over coffee. ☕
Julien Dubois  ·  github.com/jdubois  ·  julien-dubois.com
GitHub Microsoft

Who am I?

Julien Dubois

Julien Dubois

Principal Manager, Developer Relations at GitHub / Microsoft

Java Champion GitHub / Microsoft JHipster 22k+ AI × code
  • Creator of JHipster · 22,000+ ⭐
  • 200+ international talks (Devoxx, SpringOne, Microsoft Build…)
  • Today: shipping real projects by managing AI agents

💭 The project I never had time to build

I always wanted a real developer UI for Spring Boot.

🔭 The itch

  • Every Spring app is a black box in development
  • Actuator gives you raw JSON, not a console
  • I wanted health, metrics, security and tracing in one embedded UI

🧱 The catch: it's massive

  • ~40 panels, each = backend + frontend + tests
  • Deep integration across a dozen JVM subsystems
  • By hand, one experienced dev: 6.5–8.5 months
I'd shipped a slice of this in JHipster years ago, but only for generated apps. A real console for any Spring Boot app sat on my wishlist for years. Too big to justify, until I stopped writing the code myself.

⚡ Then I did it in 11 days

223
pull requests merged
11
calendar days · v1 in < 2 weeks
~20
PRs merged per day
83k
lines of code shipped
The agents did the scaffolding, the panels and the tests. I did the judgement.

🖥️ What I built: BootUI

A production-grade Spring Boot 4 starter that adds an embedded, local-only developer console to your app.

🧩 Multi-module & deeply integrated

  • 5-module Maven build · Spring Boot 4 / Java 17
  • Actuator, Spring Security, Flyway/Liquibase, Hibernate
  • Micrometer/OTLP, GraalVM, OSV scanning, ArchUnit
  • Maven Central publishing · full CI

🎛️ ~40 feature panels

  • An embedded Vue 3 SPA, packaged in the starter
  • Each panel = endpoints + view + tests
  • Health, metrics, security advisor, vulnerabilities, tracing…
  • The biggest source of structural repetition

📐 The measured facts · v1.0.0

Derived from git history, PR metadata and code metrics, not time-tracking logs.

~264
commits on main
~223
squash-merged PRs (to #239)
~50k
Java lines · ~461 files · ~81 test classes
~52
Vue components · ~40 panels · ~35 e2e specs
~83k
total tracked source lines
~116
test suites (~81 Java + ~35 Playwright)
~5,800
doc lines + a VuePress site
5
Maven modules · 1.0.0 released

👥 One human driver + the Copilot agent (~44 commits), with dependabot, github-actions & one collaborator.

Part 01 · The proof
01

Calculating the performance gains

11 days of agents vs. the honest by-hand estimate.

✅ With AI: the bottom line

Built through a tagged 1.0.0 release by one developer driving the GitHub Copilot coding agent.

~11 days
calendar time, to 1.0.0
~80–110 h
actual human hands-on effort · ≈ 2 intense solo weeks
~20 / day
merged PRs · ~223 in ~11 days

🔍 With AI: the evidence

📈 Velocity

  • ~223 merged PRs / ~10.8 days (~264 commits)
  • Commit clock runs ~05:00 → midnight most days
  • Consistent with parallel async tasks, not continuous typing

🤖 Authorship pattern

  • "Copilot" is a named commit / PR author (~44 commits)
  • Repo ships copilot-instructions.md + per-panel conventions
  • The workflow was explicitly agent-oriented

🚢 Even on release day

  • VuePress docs site + Overview scanner dashboard
  • Token charts, a proxied-Hikari fix, a docs refactor
  • Polish that is itself several days of solo work

🧭 Where the human time went

  • Writing prompts, reviewing & merging ~223 PRs
  • Resolving CI failures (Spring Boot 4, Flyway 11, OTLP)
  • Review-and-orchestrate, not write-every-line

🛠️ Without AI: the honest estimate

One experienced Spring Boot + Vue developer, no AI codegen, through the same polished 1.0.0.

6.5–8.5
months of full-time work · ~28–36 weeks
~1,100–1,450
hours of hands-on effort
~40
feature panels = the dominant cost

🗂️ Without AI: where ~7 months goes

Estimated weeks per phase · one senior developer, no AI codegen.

Estimated work without AI, by phase Project setup and architecture: 1–1.5 weeks. Frontend foundation: 1.5–2 weeks. Core panels: 5–6 weeks. Complex integrations: 12–16 weeks. Safety and security: 1–1.5 weeks. Testing: 3–4 weeks. CI/CD and release: 1–1.5 weeks. Documentation: 2.5–3.5 weeks. Integration and polish: 2–3 weeks. All bars start at zero on the same 0 to 16 week scale. Solid amber reaches the lower estimate; lighter ends extend to the upper estimate. Project setup & architecture 1–1.5 wk Frontend foundation 1.5–2 wk Core panels (~15) 5–6 wk Complex integrations (~20 panels) 12–16 wk Safety & security 1–1.5 wk Testing 3–4 wk CI/CD & release 1–1.5 wk Documentation 2.5–3.5 wk Integration & polish 2–3 wk

Lighter bar ends show the ranges.

Overall estimate~28–36 wk ≈ 6.5–8.5 mo

⚖️ The verdict: with vs. without AI

With AI: project figures. Without AI: a solo-work estimate for the same 1.0.0 release.

Calendar time
Calendar time with and without AI With AI: about 11 days. Without AI: an estimated 6.5 to 8.5 months. Both bars start at zero on a 0 to 9 month scale, using 30-day months. With AI ~11 days Without AI ~6.5–8.5 months
Human effort
Human effort with and without AI With AI: about 80 to 110 hours. Without AI: an estimated 1,100 to 1,450 hours. Both bars start at zero on a 0 to 1,500 hour scale. With AI ~80–110 hours Without AI ~1,100–1,450 hours

Lighter bar ends show the ranges. Calendar scale uses 30-day months.

Throughput

~20 PRs/day, parallel
vs. a few features/week, serial

Human's role

Architect + reviewer
vs. author of every line

40 panels

Near-free to replicate
vs. repetition as the biggest cost

Part 02 · The recipe
02

How to run it yourself

Six ingredients for agentic engineering.

Agentic engineering, not vibe coding

~$2,000 of tokens across the sprint — about $9 per merged PR. That's the cheap part. The real question is when you pay for the code.

🎲 Vibe coding — low up front

  • No specs, no harness: you start shipping immediately
  • You pay in retry loops, and again six months later reverse-engineering code nobody understands
  • That's the maintenance tax — invisible on day one

🏗️ Agentic engineering — pay first

  • Specs, tests and CI cost you real days before the first agent runs
  • They keep your agent iterating toward a solid solution, rather than rushing out an incorrect answer
  • The harness takes real investment up front, but skipping it costs more later
1
Ingredient

Pick the right model for the task

🧠 Workhorse

GPT-5.5 Extra-High reasoning handles most of the work, ~90% of tokens served from cache.

🎯 The tricky parts

Claude Opus 4.8 and Gemini 3.1 Pro. Three strong models, cross-checking each other to find the best fix.

⚡ The easy stuff

A smaller model or "Auto" mode for simple, mechanical tasks. Fast and cheap.

💰 The whole bill

~2.7B
total tokens
~95%
served from cache
120M
fresh input · 15M output
~$2,000
total cost
2
Ingredient

Write the specifications

📜 Technical standards · AGENTS.md

  • Set the conventions once: stack, build, test, style
  • Repository instructions define the rules, not every task's procedure
  • Per-panel conventions so 40 panels come out consistent

🎯 Complete, clear business specifications

  • What to build, where, what "done" looks like
  • Acceptance tests the implementation must pass, even when using a skill
  • Small, self-contained, no hidden dependencies
The spec is the product now. The better the brief, the less you babysit.
3
Ingredient

Build the test harness

✅ A build + test they can run

  • One command runs compile, unit and e2e: green or red
  • Agents run the checks after using skills and tools, before opening a PR
  • No tests = you can't trust the output

🛡️ CI is the trust layer

  • ~116 test suites · ~81 Java + ~35 Playwright
  • CodeQL + e2e gate every PR to main
  • This is what lets you merge ~20 PRs/day safely

📏 Rules, specs and checks—in numbers

The repository foundation for ingredients 2 and 3: instructions, specifications and checks. Skills and code tools complement it.

63
lines of always-on house rules copilot-instructions.md
6
path-scoped rule files 156 lines, glob-attached
2,083
lines of CI 8 workflows · 121 steps
641
test files 536 Java · 105 Playwright

📋 Keep the always-on file short

  • Static — 63 lines sent on every call. You pay for it every time, so it stays short
  • Dynamic — 6 rule files attach only when their glob matches. Quarkus rules never load for a Vue change

📐 Put the detail in the spec

  • 2,670 lines in SPECIFICATION.md — the behaviour contract
  • ~13,700 doc lines total, reviewed in PRs exactly like code
~220 lines of instructions steer 2,083 lines of CI and 641 test files. Keep always-on instructions short; load task-specific details only when needed.
4
Ingredient

Equip your agents

From my recent BootUI sessions: reusable skills for the workflow, Java code intelligence when needed.

📚 Skills: reusable workflows

  • Impeccable — craft beautiful Web designs, fix accessibility issues
  • orchestrate — coordinate advisor audits across sessions
  • agent-merge — PR review, CI and conflict follow-ups
  • bootui-release — a custom skill written specifically to guide a BootUI release

🔎 Java LSP: occasional code intelligence

  • Ask the language server about symbols, not just matching text
  • Used to explore advanced Java modules and inspect code during review
  • The project needs to be indexed by the language server first

Recorded examples, 9 August–8 September 2026, plus the custom release skill; not a claim about the original sprint.

5
Ingredient

Split the work, run agents in parallel

🧩 Make it parallel-ready

  • ~40 near-identical panels = perfect to fan out
  • One task per agent: small scope, clear goal
  • One branch / worktree each, no collisions

🚀 A fleet, not one chat

  • GitHub Copilot App: many agents live on one machine
  • Mobile app: agents in Docker containers, on the go
  • Your throughput isn't your keyboard. It's your briefs.
The whole point is parallelism. Don't babysit one agent. Run ten.

🧑‍✈️ The mindset shift

I didn't open my IDE. I wasn't the developer. I was the manager.

🧑‍✈️ You · the manager
🎛️ Panels
clone the ~40 feature panels
🔌 Integrations
the deep JVM subsystems
🎨 Frontend
the embedded Vue SPA
🏗️ CI & docs
release, tests, VuePress

Many agents in parallel. You brief, review, merge.

You don't type faster. You ship what used to take months.

6
Ingredient · The daily loop

Drive the daily loop

⚡ most of the work: you, driving the fleet
9am11am2pm5pm7pm↻
☕ MergeLand last night's deep plans
Spec & launchBrief tasks, fan out the fleet
DriveReview, merge, re-task, live
DriveMost PRs land by evening
🌙 QueueA few deep plans for the night
↻ Repeat×~11 days → v1.0.0

Day: the engine

Hands-on all day: spec, launch, review, merge, re-task. Most of the ~20 PRs a day land right here.

Evening: hand off

Queue a few deep, long-running plans before you step away.

Night: the bonus

A handful of deep autonomous runs finish by morning. The minority, not the engine.

Let a few deep plans run overnight

The day is the engine. The night is a bonus shift: before you log off, hand a few deep, long-running plans to autonomous agents. These are the big jobs you don't want to babysit, and they land by morning while you're away.
🔌 Deep integration
Security filter chains: 37 rules, wired & tested
long run · 3 PRs
🧪 Test generation
Push coverage across the 116 suites
long run · 2 PRs
♻️ Big refactor
Reshape the Actuator data layer
long run · 2 PRs

Merge the results over coffee

☕ First thing, over coffee

  • Triage the few deep overnight PRs
  • Merge the green ones fast
  • Drop or re-task what didn't land
  • Cherry-pick the good parts of the rest
  • Then start driving the day's fleet

🔎 Review is the real bottleneck

It's not the typing anymore. It's the merging. Make review a fast, trusted ritual you run all day, not a line-by-line slog.

📋 The six ingredients of agentic engineering

1Pick the right model for the task — balance capability, speed and cost.
2Write the specifications — repository rules, scoped tasks and acceptance criteria.
3Build the test harness — runnable tests and CI checks before merge.
4Equip your agents — skills for workflows, tools for code intelligence and execution.
5Split the work, run agents in parallel — one task and branch each; you brief, review and steer.
6Drive the daily loop — drive by day, let a few deep plans run overnight, merge the results over coffee.
If there's one slide to screenshot, this is it.

🧨 Why the multiplier was so large

This codebase is unusually well-suited to AI, for two reasons. Not every project gets 17–23×.

🔁 Massive repetition

~40 structurally similar panels an agent clones cheaply. By hand, that's the most expensive part.

🔌 Well-documented technologies

Many Spring subsystems, each with a focused integration. Their extensive documentation and examples gave agents reliable material to research and build on, instead of working from guesswork.

⚠️ Watch out for

Scope creep

"Build the whole thing" makes an agent wander.
Fix: one tight goal per task.

No tests, no trust

You can't read every line of 223 PRs.
Fix: harness first, green build before merge.

Giant PRs & review fatigue

A 2,000-line PR is impossible to review well.
Fix: small, reviewable chunks; pace yourself.

Wrong model

A weak model fails the hard tasks; a strong one is slow and costly.
Fix: match the model to the job.
Most failed runs aren't the agent's fault. They're a briefing problem.
Part 03 · The GitHub advantage
03

The GitHub advantage

The platform, the models, and the economics.

Copilot writes the code. The platform around it helps you ship it.

🔗 One loop, one platform

The brief, the agent, the review and the release stay connected.

🎫 Issue & board

The brief lives with the code: scope, priorities and acceptance criteria.

🤖 Copilot agent

CLI, app or cloud: work from task context and repository instructions.

🔀 Pull request

The unit of review: diff, evidence and conversation in one place.

⚙️ Actions + security

Build, tests, CodeQL and compatibility checks give feedback.

🚢 Merge & release

Required checks, review approvals and release workflows.

BootUI Actions · Pull requests

☁️ Cloud agents extend the workspace

A historical snapshot of 300 merged BootUI PRs, from the AI coding presentation.

61% me · 20% Dependabot · 19% Copilot. Authorship does not measure human involvement.

📱 Assign an issue, close the laptop

  • Assign an issue to Copilot, including from mobile
  • The cloud agent works in its own environment
  • Review its PR, checks and proposed changes

🌱 Keep the maintenance queue moving

  • Dependabot proposes dependency updates
  • Delegate failed upgrades or follow-up fixes to an agent
  • Keep human attention on design and review

Original 300-PR snapshot · date not recorded; not the v1.0.0 sprint.

🛡️ Review that scales with the output

More code per day needs more feedback per day. Use the platform's verification layers.

🔍 CodeQL & review

  • Analyze both Java and JavaScript changes
  • Bring findings into the PR conversation
  • Ask the agent to address review feedback

📦 Supply chain

  • Dependabot for updates and known vulnerabilities
  • Secret scanning and push protection for supported credential patterns
  • Pinned action SHAs and dependency guardrails

🧱 Rules of the road

  • Required checks and review approvals
  • CODEOWNERS and PR templates for agent changes too
  • PR conversations and logs for traceability

GitHub security documentation · availability and enforcement depend on configuration.

💰 Token economics: what Copilot meters

📥 Fresh input

The context sent to the model, priced at its input rate.

♻️ Cached input

Reused context, priced at a separate, lower rate.

🗃️ Cache writes

Some models also charge to populate the cache.

📤 Output

Generated tokens, priced at the model's output rate.

Count the whole workflow: draft, review, revision, retries and escalation.

GitHub model pricing · 7 September 2026 · legacy annual request-based plans differ.

Quiz: a novel in, a paragraph out

A request reads 100,000 cached input tokens and writes 2,000 output tokens.
Which part costs more?

GPT-5.5 default tier: cached input $0.50 / million; output $30 / million.

A

The input.
It's 50 times larger!

B

The output.

C

They cost the same.

Vote A, B or C · then advance to reveal

B — The output costs more

Cached input: $0.05. Output: $0.06.

Reading the novel was cheaper than writing the book report.

Quiz: the cheaper model trap

You have 100,000 tokens of reusable context.
Another model has half the fresh-input price. Is switching cheaper?

Current: $5 / million fresh, $0.50 cached. Alternative: $2.50 fresh.
Assume a full cache hit if you stay, no matching cache if you switch. Input cost only.

A

Yes.
Half the price!

B

No. The next input bill
is five times higher.

C

Same context,
same cost.

Vote A, B or C · then advance to reveal

B — Stay: $0.05. Switch: $0.25.

The new model cannot reuse the old model's cached computation.

You picked the cheaper model. Your input bill went up fivefold.

♻️ How the token cache works

The model can reuse the processing of an identical prompt prefix — the unchanged beginning of its input. It still processes new input and generates a new answer.

What changes?Effect on cache reuse
Append a message or tool resultThe unchanged prefix can still hit; the new suffix needs processing.
Switch the modelThe old model's cached computation cannot transfer to the new one.
Edit AGENTS.md or instructionsOnce reloaded into the prompt, changed content breaks the match from that point onward.
Change tools or compact historyIf the rendered prefix changes, later cached context no longer matches.
Wait too long / cache is evictedEven identical input can miss. Retention and routing depend on the provider.

OpenAI prompt caching · Claude prompt caching · mechanics vary by model and integration.

Quiz: 90% cached. How much cheaper?

A request has 100,000 input tokens and 10,000 output tokens.
Cache hits cover 90% of the input. How much does the total bill fall?

GPT-5.5 default tier, per million tokens: fresh input $5; cached input $0.50; output $30.

A

90%
Obviously.

B

81%
I spotted the trick.

C

About 51%
There's another trick.

Vote A, B or C · then advance to reveal

C — About 51% off the total

Input: $0.500 → $0.095. Output stays $0.300.
Total: $0.800 → $0.395.

The reading got cheaper. The talking didn't.

♻️ A cache hit changes the price of context

Illustration: GPT-5.5 default tier · 100k input + 10k output per call.

USD per callNo cache hits90% input cached
Fresh input · $5 / million$0.500$0.050
Cached input · $0.50 / million$0.000$0.045
Output · $30 / million$0.300$0.300
Total before any Auto discount$0.800$0.395

Keep stable instructions concise. Avoid gratuitous context churn.

GitHub rates, 7 September 2026 · illustrative hit rate, not a BootUI measurement.

🎯 Auto: let GitHub route the task

🧠 Match the work to the model

  • Evaluate task complexity and reasoning needs
  • Consider model health and availability
  • Respect your plan and administrator policies

♻️ Cache-aware routing

  • Route along natural cache boundaries
  • Preserve prompt-cache reuse where possible
  • See which model handled the response

In the CLI: /model → Auto. A suitable model, not a promise of the cheapest run.

Auto model selection · CLI routing and billing · 7 September 2026.

🐉 HydraFusion: orchestrate the models

Research preview announced 4 September 2026.

⚡ Single

One selected model handles the task directly.

Avoid extra calls.

🪜 Cascade

An efficient model tries first. A quality gate can escalate to a stronger model.

Spend more when needed.

🔍 Critique

Draft, get an independent cross-family review, then revise once.

Pay for a second perspective.

GitHub: Project HydraFusion · preview behavior and availability may change.

🖥️ Build with GitHub Copilot App

The app we've been using throughout the BootUI project.

Your workspace for AI coding agents

  • Plan tasks and run agents in parallel, in isolated worktrees
  • Let agents edit code and run tests; inspect their diffs and review PRs
  • Keep planning, implementation and maintenance in one place
Scan to download GitHub Copilot App from its official GitHub page
Download GitHub Copilot App
One more thing…

BootUI isn't just my case study

A local developer console for Spring Boot 4 (MVC & WebFlux) and Quarkus.
Add the matching dependency, run in development mode, then open /bootui.

🔎 See inside your app

  • HTTP routes, beans, config, caches, SQL traces, messaging and JVM diagnostics
  • New bootui CLI: query the same diagnostics from scripts or a terminal

🩺 Advisors that tell you what's wrong

  • Security, memory, databases, Hibernate, REST, architecture and native-image readiness
  • Live CVE checks against the OSV feed for your actual dependency tree

🤖 And it makes your agents smarter

  • Opt-in MCP server: agents read runtime diagnostics and run advisors
  • Pairs with Coffilot in the Copilot App to build, run and scan your app
<!-- Spring Boot MVC starter · use only in development --> <dependency> <groupId>com.julien-dubois.bootui</groupId> <artifactId>bootui-spring-boot-starter</artifactId> <version>1.16.0</version> </dependency>
That's the recipe.

Now go build. 🚀

Drive by day · a few deep plans by night · merge as you go.
Write the specs, give them tests, run them wide, and ship what used to take months.
🌐 julien-dubois.com  ·  𝕏 @juliendubois  ·  🐙 github.com/jdubois  ·  📦 github.com/jdubois/boot-ui