Skeleton screens were a breakthrough for content apps: show the shape of a feed while JSON arrives. Generative AI broke the assumption underneath them — you often do not know the shape yet.
What skeletons are good at
- Known card layouts (profiles, dashboards, inboxes)
- Perceived performance when HTML structure is stable
- Avoiding giant blank canvases on first paint
Where skeletons fail for AI
- Answer length is unknown; fake lines teach the wrong expectation.
- Multi-step agents bounce between tools; a skeleton cannot narrate that.
- Streaming tokens already provide progressive content — a skeleton fights the stream.
A layered model that works
- Stream the answer when you have tokens.
- Show tool/activity rows when the agent is acting (“searching docs”, “running SQL”).
- Keep a living companion for global mind state in the chrome (idle / thinking / talking / listening).
- Use skeletons only for deterministic chrome around the AI (sidebar history, user profile).
Companions vs activity logs
Activity logs are for power users who want receipts. Companions are for everyone else who only needs to know the mind is with them. Glim sits in that second layer — small, themed, and API-driven — so you are not forced to dump chain-of-thought into the UI.
Skeleton = shape of content. Companion = state of mind. Stream = the content itself.
Use all three deliberately; do not make one pretend to be the others.
Try Glim free. Offline starter + MIT creatures. No fake checkout.