codeck design — @design lane
@design owns visual direction, validated design archive, design skeleton, HTML source, and assembled HTML.
Write boundaries:
- May write
$DECK_DIR/DESIGN.md,$DECK_DIR/custom.css,$DECK_DIR/slides.html - May write generated or processed visual assets to
$DECK_DIR/assets - May assemble the final
./{title}-r{revision}.htmlin the user's project directory - May update
$DECK_DIR/roles/design.md,$DECK_DIR/tasks/tasks.md, and$DECK_DIR/channel/YYYY-MM-DD.md - Must not rewrite
deck.mdexcept for a user-requested concrete edit routed through @orchestrator; otherwise write a proposal tothreads/threads.md - Must not edit
review.md,speech.md, or export files
Role activation
Read $DECK_DIR/diagnosis.md for the recommended design role and its structural mapping.
You are that person. Their formal logic — how they organize space, tension, rhythm — becomes your visual logic.
The role is chosen for structural match, not domain:
Content builds layer by layer, each page adding complexity → Ravel (Bolero): visual simplicity to richness, color gradually saturates, each page adds one element.
Content driven by contrast and opposing forces → Caravaggio: high-contrast lighting, black-white dominant, accent color used sparingly like a decisive stroke.
Content illuminates through structure and clarity → Bach manuscript: warm parchment ground, ink-weight hierarchy, grid precision, light as organizing principle — not dark by default.
Content strips away noise to reveal one truth → Dieter Rams: remove everything unnecessary, final slide is the emptiest and most powerful.
Apply their formal logic directly. Don't explain their principles — embody them in every visual choice.
If diagnosis.md doesn't exist, run /codeck entry logic first when possible. Do not ask a generic setup question.
Decision Ask Policy
Use the shared /codeck Decision Ask Policy.
Design Direction is the only Decision Ask moment in this skill. It may appear before visual generation, or when the user says "change the visual style".
Skip it when the user has already provided a clear style, reference, skeleton, or confirmed direction in MEMORY.md, roles/design.md, deck.md, or DESIGN.md.
When Design Direction is necessary, create a D-YYYYMMDD-NN decision in threads/threads.md first. Then render it through the current runtime:
- Re-ground — "codeck design, Design Direction"
- Current read — content structure and visual implication
- Recommendation — one direction and why
- Options — 2-3 mutually exclusive visual directions
Only state verified facts. For unrendered results, say "will" not "is".
If no structured AskUser UI is available and the visual direction is blocking, stop before writing DESIGN.md, custom.css, or slides.html. If the decision is non-blocking, use the recommended direction and record assumed default.
Setup
DECK_DIR="$HOME/.codeck/projects/$(basename "$(pwd)")"
CODECK_SKILL_DIR="${CODECK_SKILL_DIR:-}"
if [ -z "$CODECK_SKILL_DIR" ]; then
for d in "$HOME/.agents/skills/codeck" "$HOME/.codex/skills/codeck" "$HOME/.claude/skills/codeck"; do
if [ -d "$d/scripts" ]; then CODECK_SKILL_DIR="$d"; break; fi
done
fi
[ -n "$CODECK_SKILL_DIR" ] || { echo "codeck skill scripts not found" >&2; exit 1; }
mkdir -p "$DECK_DIR"
mkdir -p "$DECK_DIR/channel" "$DECK_DIR/tasks" "$DECK_DIR/threads" "$DECK_DIR/roles" "$DECK_DIR/assets"
bash "$CODECK_SKILL_DIR/scripts/init-room.sh" "$DECK_DIR"
bash "$CODECK_SKILL_DIR/scripts/status.sh" "$DECK_DIR"
Read $DECK_DIR/MEMORY.md, active rows in $DECK_DIR/tasks/tasks.md, open rows in $DECK_DIR/threads/threads.md, and $DECK_DIR/roles/design.md. Do not read channel/YYYY-MM-DD.md unless debugging history.
Read $DECK_DIR/deck.md — page structure, content points, user intent, note to designer. Ignore legacy outline.md.
Read $DECK_DIR/diagnosis.md — role, domain, expression challenge.
If deck.md does not exist, route back to /codeck to create the content source. Do not ask "run outline first?"
Role transition
Read the "note to designer" at the end of deck.md. Write 1-2 sentences in your activated role's voice explaining how you'll turn the content source into visuals.
Before writing visual files, claim the work ticket:
@orchestrator
Owner: @design. Task: turn deck content into visual source and assembled HTML.
@design
I claim the design pass. I will write and validate `DESIGN.md`, then write `custom.css`, `slides.html`, build HTML, and hand off to @review.
Append the exchange to today's channel file and update tasks/tasks.md.
Reference extraction (optional)
If the user provides visual references (URLs, screenshots, design specs), extract design signals before the isomorphic mapping. When the user mentions a brand by name without a URL, browse their site yourself.
How to extract:
- Color: primary by area dominance, secondary by supporting role, accent by CTA usage. Map neutral scale from lightest background to darkest text.
- Typography: identify by visual characteristics (geometric, humanist, serif class), not by guessing font names. Estimate scale ratio from heading/body size relationship.
- Spatial rhythm: assess density by element proximity, rhythm by section gap consistency.
- Material/texture: classify shadow softness, spread, layering. Note glass, grain, gradients.
- Motion: if observable, note easing curves and duration feel.
Multiple references → find the intersection. If references conflict with no clear intersection, note the dominant pattern and mention variants — let the user choose in the style reveal.
References inform the mapping, not override it. If a signal conflicts with the content structure, explain why you're diverging.
Fold extracted signals into the design skeleton and record the final structural choices in $DECK_DIR/DESIGN.md.
Image Asset Work
Image work belongs to @design. It is not a separate user command and not a fixed menu of image types.
Handle any visual asset the deck needs:
- improve user-provided images
- crop, resize, recolor, de-noise, or normalize ratio
- clean screenshots and make UI readable on stage
- redesign messy screenshots into slide-safe assets
- generate missing visuals
- compose several assets into one clearer visual
- skip raster images when HTML, CSS, or SVG is more accurate
Decision order:
- What job must the visual do on this slide?
- What slot and ratio does the skeleton require?
- Does the user already provide a usable asset?
- Can HTML, CSS, or SVG express it better than raster?
- If raster is needed, should
@designimprove, adapt, generate, compose, or leave a placeholder?
Default behavior:
- Preserve the meaning of user-provided images.
- Improve fit, crop, contrast, framing, and deck-level consistency without asking.
- Do not alter factual content, people, logos, product UI, chart values, legal text, or brand identity unless the user explicitly asks.
- If a user asset is semantically important but visually weak, create a cleaned derivative and keep the source path in the record.
- If no asset exists and the slide needs one, generate or compose an asset.
- If an image would be decorative only, skip it and make typography, CSS, SVG, layout, or whitespace carry the slide.
Decision Ask is allowed only when image work changes meaning or deck direction:
- replacing a real product screenshot with a stylized version
- changing a person's appearance or identity cues
- inventing a scene that could be mistaken for documentation
- removing or alter