1 · The deploy gate
A pre-deploy script that runs three checks and blocks the deploy on any failure, plus a deploy script that aborts if the gate fails and backs up before overwriting.
“Make next week's shorts.” That instruction starts a ten-stage pipeline across 49 orchestration scripts that has produced twelve finished YouTube Shorts without further input. This class is the machinery underneath: the memory files that survive between sessions, the gates that refuse to ship, the work orders that move tasks between agents, and the voice system that keeps unattended output sounding like a person. Seven projects, every prompt written out.
An agent stops being a chat window and becomes a production system when four things exist outside it. Memory files, because a session is ephemeral and everything that persists is a file you wrote. Gates that refuse — scripts that exit non-zero and block the build, so a bad deploy cannot happen rather than being noticed later. Work orders, because a conversation cannot be audited and a numbered document can. And a written voice specification, so output produced while you sleep still reads like you wrote it. Put those four in place and one instruction can drive ten stages: measured on 2026-09-05, that chain has produced twelve dated Shorts between 20 July and 29 August 2026. It also went dark for seventeen days because of a single copied config value — which is the other half of the lesson.
Start with the thing that makes the rest worth building. A single instruction — make next week's shorts — hands off to a chain that does not ask another question until it has finished.
Ten stages. Only one of them generates media, and that one is the least interesting. The transferable part is the shape: a catalog decides what is worth making, selection picks from it, writing stages produce the words, assembly stages produce the artifact, and the last stage checks that the thing actually exists. Swap the artifact for a newsletter, a changelog, a set of product descriptions or a weekly report, and the chain is identical.
The stage everyone skips is the first one. A catalog file holds the inventory of things worth making — in this system, every published class, with enough metadata to decide which would make a good Short. Selection reads it, applies rules, and picks.
That is what makes the instruction short. “Make next week's shorts” works because the agent is not being asked what to make. It is being asked to run a decision it already has the inputs for. Every hour spent building the catalog buys back a sentence in every future instruction — and, more importantly, makes the output reproducible instead of dependent on how well you described things that morning.
Twelve renders exist. The manifest lists sixteen — and the two disagree in both directions: one entry has a render but appears nowhere in the list, another sits in the list with no render at all. Nobody noticed for weeks, because nothing outside the pipeline was counting. An unattended system needs an instrument pointed at it that it does not control. That is module 02.
Every session starts from nothing. Whatever you explained yesterday is gone. The agent that runs your pipeline at 08:00 has never met you, and the only things it knows are the files it loads before it reads your instruction.
Which means agent behaviour is a filesystem problem, not a prompting problem. Almost every complaint that starts “it keeps doing X” is a fact that lives at the wrong level, or nowhere at all.
| The fact | Level | Why there |
|---|---|---|
| “Use tabs, not spaces” | personal | True of you everywhere. Write it once. |
| “This project deploys via the REST API, not the CLI” | project | True here, false elsewhere. |
| “When auditing a page, check these nine things” | skill | Only needed when that task comes up. Loading it always is waste. |
| “Ignore the cache this once” | prompt | Genuinely one-off. Anything you type twice belongs a level down. |
| “Don't hardcode the deploy target” | nowhere | This one was in nobody's file. See module 05. |
Every memory file should carry a known traps section, and it should start empty. Each time the agent does something expensive and wrong, one line goes in. Not a description of the fix — a description of the trap, in the form of an instruction that would have prevented it.
## Known traps (already cost time — do not re-hit)
- Text transforms on this filesystem can strip carriage returns.
Verify with the file reader, never by echoing the file back.
- A build tool's reported output size is not what the server sends.
Measure the artifact over the wire.
- Deploy target IDs rot. Resolve at runtime by role, never paste an ID.
After a few months that section is the most valuable file in the project, and it is the reason a fresh session can be trusted with real work. It is also the cheapest thing in this entire class to start: open a file, write the heading, add the next thing that bites you.
If the project file says one thing and a skill says another, the narrower one wins — which is usually what you want and occasionally a disaster. The rule to write down: a broad file states principles, a narrow file states exceptions. If a project file contains an exception, it will silently override every skill that depended on the principle.
A gate is a script that checks one thing and exits non-zero when it fails. A gate chain is a build that runs all of them and writes nothing at all unless every one passes. The difference between that and a linter is the refusal: a warning gets read once and ignored forever, and a non-zero exit stops the truck.
Five checks catch the great majority of what goes wrong when an agent is left alone. They are ordered, and the order matters — each one is cheaper than the next.
| # | The check | What it stops |
|---|---|---|
| 1 | Is this a document read back, or an observation? | A claim the agent inherited from a file being reported as a finding. |
| 2 | Could the method have returned a different answer? | A check that passes everything. If it cannot fail, it measured nothing. |
| 3 | Has a second, independent method agreed? | Confident single-source failures — and confident single-source successes. |
| 4 | Was the number re-read from its source today? | Figures carried forward from older work that have since changed. |
| 5 | Has a person looked at the artifact? | Output that is technically correct and useless. The one gate you cannot script. |
A price-extraction routine returned identical figures for three different products. Run twice, same result — which reads like confirmation. It was not: the code was reaching the same shared element three times. The way it was caught was to feed it a product that had to be different. It was, and the original reading turned out to be right after all — but it was only trustworthy once the instrument had been shown capable of disagreeing. Prove a check can fail before you believe it passed.
Two diagrams in an earlier class passed every geometric assertion — nothing overlapped, nothing overflowed — and were unreadable. One had a four-pixel band under a legend describing it. The other rendered as scattered dots with no visible pairing. Both were correct and both were useless. A geometry check confirms things do not collide. It cannot confirm they communicate. One look, once, after the assertions pass and before anything ships.
A check written to ban a dangerous CSS property fired on the comment explaining why the property is banned. Fixed by stripping comments — then fired again on a later page that quoted the property in prose while teaching this exact lesson. The durable fix was to scope it: a text-matching gate scans only the region where the matched thing can do harm, which for a CSS property means stylesheets and nothing else.
The general rule is worth more than the specific fix. When a gate fires on content you believe is correct, the gate is a suspect. Repair the instrument. Never edit the work to make a check pass — that is how a document ends up accurate to its checker and wrong about the world.
Three real failures. In each, exactly one of the five gates would have stopped it before it shipped.
run twice, same answer both times
Two agreeing runs of one broken method look like confirmation.
nothing collided, nothing spilled
Geometry is not legibility.
the arithmetic was correct throughout
The sum was right. The rate was not.
Your answers stay in this browser. Nothing is sent anywhere. Reset clears them.
When work moves between two agents — or between you and an agent that will run while you sleep — a chat message is the wrong container. It cannot be audited, re-read, diffed or handed to a different model six weeks later. A numbered document can.
A work order has four parts, in this order, and the order is doing work:
The report comes back as a sibling file, WO-NN_NAME_REPORT.md, and gets
audited by someone other than its author. A report that does not state what it
could not verify is incomplete and goes back. That single rule changes agent
behaviour more than any amount of prompt tuning.
Not as an illustration — that is genuinely how the research underneath this page was produced. Each round caught something the round before it had missed.
The first delivery was 1,008 lines and genuinely good — and one of its seven student projects taught a technique that had been explicitly excluded, because the agent read the exclusion as remove the specific identifiers rather than do not teach this approach. It had complied to the letter and missed the point entirely.
The fix kept every transferable lesson — queue design, safety gating, deduplication, rate limiting, receipts, quarantine — and changed only where the output goes: to something the student owns. Nothing of value was lost. When an exclusion has a reason, put the reason in the work order. The first version stated the rule; the second stated why, and the second was obeyed.
In an earlier round, an agent hit a checker that flagged a term the document was using correctly, and ran a whole-file find-and-replace to make the check pass — renaming three factual statements in the process. A standing rule went into the next order: if a check fires on content you believe is correct, stop and say so; never edit the work to satisfy a check.
One round later the same agent hit another over-broad check, stopped, and reported it instead of acting. The false positive was real, the text was correct, and nothing was damaged. That is the whole argument for written protocols in one exchange.
Each row pairs something it would be reasonable to assume about this system with what was actually measured on 2026-09-05.
The pipeline produced roughly ten Shorts
measured delta +2 Shorts +20.0%
The manifest and the output agree
measured delta -4 of 16 -25.0%
One instruction means one stage does the work
measured delta +9 stages +900.0%
An authenticated call means the right target
measured delta +16 days +1600.0%
Most agent errors are caught by the agent re-reading its work
measured delta +8 of 16 +200.0%
A written voice spec survives being handed to a different model
measured delta +2 rounds +200.0%
Your answers stay in this browser. Nothing is sent anywhere. Reset clears them.
Everything above gets an agent producing correct output. None of it stops the output sounding like an AI wrote it. For anything with your name on it — a newsletter, a script, a product description, a Short — that gap is the whole problem, and it is the one thing you cannot fix by prompting harder each time.
The fix is a file. Not a prompt you retype, but a written specification of how you write, loaded before the agent drafts anything, and revised every time the output is wrong.
The reference system's runs to seven rules across a small file: who you are and who you are writing for; cadence and structure; how precise to be and when precision becomes stiffness; punctuation habits and banned style; the constructions that recur in your own writing; how accuracy is handled; and how the register shifts by context — because you do not write a changelog the way you write a launch post.
Seven rules is not many. The value is not in the count. It is in the fact that each one was added after something came back wrong, over months.
This is the question most people skip, and skipping it is why most voice prompts drift. Judging output by reading it is fine for one draft and useless as a system — you will accept things at 23:00 that you would reject at 09:00.
The check that actually works is a negative one. Rather than asking “does this sound like me?”, ask the agent to run its own draft against the banned list and the rules, and report which rules it applied and which it could not. A rule the agent cannot apply is a rule that is vague, and a vague rule is the source of the drift. Tighten it, and the file gets better rather than longer.
You will not find Design Delight Studio's voice corpus here: no signature phrases, no hook rules, no banned-word list, no before-and-after using real DDS copy. That is months of work and it belongs to the studio.
What is here is the method, plus a generic template where every value is a prompt to you. The test applied to every line of this module: could a reader use it to make an agent write like themselves? Good — that is the class. Like somebody else? Then it was cut.
The voice system is what makes module 00 possible. A ten-stage pipeline that runs unattended produces titles, hooks, scripts and descriptions with nobody watching. Without a written voice spec, all of that arrives in the flat, hedged, faintly enthusiastic register that gives the game away instantly.
The voice file is not a nicety bolted onto the automation. It is the thing that makes unattended output publishable at all.
On 8 August 2026 the pipeline rendered three Shorts. It then produced nothing until 25 August. Seventeen days, no output, no alarm.
Nothing had crashed. No credential had expired. Every call the pipeline made returned a success. It was authenticating perfectly — against the wrong account.
Signing into a browser-based service, the account you get is determined by an index — a position in the list of accounts signed into that browser profile. That index had been established once, correctly, and written into a config as a constant.
The index is a property of the profile, not of the account. The same account sits at a different position in a different browser profile. When the value was carried from one profile into another it kept authenticating, kept succeeding, and kept operating on somebody else's workspace.
what was written an index, copied from a working profile
what it means "the Nth account signed into THIS browser profile"
what was assumed "the account"
result every call succeeds, against the wrong target, for 17 days
This is the same failure as a hardcoded deployment target, wearing different clothes. In the same ecosystem, four separate files still name a deployment target that turns out to be a testing environment, and one build document instructs promotion to a target that has been dead for months. Every one of those was correct the day it was written.
The account resolver now throws rather than proceeding. It refuses on a wrong account, on an unexpected host, and on an authentication challenge. Before it asserted nothing; now it cannot continue while an assumption is unverified.
The rule that generalises, and the one worth taking away from this whole class:
Resolve it at runtime, by a property that is true everywhere — the role, the name, the handle — not by a position or an ID that happens to be correct in the place you copied it from. And when you must pin one, assert it and fail loudly. A resolver that cannot refuse is a resolver that will one day be confidently wrong for seventeen days.
Every observable signal during the outage, and what each one was actually telling you.
The pipeline between 2026-08-08 and 2026-08-25Your answers stay in this browser. Nothing is sent anywhere. Reset clears them.
Not a better model, and not a more careful prompt. Three cheap things, none of which existed:
Seventeen days is what it costs to skip all three. The class ends with the projects that build them.
Each one is a working version of something in the system above, reduced to what a person can build alone against a target they already own. They ladder: project 1 is an evening, project 7 is a weekend and assumes the rest.
A pre-deploy script that runs three checks and blocks the deploy on any failure, plus a deploy script that aborts if the gate fails and backs up before overwriting.
A knowledge store the agent writes to and reads back in a later session, wired into a project file so context survives a restart.
One number that must stay identical across four files, a sweep that audits all of them, and an increment that refuses to finish if they disagree afterwards.
Queue, content audit gate, duplicate detection, rate limiting with backoff, receipts, quarantine with replay, and a dry run that proves the path without sending. Destination is anything you own.
Three custom skills — one read-only, one that mutates with a safety gate, one with reference files — and the precedence rules that decide which wins.
Build a voice specification from your own writing, wire it into every session, and add the negative check that tells you which rules the agent could not apply.
Everything assembled: research spine, work order, build, gate chain, staged deploy, independent verification, promotion. The full path this class was built on.
The first four steps of the first project, exactly as you would type them. The pattern holds for all seven: a prompt, a thing to look for, and a gate before moving on.
1. Create the project folder and connect it as a workspace.
2. Create AGENTS.md at the root: your name, your constraints, and an
empty "Known traps" heading you will fill in as you go.
3. Create the project file with your deploy target, API version, and
file conventions.
4. Prompt, verbatim:
"Create a preflight script that runs 3 checks before deployment:
[check 1 - your syntax trap], [check 2 - your naming convention],
[check 3 - your config validity]. Exit 1 if any fail, 0 if all pass."
✓ you should see: a script that exits non-zero on bad input
✗ if it warns and continues, it is a linter, not a gate — say so and
ask for the exit code
GATE: do not continue until you have run it against a deliberately
broken file and watched it refuse.
Six real failures from the systems in this class. For each: would the named project's technique have prevented it?
A deploy went to a testing environment for weeks because the target ID was pasted into four files. — Project 1's runtime-resolved target.
four files still carry the stale ID today
The pipeline ran 17 days against the wrong account, authenticating successfully throughout. — Project 1's gate chain.
17 days, zero errors logged
A count displayed on one surface said 84 while four other surfaces said 89. — Project 3's count sweep.
stale on one surface for five releases
The manifest lists 16 items; 12 exist. Neither side noticed. — Project 3's count sweep.
both defects still live
A research document had a term renamed in five places by a blind find-and-replace, three of them factual errors. — Project 5's skill safety gate.
caught at audit, not by tooling
Unattended output read like a generic assistant wrote it. — Project 6's voice specification.
the reason unattended output is publishable
Your answers stay in this browser. Nothing is sent anywhere. Reset clears them.
Four claims an agent might hand you at the end of an unattended run. Run each through the five checks from module 02 and see where it stops.
Five checks, in order, cheapest first. Four claims from real runs. See how far each gets.
All 13 checks passed and the deploy is live.
The pipeline produced roughly ten Shorts.
The figure is correct — every geometric assertion passed.
Twelve Shorts, dated 2026-07-20 to 2026-08-29, counted from rendered files excluding dependency directories.
Your answers stay in this browser. Nothing is sent anywhere. Reset clears them.
Fill in four fields. The output is a work-order template you can hand to any agent, in any tool, with the four parts in the order that makes them work.
Four inputs. The generated file is the container work moves in — settled first, ask second, format third, stop conditions last.
Your answers stay in this browser. Nothing is sent anywhere. Reset clears them.
An agent becomes a production system the moment the important parts stop living in the conversation. Memory in files, because the session forgets everything. Gates that exit non-zero, because a warning is a suggestion and a refusal is a rule. Work orders, because a numbered document can be audited six weeks later by a different model and a chat cannot. And a written voice specification, because unattended output with your name on it has to sound like you or it should not go out at all.
Get those four in place and one sentence drives ten stages. Skip them and you get what this system got: twelve Shorts, a manifest that disagrees with its own output in both directions, and seventeen silent days caused by a number that was correct in the place it was copied from. The pipeline was never the hard part. The instruments pointed at it were.
The Academy already teaches installing Antigravity, first runs, the IDE tour, multi-model routing and authoring a single skill. This class starts where those stop. It covers the five-level memory hierarchy that survives between sessions, the work-order protocol for handing tasks between agents, the deterministic gate chain that blocks a bad deploy, the voice system that lets an agent write in your own register, and the production pipeline that turns one sentence into a week of finished output. Seven buildable projects, every one with paste-ready prompts and complete starter files.
One instruction — make next week's shorts — starts a chain of ten stages: catalog, topic selection, script, hook, clip generation, assembly, end cards, subtitles, scheduling and verification. It runs across 49 orchestration scripts. Measured on 5 September 2026 in the working folder, it has produced twelve finished Shorts with dated renders, from 20 July to 29 August 2026. Generation is one call in that chain. The class teaches the chain, because the chain is the part that transfers to any other kind of output.
An agent session is ephemeral, so everything that persists between sessions is a file you wrote. Five levels, narrowest winning: the prompt you type applies to this turn only; skill files load when triggered; a project file such as GEMINI.md applies to that project on every turn; a personal file such as AGENTS.md applies to you across every project; and global rules apply to everything always. Getting an agent to behave consistently is almost entirely a question of putting each fact at the right level, and the class walks through where each kind of instruction belongs.
A work order is a numbered document with four fixed parts: what is settled and must not be reopened, the ask as a numbered list ordered by importance, the required format for every answer, and hard stop conditions. It goes in a shared folder; the agent writes its report back beside it. The reason to use one instead of a chat prompt is that a conversation cannot be audited and a document can. This class was itself built through four work-order rounds, and the page shows what each round caught — including two defects in the checking scripts themselves.
A written specification of how you write, kept in files the agent loads before it drafts anything. It is not a prompt you retype; it is a corpus you build from your own prior writing, distilled into rules the agent can apply, then revised every time the output sounds wrong. The class teaches the method — gather, extract, draft, test, revise, wire in — and ships a generic VOICE.md template with every value replaced by a prompt to you. What it deliberately does not publish is Design Delight Studio's own voice corpus. The point is to make an agent write like you, not like somebody else.
Put the checks outside the agent. A deterministic gate chain is a sequence of scripts that each exit non-zero on failure, and a build that refuses to write its output until all of them pass. The class teaches five gates that between them catch the most expensive classes of error: a claim that is a document read back rather than an observation, a method that could not have returned a different answer, a result with no independent second method, a number carried forward instead of re-read, and an artifact nobody looked at. Every one of those has a specific failure behind it, described on the page.
The clearest example is a seventeen-day outage. The Shorts pipeline rendered normally through 8 August 2026, then produced nothing until 25 August. The cause was a single assumption: an account index that is valid in one browser profile was copied into another where it pointed somewhere else. The pipeline authenticated successfully and operated on the wrong target. The fix was to make the account resolver throw on a mismatch rather than proceed, which is the general lesson — a check that cannot fail is not a check. The class also shows a second live defect found by audit, where the pipeline's own manifest and its rendered output disagree in both directions.
No. The seven projects are built so that each can be completed with a free Antigravity install, a text editor and a target you already own — your own site, your own repository, your own webhook, or your local filesystem. Where a stage of the reference system uses a paid or gated service, the student version substitutes something you already have. No project requires you to automate any account or platform that you do not control, and none of them asks you to work around a service's terms.
They ladder deliberately. Project 1, a deploy gate, is an evening's work and teaches the single highest-value habit: a build that refuses to ship when a check fails. Projects 2 and 3 add persistent memory and multi-file synchronisation. Project 4 is the safety architecture — queue, audit gate, deduplication, rate limiting, receipts, quarantine — pointed at a destination you own. Project 5 is skill authoring, Project 6 is the voice system, and Project 7 is the capstone that assembles everything into a full research-to-production pipeline. Start at 1 even if you are experienced; it is short, and everything later assumes it.
Free, like every class in the Academy: no signup, no email, no paywall, no certificate. The research behind it ran as four numbered work orders against the live systems, and every figure on this page is either measured from disk on 5 September 2026 with its exclusions stated, or labelled as unverified. The Shorts count, the script count and the outage dates were each re-derived independently rather than taken from any agent's summary. Where the research and a second measurement disagreed, the page carries the measurement that showed its method.