Five Layers for a Replicable AI-Assisted Build Session
A parallel-agent build session shipped four independent work-streams in one night — a reusable UI scaffold, a data-generation and lens toolkit, a mathematically non-trivial core library, and an agent-to-agent substrate. No merge conflicts, no silent clobbers, no scope drift. What made that possible wasn't speed or cleverness. It was a pattern. This is the blueprint.
What made the session smooth
| Ingredient | What it did |
|---|---|
| Memory as durable substrate | 19 project-memory files auto-loaded at session start — no re-explaining context. |
| Typed artifacts | project_, user_, feedback_, reference_ split; easy for a future session to navigate. |
| Plan-before-build discipline | Every phase committed a plan document before code. |
| Kickoff prompts as self-contained capsules | Builders needed no clarification — paste and run. |
| Status files as async comms | Builders and orchestrator coordinated without interrupting each other. |
| Gate patterns with explicit signals | [DESIGN-READY] → [DESIGN-ACK] → [BLOCKED] → [COMPLETE]. Unambiguous state. |
| Question + rec + reason | Every decision point landed with a default if the human skipped. |
| Territory discipline | Parallel agents and spontaneous side-agents never collided destructively. |
| Re-read before commit | Multi-session-concurrent edits caught before they silently clobbered. |
| Phase discipline | Refine → plan → build, sequential and explicit. |
Pattern: dense context plus clear signals plus disciplined discipline plus a bias toward committing artifacts to git over keeping state in conversation.
Layer 1 — The three context tiers
Knowing where each piece of information lives is the highest-leverage decision for session smoothness.
| Tier | Duration | Lives in | What belongs here |
|---|---|---|---|
| User tier | Across every project | ~/.claude/.../memory/user_*.md, style-level feedback_*.md |
Who you are, how you work, non-negotiable preferences. |
| Project tier | Across every session in one project | memory/project_*.md, reference_*.md, project-level feedback_*.md, CLAUDE.md, ADRs |
Project identity, stack commitments, math substrate, pattern library, ADR lineage. |
| Session tier | One work session | docs/phase*-plan.md, status files, kickoff prompts, transient todos |
The current phase's plan, open gates, in-flight work, status signals. |
Rule of thumb: if the same statement will be true across three future sessions, it belongs in the user or project tier. Session-tier content dies with the phase and should be allowed to die.
Layer 2 — The bootstrap protocol
The first 30 minutes of a new project is where most collaboration quality is decided.
What the human must provide
Eight items, minimum viable kickoff kit:
- One-sentence project intent. Every other decision threads through this.
- Primary user profile. Drives UX tradeoffs and voice.
- Source material. Documents, links, reference projects to read.
- Hard stack commitments. Things that will not be relitigated.
- Collaboration preferences. Phase discipline, writing style, authority to capture.
- Time horizon. A twelve-month goal is not a four-hour block and should not be treated as one.
- Anti-patterns. Where previous projects went wrong.
- Success definition. What "this worked" looks like — measurable and qualitative.
What the AI finds for itself
Nothing below should cost the human a keystroke:
- Current file state via
lsand glob. - Key symbols and interfaces via targeted search.
- Git state: branch, recent commits, open branches.
- Test suite state and smoke-trace output.
- Latest session retro or startup document if present.
What the AI asks about (with rec and reason)
Only when inference would be risky:
- Ambiguous scope (this phase versus next).
- Policy decisions (naming, privacy posture).
- Unknown integrations (provider choice, toolkit).
- Phase transitions.
- Irreversible actions (force-push, delete, rename with references).
Everything findable in memory, docs, code, or git is the AI's job. Not the human's.
The decision flowchart
if user-provided OR memory-covered → proceed autonomously
elif researchable via tools → research, report, proceed
elif reversible and low-risk → propose with rec, execute unless stopped
elif ambiguous OR irreversible → ask with rec and reason
elif in-flight collaboration → status file; re-read before commit
elif violates a frozen item → STOP, ask
elif touches another stream's territory → STOP, status file, wait
This flowchart runs on every turn. Externalizing it as durable guidance keeps it stable across sessions.
Layer 3 — The collaboration loop
Who talks to whom
┌─────────────┐
│ HUMAN │ ← decisions, green lights, corrections, new intent
└──────┬──────┘
│ chat
▼
┌────────────────────────────────────────┐
│ ORCHESTRATOR (main session) │
│ planning, research, merge authority │
└──┬──────┬──────┬──────┬────────────────┘
│ │ │ │ (status files = async comms channel)
▼ ▼ ▼ ▼
┌────┐┌────┐┌────┐┌────┐
│ A ││ B ││ C ││ D │ ← builders, one stream each, each in a worktree
└────┘└────┘└────┘└────┘
The gate-signal alphabet
A durable vocabulary every builder and orchestrator inherits:
| Signal | Writer | Reader | Meaning |
|---|---|---|---|
[RESEARCH-DONE] | builder | orchestrator | I've read everything; here's my plan shape. |
[DESIGN-READY] | builder | orchestrator | Design note posted; review before I code. |
[UNBLOCK-X] | orchestrator | builder | You can proceed with X. |
[DESIGN-ACK] | orchestrator | builder | Design approved; code away. |
[BLOCKED: reason] | builder | orchestrator | I need input; halting. |
[NEEDS-HUMAN] | orchestrator | human | This is above my pay grade. |
[COMPLETE] <sha> | builder | orchestrator | Done; ready to merge. |
[MERGED] | orchestrator | human | Landed on main. |
Cadence
- Human to orchestrator: every message, no scheduling needed.
- Orchestrator to builders: poll on human ping, or on a scheduled interval.
- Builders to orchestrator: push to status file and branch, asynchronously.
- Orchestrator to human: on explicit request, plus proactively on gate escalation.
Ambient awareness — when the desktop helps
The redesigned Claude Code desktop (parallel sessions in a sidebar, auto-worktree per session, integrated terminal and editor) provides ambient awareness of every active stream's live state without polling. This complements — does not replace — status files. Status files remain the durable, git-tracked audit trail; the sidebar is the live ambient view. Both layers are needed: durability and immediacy serve different purposes, and only the durable layer survives a session restart.
Layer 4 — The automation boundary
Not everything should be automated. Routine administrative work is a good candidate. Judgment about transitions, merges, and scope is not.
Four surfaces, not one
| Mechanism | Best for | Examples |
|---|---|---|
| Cowork desktop sessions parallel sessions in a sidebar, auto-worktree-per-session, integrated terminal + editor, phone-pairing via Dispatch |
Operator-amplification — running the orchestrator and N parallel builders in one window with native worktree isolation; mobile ack via Dispatch | A four-stream parallel build, all visible in one sidebar; ack a [DESIGN-READY] from your phone while away from the keyboard |
| Skills on-demand procedures the AI triggers from chat |
Interactive setups, filesystem writes, local interview loops | setup-new-project, phase-kickoff-templater, local pre-event ritual |
| Routines scheduled or event-triggered cloud workflows |
Periodic digests, PR-triggered reviews, nightly merge-ready checks | Status-digest every 20 min during active build; design-ack on stream-branch push; nightly merge-ready check |
| Shell scripts deterministic local commands |
Build, test, smoke traces, environment checks | shakedown.ps1, smoke-trace.ps1, OTel-collector launch |
Cowork sessions are the closest layer to the human — they are amplification, not automation. Skills are interactive but procedural. Routines are headless and scheduled. Scripts are deterministic and synchronous. Each layer has a different latency, a different audience, and a different recovery posture when something goes wrong.
The boundary that matters: Routines run in the cloud against the repository and connectors, so they cannot touch the local desktop's filesystem or start a native app. Skills, scripts, and Cowork sessions all stay local for everything that does.
First three Routines worth shipping
- Status digest. Scheduled every 20 minutes during active build. Reads every stream's status file and its branch tip, builds a color-coded state table, posts it as a comment on a pinned issue. Replaces the human poll-and-ask loop with ambient awareness.
- Design-note review. Triggered on push to a stream branch when the status file flips to
[DESIGN-READY]. Reads the design note against the kickoff prompt and relevant memory, produces a clean[DESIGN-ACK]commit or opens a review PR when changes are needed. - Merge-ready check. Scheduled nightly or triggered by an issue comment. Walks each stream branch for a
[COMPLETE]marker, verifies build and tests, opens a merge PR with the standard merge-message template. Merge stays a human click.
First three Skills worth shipping
- Setup new project. Interview-driven scaffold that writes the starter
CLAUDE.md,MEMORY.md, first ADR, and initial implementation plan. - Scaffold parallel streams. Creates worktrees, generates kickoff prompts from a template, seeds status files, outputs the tab-open commands.
- Local pre-event prep. Wraps shakedown, local launch, and pre-event backup as a single ritual.
Layer 5 — Where the human is always in the loop
Some decisions will never be delegated. Naming them explicitly prevents the automation layer from creeping into territory it shouldn't have.
| Decision type | Why it stays with the human |
|---|---|
| Phase transitions (refine → plan → build) | Core discipline; non-delegable. |
| Gate validation (did the live trial pass?) | Verbal and qualitative judgment. |
| Merge-to-main authority | Final integration gate. |
| Stack commitments | Identity is intentionally built; drift not allowed. |
| Anti-pattern enforcement | Rooted in values, not logic. |
| Social framing decisions | Domain expertise is the moat. |
| Scope creep red-lines | Only the human knows the twelve-month trajectory. |
| What to throw away | Part of the iteration pattern; only the human knows when feel is settled. |
What the AI does not ask the human again once memory captures it: stack preferences, writing style, phase-discipline interpretation, anti-pattern list, reference-project boundaries, transition language. Asking again is a memory failure, not a politeness.
What this unlocks for the next project
The blueprint isn't specific to one domain. It describes the shape of a disciplined AI-assisted build: dense context, clear signals, discipline that shows up as committed files rather than unreliable memory, automation at the boundaries rather than in the center. The human keeps judgment; the AI keeps pace.
The first test of the pattern was a spatial-temporal modeling platform with four parallel streams that shipped clean. The second test will be whether this document alone — without the conversation that produced it — is enough to run the pattern again.
If you're starting from scratch, the order is: build the memory tier first, write the kickoff protocol second, establish the gate alphabet third, decide the automation boundary last. Anything out of that order tends to collapse.
Derek Ciula is an enterprise architect, technical mentor, and AI integration specialist. Steppe Integrations helps teams build durable AI-assisted engineering workflows. This article is adapted from a 2026-04-19 session retrospective that produced the working pattern described.