- Reveal.js presentation on Skills and Subagents pattern - Nix flake with Caddy-based HTTP server and process-compose orchestration - ADRs documenting architectural decisions - Skills for AI implementation guidance - Full Scott Scoble author attribution in README
7.5 KiB
ADR 003: Demo Implementation Strategy
Status
Accepted
Context
The presentation "Beyond the Prompt: Lessons from Building with Claude Code" needs to demonstrate:
- How to use ADRs to guide AI-assisted development
- Effective prompt engineering and task decomposition
- Iterative refinement with architectural constraints
- Real-world workflow patterns with Claude Code
The demo must be:
- Authentic and realistic
- Reproducible for attendees
- Illustrative of actual development patterns
- Version-controlled and sharable
Decision
The demo IS the development conversation itself - specifically, the conversation that builds this presentation system using ADRs to guide Claude Code.
The demo consists of:
- The ADRs that define the architecture (stored in
docs/adr/) - The conversation transcript showing iterative development
- The resulting implementation (flake, presentation, etc.)
Rationale
Why Conversation-as-Demo
Authenticity: Shows real Claude Code usage, not simulation
- Actual tool interactions
- Real decision-making process
- Genuine iterative refinement
- True constraint handling
Educational Value: Demonstrates the meta-pattern
- ADRs provide clear boundaries and context
- Constraints drive better design (e.g., "no Python", "use nixpkgs")
- Iterative improvement based on feedback
- Architecture emerges from conversation
Reproducibility: Attendees can recreate the pattern
- ADRs are templates for their own projects
- Conversation style is learnable
- Git history shows evolution
- Implementation validates the approach
Alternative Approaches Considered
1. Scripted Demo with Simulated Output
- Pros: Predictable, rehearsable, no live risk
- Cons: Inauthentic, doesn't show real tool, feels staged
- Verdict: Misses the point of "beyond the prompt"
2. Live Coding Session
- Pros: Shows real tool, spontaneous
- Cons: Unpredictable, time pressure, can't capture nuance
- Verdict: Too risky for complex architecture decisions
3. Pre-recorded Video
- Pros: Perfect execution, editing possible
- Cons: Not interactive, can't adapt to audience questions
- Verdict: Loses conversational flow and learning opportunities
Implementation Details
Demo Artifacts
1. Architecture Decision Records (docs/adr/)
001-presentation-technology.md- Reveal.js choice002-nix-flake-architecture.md- process-compose + Caddy003-demo-implementation-strategy.md- This document (meta!)README.md- ADR index and usage guide
2. Conversation Transcript (docs/demo/)
Store the actual Claude Code conversation showing:
- Initial requirements gathering
- ADR creation and refinement
- Constraint application ("no Python")
- Architecture evolution (simple → process-compose)
- Decision rationale and tradeoffs
3. Implementation Artifacts
flake.nix- The actual working implementationpresentation/- Reveal.js presentation- Git commits showing progression
Demo Execution Flow
Stage 1: Setup (2 minutes)
- Show empty repo with just README
- Explain the goal: build a presentation system
- Introduce ADRs as the guiding pattern
Stage 2: ADR Creation (3 minutes)
- Walk through creating ADR 001 (presentation tech)
- Show how it evaluates alternatives
- Demonstrate decision rationale
Stage 3: Constraint Refinement (3 minutes)
- Show conversation applying constraints
- Example: "No Python" → rearchitecture to Caddy
- Demonstrate ADR updates reflecting new decisions
Stage 4: Implementation Validation (2 minutes)
- Run
nix run .#presentto prove it works - Show generated configs (Caddyfile, process-compose.yaml)
- Demonstrate configuration-as-code
Stage 5: Meta-Reflection (2 minutes)
- Highlight the pattern: ADRs → Conversation → Implementation
- Show how this approach is reusable
- Provide takeaways for attendees
Presentation Integration
Embed demo artifacts in the presentation:
# Slide: "The Power of ADRs"
- Show ADR 001 side-by-side with implementation
- Highlight how decisions map to code
# Slide: "Iterative Refinement"
- Show conversation excerpt about Python → Caddy
- Display the updated ADR section
- Show the resulting Nix code
# Slide: "Meta Demo"
- Reveal that THIS presentation was built this way
- Show the actual conversation
- Provide GitHub link for full exploration
Nix Integration
The demo app serves the conversation transcript:
demo = {
type = "app";
program = "${pkgs.writeScript "demo" ''
#!/usr/bin/env bash
# Generate demo config for process-compose
config="${pkgs.writeText "demo-compose.yaml" (builtins.toJSON {
processes = {
conversation-viewer = {
command = "${pkgs.caddy}/bin/caddy file-server --root ${self}/docs/demo --listen :8001";
};
presentation = {
command = "${pkgs.caddy}/bin/caddy file-server --root ${self}/presentation --listen :8000";
};
};
})}"
exec ${pkgs.process-compose}/bin/process-compose up -f "$config"
''}";
};
This runs:
- Presentation on
:8000 - Conversation transcript viewer on
:8001
Technical Considerations
Conversation Capture
- Export Claude Code conversation to markdown
- Format with syntax highlighting
- Preserve timestamps and flow
- Annotate with insights
Presentation Structure
presentation/
├── index.html # Main reveal.js presentation
├── slides/
│ ├── 01-introduction.md
│ ├── 02-the-adr-pattern.md
│ ├── 03-demo-reveal.md # The meta moment
│ └── 04-takeaways.md
└── assets/
├── conversation.md # Embedded transcript excerpts
├── adr-examples/ # ADR screenshots
└── implementation/ # Code snippets
Git History as Artifact
Commit strategy:
feat: initial ADRs for presentation architecture
feat: update ADR 002 with process-compose approach
feat: rewrite ADR 003 as conversation-based demo
feat: implement flake based on ADR decisions
docs: add conversation transcript to demo/
Git history itself becomes part of the demo narrative.
Consequences
Positive
- Authentic: Real Claude Code usage, not simulation
- Educational: Shows thinking process, not just results
- Reusable: Pattern applicable to any project
- Transparent: All decisions documented and traceable
- Self-documenting: The demo explains itself
- Meta-awareness: Presentation about AI development, built with AI
Negative
- Complexity: More sophisticated than simple script
- Preparation: Requires curating conversation for clarity
- Length: Full conversation may be too detailed for presentation
- Assumption: Assumes audience familiarity with ADRs
Mitigation
- Curate conversation to key decision points
- Provide full transcript as supplementary material
- Include ADR primer in presentation intro
- Offer simplified "getting started" guide for newcomers
Future Enhancements
- Interactive conversation explorer (search, filter by topic)
- Side-by-side view: ADR ↔ Conversation ↔ Implementation
- Jupyter notebook walking through the process step-by-step
- Template repository: "instant ADR-driven development"
- Video walkthrough with narration over the conversation
- Browser extension to capture Claude Code conversations automatically
Key Insight
This ADR is itself part of the demo - it documents the decision to use the conversation as the demo, demonstrating the recursive, self-referential nature of effective AI-assisted development.
The presentation is its own case study.