Oslo Vibe Coding

Session 05 / AI-native engineering

Spec-Driven
Development
in the AI age.

When implementation is abundant, a clear specification becomes the shared contract.

Oslo Vibe Coding

When implementation gets cheap, ambiguity gets expensive.

Less time writing codeMore need for clear intent
Oslo Vibe Coding

Vibe coding and SDD are two gears.

ExploreFast, disposable, reversible
CommitShared, durable, consequential
Oslo Vibe Coding

The difference is where decisions happen.

Vibe coding

Decide inside the loop

  1. 01IdeaRegistration app
  2. 02PromptDescribe it
  3. 03GenerateGet code
  4. 04InspectFind gaps
  5. 05Re-promptChange direction
  6. 06ShipWhen it feels ready

Spec-driven

Decide before the build

  1. 01IntentOutcome + users
  2. 02SpecifyRules + limits
  3. 03ApproveReview decisions
  4. 04PlanDesign + tasks
  5. 05ImplementGenerate code
  6. 06VerifyProve behavior
Oslo Vibe Coding

A spec is a shared contract for five decisions.

Example / Community event registration

  1. Who has the problem?Attendees and event organizers
  2. What outcome do they need?Fill seats without spreadsheet chaos
  3. What must the system do?Confirm 100 people, then start a waitlist
  4. What must it never do?Overbook or accept duplicate email addresses
  5. How will we know it works?Every acceptance scenario passes
Oslo Vibe Coding

Decisions become artifacts before code.

01ConstitutionPrinciples
02SpecifyWhat + why
03ClarifyUnknowns
04PlanHow
05TasksSequence
06ImplementCode
07ValidateEvidence
Oslo Vibe Coding

Watch ambiguity collapse.

“Build an event registration app.”
CapacityStop at 100 confirmed guests
OverflowStart a first-in waitlist
IdentityBlock duplicate email addresses
FeedbackShow status immediately
Oslo Vibe Coding

Acceptance criteria turn intent into evidence.

Given

100 people are confirmed

When

A new person registers

Then

They join the waitlist

Oslo Vibe Coding

Keep the agent inside reviewable checkpoints.

Intent
Design
Build
Proof
Human
Define outcome
Approve plan
Review changes
Accept result
Agent
Draft spec
Propose plan
Implement tasks
Run checks
Evidence
Open questions
Architecture
Diffs
Tests + review
Oslo Vibe Coding

Three tools. Three different bets.

ToolCore betBest fit
KiroSpecs live inside the development environmentGuided feature work
Spec KitAn open artifact workflow can work across agentsTeams that want portability
TesslThe specification can become the sourceHigher automation experiments
Oslo Vibe Coding

How strongly should the spec govern code?

Level 1

Spec-first

Write the spec before implementation.

Level 2

Spec-anchored

Keep specification and code aligned as both evolve.

Level 3

Spec-as-source

Humans change the spec; the system maintains the code.

Oslo Vibe Coding

Promising evidence. Not settled evidence.

73%

Fewer security defects reported

A machine-readable security constitution constrained AI-generated banking services.

One case study / preprint
128

Agent runs evaluated

Repository discovery hooks reduced context blindness and improved benchmark results.

Early evaluation / preprint
Oslo Vibe Coding

A spec can still create false confidence.

Failure 01

Wrong intent

A detailed specification can precisely describe the wrong product.

Failure 02

Stale context

The document drifts away from the code, users, or constraints.

Failure 03

No verification

Generated code looks complete without proving the behavior.

Oslo Vibe Coding

Match the spec to the cost of being wrong.

Low consequence

Prompt

Tiny, reversible experiment with no important data.

Shared feature

Lightweight spec

Users, data, several decisions, or team handoffs.

High consequence

Detailed spec + gates

Payments, privacy, security, or irreversible actions.

Oslo Vibe Coding

Before the next agent run

Write five lines.
Then write code.

ProblemUserOutcomeConstraintsDone