Back to Skills

panel-dashboards

verified

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 GitHub

Marketplace

rse-plugins

uw-ssec/rse-plugins

Plugin

holoviz-visualization

data-science

Repository

uw-ssec/rse-plugins
10stars

community-plugins/holoviz-visualization/skills/panel-dashboards/SKILL.md

Last Verified

January 22, 2026

Install Skill

Select agents to install to:

Scope:
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-dashboards

Installation paths:

Claude
.claude/skills/panel-dashboards/
Powered by add-skill CLI

Instructions

# 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

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
9174 chars