A chat-shaped loading placeholder — seeded conversation rhythm, alternating bubbles or document rows, a sweep phase-shifted through the thread, and one late screen-reader announcement.
npx shadcn@latest add @zyeon/message-skeletonZyeon UI limits how often it can be asked, and Message Skeleton hasn't had its turn. Its source will show here once it has.