last updated: 2025/04/08
As part of my work to explore the role of AI in technical creative work, I decided to create a local application that handles the complexities of building structured prompts. Inspired by the concept of node-based workflows from Apple's Automator, Prompt Composer is written in Electron and React with TypeScript, enabling me to keep my data local yet maintain a robust, modern interface. The tool focuses on the reuse of global and project based prompt templates, merging file content, and attempts to reduce friction around working with multi-file and multi-context prompts.
The initial release is a working MVP prototype; however, it's already capable of reading from local folders, merging placeholders for text or code blocks, and offering a "raw edit" mode where you can see the entire in-memory representation of your final prompt. It has basic support for token usage estimation via tiktoken, so there's a running count of how big your final prompt can get before you exceed GPT o4 model limits.
I built Prompt Composer to experiment with AI to drive software development. Where are it's limits? How does the process change? Can I use a process to quickly build a working tool? Copy-pasting code snippets into large prompts gets messy, so I wanted to abstract that into a nested file-based approach with explicit placeholders.
The project has matured into a reliable local tool for me to use in development. I've gained a deeper understanding of managing mid-scale TypeScript projects, bridging Electron with React, and providing an intuitive interface for multi-file prompt composition. The final stages of building the MVP involved using the tool itself.
Over the week and change taken to build this tool, there moments of very quick progress, followed by extended debugging sessions. One of the key challenges in AI-assisted co-development is that the codebase is inherently unknowing because understanding happens after rather than during development. I could write further on take-aways, but by utilizing a combination of tools personal experience, I was able quickly realize a sharp development tool.
Prompt Composer acts as an example of how I like to approach big challenges: break them down with structured design, keep them flexible, and iterate quickly.