Walking Skeleton
The thinnest possible implementation that touches every layer of your architecture end-to-end — minimal and unpolished, but fully functional from user action to data store and back.
What is it?
A walking skeleton is the smallest version of your software that exercises every major architectural component. It’s not feature-rich. It’s not pretty. But it proves that all the pieces of your system can talk to each other: the user interface can send a request to the server, the server can query the database, and the response flows all the way back to the screen.
The term comes from Alistair Cockburn (2004), one of the original signatories of the Agile Manifesto. His insight: before you invest time building features, you should prove that the architecture itself works. If the frontend can’t communicate with the backend, or the backend can’t reach the database, no amount of feature work will save you.
A walking skeleton is not a prototype (which might skip layers to demonstrate an idea). It’s not a minimum viable product (which has enough features to be useful to real users). It’s the bones of the system — no flesh, no skin, but the skeleton is connected and it walks. Everything you build afterward adds muscle and detail to these proven bones.
Building the skeleton first is an act of risk reduction. You surface integration problems — the hardest problems in software — on day one, when they’re cheapest to fix.
In plain terms
A walking skeleton is like doing a dress rehearsal for a play before you’ve built the sets or finished the costumes. The actors walk through every scene on a bare stage, proving the sequence works: entrances, exits, transitions, timing. The rehearsal is rough, but it exposes every structural problem. Once you know the flow works, you can confidently invest in sets, lighting, and costumes.
At a glance
How a walking skeleton connects the layers (click to expand)
graph LR UI[User Interface] -->|sends request| API[API / Server] API -->|queries| DB[Database] DB -->|returns data| API API -->|sends response| UI style UI fill:#4a9ede,color:#fff style API fill:#4a9ede,color:#fff style DB fill:#4a9ede,color:#fffKey: All three nodes are highlighted because all three must work. The skeleton is the thinnest thread connecting them: one request, one query, one response. If any arrow fails, you’ve found an architectural problem before investing in features.
How does it work?
Building a walking skeleton follows a clear pattern: identify every layer, implement the thinnest possible thread through all of them, and verify the thread works end-to-end.
1. Identify the architectural layers
Before building, list every major component your system needs. For a typical web application:
| Layer | Example |
|---|---|
| User interface | A web page in a browser |
| Application logic | A server-side framework handling requests |
| Data access | An ORM or database driver |
| Data storage | A relational database |
| Infrastructure | Hosting, deployment pipeline |
Think of it like...
A plumber testing a new building’s water system. Before installing fancy fixtures, they turn on the water at the main and check: Does water flow through every pipe? Does it reach every floor? Does drainage work? One faucet per floor is enough to prove the system works.
2. Build the thinnest thread
Implement one feature that touches every layer. Not the most important feature, not the most impressive one — the simplest one that exercises the full stack.
For a web application, this might be:
- One database table with one record
- One API endpoint that reads from that table
- One page that displays the result
Example: a walking skeleton for a book catalogue (click to expand)
Database: One table
bookswith columnsid,title. One seeded row:{ id: 1, title: "The Hitchhiker's Guide" }.API: One endpoint
GET /api/books/1that returns{ id: 1, title: "The Hitchhiker's Guide" }.UI: One page at
/books/1that displays “The Hitchhiker’s Guide.”That’s it. No search. No listing. No editing. No styling. But the browser talks to the server, the server talks to the database, and data flows back to the screen. The skeleton walks.
3. Verify end-to-end
Run the skeleton. Click the button (or load the page). Does data appear? If yes, your architecture is validated. If not, you’ve found the problem early — before you’ve built dozens of features on top of a broken foundation.
Common problems a walking skeleton reveals:
- Framework configuration issues (routing, middleware)
- Database connection problems
- Authentication/authorisation blocking data access
- Build or deployment pipeline failures
- Environment variable or configuration mismatches
4. Build on the skeleton
Once the skeleton walks, every subsequent feature adds to the proven foundation. Each new feature follows the same path (UI to API to database) but adds complexity: more endpoints, more pages, more data relationships.
| Phase | What you add | What you’re testing |
|---|---|---|
| Skeleton | One feature, full stack | ”Can the layers talk to each other?” |
| Second feature | A similar feature | ”Does the pattern repeat?” |
| Third feature | A different shape of feature | ”Does the architecture handle variety?” |
| Polish | Styling, error handling, edge cases | ”Is it ready for users?” |
Concept to explore
See vertical-slices for how each feature after the skeleton is structured as a complete slice through all layers.
Walking skeleton vs. prototype vs. MVP
| Approach | Layers touched | Feature completeness | Purpose |
|---|---|---|---|
| Prototype | May skip layers (e.g., mock data instead of real database) | May be feature-rich in one area | Test an idea |
| Walking skeleton | All layers, end-to-end | Minimal — one feature | Validate architecture |
| MVP | All layers, end-to-end | Multiple features — enough to be useful | Validate product-market fit |
Concept to explore
See minimum-viable-product for the distinction between validating architecture (skeleton) and validating product value (MVP).
Why do we use it?
Key reasons
1. Early risk elimination. Integration between layers is the hardest part of software development. The skeleton surfaces integration problems on day one, when they cost minutes to fix — not month six, when they cost weeks.
2. Architectural confidence. Once the skeleton walks, you know every subsequent feature has a proven path to follow. You’re adding features to a working system, not hoping separate pieces will eventually fit together.
3. Momentum. A working end-to-end system — even a minimal one — is motivating. You can see something real running from day one. Every addition makes it visibly better.
4. A foundation for iteration. The skeleton gives iterative-development a stable starting point. Without it, early iterations might build on untested assumptions about how layers connect.
When do we use it?
- When starting a new project — the skeleton should be the first thing you build
- When adopting a new technology stack — prove the pieces fit together before building features
- When the system has multiple architectural layers (frontend, backend, database, external services)
- When integration risk is high — the more layers, the more valuable the skeleton
Rule of thumb
If your system has more than one layer (and nearly all systems do), build a walking skeleton first. The time invested is almost always less than the time you’d spend debugging integration issues later.
How can I think about it?
The restaurant soft opening
Before a restaurant’s grand opening, the owner does a soft opening: one table, one chair, one dish on the menu, one waiter, one chef. A real customer walks in, sits down, orders, eats, pays, and leaves. The dining room is bare. The menu has one item. The experience is minimal.
But the entire flow works. If the kitchen can’t get food to the dining room in time, or the payment terminal doesn’t work, the owner discovers it now — not on opening night with 50 guests and a food critic at table four.
- One table, one dish = the skeleton (minimal features, full flow)
- The full menu and decor = features added after the skeleton is proven
- Opening night = production launch
- Discovering the kitchen door is too narrow = the integration problem the skeleton reveals early
The road trip test drive
Before driving cross-country in a newly assembled car, you take it around the block. You don’t test the stereo, the heated seats, or the GPS. You test: does the engine start? Do the brakes work? Does the steering respond? Can it go forward and stop safely?
- The test drive = the walking skeleton (proving the core system works)
- The engine, brakes, steering = architectural layers (server, database, UI)
- The stereo and heated seats = features (added after the car is proven driveable)
- Going around the block = the simplest end-to-end test
- Cross-country = production use with real users
Concepts to explore next
| Concept | What it covers | Status |
|---|---|---|
| vertical-slices | How to scope each feature after the skeleton as a complete slice | complete |
| monolith-architecture | The simplest architecture for a walking skeleton | complete |
| minimum-viable-product | The next milestone after the skeleton: enough features to deliver value | stub |
| continuous-integration | Automated pipeline that keeps the skeleton healthy as features are added | stub |
Some of these cards don't exist yet
They’ll be created as the knowledge system grows. A broken link is a placeholder for future learning, not an error.
Check your understanding
Test yourself (click to expand)
- Explain what a walking skeleton is and why it should be built before features. Use the restaurant or car analogy.
- Name the architectural layers a typical web application skeleton must connect, and describe what the thinnest thread through them looks like.
- Distinguish between a walking skeleton, a prototype, and an MVP. What is each one designed to validate?
- Interpret this scenario: a team builds 20 API endpoints and 15 frontend pages over two months, then tries to connect them. They discover the API response format doesn’t match what the frontend expects. How would a walking skeleton have prevented this?
- Connect the walking skeleton to iterative-development. Why is the skeleton the ideal first iteration of any project?
Where this concept fits
Position in the knowledge graph
graph TD ID[Iterative Development] --> WS[Walking Skeleton] ID --> VS[Vertical Slices] ID --> SDD[Spec-Driven Development] ID --> VC[Vibe Coding] WS -.->|first slice| VS WS -.->|validates| MA[Monolith Architecture] style WS fill:#4a9ede,color:#fffRelated concepts:
- vertical-slices — the skeleton IS the first vertical slice; subsequent slices follow the same end-to-end pattern
- monolith-architecture — the simplest architecture to skeleton; all layers in one codebase
- spec-driven-development — the skeleton’s spec validates that the architecture works before features are specified
Further reading
Resources
- The Walking Skeleton: Your System’s First Heartbeat (Medium) — Clear explanation with diagrams
- Walking Skeleton (RunModule) — Concise definition and key characteristics
- Break Down Silos with a Walking Skeleton (Henrik Jernevad) — How skeletons prevent frontend/backend disconnects
- Alistair Cockburn: Walking Skeleton (C2 Wiki) — The original concept definition
- Applying the Walking Skeleton Approach (Medium) — Practical application in a real project