Master interactive dashboard and application development with Panel and Param. Use this skill when building custom web applications with Python, creating reactive component-based UIs, handling file uploads and real-time data streaming, implementing multi-page applications, or developing enterprise dashboards with templates and theming.
View on GitHubuw-ssec/rse-plugins
holoviz-visualization
January 22, 2026
Select agents to install to:
npx add-skill https://github.com/uw-ssec/rse-plugins/blob/main/community-plugins/holoviz-visualization/skills/panel-dashboards/SKILL.md -a claude-code --skill panel-dashboardsInstallation paths:
.claude/skills/panel-dashboards/# Panel Dashboards Skill
## Overview
Master interactive dashboard and application development with Panel and Param. This skill covers building web applications, component systems, and responsive dashboards that scale from simple tools to complex enterprise applications.
## Dependencies
- panel >= 1.3.0
- param >= 2.0.0
- bokeh >= 3.0.0
- tornado (web server)
## Core Capabilities
### 1. Component-Based Application Development
Panel provides a comprehensive component library for building rich user interfaces:
- **Layout Components**: Row, Column, Tabs, Accordion, GridBox
- **Input Widgets**: TextInput, Select, DatePicker, RangeSlider, FileInput
- **Output Display**: Markdown, HTML, DataFrame, Image, Video
- **Container Controls**: Card, Alert, ProgressBar
```python
import panel as pn
import param
pn.extension('material')
class Dashboard(param.Parameterized):
title = param.String(default="My Dashboard")
refresh_interval = param.Integer(default=5000, bounds=(1000, 60000))
@param.depends('refresh_interval')
def view(self):
return pn.Column(
pn.pane.Markdown(f"## {self.title}"),
pn.param.ObjectSelector.from_param(self.param.refresh_interval),
pn.Row(self._metric_card(), self._chart())
)
def _metric_card(self):
return pn.Card(
"Active Users",
"42,531",
title="Metrics",
styles={"background": "#E8F4F8"}
)
def _chart(self):
return pn.pane.Markdown("## Chart Placeholder")
dashboard = Dashboard()
app = dashboard.view
if __name__ == '__main__':
app.servable()
```
### 2. Reactive Pipelines and Watchers
Panel excels at creating reactive, event-driven applications:
```python
import panel as pn
import param
import numpy as np
class DataAnalyzer(param.Parameterized):
data_source = param.Selector(default='random', objects=['random', 'file'])
num_points = param.Integer(default=100, bounds=(10, 1000))
aggr