panel-state-transitions
A specialized tool for rendering and managing discrete state transition timelines using high-performance data batching.
Install
mkdir -p .claude/skills/panel-state-transitions && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/10147" && unzip -o skill.zip -d .claude/skills/panel-state-transitions && rm skill.zipInstalls to .claude/skills/panel-state-transitions
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Deep StateTransitions panel knowledge: TimeBasedChart segments, message-path extraction, preloaded-range subscription with 250ms batch flush, block+currentFrame merge, and messagesToDataset.Key capabilities
- →Configure message paths
- →Extract message paths
- →Render time-based charts
- →Merge preloaded blocks with current frames
- →Convert messages to datasets
How it works
Subscribes to preloaded message ranges, batches updates every 250ms, and merges block data with live frames for timeline rendering.
Inputs & outputs
When to use panel-state-transitions
- →Configure message paths for state visualization
- →Optimize large-scale message-to-dataset conversions
- →Implement state change timelines
- →Debug state transition rendering
About this skill
Panel State Transitions Skill
A timeline visualization for discrete state changes extracted from messages.
Structure
panels/StateTransitions/
├── index.tsx # main panel, TimeBasedChart usage, message-path config
├── messagesToDataset.ts # message → Chart.js dataset (perf-critical)
└── hooks/
├── useDecodedMessageRange.ts # preloaded-range subscription, 250ms batch flush
└── useStateTransitionsData.ts # merges preloaded blocks + current frame
Data Flow
- User configures message paths (e.g.
/robot/state.mode) useDecodedMessageRangesubscribes to preloaded blocks for those paths- Messages arrive in batches (250ms flush interval)
messagesToDatasetextracts discrete values and builds chart segmentsuseStateTransitionsDatamerges block data with live current-frame dataTimeBasedChartrenders colored segments on a timeline
messagesToDataset (Performance Critical)
function messagesToDataset(messages: MessageEvent[], path: MessagePath): ChartDataset {
// iterate all messages, extract value at path
// create segment boundaries at state-change points
// return { data: [{ x: startTime, x2: endTime, y: stateLabel }] }
}
Runs on every data update — must stay fast for large datasets.
250ms Batch Flush
useDecodedMessageRange debounces:
- Accumulates incoming messages for 250ms
- Triggers a single state update with the full batch
- Prevents a React re-render per message — critical for topics with thousands of preloaded messages
TimeBasedChart
Shared chart component (also used by other panels):
- Time on the X-axis, discrete values on the Y-axis
- Supports multiple series (each path = a row)
- Zoom/pan synchronized with global playback time
- Colored segments represent distinct state values
Performance Notes
- 250ms batch flush prevents render storms from high-frequency messages
messagesToDatasetisO(n)per path — keepnbounded (downsample if needed)- Avoid re-processing already-processed blocks during the block + currentFrame merge
- Message-path parsing is cached (nearley grammar not re-parsed)
Key Files
packages/suite-base/src/panels/StateTransitions/index.tsxpackages/suite-base/src/panels/StateTransitions/messagesToDataset.tspackages/suite-base/src/panels/StateTransitions/hooks/useDecodedMessageRange.tspackages/suite-base/src/panels/StateTransitions/hooks/useStateTransitionsData.ts
Skills Reference
- For message-path syntax and extraction: load
message-pathskill
When not to use it
- →General-purpose data visualization
- →Non-message-based state tracking
Limitations
- →Performance depends on message volume
- →Requires message-path skill for syntax
How it compares
It uses a performance-optimized batching strategy specifically for state-transition timelines rather than standard real-time rendering.
Compared to similar skills
panel-state-transitions side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| panel-state-transitions (this skill) | 0 | 1mo | No flags | Advanced |
| nextjs-developer | 328 | 2mo | No flags | Advanced |
| frontend-developer | 27 | 4mo | No flags | Intermediate |
| react-best-practices | 22 | 3mo | No flags | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by lichtblick-suite
View all by lichtblick-suite →You might also like
nextjs-developer
zenobi-us
Expert Next.js developer mastering Next.js 14+ with App Router and full-stack features. Specializes in server components, server actions, performance optimization, and production deployment with focus on building fast, SEO-friendly applications.
frontend-developer
sickn33
Build React components, implement responsive layouts, and handle client-side state management. Masters React 19, Next.js 15, and modern frontend architecture. Optimizes performance and ensures accessibility. Use PROACTIVELY when creating UI components or fixing frontend issues.
react-best-practices
redpanda-data
Client-side React performance optimization patterns.
rendering-animate-svg
TheOrcDev
Wrap animated SVG elements in a div to enable hardware acceleration. Apply when animating SVG icons or elements, especially in 8-bit retro components with pixel art animations.
web-performance-optimization
davila7
Optimize website and web application performance including loading speed, Core Web Vitals, bundle size, caching strategies, and runtime performance
nextjs-app-router-patterns
wshobson
Master Next.js 14+ App Router with Server Components, streaming, parallel routes, and advanced data fetching. Use when building Next.js applications, implementing SSR/SSG, or optimizing React Server Components.