Use when implementing/debugging Ctrl+O Expanded Transcript (second view) and thinking persistence in the REPL.
Scanned 5/27/2026
Install via CLI
openskills install yusifeng/formax---
name: formax-expanded-transcript-workflow
description: Use when implementing/debugging Ctrl+O Expanded Transcript (second view) and thinking persistence in the REPL.
---
# formax-expanded-transcript-workflow
## Goal
Use this skill when changing `Ctrl+O` expanded transcript behavior, thinking persistence, or compact / expanded projection boundaries in the REPL.
## Read First
- `docs/contracts/transcript-surface-contract.md`
- `docs/contracts/semantics-contract.md`
- `docs/runbooks/repl-surface-debugging.md` when the change can affect clear / remount behavior
These docs are canonical. If stable expanded-transcript behavior changes, update them before or with code.
If the change touches clear / remount ownership directly, also use `formax-surface-reset-workflow`.
## Code Map
- Key handling: `packages/core/src/screens/repl/hotkeys.ts`
- View wiring + footer: `packages/core/src/screens/REPL.tsx`
- Compact projection: `packages/core/src/screens/repl/compactProjection.ts`
- Transcript rendering: `packages/core/src/screens/repl/transcript.tsx`
- Thinking persistence: `packages/core/src/features/repl/controller/streaming/streaming.ts`
- Expanded Transcript panels: `packages/core/src/screens/repl/panels.tsx`
- Compact command lifecycle: `packages/core/src/features/repl/controller/send/send.ts`
- Surface reset owner: `packages/core/src/screens/repl/useSurfaceTransitionManager.ts`
## High-Signal Patterns
- No fake thinking:
- `thinking_delta` is the only source of truth
- never synthesize thinking rows from timers or summaries
- Avoid `Static` hacks for toggles:
- `Static` is append-only; if content must disappear, use reset / remount ownership instead of trying to "unrender" it
- One footer:
- prefer a single global footer; avoid per-panel footer duplication
- Compact ordering contract:
- keep `banner -> summary (expanded only) -> > /compact ... -> compact subline`
- UI vs LLM orthogonality:
- transcript slicing and `ui.kind` remain independent from prompt-history packing and reminder injection
## Minimal Workflow
1. Lock the semantic source first: `thinking_delta` persistence and transcript projection rules before renderer polish.
2. Keep default transcript low-noise and Expanded Transcript read-only.
3. Preserve compact / expanded ordering before adjusting footer or panel layout.
4. If clear / remount logic changes, route through the shared surface reset path instead of local `Static` workarounds.
5. Run the regression set below before review.
## Minimum Regression
- `bun run test -- packages/core/src/screens/repl/compactProjection.test.ts packages/core/src/screens/repl/expandedTranscript.test.tsx packages/core/src/screens/repl/hotkeys.test.tsx`
- `bun run test -- packages/core/src/screens/repl/surfaceSmoke.test.tsx`
- `bun run test:surface-screen-model`
- `bun run type-check`
## Guardrails
- Do not introduce synthetic thinking or show thinking when the model did not emit `thinking_delta`.
- Do not let `Ctrl+O` steal input while prompt mode or overlays are active.
- Do not move header / messages outside `Static` to “fix” duplication; solve ownership and remount boundaries instead.
- Expanded Transcript stays read-only; do not quietly turn it into an interactive input surface.
No comments yet. Be the first to comment!