The Inspiration I wanted to build something that combined my love for chess with the spooky Halloween spirit. The idea was simple: what if solving chess puzzles felt like battling a haunted AI that actually reacts to your moves?
What I Built Chessimus stitches together five different technologies into one terminal app:
python-chess for game rules Lichess API for real puzzles Stockfish for position analysis OpenAI GPT-4 for dynamic trash talk Terminal UI with a spooky theme The result? A chess app where the AI opponent taunts you when you blunder ("💥 WHAT?! Did you just... BAHAHAHA!"), grudgingly respects good moves, and generates context-aware trash talk based on the actual board position.
How Kiro Helped Kiro's spec-driven approach was a game-changer. I wrote specs for each component (chess engine, puzzle engine, renderer, UI navigation), and Kiro understood the full architecture before writing any code. The steering docs kept everything consistent — every screen uses the same emoji feedback, same quit commands, same "Press Enter to continue" pattern.
The most impressive moment was describing "a spooky AI that trash talks based on how well I'm playing" and watching Kiro generate the entire AIOpponent class with difficulty levels, GPT-4 integration, move quality detection, and graceful fallbacks.
Challenges The trickiest part was making the AI responses feel natural without slowing down gameplay. We solved this with a 3-second timeout on GPT-4 calls and static fallback taunts — so the experience stays snappy even if the API is slow.
What I Learned Spec-driven development with Kiro feels like pair programming with someone who actually reads the docs. Instead of explaining the same context repeatedly, the specs and steering files kept Kiro aligned throughout the entire build.
Built With
- kiro
- lichess-api
- openai
- python
Log in or sign up for Devpost to join the conversation.