- 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
235 lines
7.5 KiB
Markdown
235 lines
7.5 KiB
Markdown
# 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:
|
|
1. The ADRs that define the architecture (stored in `docs/adr/`)
|
|
2. The conversation transcript showing iterative development
|
|
3. 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 choice
|
|
- `002-nix-flake-architecture.md` - process-compose + Caddy
|
|
- `003-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 implementation
|
|
- `presentation/` - 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 .#present` to 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:
|
|
```markdown
|
|
# 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:
|
|
|
|
```nix
|
|
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.
|