The Necromancer's Quill

Inspiration

AI-generated content has a problem - it's dead on arrival. Detectors flag it instantly, readers feel the emptiness, and it lacks the soul of human writing. When Kiroween was announced, I saw the perfect opportunity: what if "humanizing" AI text was actually "resurrecting" it? The metaphor clicked perfectly - we're literally breathing life into lifeless machine words.

I wanted to prove that Kiro's steering feature could transform an entire application's voice consistently across dozens of files without repeating context in every conversation. Halloween gave me the perfect theme to test this.

What it does

The Necromancer's Quill resurrects AI-generated text into authentic human writing that passes detection tools. But it's not just functional - it's an immersive Halloween experience:

  • Resurrection Chamber (Dashboard) - Track your souls saved, necromancy power, and midnight sessions
  • Ritual Editor - Paste cursed AI text, click Resurrect, watch the Ghost Detector show your curse level drop
  • Spell Book - Pre-built templates for academic, business, and creative resurrection styles
  • Potion Lab - A/B test different resurrection approaches
  • The Graveyard - History of all your resurrected souls
  • Séance - Search through the spirit realm to find past work

Every button, label, and message follows the Halloween theme. "Processing" becomes "Summoning spirits." "Success" becomes "The text lives!" The entire UI glows with purple necromancer magic and green life-force energy.

How we built it

The secret weapon was Kiro steering. I created a single file (.kiro/steering/halloween-voice.md) with inclusion: always that mapped all terminology:

  • Humanize → Resurrect
  • Dashboard → Resurrection Chamber
  • Templates → Spell Book
  • Processing → Summoning spirits
  • AI Detection Score → Curse Level

Because steering is always active, every time I asked Kiro to modify a component, it automatically used Halloween terminology. I never had to repeat "remember to use spooky names" - Kiro just knew.

I also used specs to define the vision upfront:

  • requirements.md - Color palette, typography, accessibility requirements
  • design.md - Component interfaces, animation keyframes, layout diagrams
  • tasks.md - Implementation checklist across all 15+ pages

And hooks to maintain consistency:

  • CSS save hook reminded me to use GPU-accelerated animations
  • Component save hook checked Halloween theme compliance

Tech stack: React, TypeScript, Tailwind CSS, NestJS backend with multiple AI model integrations.

Challenges we ran into

Consistency across 15+ pages - The app has Dashboard, Editor, Templates, A/B Testing, Search, History, Analytics, Settings, Models, Admin, Comparison, Login, and Landing pages. Keeping Halloween terminology consistent manually would have been a nightmare. Steering solved this completely.

Dark theme accessibility - Halloween demands darkness, but WCAG AAA demands readability. I had to carefully balance spooky aesthetics with proper contrast ratios, focus indicators, and reduced motion support.

Performance with effects - Ghost particles, glow effects, and animations can kill performance. I used CSS-only animations with GPU acceleration (transform/opacity only) and kept particle counts low.

Removing light mode - The original app had a light/dark toggle. For Halloween, light mode had to die. Ripping it out cleanly while keeping accessibility features working took careful refactoring.

Accomplishments that we're proud of

Steering actually works - One 100-line steering file transformed the voice of an entire application. This is the killer feature of Kiro that I wanted to demonstrate.

It's still accessible - Despite the dark spooky theme, the app maintains WCAG AAA compliance with high contrast mode, font scaling up to 200%, color blindness filters, and reduced motion support.

The metaphor is perfect - "Resurrection" isn't just a gimmick. AI text really is dead - mechanical, detectable, soulless. We really are breathing life into it. The Halloween theme enhances understanding of what the tool does.

Complete transformation - This isn't a logo swap. Every page, every button, every loading state, every error message follows the theme. "The ritual failed" hits different than "Error occurred."

What we learned

Steering is underrated - Before this project, I thought steering was just for coding style preferences. Now I see it as a way to give Kiro persistent context about your entire project's voice, terminology, and conventions.

Specs prevent drift - Without the requirements and design specs, the Halloween theme would have been inconsistent. Some pages would be spookier than others. Specs kept everything aligned.

Hooks are gentle reminders - They don't block you, but they nudge you to check your work. The Halloween consistency hook caught several components I'd forgotten to theme.

Dark themes are harder than light - You can't just invert colors. Shadows work differently, glows need careful tuning, and you have to think about eye strain for extended use.

What's next for The Necromancer's Quill

Seasonal themes - The architecture now supports theming. Christmas could be "Gift Wrapping AI Text," Valentine's could be "Love Letters from Machines." The steering approach makes this easy.

More resurrection styles - Academic Phantom, Corporate Specter, Creative Wraith - each with unique transformation algorithms tuned for different content types.

Multiplayer séances - Real-time collaborative editing where multiple necromancers can resurrect text together, seeing each other's cursors as ghosts.

Mobile grimoire - A mobile app for resurrection on the go, with the same spooky aesthetic optimized for touch.

API for other necromancers - Let other developers integrate resurrection into their own tools via our REST API, complete with Halloween-themed error messages.

The crypt is open. The spirits await. Your cursed text is ready for resurrection. 🎃

Built With

  • kiro
Share this project:

Updates