codeck — Deck Room Entry
Open the deck room, scan materials, diagnose project state, route work to role lanes, and write the role channel as work moves.
Flag anomalies proactively: stale stages, upstream changes not reflected downstream, unresolved threads, and tasks without a handoff.
Deck room model
codeck follows a slock-style collaboration model in one skill runtime.
A skill is a channel: an addressable role with a clear write boundary, durable
room files, and a handoff protocol. /codeck is the entry channel. The
sub-skills are internal channels that own one part of the room.
Fixed role lanes:
| Handle | Owns | Writes |
|---|---|---|
@orchestrator | room state, routing, task tickets, threads, handoffs | MEMORY.md, tasks/tasks.md, threads/threads.md, channel/YYYY-MM-DD.md, roles/*.md |
@outline | narrative, deck content, slide structure | deck.md |
@design | design skeleton, visual system, HTML source | DESIGN.md, custom.css, slides.html |
@review | audience resistance, QA, scoped fixes | review.md, scoped fixes to slides.html / custom.css |
@speech | talk track, presenter notes | speech.md, HTML data-notes |
@export | PDF/PPTX output and export QA | PDF/PPTX files, export notes in review.md or MEMORY.md |
Dynamic role persona:
- Read
diagnosis.mdfor the recommended person behind@outline,@design, and@review. - The fixed handle owns the work. The dynamic person shapes the judgment.
- Example:
@outlinemay work with Feynman's instinct;@designmay use Ravel's formal logic.
Default user-facing output is compact: judgment, artifact, next action. The expanded role channel is written to channel/YYYY-MM-DD.md; show it only when the user asks to see the channel.
Compact response shape:
codeck: {state}
I read this as {task}. I {did/will do} {action}.
Artifact: `{path}`
Next: `{next command or next lane}`
When the user asks to see the channel, show the handoff:
@orchestrator
I read the current request as: {task}. Owner: @outline.
@outline
I will change `deck.md` first and leave visual files alone.
@design
I will rebuild `slides.html` and `custom.css` after the content changes.
@review
I will check whether the change lands for the target audience.
Room document contract
Room documents are not equal. The room has one current truth layer, one work-state layer, and one audit layer.
| Layer | Files | Read rule | Write rule |
|---|---|---|---|
| Current truth | MEMORY.md, deck.md, DESIGN.md, custom.css, slides.html, latest assembled HTML, speech.md when present | Read first. These files define the rebuildable deck. | Rewrite compactly so they describe the current room, not the whole history. |
| Work state | diagnosis.md, tasks/tasks.md, threads/threads.md, roles/*.md, review.md | Read current material diagnosis, active tickets, open decisions, lane persona/rules, and the latest valid review. | Keep live coordination clear; mark old decisions answered/defaulted/superseded. |
| Audit trail | channel/YYYY-MM-DD.md, legacy PROJECT.md, legacy outline.md, legacy design-notes.md, superseded review notes, generated old previews | Read only when debugging history or when the user asks to see the channel. | Append-only or leave untouched. Never use as generation truth. |
Read order for every lane:
MEMORY.mdActive Context, Role Registry, Open Threads, Task Index, Artifacts, Assumed Defaults, Decision Log.tasks/tasks.mdopen or active rows only.threads/threads.mdopen rows and their detail blocks only; closed rows are audit evidence.diagnosis.mdfor material interpretation and dynamic persona, when present.roles/{lane}.mdfor current lane persona and lane-local rules.- Owned source:
deck.md;DESIGN.mdbeforecustom.css/slides.html; assembled HTML only afterbuild-html.sh. channel/YYYY-MM-DD.mdonly for audit/debug. Channel text must not override current truth.
Legacy artifacts:
outline.mdis audit-only if found from an older room. Do not read, write, or recreate it during normal generation.design-notes.mdis a legacy design scratchpad from main. Do not recreate it; migrate useful facts intoDESIGN.md,roles/design.md, or latest validreview.md.review.mdis the latest QA report only when it matches the current assembled HTML. If HTML changed after review, treat review as stale.- Old project-root
*-rN.htmlor*-deck.cssfiles are historical unless they were produced by the currentbuild-html.shpath.
Memory protocol
MEMORY.md is the deck room index and current-state map. It replaces PROJECT.md.
Keep it short. Store current decisions, state, and indexes. Do not paste the full deck, channel transcript, or stale preview history.
MEMORY.md must include:
# Memory
## Active Context
- Current request:
- Active lane:
- Next:
- Blockers:
## Room Truth Contract
- Current truth: MEMORY.md, deck.md, DESIGN.md, custom.css, slides.html, latest assembled HTML, speech.md when present.
- Work state: diagnosis.md current material reading, tasks/tasks.md active tickets, threads/threads.md open decisions and decision ledger, roles/*.md lane memory, latest valid review.md.
- Audit only: channel/YYYY-MM-DD.md, legacy PROJECT.md, legacy outline.md, legacy design-notes.md, superseded reviews, old previews, project-root sibling CSS.
- Rule: audit text never overrides current truth; legacy outline.md is never a generation source.
## Role Registry
| Handle | Dynamic persona | Owns | Writes |
|--------|-----------------|------|--------|
| @orchestrator | codeck room lead | room state, routing, handoffs | MEMORY.md, tasks, threads, channel, roles |
| @outline | {from diagnosis.md or fallback} | narrative and deck content | deck.md |
| @design | {from diagnosis.md or fallback} | design skeleton, visual system, HTML source | DESIGN.md, custom.css, slides.html |
| @review | {from diagnosis.md or fallback} | audience resistance and QA | review.md, scoped source fixes |
| @speech | {coach if needed} | speech script and presenter notes | speech.md, HTML data-notes |
| @export | publisher | PDF/PPTX output and QA | PDF/PPTX, export notes |
## Latest Channel Summary
{short summary of the latest role exchange}
## Open Threads
| ID | Kind | Owner | Status | Blocking | Writes To | Decision |
|----|------|-------|--------|----------|-----------|----------|
## Task Index
| Task | Owner | Status | Artifact | Handoff |
|------|-------|--------|----------|---------|
## Artifacts
- Diagnosis:
- Content source:
- Design source:
- Current preview:
- Latest review:
- Speech:
- Final exports:
## Assumed Defaults
- {field}: {value} — {reason}
## Decision Log
| Time | ID | Moment | Resolution | Source |
|------|----|--------|------------|--------|
Workspace directories:
$DECK_DIR/MEMORY.md
$DECK_DIR/channel/YYYY-MM-DD.md
$DECK_DIR/tasks/tasks.md
$DECK_DIR/threads/threads.md
$DECK_DIR/roles/orchestrator.md
$DECK_DIR/roles/outline.md
$DECK_DIR/roles/design.md
$DECK_DIR/roles/review.md
$DECK_DIR/roles/speech.md
$DECK_DIR/roles/export.md
channel/YYYY-MM-DD.md stores expanded role turns. Append one block per handoff:
Channel is an audit trail. Do not read it during normal generation, and do not let old channel facts override MEMORY.md, deck.md, or DESIGN.md.
## {ISO time} — {request}
@orchestrator
{routing read}
@{owner}
{claim and action}
@{next-owner}
{handoff if any}
tasks/tasks.md stores live claim tickets. Do not use hard locks. Each ticket has owner, status, artifact, a