The live board · scan to join Live board QR
AI Engineer · San Francisco

Lifestyles of the

AI-Native.

Voice-coding · agent skills · hooks · scheduled tasks

Stop typing. Start operating.

Zack Proser · Nick Nisi ~1 hour · hands-on · one repo
Live board + repo → Built live, from this room.
The premise

Most engineers babysit a single session.

Operators run a fleet.

Your facilitators

Two operators. AI all day, every day.

We build with Claude — for WorkOS, for our customers, and for our own projects on the side.

Headshot of Zack Proser Zack Proser

Applied AI · WorkOS

Ships internal + customer AI systems. Dispatches read by 5,000+ engineers.

Headshot of Nick Nisi Nick Nisi

EM, DX/AI · WorkOS

Leads the DX/AI engineering team.

The arc · four blocks

One repo. Each block builds on the last.

Voice removes the bottleneck. Loops do the work. Gates make it trustworthy. Schedules make it run without you.

01 Voice coding Talk to the repo. Manufacture work in parallel instead of typing it.
02 Loops & goals Hand the agent a goal with a checklist — it runs until done.
03 Verification gates Hooks and second opinions catch what the model would hand you broken.
04 Scheduled tasks The thing you built runs on a schedule — while you sleep.
Keep these open

Three things on your screen today.

🖥️ These slides Follow along on your phone. aie-deck.workos-internal.workers.dev
📖 The glossary Ask it anything. Glossary QR aie-glossary.workos-internal.workers.dev
📊 The live board The room, in real time. aie-board.workos-internal.workers.dev
Your guide today

It interviews you — and scores how AI-native you are.

A quick before-and-after: the coach asks how you work, gives you an AI-native score, and points at what to start doing next. Use today to finally try that workflow you've been meaning to get to. Opt-in, for fun — and it quietly powers the board.

The live board · open it on your phone Live board QR
Built live, from this room

Your check-ins light up the board.

Opt-in and anonymous — only the answers you confirm and your score leave your machine. The board turns them into the room's picture: where the toil is, the hooks and scheduled tasks worth building, and the hours/week we reclaim. The before→after at the close is the payoff.

First three moves

Start here.

  1. 1Trust this repo in Claude CodeOpen it and let Claude Code work in the directory.
  2. 2Say “set me up for the workshop”It installs what you need and gets you ready.
  3. 3Say “run my workshop check-in”Anonymous, opt-in — puts your toil on the board.

Then we begin Block 1.

BLOCK · 01

Voice coding.

Your mouth is faster than your hands. Use it to manufacture work.

The bandwidth gap

Speaking is about 2× faster than typing.

Typing~90 wpm
Speaking184+ wpm

Same brain. ~2× the throughput — with enough caffeine and a voice-to-text tool like WisprFlow or Handy.

The move

Fix a bug by voice. Then drive three agents at once.

Tab 1 · refactor
› "extract the auth client into its own module"
⏺ mapping call sites…
✓ 14 files updated
Tab 2 · fix
› "the date filter is off by a day in UTC"
⏺ reproducing… writing test
✓ failing test → fix
Tab 3 · non-code
› "draft release notes from this week's merges"
⏺ reading git log…
✓ CHANGELOG drafted

One refactor, one fix, one non-code task — all in flight, all driven by your voice. You’re not the typist anymore — you’re the director.

What good driving sounds like

Say the outcome — not the keystrokes.

"select… cut… paste… rename across 14 files…"

"Extract the auth client into its own module and fix every call site."

The voice layer

Pick the one that runs on your machine.

Lots of good dictation tools. For a room of 100 laptops, one trait wins.

Local · on-device

Free, open-source, on-device (Whisper / Parakeet). No cloud, no account. Private; works offline.

Cloud dictation

Polished, cross-app, quick to start — but cloud-routed and paid. Reach for it when you want managed convenience.

Today we pick private, free, local-only — five-minute setup, no card.

Now you try it

Voice.

Hands off the keyboard. Talk to the repo.

▷ Now you try · Voice

Get your voice working.

⏱ 5 min cap
⌨️ Type into Claude Code — no voice yet

Set up Handy for me.

  • install
  • grant mic + accessibility
  • pick a push-to-talk key
  • test it — then everything after this is by voice
▷ Now you try · Voice

Fix a bug — out loud.

🎤 Say this

“Find a failing test in a repo I brought and fix the root cause.”

Try “Run the tests and tell me what's red,” then “Fix the root cause, not the symptom.”

▷ Now you try · Voice

Drive three at once.

