PA

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.zip

Installs 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.
190 charsno explicit “when” trigger
Advanced

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

You give it
Message events and path configuration
You get back
Chart.js dataset segments

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

  1. User configures message paths (e.g. /robot/state.mode)
  2. useDecodedMessageRange subscribes to preloaded blocks for those paths
  3. Messages arrive in batches (250ms flush interval)
  4. messagesToDataset extracts discrete values and builds chart segments
  5. useStateTransitionsData merges block data with live current-frame data
  6. TimeBasedChart renders 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
  • messagesToDataset is O(n) per path — keep n bounded (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.tsx
  • packages/suite-base/src/panels/StateTransitions/messagesToDataset.ts
  • packages/suite-base/src/panels/StateTransitions/hooks/useDecodedMessageRange.ts
  • packages/suite-base/src/panels/StateTransitions/hooks/useStateTransitionsData.ts

Skills Reference

  • For message-path syntax and extraction: load message-path skill

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.

SkillInstallsUpdatedSafetyDifficulty
panel-state-transitions (this skill)01moNo flagsAdvanced
nextjs-developer3282moNo flagsAdvanced
frontend-developer274moNo flagsIntermediate
react-best-practices223moNo flagsIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry