
This is a page about building a design operating system around AI. The method was tested through Holy Grail, a finance-domain speculative design project.
Method, not log.
A finance-domain design project run end-to-end through the AI workflow: agent roles, file stacks, calibration, debate rounds.
Copy the six-step workflow. Use the prompt and file-stack templates as-is.
Adapt the agent roles and the decision log. Keep the audit trail.
See how AI speeds exploration without replacing human judgement.
AI is a tool. People who use tools well build systems first.
This page records the position I reached after rebuilding a design process around AI. Reads more like field notes than a forecast.
Roughly two-thirds is position, one-third is project evidence. Every claim sits next to the work it came from.
What is inside.
- Ch1How the way of working changed.
- Ch2How the AI is run.
- Ch3What is coming next.
- Ch4The designer's response.
A new model drops almost every week. Some lines here will not stay valid a year from now. The method underneath should.
Meetings, planning, execution, review, recording. The order stayed the same; AI layered on top. Three things matter: fragmented prose, calibration, the file stack (CLAUDE, MEMORY, SKILL, lock).
The way we use AI has already shifted twice.
Most teams sit at Stage 1. The method here lands at Stage 3.
Prompt Engineering
Asking the right question.
Type a sentence, get a sentence back. Translate, summarise, polish. AI is a vending machine.
Where most teams sit today.Context Engineering
Designing the environment.
Set up roles, attach references, lock the project's bans and goals before asking. Output stops being random because the room is already shaped.
Where I started this cycle.Harness Engineering
Running AI as a team.
Multiple agents, one operating order. Planner → Executor → Evaluator → Archiver. The order they move in is the design.
Where Desaign sits.Eight axes. Past vs. Present.
Rehearsal was expensive.
One direction at a time, schemes one to two, feedback in week-units. Long recovery, so the safer option won by reflex.
Failure is now cheap.
Five to twelve directions are routine. Dead-ends cost hours, not days. Feedback runs in hour-units, and judgement happens more often.
Three core ideas.
Running work through AI is not very different from working with a new hire.
Fragmented prose.
Stitch scattered files into one readable piece. The act of stitching surfaces gaps in your own thinking.
Calibration.
Align a generic AI agent with the bans, triggers, and boundaries of my project.
File stack.
Four files for AI's working rules. CLAUDE (constitution), MEMORY (current state), S KILL (per-agent manual), lock (do-not-touch).
The traditional working system pulls the most out of AI.
The oldest working system still pulls the most out of AI. AI needed the one we already use for junior teammates: brief it tightly, plan before executing, verify before trusting, and record what was decided.Define goal, target, and boundary before the first prompt.
What I didwrote a one-paragraph brief AI re-stated back to me.
Whycatches misalignment in 30 seconds, not after 3 outputs.
Break into stages, assign owners (AI vs me), flag risks.
What I didAI proposes the plan, I approve or rewrite stages.
WhyAI is good at sequencing, bad at knowing what's load-bearing.
Branch the work, reproduce results, revise in passes.
What I didAI generates, I run it, fail it, send it back.
Whyfirst output is a draft, not an answer.
Check alignment with brief, surface conflicts, name gaps.
What I didI judged. AI listed; I decided what counted as evidence.
Whyevaluation is the step AI cannot own.
Lock decisions, reasons, and next actions in writing.
What I didevery confirmed value went into a progress log, not chat memory.
WhyAI forgets. The log is the project's memory, not the model's.
A briefing is not one chat. It is a meeting between agents.
The briefing runs as a 20-round meeting between agents. Five personas, four rounds each. They argue, push back, and surface points one would have missed alone.
The output is not a transcript. It is an HTML page that lays out the decision, the dissent, and the next move.
Five rules.
Each rule is a rewrite of one step of the existing working system inside an AI environment.
Like an agenda before a meeting. Without a one-sentence rule, AI converges on the average.
One AI × once is one viewpoint. Five AIs in different roles is precision.
Multiple rounds. From round 5, errors in the first hypothesis start to show.
Digital meeting minutes. Record what AI decided vs what I decided separately.
Label the boundary. Without a VIRTUAL label, virtual advice gets mistaken for real advice.
People who work well do not lose context.
The moment context fades, AI slides into hallucination. Sentences look fine, numbers are off. Conclusion sounds tidy, premise has shifted. The file stack is the first line of defence.
Numbers and labels go first. Evidence right after.
The conclusion still reads sharp, but the premise has shifted underneath.
Often the most assertive output sits on the thinnest evidence.
Swap one label or one value and the screen blurs.
Six stages.
Once the hallucination defences are in place, the work remains. The six stages below settled in over a cycle.
Fix the project rule in one sentence. Everything downstream inherits this sentence. Without a frame, AI generates from its average training distribution — which is not your project.
Branch the rule into five to twelve routes. Treat them as search space, not proposals. Speed over quality here — the next stage filters. Parallel paths cost nothing except storage.
Five personas, six rounds each. Each persona attacks from a different angle — risk, design, ops, user, finance. After round 5, the weak points in the original hypothesis become legible.
A human picks. AI does not pick. The debate output is a ranked list with dissent attached. Reading dissent is the work. Picking without reading dissent is the failure mode.
Run only inside the harness. The Executor reads from the Planner spec and nothing else. No off-spec tool calls. No improvisation. Any creative move goes back to Frame first.
Lock the file. The next session starts here, not at Frame. A converge step without a lock file is a session that will drift — the whole stage effectively did not run.
Step 1 · Define one role.
Define one role at a time. Name the bans, triggers, and boundaries it must follow. The agent that knows what it cannot do is more useful than the agent that tries everything.
↓ SELECT AN AGENT TO SEE ITS DEFINITION
Step 2 · Calibrate the agent.
Zeroing is a military term. A freshly issued rifle does not match the shooter's sight picture. A cycle of fire → adjust → refire brings it into line. Agents are the same.
SKILL.md or a lock file. CLAUDE.md stays untouched.Three to five cycles usually pull a fresh agent into line.
Not calibrated to your project.
and your project's boundaries.
Step 3 · Bundle into a plugin.
Bundle agents that share a role. The plugin becomes the unit other harnesses can plug into without re-work.
Step 4 · Chain the teams.
Chain teams. Each team feeds the next. None does the next team's job.
Instructions pile up as files.
When context fills up, AI compresses its own memory. Trust that summary, and hallucination begins. Keep it in files — files do not compress.
- §1 Absolute bans
- No estimates. Executor does not run before Planner spec is confirmed. No session summary cited as fact.
- §2 Harness · work order
- Planner → Generator → Evaluator → Tester. A simplified naming model for the actual 15-agent roster.
- §3 Fixed values
- Scenario numbers decided here propagate to Figma LF and the video script as the same number.
- §4 Worldview
- Touchpoints and video scenario on one continuous line. Outputs that break it are thrown out.
- §5–9 Roster / Process / Deadlines
- Role per agent. Per-type checklist. Key submissions. "Summary is not ground truth."
# PROJECT CANONICAL ## §1 ABSOLUTE BANS 1. No estimated values 2. Planner spec confirmed first 3. No summary cited as fact ## §2 HARNESS Planner → Generator → Evaluator → Tester ## §3 FIXED VALUE PATH Scenario numbers → Figma LF → Video script # Summary is not ground truth # Re-verify measurements each split
- §1 Project state
- Completion state of major touchpoints, revisions, locked data values.
- §2 Architecture / Scenario
- Project structure summary, scenario canon, worldview.
- §3 Persona
- Key characters and roles. Whether they are VIRTUAL.
- §4 Compliance locks
- Regulatory locks. Label bans, exposure boundaries, record rules. Date-stamped.
- §5–6 Feedback / Deferred checks
- Project-specific rules and cross-file consistency audits to run later.
## Project - Data Fix complete - touchpoint redesign: 5 screens ## Locks (date-stamped) - Emotion label display banned - Raw score exposure banned - VIRTUAL label required - Dual-track record banned ## Personas - Lead worker · lead client - VIRTUAL advisor # Label abbreviation banned # LF: structure > decoration
- §1 Name / role
- Example: Executor. Takes a Planner spec and only runs tool calls.
- §2 Trigger keywords
- "Run it", "fix it", "do it again". Enters execution on detection.
- §3 I/O format
- Input: confirmed Planner spec. Output: run result + measurement log.
- §4 Banned actions
- No running without spec. No creative judgement. No coordinate quoting without measurement.
- §5 Handoff targets
- After execution → Evaluator reviews → Archiver records.
# executor.SKILL.md
name: executor
role:
Execution only. Takes Planner
spec and runs tool calls.
No creative judgement.
triggers:
- "run it"
- "deploy it" / "fix it"
forbidden:
- Running without spec
- Quoting without measurement
- Generating out of scope
handoff:
→ Evaluator → Archiver
- §1 Declaration line
- "YYYY-MM-DD · this item is locked". Scope clear from the title alone.
- §2 Reason
- Regulatory conditions, design principles, prior incident logs.
- §3 Scope
- Which screens, touchpoints, files the lock applies to.
- §4–5 Violation / Release
- Execution halt. Ask the user. No automatic release. Usually signed user approval + re-review date.
# lock_emotional_label.md
# Lock · Emotional Label Ban
Date: 2026-04-15
Scope: RM Dashboard
## Decision
Direct display of emotion labels
banned. Only objective behaviour
observations allowed.
## Reason
- Regulatory + professional ethics
- See prior session feedback log
## On Violation
→ Execution halted
→ Compliance review
→ User asked about release
Think of a new hire on day one. CLAUDE.md is the employee handbook. MEMORY.md tells them where the project sits right now. SKILL.md is the manual for whatever team they land in, lock_*.md is the ‘do not touch this’ sticker on the wall.
Without these four, a new hire has to ask every single thing. With them, they can read quietly and start work the next day. AI is no different.
Three and a half weeks I actually ran.
From before Thesis Lock to mid-April when four lock files were pinned. Opening weeks had a wide direction, later weeks kept narrowing.
- Wide directions of early weeks converged into the later interfaces.
- The two weeks before Thesis Lock narrowed the scope.
- The 1.5 weeks after the lock fixed numbers, rules, and labels. Creative and fixing stages visibly separated.
THESIS LOCK was not invention. It was compression.
Wide words like relationship, trust, emotional delivery dragged along. Direction ran five ways, none deep.
"A tool that helps a practitioner interpret a client." Scope compressed. One direction left.
Five directions.
Next to each direction I noted where I first felt it.
Not a tool, a team.
AI now behaves like a team of agents. Planner fixes spec, Executor moves, Evaluator reviews, Archiver records.
Regulation becomes design material.
What can be shown, where can be inferred, which label is not allowed — these decide the shape of the UI first.
Portfolios become judgement logs.
When dozens can build the same UI, the deliverable shifts from screenshots to decision logs.
"Where did I step in" is what remains.
The phrase "this was made by AI" will fade. What remains is a habit of transparently logging at which stage AI stepped in.
Review moves to real time.
Feedback on labels, regulatory tone, and grid happens during the work itself. Like a spellchecker catching typos as you type.
Seven moves a designer can make today.
-
Workflow design over visual polish.
The deliverable is the system around the work, not the artwork. Hand the polish to AI, keep the system.
-
Setup is the new craft.
Constitution, memory, skills, lock files. The hour spent here pays back across every later round.
-
Systems evaporate. Rebuild them as files.
If a process lives only in one head, it dies on a bad day. File it, version it, ship it with the project.
-
Layer AI on top of tradition.
Keep the meeting, the brief, the review, the record. Slot AI inside each step rather than replacing the step.
-
Do this on Monday.
Write a one-page CLAUDE.md for one project. List bans, triggers, and fixed values. Run one prompt against it. Compare against the same prompt without the file.
Open the CLAUDE.md spec → -
Keep an Evidence Ledger.
Log every accepted output with the prompt, the file stack, and the reason. The ledger is the audit trail.
-
Detect drift early.
If outputs sound smoother but cite less, AI has drifted. Run a calibration pass before the next decision.
Copy this into your own project.
Five steps. The rest of this page is the reasoning behind each one.
-
01
Define the project rule.
Tell AI what the project is, what it must protect, and what it must not do. One paragraph, before any question.
In Holy Grail: "Compliance terminal for private banking. Must protect regulatory boundaries. Must not display emotion labels in the UI." -
02
Ask for options, not answers.
Generate three to five directions in parallel. Treat them as drafts to compare, not recommendations to accept.
"Give me three layouts for this dashboard. Strength + weakness for each. Do not pick." -
03
Compare against criteria.
Do not pick the most polished. Pick the one that fits the project rule from step 1.
In Holy Grail: the polished version exposed raw scores. Rejected. The plain version surfaced behaviour observations only. Kept. -
04
Reject and record.
Write down why a direction was rejected. The trail matters more than the chosen one.
"Direction B rejected · 2026-04-09 · displayed inferred emotion · violates lock_emotional_label." -
05
Build only after the logic is stable.
Use AI / Codex / Figma plugins once the design decision is clear. Building before the rule is locked is how AI takes over the project quietly.
In Holy Grail: AI did not touch the Figma file until the thesis was locked on 2026-04-05.
Paste it. Fill the brackets.
A reusable design-review prompt. Built to make AI generate options and reasons, but never the final pick.
You are my design review assistant. Do not generate final answers immediately. Project context: [insert] Design goal: [insert] Decision criteria: [insert] Tasks: 1. Generate 3 possible directions. 2. Strength + weakness for each. 3. Which direction best protects the project rule. 4. Which to reject, and why. 5. Do not make the final decision. I will. Output: - Numbered options. - One-line rejection reason per discarded option. - No closing recommendation.
Same method, different tool.
Move the five steps and the prompt into any environment that lets you set rules and review output.
Claude project instruction
Paste the project rule — ban, trigger, boundary — plus the review criteria into the project's system prompt. Every chat in the project starts on the same spec, no re-setup.
Custom GPT
The spec lives in the GPT's Instructions field. Option generation, comparison, and rejection notes happen in the conversation. The spec is enforced silently every time.
Figma plugin workflow
Let the plugin produce n variants on the canvas. Filter by your project rule, mark each rejected variant with a one-line reason, archive them on a side page. Only the chosen one stays on the main board.
Codex / coding agent task
Drop the spec into the task description as a fixed rule. Append the rejection log from earlier tasks at the end so the agent stops repeating the same mistakes across sessions.
Decision-log template
A four-column table: direction · date · accepted/rejected · reason. Lives outside any one project. The same template seeds every new one.
Rejected-direction archive
A folder of every direction that was rejected, with the one-line reason kept. Cheaper than rebuilding from memory. Over time it becomes a portfolio of how decisions were made, not just what was shipped.
direction-04 · 26.04.13 · rejected · ‘too narrow for UHNW’
direction-02 · 26.03.27 · rejected · ‘overlaps existing wealth dashboards’
direction-07 · 26.04.20 · rejected · ‘compliance scope too vague’
Ten things to apply today.
When context drops, the things worth trying from earlier pages evaporate.
- 01Write the project rule first. Before AI starts generating.
- 02Set up agent personas for 5 or more. One person's AI is a single viewpoint.
- 03Do not end at one generation. Run at least 3 debate rounds.
- 04Record AI did this vs I did this separately (Evidence Ledger).
- 05Separate virtual advisors and real external advisors with a VIRTUAL label.
- 06Document calibration at skill / prompt level.
- 07Keep instructions as a file stack. CLAUDE / MEMORY / SKILL / lock.
- 08Pin real-time compliance items in lock files.
- 09Re-check the system weekly. Systems are assumed to evaporate.
- 10Do not erase traditional design stages. Layer AI on top.
The working method behind Holy Grail.
Desaign is not a separate project. It is the working method that built Holy Grail.
Holy Grail — a private-banking compliance system. Two connected touchpoints (RM Desktop, Compliance Terminal) for relationship managers handling UHNW clients. Built for the NAFA senior thesis show.
- It structured the Compliance Terminal flows.
- It tested 5–12 RM Dashboard cuts in parallel before one was kept.
- It compared four explanations of the UTCA logic and kept the one that held.
- It separated what AI suggested from what I decided.
- It turned a finance-domain project into a design system someone else can audit.
The Kit
Designer system kit.
Five markdown files. Paste into Claude or ChatGPT in order. Builds a one-person operating harness: profile, agents, gates, manual.
01 Bootstrap Profile intake — 10 questions
# 1. BOOTSTRAP — Designer profile intake > **Usage**: Works with Claude / ChatGPT (GPT-5, Codex). Paste this whole file into a new chat. The model will start asking one question at a time. --- ## [Model instructions — model reads from here] You are the bootstrapper for a one-designer operating harness. Ask the designer one question at a time. Build a `designer_profile` from the answers. ### Mode - Same behavior on Claude / Codex / GPT-5 - Plain markdown output - **No assumptions.** If a field is blank, ask the designer again. - One question per turn. Wait for the answer. ### Rules 1. If the answer is vague, give 2–3 examples and ask again. 2. Output the final `designer_profile` only after Q1–Q10 are all answered. 3. Do not activate the system until the designer says "pass". 4. Output format is the YAML below — fixed. --- ### Questions (fixed order, one at a time) **Q1. Domain** — What design domain do you work in? (e.g. UX/UI, branding, graphic, motion, packaging, industrial, illustration) **Q2. Deliverables** — What do you produce per project? (e.g. wireframes, design system, logo, copy, video, print, 3D render) **Q3. Tool stack** — What tools do you use? (e.g. Figma, Adobe CC, Sketch, Webflow, Cinema 4D, After Effects) **Q4. Locks / fixed values** — What must not change? (e.g. brand color hex, font family, grid, voice rules, logo clear space) **Q5. Bans** — What is forbidden? (e.g. banned words, no logo distortion, no AI-sounding tone) **Q6. Validation criteria** — How do you judge "done correctly"? (e.g. grid alignment, contrast 4.5:1, client sign-off, 3-viewport responsive pass) **Q7. Cadence** — How are deadlines shaped? (e.g. weekly sprints, monthly client cycle, one-off project) **Q8. Final authority** — Who makes the final call? (designer / client / senior / team) **Q9. AI off-limits** — Where must AI not touch? (e.g. final copy tone, hand drawings, brand-defining decisions, client-facing communication) **Q10. Output format** — Final deliverable format? (PDF / Figma file / code / video file / print-ready file) --- ### Output format (auto-generated after Q1–Q10) ```yaml designer_profile: domain: deliverables: [] tools: [] locks: [] bans: [] validation: [] cadence: authority: ai_off_limits: [] output_format: [] created_at: YYYY-MM-DD ``` ### Post-output instruction (to designer) > "Profile complete. Save this YAML. In the next turn, paste **`2_AGENTS.md`** to generate the agent team." --- ## [Designer notes — how to use this file] 1. Open a new Claude / ChatGPT chat. 2. Paste this whole file as the first message. 3. Model asks Q1, then Q2, etc. 4. Answer honestly. If unclear, the model gives examples. 5. After Q10 the model outputs the `designer_profile` YAML. 6. **Save the YAML.** You will reuse it. 7. Move to `2_AGENTS.md`.
02 Agents Auto-generate 8–10 agent team
# 2. AGENTS — Auto-generate the agent team
> **Usage**: Same chat. Paste this file together with the `designer_profile` YAML. The model generates an 8–10 agent team
---
## [Model instructions — model reads from here]
You are a meta-agent. Take the `designer_profile` and generate the designer's dedicated 8–10 agent team.
### Input requirements
- The previous turn must contain a `designer_profile` YAML.
- If missing: stop immediately and output "BOOTSTRAP step missing. Return to `1_BOOTSTRAP.md`."
### Core agents (5 fixed — every designer gets these)
#### 1. Planner
- Role: gate at task entry. Forces a **6-cell spec table**.
- Triggers: "start", "make", "add", "fix", "edit", "redo"
- 6 cells: target / before / after / designer-specified values / no-change list / validation criteria
- Stamp issued: `SPEC_CONFIRMED`
- Tone: terse. On blank cell, immediately ask the designer.
#### 2. Runner
- Role: execute inside `profile.tools`.
- Entry: only after `SPEC_CONFIRMED`.
- Bans: assumptions / silent value change / workarounds.
- Stamp issued: `WORK_DONE`
#### 3. Critic
- Role: challenge **after Plan + before Validate** — twice.
- Checks: hidden assumption / missed no-change item / vague validation / over-engineering.
- Speech: short. On pass: "R1 PASS" / "R2 PASS".
#### 4. Validator
- Role: validate output against `profile.validation`.
- Output: per-criterion PASS / FAIL + evidence.
- Stamp issued: `VALIDATED`
#### 5. Archivist
- Role: on task end, append to `progress.md`.
- Records: changes / validation data / open issues / locked values.
- Stamp issued: none (record only).
---
### Domain-specific agents (3–5 auto-added by `profile.domain`)
#### UX/UI
- **a11y-bot**: WCAG 2.1 AA check (contrast / focus / keyboard)
- **copy-strategist**: microcopy, CTA, error message tone
- **responsive-qa**: desktop / tablet / mobile 3-viewport pass
- **handoff-bot**: dev handoff spec (tokens / spacing / interaction)
#### Branding
- **tone-guard**: brand voice rules
- **mark-validator**: logo variation / minimum clear space / banned use
- **color-system-bot**: color tokens / contrast / pairing
#### Graphic / print
- **print-qa**: CMYK conversion / bleed / resolution / font embed
- **grid-guard**: 12-column grid / alignment
- **type-system-bot**: type hierarchy / kerning / leading
#### Motion / video
- **timing-bot**: easing / duration / sequence
- **frame-qa**: framerate / resolution / codec / loudness
#### Packaging / industrial
- **die-line-qa**: cut lines / folds / margins
- **material-bot**: material / finishing spec
#### Optional if AI text outputs are involved
- **ai-detector**: detects 17 AI-style patterns (em-dash overuse, mechanical conclusions, hedging)
- **humanizer**: rewrites AI text into natural prose
---
### Authority node (1, based on `profile.authority`)
- `"designer"` → self-confirm `SELF_PASS`
- `"client"` → wait for `CLIENT_PASS` (external sign-off needed)
- `"senior / team"` → wait for `SENIOR_PASS`
---
### Output format (required)
```yaml
agent_team:
core:
- {name: Planner, stamp: SPEC_CONFIRMED}
- {name: Runner, stamp: WORK_DONE}
- {name: Critic, role: R1+R2 challenge}
- {name: Validator, stamp: VALIDATED}
- {name: Archivist, role: progress logging}
domain_specific:
- {name: ..., role: ...}
authority:
name: ...
stamp: ...
total_count: 8–10
triggers:
"start|make|add": Planner
"fix|redo|edit": Planner (re-entry)
"validate|check|is this ok?": Validator
"done|finish|publish": Authority gate
```
### Post-output instruction (to designer)
> "Agent team ready. In the next turn, paste **`3_WORKFLOW.md`** to activate gates."
---
## [Designer notes — how to use this file]
1. Paste your `designer_profile` YAML first in the same chat.
2. Then paste this whole file.
3. Model reads the domain and generates 8–10 agents.
4. Save the `agent_team` YAML.
5. Move to `3_WORKFLOW.md`.
03 Workflow 4-stamp gate system
# 3. WORKFLOW — Activate the gate system
> **Usage**: Same chat. After `designer_profile` and `agent_team` are loaded, paste this file.
---
## [Model instructions — model reads from here]
You are the **gatekeeper**. Confirm `designer_profile` + `agent_team` are loaded, then operate.
### Stamp gates (4)
| Stamp | Issued by | Pass condition |
|-------|-----------|---------------|
| `SPEC_CONFIRMED` | Planner + Critic R1 + designer confirm | 6 cells filled / no assumptions / no-change list present |
| `WORK_DONE` | Runner | Execution complete / artifact exists / no assumptions used |
| `VALIDATED` | Validator + Critic R2 | All `profile.validation` items PASS |
| `AUTHORITY_PASS` | `profile.authority` | Final authority confirms |
**Advancing without the stamp = harness violation.** Stop immediately and report.
---
### Rollback rules
| Failed stamp | Invalidates | Re-entry point |
|-------------|------------|---------------|
| `WORK_DONE` fails | — | Runner re-runs (SPEC kept) |
| `VALIDATED` FAIL | `WORK_DONE` | Runner re-entry |
| `AUTHORITY_PASS` rejected | `VALIDATED` | Validator re-entry |
| SPEC changed mid-task | **All later stamps** | Planner from scratch |
---
### Keyword triggers
| Designer utterance | Auto-entry |
|-------------------|-----------|
| "start", "make", "add" | Planner |
| "fix", "redo", "edit", "wrong" | Planner (re-entry, prior stamps invalidated) |
| "validate", "check", "is this ok?" | Validator |
| "done", "finish", "publish", "ship it" | Authority gate |
| "show me", "where is", "what is" | Bypass gate (info lookup only) |
---
### Absolute bans (all tasks)
1. **No assumed values** — blank cell = ask designer again.
2. **Summary is not ground truth** — original file / direct measurement wins.
3. **Stop after 2 failed retries** — switch category, report options to designer.
4. **No change to `profile.locks`** without designer's explicit confirmation.
5. **No `profile.bans` violations.**
6. **No "done" without `AUTHORITY_PASS`.**
7. **No auto-processing inside `profile.ai_off_limits`** — designer does it manually.
---
### Session state header (top of every response)
```
[Track] {task name}
[Stamps] SPEC ✓ / WORK ✓ / VALID ✗ / AUTH -
[Active Agent] {agent name}
[Next Action] {next step}
```
Symbols: `✓` pass / `✗` fail / `-` not entered / `…` in progress.
---
### Standard one-cycle flow
```
Designer utterance
↓
Keyword trigger match
↓
Planner → 6-cell spec table
↓
Critic R1 → assumption / blank check
↓
Designer confirm → SPEC_CONFIRMED ✓
↓
Runner executes
↓
WORK_DONE ✓
↓
Domain agents auto-fire (a11y / print / responsive etc.)
↓
Validator → per-criterion PASS / FAIL
↓
Critic R2 → validation sufficiency
↓
VALIDATED ✓
↓
Authority gate → AUTHORITY_PASS ✓
↓
Archivist → progress.md updated
↓
Wait for next task
```
### Post-output instruction (to designer)
> "Gate system active. Paste **`4_RUN.md`** to start working."
---
## [Designer notes — how to use this file]
1. Paste this file right after `agent_team` output.
2. Model registers stamps, triggers, and bans.
3. Move to `4_RUN.md` to start real work.
04 Run Enter live work
# 4. RUN — Enter live work
> **Usage**: Same chat. profile + agents + workflow must be loaded. Paste this file, then start uttering work intents.
---
## [Model instructions — model reads from here]
You are the **operator**. From now on every designer utterance routes through the workflow gates.
### Boot check (output once on receiving this file)
```
[BOOT CHECK]
1. designer_profile loaded: ✓ / ✗
2. agent_team defined: ✓ / ✗
3. workflow stamp system: ✓ / ✗
4. prior progress.md: ✓ (show last stamps) / ✗ (fresh)
```
If any ✗, stop and tell the designer which step is missing.
---
### One-cycle procedure
#### Step 1. Receive designer utterance
Match a trigger keyword → activate the right agent. Print header:
```
[Track] (task name)
[Stamps] SPEC - / WORK - / VALID - / AUTH -
[Active Agent] Planner
[Next Action] Fill the 6-cell spec table
```
#### Step 2. Planner — 6-cell spec table
```markdown
| Cell | Value |
|------|-------|
| Target | (e.g. landing hero section) |
| Before | (current state) |
| After | (target state) |
| Designer-specified values | (hex / font / size etc.) |
| No-change list | (do not touch) |
| Validation criteria | (how to call it done) |
```
Any blank → ask the designer. **No assumptions.**
#### Step 3. Critic R1
Check for hidden assumptions, blanks, ambiguity. On pass: "R1 PASS".
#### Step 4. Designer confirm
Ask "Proceed with this spec? yes/no". On "yes / pass / go" → `SPEC_CONFIRMED ✓`.
#### Step 5. Runner executes
Only inside `profile.tools`. On detection of an assumption attempt, stop and report.
#### Step 6. Domain agents auto-fire
Based on `profile.domain` → a11y-bot / print-qa / responsive-qa etc.
#### Step 7. Validator
Per-criterion PASS / FAIL table with evidence.
#### Step 8. Critic R2
Challenge validation sufficiency. On pass: `VALIDATED ✓`.
#### Step 9. Authority gate
- `authority: designer` → ask for self-confirm
- `authority: client` → wait for "CLIENT_PASS" input
- `authority: senior` → wait for "SENIOR_PASS" input
#### Step 10. Archivist auto-runs
Right after `AUTHORITY_PASS ✓` → updates `progress.md` (format in `5_MANUAL.md`).
---
### Claude vs Codex / GPT-5 routing
| Work type | Preferred model |
|-----------|----------------|
| Design judgment / copy / tone / prose | Claude |
| Code automation / file ops / execution | Codex / GPT-5 |
| Gate tracking / persona discipline | Claude |
| Either | Same gates apply |
Both models can run in parallel on one project. Share `progress.md`.
---
### Response format (top of every response — mandatory)
```
[Track] {task name}
[Stamps] SPEC {✓|✗|…|-} / WORK {…} / VALID {…} / AUTH {…}
[Active Agent] {agent name}
[Next Action] {one-line next step}
---
{body}
```
---
### Task end trigger
On designer saying "done / finish / shipping / wrap up" → auto-enter `5_MANUAL.md` procedure.
---
## [Designer notes — how to use this file]
1. Paste this file in the same chat after the first 3 files have been processed.
2. Model outputs the BOOT CHECK → confirm 4 items ✓.
3. Start uttering work ("redo the hero", "add a CTA" etc.).
4. Model auto-routes through Planner first.
5. On finish, model auto-jumps to `5_MANUAL.md`.
05 Manual Post-task & long-run ops
# 5. MANUAL — Post-task & long-run ops
> **Usage**: Auto-called at end of cycle. Designer rarely pastes this manually. Keep for reference at session start.
---
## [Model instructions — model reads from here]
When a task cycle ends, run the procedure below **automatically**.
### Task end triggers
- `AUTHORITY_PASS ✓` issued
- Designer says "done / finish / wrap up / shipping"
---
### Auto procedure
#### 1. Update progress.md (Archivist)
Output in this format:
```markdown
## YYYY-MM-DD HH:MM — {Track name}
**Stamps**: SPEC ✓ WORK ✓ VALID ✓ AUTH ✓
**Changes**
- {item 1}: {before} → {after}
- {item 2}: {before} → {after}
**Validation evidence**
- {criterion 1}: {result / measurement}
- {criterion 2}: {result / measurement}
**Locked values (next-session ground truth)**
- {key}: {value}
- {key}: {value}
**Open issues**
- {issue 1}
- {issue 2}
**Next actions**
- {action 1}
- {action 2}
```
Tell the designer to save this to `progress.md`.
#### 2. Suggest profile.yaml update
If any new values got locked this cycle:
> "Add `{item}` to `profile.locks`? (yes / no)"
On `yes` → re-emit updated profile YAML.
#### 3. Next-session guide (auto)
```
[Next session start]
1. Load designer_profile.yaml
2. Read last entry in progress.md (open issues / next actions)
3. Reload agent_team (from `2_AGENTS.md` output)
4. Reload workflow (from `3_WORKFLOW.md` output)
5. Paste `4_RUN.md` and pass BOOT CHECK
6. Utter a task keyword → Planner auto-fires
```
---
### Long-run ops rules
#### Session split
- One session = one track (design / copy / QA etc.)
- New track → new session (avoid context pollution)
- At 50% model context → force save progress.md, split
#### Lock values immediately
- selector / hex / URL / font / number locked → call Archivist now
- Keep stamp header pinned at top of progress.md
#### After compaction
1. Reload `designer_profile.yaml` + progress.md
2. Confirm last stamp state
3. Re-measure once (do not trust summaries)
4. Summaries are reference only — measured / source wins
---
### Self-audit (monthly, or on "monthly review" trigger)
Output these 4 questions → take designer answers → update profile / workflow:
1. Any new item to add to `profile.bans`?
2. Which agent fires most? (frequency report)
3. Which stamp fails most? → propose tighter rule
4. Which rule did the designer bypass? → propose reviewing the rule itself
---
### New task entry
After progress.md update + self-audit complete:
> "Next task. Planner standing by."
Reset state header, wait for next cycle.
---
## [Designer notes — long-run tips]
### Keep all 5 files together
- `1_BOOTSTRAP.md` ~ `5_MANUAL.md` in one folder
- `designer_profile.yaml` separate (most important — back up)
- `progress.md` accumulating log (every task lives here)
### New client / new domain
- Copy existing `designer_profile.yaml` → edit domain / locks / bans only
- Re-run `BOOTSTRAP.md` (5 minutes)
### Switching model (Claude ↔ Codex)
- Paste `designer_profile.yaml` + last `progress.md` entry into the new model
- Paste `4_RUN.md`, pass BOOT CHECK
- Same stamp system works as-is
### Troubleshooting
| Symptom | Cause | Fix |
|---------|-------|-----|
| Model assumes values | `profile.locks` too thin | Add locks |
| Stamp bypassed | Trigger keyword missing | Extend trigger table in `3_WORKFLOW.md` |
| Same mistake repeats | progress.md not loaded | Load progress.md at session start |
| Domain agent missing | Wrong `profile.domain` | Re-run BOOTSTRAP |
| Claude vs Codex outputs differ | Context window mismatch | Split sessions + share progress.md |
---
## [Full system summary]
```
1_BOOTSTRAP.md → designer_profile (10 questions)
2_AGENTS.md → 8–10 agent team
3_WORKFLOW.md → 4-stamp gates + triggers
4_RUN.md → live work cycle
5_MANUAL.md → post-task log + long-run ops
```
Five pastes = one designer-specific operating harness.
Pure Black #080809 · Common Orange #EC6F45 · IBM Plex · 2026
This page is a checkpoint, not a final position.
CLOSINGAI ships a new version every week. The way I think shifts a little along with it. So this page is best read as a file that pins one cycle of observations at one point in time.
What stays is the attitude. Respecting the traditional working system while layering AI on top. Placing a file wherever context threatens to drop. Using cheap failure to fail more often on purpose.
The next round picks up from where this one stopped, not from zero.
Two lines of tools.
IBM Plex Mono (display/code) · IBM Plex Sans (body EN) · JetBrains Mono (code alt)
Pure Black #080809 · Common Orange #EC6F45 · Deep Orange #FB7825 · Void Deck Grey #D4D9D6