People say super prompt when they mean one of two things:
- A long, theatrical paragraph they found in a marketplace
- A specification assembled from real work — constraints, examples, sources — and then rendered as instructions a model can follow
Bye Prompt only cares about (2). We call it a compiled spec so it does not sound like magic.
The compile step can be manual (you write SPEC.md) or assisted (a model drafts the spec from a context pack, you edit it). Either way, the pack is the source of truth, not the pretty wording.
The compile pipeline
job + files + examples + non-goals
↓ compile
SPEC.md (instructions the model will see)
↓ run
artifact
↓ eval against the spec
keep / retry / stopIf you skip compile, every run re-negotiates the job in chat. That is one-shot gambling with extra messages.
What a good spec contains
A spec is not a novel. It is closer to a ticket that cannot shrug.
| Section | Purpose | Smell if missing |
|---|---|---|
| Deliverable | Format, length, audience, language | Model invents a blog post when you needed a table |
| Audience & voice | Who it is for; words to avoid | Generic TED-talk cadence |
| Inputs | What it may read | Hallucinated citations |
| Process | Steps, including “ask if blocked” | Silent guessing |
| Acceptance tests | How you will judge the output | You “have a feeling” |
| Stop / escalation | When to halt | Agent keeps going into the night |
| Out of scope | Explicit non-goals | Scope creep into legal/medical/finance advice |
You can store this as markdown. You do not need a vendor format.
Worked miniature
Pack (human): “Compare three static-site hosts for a 20-page marketing site. Budget $20/month. Must support custom domain + HTTPS. No Kubernetes.”
Compiled spec (excerpt):
- Deliverable: markdown table, columns Host / Price / TLS / Git deploy / Lock-in / Fit (1–5) / Notes
- Inputs: only the three URLs in
sources.txtplus official pricing pages - Process: if a price is not on the page, write “not listed” — do not guess
- Acceptance: every row has a source URL; no “best overall” paragraph unless asked
- Out of scope: migrating our existing site; DNS how-to
That spec will outperform a 600-word “you are a world-class DevOps consultant” prompt on the same job. The consultant persona does not know your budget.
Assisted compile (the honest version)
You can ask a model: “Read this folder. Draft SPEC.md. Do not execute the job yet.”
That is a good use of chat. Then:
- Delete flattery and invented constraints
- Add acceptance tests the model forgot (they always forget)
- Freeze the spec in git or a dated file
- Run the job in a new turn (or a new agent) with only the spec + pack
Do not compile and execute in one breath on anything you care about. Compile is design. Execute is production. Mixing them is how constraints evaporate.
We are not describing a private compiler, an internal app, or a hidden pipeline. The pattern is ordinary files. Use whatever editor you already have.
Super prompts that are actually junk
- Role-play piles (“you are 12 experts in a trench coat”)
- Fake chain-of-thought demands that hide missing sources
- 4,000 words of style adjectives and zero acceptance tests
- Instructions that conflict (“be concise” + “cover every subtopic in depth”)
- Specs that include secrets “for color”
If a marketplace prompt cannot be traced to your pack, it is fan fiction about a job you have not specified.
Versioning
Treat SPEC.md like code:
- Change the spec when the job changes, not when a model version ships
- Note the date and the model family you last ran (families change; your tests should not)
- Keep the losing spec when you learn something — that is cheaper than rediscovering the failure in chat
How this connects
- Packs feed compile: context packs
- Running the spec is a loop
- Tests live in eval
- You will still type small prompts inside the loop: when you still type
The era we are leaving is not “language as an interface.” It is language as the only artifact. Keep language. Add files, tests, and a stop button.