👻 OuijaCoder — Summon the Spirits of Programming Past
OuijaCoder is a Halloween-themed AI developer tool that lets you “summon” legendary programmers — Ada Lovelace, Dennis Ritchie, and Grace Hopper — who respond in their authentic, historically-inspired voices. Alongside simple Q&A, OuijaCoder introduces a unique feature: Haunted Code Review, where the spirits diagnose bugs, offer debugging checklists, and generate tiny magical code patches.
🎃 Inspiration
I wanted to build something that wasn’t just spooky, but actually useful to developers. During brainstorming, it became clear that personas guided by Kiro steering docs could create a fun, educational coding companion with real value. The idea of pairing a Ouija board interface with persona-driven code advice felt like the perfect Kiroween fusion of creativity and utility.
🧙 How I built it (using Kiro deeply)
OuijaCoder is built almost entirely through Kiro’s development workflow:
1. Vibe Coding
I used conversational vibe coding to:
- Scaffold the entire React + Node project structure
- Generate initial components, layouts, and animations
- Iterate quickly on UI flows
This let me build the core app extremely fast.
2. Spec-Driven Development
The /.kiro/specs/ouija_spec.yaml and additional flow specs define:
- Components
- API endpoints
- Persona behaviors
- Acceptance criteria
Changing the spec triggers Kiro to regenerate missing or outdated components via hooks.
3. Steering Docs
Each spirit has its own steering document:
- Ada — poetic and conceptual
- Dennis — terse, systems-focused
- Grace — warm, debugging-oriented
These steering docs guarantee consistent and believable persona responses.
4. Hooks & Automation
I created custom hooks that:
- Regenerate persona assets when specs change
- Run test suites and mock MPC tools
- Produce commit messages showing Kiro-driven automation
This was key for demonstrating implementation depth.
5. MCP extension
A lightweight tester simulates persona responses for demo and CI — built as a small MCP-style tool.
🚧 Challenges
- Balancing spooky UI with accessibility
- Making persona outputs consistent across mock and real LLM mode
- Designing hooks that regenerate assets without overwriting human edits
- Ensuring performance and smooth animations (planchette, typewriter, flicker)
🧠 What I learned
- How powerful spec-driven development becomes when combined with persona steering
- How to use hooks to automate repetitive dev tasks
- How to leverage Kiro to maintain large multi-persona behavioral constraints
- And most importantly: how to build fast, creatively, and systematically at the same time
🔮 What’s next
- Add more spirits (Knuth? Linus? Satoshi?)
- Add a "Dark Mode linting demon" for playful static analysis
- Enable collaboration sessions where multiple spirits debate your code
OuijaCoder started as a spooky idea — but it genuinely became a tool I enjoy using.
Built With
- javascript
- node.js
- react
- tailwind
- typescript
- vite
Log in or sign up for Devpost to join the conversation.