Software made of prompts.
Born from a sleepless night around one question: How can I make self-improving software?
Not necessarily agentic — but often agentic. These days you never know if you're doing something unique or if everyone else is doing the same thing. So here it is.
You write an agent prompt. It works okay. But it never gets better. Every session starts from zero.
Software has source code that evolves over time. Software has memory — databases, config, state. Software creates tools — libraries, utilities, scripts. Software has logs — observability, audit trails.
What if your agent prompts had all of that?
Every module follows the same structure:
MyAgent/
Program.md -- The "source code" (evolves over time)
Memory/ -- Persistent knowledge across sessions
Tools/ -- Scripts the agent creates for itself
Logs/ -- Execution history
Plus a shared Firmware layer — a fixed template prompt injected into every agent that bootstraps the whole thing.
Launcher.ps1 --> Firmware.md --> Program.md --> Do the work --> Reflect
^ |
|_____________________________________________________________________|
next run is better
The firmware is a fixed template that every agent receives. It tells the agent:
- Read your
Program.md— your instructions - List your tools and memory — your accumulated knowledge
- Execute the task
- Reflect — update Program.md, Memory, or Tools
The firmware never changes. It's the bootloader. The Program.md changes over time. It's the evolving intelligence.
At the end of every execution, the agent asks itself:
- Should I add new instructions to
Program.md? - Did I learn something worth saving to
Memory/? - Should I create a reusable
Toolfor next time? - Is any of my existing knowledge outdated?
Run 1: The agent follows basic instructions. Run 10: It has created its own checklist templates. Run 50: It has a library of tools and project-specific patterns.
PowerShell is cross-platform — but really, use whatever you want. The pattern is script-agnostic. You need:
- A thin launcher script
- A firmware template
- A folder with
Program.md
That's it.
Each agent is launched via Claude Code in yolo mode (--dangerously-skip-permissions), giving it full autonomy to read, write, and execute. The firmware prompt is passed directly to claude as a one-shot instruction — no framework, no SDK, just a CLI call.
Clone the repo and run the install script to add the /promptware skill to Claude Code:
git clone https://github.com/nielsbosma/Promptware.git
cd Promptware
.\install.ps1Then in any Claude Code session, use /promptware to scaffold a new module:
/promptware MeetingPrep - OSINT meeting participants and email me a brief
See the /reference directory for a minimal working example — a CreateCommit agent stripped down to just the essentials (no accumulated logs, memory, or tools).
The /presentation directory contains a Slidev lightning talk about Promptware.
cd presentation
npm install
npm run dev