🎤 Tab 1

“Refactor the auth client into its own module and update the call sites.”

🎤 Tab 2

“The date filter is off by a day in UTC — write a failing test, then fix it.”

🎤 Tab 3

“Draft release notes from this week's merges.”

Brief the next tab while the last one runs. Keep talking.

▷ Now you try · Voice

Put yourself on the board.

🎤 Say this

“Run my workshop check-in.”

Anonymous, opt-in — only what you confirm. Watch your toil land on the board.

BLOCK · 02

Loops & goals.

Stop babysitting prompts. Hand over a goal and walk away.

The next ceiling

You can talk fast now. You're still babysitting.

The next unlock: hand off whole jobs — and walk away.

The atom

An agent is a model in a loop.

The model drives it — thinks, acts, reads the result, picks the next step — until it decides it’s done.

think
act
observe
decide
↻ until it’s done

/goal and /loop are two ways to run this loop unattended.

Two ways to hand off

A goal, or a loop.

/goal

Run until a condition is met — no timer. Today's hand-offs.

/loop

Repeat a task — on a timer, or self-paced. Recurring; you'll use it in the scheduled block.

Iterate until it passes

Try → check → fix → repeat.

/goal bun <check> passes

This is the /goal command. You hand it a check and a condition; it tries, runs the check, and on a red it reads the failure, fixes, and goes again — no re-prompting. It stops on its own when the condition holds.

Goals

“Done” is a checklist, not a vibe.

A goal is a definition of done — a list of boxes. Reproduce the bug with a failing test · implement the fix · lint, typecheck & tests green · open the PR. The agent decomposes the work and isn't done until every box is checked — no victory declared on a hunch.

A goal, made concrete

Four boxes. None optional.

Reproduce the bug with a failing test
Implement the smallest fix
Lint · typecheck · tests green
Open a PR with the plan in the body

The issue ships a checklist; the agent isn't done until every box is checked.

Why it works

Agents declare victory early.

A checklist makes ‘done’ unskippable.

Two commands

Goal vs. loop.

/goalbounded: iterate until a condition holds, then stop. No timer.

/looprecurring: repeat a task — on a timer (e.g. every minute), or self-paced — this session.

Run parallel goals on git worktrees — isolated checkouts, no collisions.

In the wild

Goal vs. loop, in the wild.

/goal — until a condition, then stops
/goal the test suite is green
/goal every file in src/ is under 200 lines
/loop — repeats: on a timer…
/loop 1m bun test
/loop 5m check the deploy and ping me when it's healthy
…or self-paced — omit the interval
/loop process the next item in the backlog

/goal stops on green; /loop keeps repeating — on the clock or self-paced — till you stop it.

Scale it

Many agents. Zero collisions.

Each agent on its own git worktree — parallel, never stepping on each other.

Zoom out

Loops all the way down.

The agentic loop is the atom. Every block is that same loop at a higher altitude.

Voice feeds it · loops & goals run it · gates make it trustworthy · schedules run it without you.

Now you try it

Loops & goals.

Hand over a job. Walk away.

▷ Now you try · Loops

Work a checklist issue.

⌨️ Type this

/goal bun playground/goals/check.ts shows 5/5

Works the cart checklist in playground/goals/TASK.md, iterating until 5/5 — the check script is the judge.

▷ Now you try · Loops

Set a goal, walk away.

⌨️ Type this

/goal bun playground/loops/check.ts passes

Walk away. The agent reads each failing case, fixes playground/loops/slugify.ts, re-runs, and stops when all 6 checks pass.

▷ Now you try · Loops

Now loop it.

⌨️ Type this

/loop 1m bun playground/loops/watch.ts

Re-runs the check every minute and prints one clean status line per tick — watch it hold at ✅ all 6 green. Esc to stop. That’s one mode of /loop: repeat on a timer — or omit the interval and it self-paces. /goal fixed it until done; /loop repeats till you stop.

▷ Now you try · Loops · stretch

Two agents, two worktrees.

🎤 Say this

“Spin up a git worktree and start a second agent on issue #2 while this one runs.”

When it fails

A failure isn’t “try harder.”

It’s a missing gate, gotcha, or step. Fix the system — the next run inherits it.

✗ fail fix the system ✓ the loop compounds

Which is the whole point of the next block: verification gates.

BLOCK · 03

Verification gates.

Trust the gates — not the model's confidence.

The trust problem

“Done” isn't the same as done.

Belief is not a build. Wrap the agent in checks it can't skip.

The cheapest gate

A hook that lints, typechecks, and tests — every change.

