Spec-Driven Prototyping with Amazon Q and Q-Vibes Memory Banking framework


From ideas to prototypes
We all love when an idea hits — sharp, exciting, half-formed. But getting from that spark to something tangible often involves friction: scaffolding, repetition, boilerplate.
That overhead can kill momentum.
Prototyping is how we protect the idea. It’s the creative phase where we validate assumptions, test viability, and explore possibilities — quickly.
When done well, prototyping accelerates innovation.
Prototyping is a preliminary phase of product development and has its own objectives and constraints that differ from those of other phases of product development.
In prototyping, you don't yet have a clear idea of the end product. You don't even know if the idea is really good enough to become a product.
For this reason, we can define these attributes/constraints for prototypes:
They should be cheap. Their realisation should take little money and time, therefore they should be developed by one or two people and not by a whole product team. You must not invest a lot of time in requirements gathering, design, development, etc.
You don't have to share it with a global audience: You can present it to investors, but while you're driving the presentation. A prototype is neither a demo nor a product preview, so you don't have to make it available to others. This means you don't have to deploy it, just run it in a closed environment (maybe your local environment).
Perhaps neither real data nor real integrations are needed if the idea can be explored without them.
It's a throwaway: you don't need to extend it to production development. Once the idea has been explored and validated, throw away your prototype and start defining and developing your product.
With generative AI tools such as Amazon Q, Claude or Cursor, prototyping is faster than ever before. This is where vibe coding comes into play.
Some might think that vibe coding just means that the AI generates random code that you don't understand and that it's not real engineering: that may be true, a drum kit can also just be used to make noise (as my neighbour says).
Nowadays, vibe coding is often presented as in contast with spec-driven development. In my humble opinion, we could take advantage of vibe coding by directing agents providing them just enough specs for the goal.
As an engineer, I don't need perfect code when prototyping, but I don't want random code either.
Context matters
Generative AI is deeply contextual — every response depends on what came before. Even small shifts in input can produce wildly different output. That’s both a strength and a weakness.
When you're coding by vibe, the AI doesn’t truly "know" your intent — it infers it. Without clear, consistent context, things go off-track fast:
You change a prompt slightly, and the AI drops half the logic.
A missed constraint (like region or tech stack) leads to subtle regressions.
A well-intentioned refactor undoes previous alignment.
Context matters not just in what you say, but what the AI sees every time. That’s why a reusable, declarative context is so powerful: it's about creating a shared space where your intent lives.
Structure it, store it, and tell the AI how to handle it — and you’ve got spec-driven development.
The memory problem
LLMs are brilliant, but forgetful. Especially across sessions or as prompts grow. When prototyping, this causes friction:
Goals get redefined without you noticing
Tech stack or constraints subtly change
Errors repeat because nothing was "remembered"
The deeper the session, the worse the drift. At some point, you’re no longer prototyping — you’re re-aligning.
This is where spec-driven prototyping enters.
Writing a simple spec, just a lightweight set of goals, guardrails, and preferred stack — helps anchor the AI’s responses. It makes collaboration reproducible.
Combine that with a way to update and feed this spec consistently to your assistant and you’ve got memory banking.
Introducing Q-Vibes memory banking framework
In my last article, I reported on my direct experience of building my Think-O-Matic prototype with Amazon Q, gave a definition of vibe coding and briefly introduced the concept of memory banking.
After this experience, I developed a memory banking framework specifically for rapid prototyping with Amazon Q: It's open-source (contributions are welcome!) and you can find it on github.
To use the framework you need:
an idea to explore
Amazon Q (both CLI or IDEs plugin)
The framework consists in specifications (provided to agent by .md files) and prompts (provided to agent by you via chat).
Specifications
Specs consists in 5 MD files:
q-vibes-memory-banking.md - the AI Contract. This contains the complete framework instructions that tell the AI how to work with memory banking when initiating a new session, resuming a session and updating docs at the end of an iteration. This is provided, no need to edit it.
idea.md: Captures the core concept and success criteria for your prototype. This is your north star - created once and rarely changes. The AI creates this from your initial description, but may ask clarifying questions to complete all sections using the template structure.
vibe.md: Defines how you want to collaborate with the AI assistant. Specifies your interaction style, tech stack preferences, decision-making approach, git workflow, security practices, documentation requirements, and speed vs quality trade-offs. You have to create and mantain it.
state.md: The living technical snapshot of your prototype. Updated frequently by the AI as you build. Contains current stack, architecture overview, file structure, what's working/broken, immediate next steps, and current focus.
decisions.md: Log of key choices made during development. Prevents re-discussing the same decisions. The AI creates and maintains this file as architectural and technical decisions are made, following the template structure.
This makes the framework complete and self-contained. The AI gets both:
How to work (from the framework instructions in
q-vibes-memory-banking.md
)What to work on (from the 4 context files:
idea.md
,vibe.md
,state.md
,decisions.md
)
Usage
Let's say you have a brilliant idea and you want to explore it.
All you need is to:
create a project folder.
create a .amazonq/vibes sub-folder and copy templates inside it.
create your vibes.md, you can start from the template or the provided example.
prompt your idea and clarify it with the agent.
Your prompt should be something like:
Hi! I want to start a new prototype using Q-Vibes Memory Banking.
Please read the framework instructions in .amazonq/vibes/q-vibes-memory-banking.md first to understand how to work with this system.
My prototype idea: [Describe your idea here - can be brief, just the core concept]
The agent would ask you for further clarification and confirmation of his assumptions, with the intention of narrowing and clarifying the scope.
Resuming a session is even easier. Just prompt the agent with a simple request to pick up where you left off. Something like this:
Hi! I'm resuming work on my prototype using Q-Vibes Memory Banking.
Please read the framework instructions in .amazonq/vibes/q-vibes-memory-banking.md first, then read all the context files in .amazonq/vibes/ folder to understand the current state.
Once you've reviewed everything, please confirm what we're building, where we left off, and what the next steps should be.
Please read the README.md of the project for a quick setup, complete instructions and a running example.
Note that you and the agent are jointly responsible for ensuring that the specifications are clear and match. There is no magic here: the better the input, the better the output.
Benefits:
The key benefits are:
it is very fast: i created the example provided in less than 1 hour, while also testing session resuming.
you provide guard rails: not arbitrary code, but code that suits your needs and style
AI helps you explore your idea: In my experience, the agent's questions helped narrow down my ideas better
no loss of context: you don't have to provide context to the agent
it's very fast: I created the example in less than 1 hour and also tested the resumption of sessions.
Prototype Memory ≠ Product Memory
You might be asking yourself:
“Why do we need a specific framework? Why not just use a full spec-driven development framework?”
Because prototyping has different goals.
It’s not just an early phase of development — it’s a different mode entirely.
In the prototyping phase, you’re optimizing for speed, creativity, and cost-efficiency — not for durability, scalability, or perfect accuracy. You want to explore, validate, and iterate quickly. That means you can (and should) tolerate some messiness and manual steps, as long as they accelerate learning.
That’s why the memory needs during prototyping are also different.
You don’t need a persistent, multi-session memory graph. You need just enough structure to help your AI collaborator stay aligned through a rapid, idea-driven loop.
This framework isn’t built for production agents or end-user memory systems. It’s not meant to manage complexity across months or teams.
Instead, it’s designed for that middle space between a blank prompt and full-stack dev — where ideas are still forming, and flow matters more than polish.
If you’re in that zone, a lightweight memory bank gives you:
Direction without rigidity
Consistency without ceremony
Momentum without drift
Conclusions
Vibe-coding is here to stay — and it’s magical when it works. But even vibes need a spine.
This lightweight memory banking approach gives you structure just enough to stay aligned, while keeping the creative momentum alive.
If you’re prototyping with Amazon Q or any other Agent / LLM, give it a try.
The framework is tailored on Amazon Q, but not bounded to it.
Darshit Pandya (you can find him also on LinkedIn) created a version tailored on Github Copilot, and we are going to benchmark the framework against the two agents to measure its performance and collaborate to improve it.
Check out the framework, fork it, remix it, build something weird, share it.
Because vibes are better when they remember what they’re building.
Specs, just enough.
Subscribe to my newsletter
Read articles from Nicola Cremaschini directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Nicola Cremaschini
Nicola Cremaschini
I'm an old school developer, I started 20 years ago with Notepad as an IDE (?), then I worked as DevOps and for a few years now I've been working as a Principal Technical Architect. I'm interested in cloud computing and serverless architectures and love to dive deep into problems and find smart solutions.