Run the Daily Storyboard and Coaching Session
Your agents write a metrics row on every run, but no one reads the rows. Findings settle into weekly logs, and the same obstacle comes back next month under a new name. A facilitated session closes that gap. The improvement coach asks the same questions every day, and each agent answers with numbers it measured minutes earlier.
This guide covers the two facilitated sessions. The team storyboard meeting keeps the whole roster focused on one target condition, and the one-on-one coaching session takes one agent through one run in depth. Both sessions use the same five questions.
Prerequisites
-
The
improvement-coachprofile is in your roster. See Choose and Scope Your Agent Roster. -
Your agents already share wiki memory, and at least one skill has
appended rows to
wiki/metrics/{skill}/{YYYY}.csv. A session with no rows produces only descriptions, and this protocol exists to replace descriptions with data. -
The storyboard and coaching workflows exist in your repository.
kata-setupwrites them whenimprovement-coachis on the roster, which its default roster includes. - The wiki and metric commands come from the Gemba runtime. Read Set up persistent memory and metrics before the first session.
The two sessions share one protocol
| Team storyboard | One-on-one coaching | |
|---|---|---|
| Trigger | Daily cron, after the night shift | Manual dispatch |
| Session mode | discuss |
facilitate |
| Participants | Every roster agent except the coach | One agent |
| Evidence source | Each participant's metrics CSV | That agent's most recent run trace |
| Durable record | The monthly storyboard file | The coached agent's weekly log |
Both sessions run on the harness message tools. The coach asks each
question with Ask, and each participant replies with
Answer. Announce sends team-wide context
between questions, and Conclude closes the run with a
summary. See
Coordinate an agent team
for those tools.
The five questions
- What is the target condition? The measurable state the team aims to reach, with a date.
- What is the actual condition now? Measured counts and durations from live data, recorded to CSV before the answer.
- What obstacles prevent us from reaching the target? Each participant lists the obstacles inside its own domain.
- What is the next step, and what do you expect? One experiment against one obstacle, plus the outcome the agent predicts.
- When can we see what we learned? The next meeting opens with that review.
The one-on-one wording narrows every question to a single run: what you tried to achieve, what happened, which obstacles prevented a better outcome, what you will do differently in the next run, and when you will see the effect.
The participant answers question two from its own trace, never from memory.
The storyboard artifact
The team meeting maintains one file per month, such as
wiki/storyboard-2026-M04.md. It contains a Challenge, a
Target Condition, a Current Condition, an Obstacles list, and an
Experiments list.
- Challenge changes rarely, only when the strategic direction changes.
- Target Condition is measurable and due at the end of the month. It describes how the system will behave differently, and it is not a task list.
- Current Condition holds numbers. Above the per-agent blocks, a Headlines list shows only the metrics whose status changed since the last meeting.
- Obstacles and Experiments are rendered from GitHub issue state.
Marker pairs surround every generated block. An XmR block is between
<!-- xmr:{metric}:{csv} [event_type={slice}]
[prior={YYYY-MM-DD}] -->
and <!-- /xmr -->, and the obstacle and
experiment lists are between their own markers. A deterministic wiki
refresh step regenerates all of them from CSV rows and issue state
before the meeting. A block over a file with several streams names
its slice in the event_type token, or the refresh
renders a notice in the block. Never paste a chart or a list
yourself. Prose outside the markers survives the refresh, so a
one-line note that links a signal to an event is safe.
The first meeting of the month is a planning meeting. In it, the refresh creates the file skeleton, a participant seeds one XmR block per metrics CSV, and the team sets the Challenge, the Target Condition, and the first experiment. Every later meeting is a review meeting. It refreshes the Current Condition, records the outcome of the last experiment, and plans the next one.
Who writes, and who only collects
This split decides whether the session produces evidence.
| Actor | Owns |
|---|---|
| Participant | Metric rows, the XmR analysis of its own CSVs, its obstacle and experiment issues, its own weekly log |
| Coach | The questions, the relay of reported numbers, obstacle routing, the closing summary |
The coach runs no shell commands and writes no files. It cannot look
up an issue it did not receive, so each participant reports its
issue number back through Answer.
A coach that writes the Current Condition itself produces numbers with no CSV row behind them, and the next meeting then debates the description instead of the data. A coach that files an obstacle issue for an agent leaves an issue that no one owns, and no one closes it with a verdict. Neither mistake produces an error.
Record obstacles and experiments as issues
An obstacle is a measured gap between the current condition and the target condition. An experiment is the next small step against one obstacle. Both are GitHub issues in your repository, and only the label separates them.
An obstacle has the obstacle label, a one-line
description, and the dimension it blocks. An experiment has the
experiment label and an agent:{name} label
that identifies its owner:
Obstacle: #NNN
Owner: staff-engineer
**What:** description
**Expected outcome:** prediction
**Execution plan:** path globs, only when the experiment ships code
Write the expected outcome before the run, and use metrics that a single skill owns. Skills do not share runs, so a prediction that spans two skills cannot be resolved in one cycle. Split it into one prediction per skill.
Every experiment ends with a verdict comment and then a close.
PASS means the prediction held. FAIL means
it did not, and that is also a useful result.
VOID means no one could evaluate the run, so there is
no learning either way. The closed issue is the permanent record,
and the storyboard lists age out on their own.
Route each obstacle
Team meetings end with a routing decision per obstacle. The coach picks the route and logs it. An obstacle can take more than one route.
| Trigger | Route |
|---|---|
| The obstacle would change a shared artifact, such as a metric, a routing rule, a scope boundary, or a policy | Discussion |
| The same question appeared in two or more agents' answers | Discussion |
| A blocker the agent owns alone, an unanalyzed trace, or a stalled experiment | Coaching |
A Discussion belongs to the owning agent, and it ends in a spec, a wiki note, or a close. Coaching is not dispatched during the meeting. The obstacle issue stays open, and the coach dispatches the session on its next assessment run:
gh workflow run "Agent: Coaching" -f agent=staff-engineer
Before any follow-up dispatch, read the last comments on the coordinating thread. If an announcement says that a revision is already coming in the same run, another agent already owns that route, so do not dispatch. A second dispatch creates duplicate work: two agents write the same change, and one of them wastes a full cycle.
Verify
- Every question received an answer from every participant.
- The Current Condition matches the CSV rows written during this session, and the session flags any metric with insufficient data.
- Every obstacle and experiment has an issue number, reported by its owner.
- Each closing comment gives an owner and an artifact, or states clearly that there is none.
- Each participant's weekly log records the session type, the metrics, the obstacle addressed, and the experiment planned.
- The session ends with a summary that lists the metrics, the obstacles, the experiments, and any obstacle handed to coaching.
What's next
Run a Continuously Improving Agent Team
Run the daily Plan-Do-Study-Act cycle with an agent team. Every shift leaves evidence, and every finding goes back into the loop as a pushed fix or a pushed spec.
Turn Study Findings into Fixes and Specs
Classify every Study finding once, then route it to a fix branch, a spec branch, a Discussion, or a close. Fix branches and spec branches never mix, and a local commit never completes a finding.
Keep Team Memory and Coordination Apart
Memory holds an agent's own state, and coordination needs a specific receiver and an artifact that receiver opens. Learn where the line is, and what breaks when a team buries a handoff in the wiki.
Choose and Scope Your Agent Roster
Decide which agent personas run in your repository, and write the scope constraints that turn an out-of-scope finding into a spec instead of an unreviewed fix.
Take a Change from Spec to Shipped
Take one change through the full sequence: spec, design, plan, implementation, independent review, merge, and release. Each phase produces one artifact that answers one question.