lint
typecheck
tests
build

Red turns green, or the work isn't done.

Why hooks work

It can't hand you broken code.

A red check fails the step — so the agent fixes itself and re-runs before the change ever reaches you. Broken code never makes it out the gate.

Hooks worth stealing

Cheap checks that never sleep.

  • Lint + typecheck + test on every edit
  • Block commits that don't build
  • Auto-format on save
  • Run the security linter pre-push

Steal one today. The agent has to pass it before you ever see the work.

The adversarial gate

Fan out for a second opinion.

/codex:adversarial-review
# second model, no stake in being right
found 3 issues · fix all · re-run gates
# fallback: codex exec "adversarially review this diff"

Two models disagreeing is cheaper than one model being confidently wrong.

Why a second model

One model rationalizes. Two argue.

Fresh eyes catch what the author talked itself past.

Definition of done

Operators trust the gates — not the model's confidence.

Now you try it

Verification gates.

Make “done” something the agent has to prove.

▷ Now you try · Gates

Add a gate.

🎤 Say this

“Add a hook that runs lint, typecheck, and the tests on every change — and fix anything it flags.”

▷ Now you try · Gates

Get a second opinion.

🎤 Say this

“Fan this diff out to Codex for an adversarial review, then fix everything it finds.”

/codex:adversarial-review · or: codex exec "adversarially review this diff"

BLOCK · 04

Scheduled tasks.

The work runs without you. That's the whole point.

The last cord

Everything so far ran because you were there.

The last move cuts that cord.

Hook · goal · loop · schedule

Four ways it runs without you.

They differ by what makes them fire. Pick by the trigger you want.

Hook — automatic, always

Fires on every change — no command, you set it once. The verification gate: lint, typecheck, tests on each edit.

/goal — until it’s done

Iterates until a condition holds, then stops. One bounded job: a check passes, a checklist completes.

/loop — in-session, you’re here

Re-runs on an interval — or self-paced — this session (Esc stops it). Recurring work while you’re around: poll, watch, repeat.

/schedule — on a timer, you’re gone

A persistent cloud routine — runs on its cadence even when your machine is off. Nightly, weekly: real automation.

What to schedule

The toil that comes back every week.

  • Dependency bumps
  • Status reports
  • Eval runs
  • The thing you just built

If it recurs, it shouldn't need you.

Schedule it

Schedule the thing you just built.

Every Monday, while you sleep: pull, fix, run the gates, draft the write-up.

  1. Pull the latestSync the repo before anything runs.
  2. Run the loopThe goal + checklist you built today.
  3. Run the gatesLint, typecheck, tests, second opinion.
  4. Draft the write-upWaiting in your inbox by morning.
/schedule every Monday 6am, pull, fix, run the gates, and draft the write-up

0 6 * * 1  ·  every Monday, 6am

It runs without you

Set the interval. Walk away.

/loop [interval] <cmd> — re-runs locally this session, e.g. /loop 1m bun playground/scheduled/report.ts.

/schedule … — a persistent cloud routine that runs even when you're offline. The empty chair is the point.

You stay in control

List what's running. Cancel what's not.

/schedule list — see every cloud routine. Cancel one by asking Claude or at claude.ai/code/routines.

A local /loop? Stop it with Esc.

Reversible — nothing runs that you didn't choose to keep.

Now you try it

Scheduled tasks.

Set it once. Let it run without you.

▷ Now you try · Scheduled

Schedule your work.

⌨️ Type this

/loop 1m bun playground/scheduled/report.ts

⌨️ Then the real version

/schedule every weekday 9am, run bun playground/scheduled/report.ts and summarize

/schedule list

Watch playground/scheduled/log.txt grow a line each run (run #1, #2, …) — Esc to stop the loop.

▷ Now you try · Scheduled

Close the loop.

🎤 Say this

“Run my closing check-in.”

Then watch the room migrate from toil → leverage.

The payoff · mirror the board
toil
leverage
Look up.
That’s your room — the hours / week you just reclaimed, live on the board.
Keep these slides · scan to take them home Slide deck QR
After today

You keep all of it.

  • The repo and the skills
  • Your scheduled task — still running Monday
  • The glossary — still answers
  • Your before→after on the board
Keep these slides · scan to take them home Slide deck QR
You're an operator now

The stack you just built.

VoiceManufacture work in parallel.
Loops & goalsHand over a goal; it runs to done.
GatesTrust the checks, not the confidence.
SchedulesIt runs without you.

Keep the repo. Keep the scheduled task.