Skip to content
html-reporting-standards logo

HTML Reporting Standards Skill

html-reporting-standards

HTML Reporting Standards Skill

SKILL.md

Full skill instructions

HTML Reporting Standards Skill

Version: 1.0.0 Category: Standards Triggers: Creating reports, visualizations, interactive charts

Quick Reference

MANDATORY: Interactive Plots Only

✅ Allowed: Plotly, Bokeh, Altair, D3.js ❌ NOT Allowed: Static matplotlib PNG/​SVG exports

Technology Selection

Use CaseRecommendedWhy
General AnalysisPlotlyEasy, feature-rich, pandas integration
Statistical VizAltairGrammar of graphics, declarative
Real-time DashboardsBokehServer capabilities, streaming
Custom InteractiveD3.jsMaximum flexibility
Time SeriesPlotlyExcellent time series support
Large DatasetsPlotly (webGL) or BokehPerformance optimizations

Python Examples

Plotly (Recommended)

import plotly.express as px
import pandas as pd

# Load CSV with RELATIVE path
df = pd.read_csv('../​data/​processed/​results.csv')

# Create interactive plot
fig = px.scatter(df, x='time', y='value',
                 color='category',
                 title='Interactive Results',
                 hover_data=['info'])

# Save as HTML
fig.write_html('../​reports/​analysis.html',
               include_plotlyjs='cdn',
               config={'responsive': True})

Bokeh

from bokeh.plotting import figure, output_file, save
import pandas as pd

df = pd.read_csv('../​data/​processed/​results.csv')

p = figure(title='Interactive Dashboard')
p.circle(df['x'], df['y'], size=10, alpha=0.5)
p.sizing_mode = 'stretch_width'  # Responsive

output_file('../​reports/​dashboard.html')
save(p)

Altair

import altair as alt
import pandas as pd

df = pd.read_csv('../​data/​processed/​results.csv')

chart = alt.Chart(df).mark_point().encode(
    x='time:T',
    y='value:Q',
    color='category:N',
    tooltip=['time', 'value', 'category']
).interactive()

chart.save('../​reports/​analysis.html')

Report Structure

Required HTML Sections

  1. Header

    • Title, generation timestamp
    • Module/​repository name
    • Author/​generator info
  2. Summary Statistics

    • Key metrics at glance
    • Record counts
    • Data quality indicators
  3. Interactive Visualizations

    • Minimum 2-3 plots per report
    • Each plot MUST be interactive
    • Clear titles and labels
  4. Data Table (optional)

    • Sortable/​filterable
    • Show sample of data
    • Link to full CSV
  5. Footer

    • Data source
    • Generation method
    • Contact info

Responsive Design

Reports must work on:

  • Desktop (1920px+)
  • Laptop (1366px)
  • Tablet (768px)
  • Mobile (375px)

Plotly responsive:

fig.update_layout(
    autosize=True,
    margin=dict(l=20, r=20, t=40, b=20),
)

CSV Data Handling

MANDATORY: Relative Paths

# ✅ CORRECT: Relative from report location
df = pd.read_csv('../​data/​processed/​results.csv')

# ❌ WRONG: Absolute path
df = pd.read_csv('/​mnt/​github/​workspace/​data/​results.csv')

# ❌ WRONG: Hardcoded path
df = pd.read_csv('C:/​Users/​user/​data/​results.csv')

Path Resolution Helper

from pathlib import Path

def get_data_path(filename, data_type='processed'):
    project_root = Path(__file__).parent.parent.parent
    return project_root / 'data' / data_type / filename

# Usage
df = pd.read_csv(get_data_path('analysis.csv'))

Multi-Plot Dashboard

from plotly.subplots import make_subplots
import plotly.graph_objects as go

fig = make_subplots(
    rows=2, cols=2,
    subplot_titles=('Time Series', 'Distribution',
                   'Correlation', 'Summary')
)

# Add plots
fig.add_trace(go.Scatter(...), row=1, col=1)
fig.add_trace(go.Histogram(...), row=1, col=2)
fig.add_trace(go.Scatter(...), row=2, col=1)

fig.update_layout(height=800, showlegend=True)
fig.write_html('../​reports/​dashboard.html', include_plotlyjs='cdn')

Best Practices

Performance Optimization

For large datasets (>10,000 points):

# Use WebGL rendering
fig = px.scatter(df, x='x', y='y', render_mode='webgl')

# Or sample for visualization
df_sample = df.sample(n=5000)
fig = px.scatter(df_sample, ...)

Accessibility

  • Descriptive titles and labels
  • Sufficient color contrast
  • Keyboard navigation
  • Readable font size (≥12pt)

Version Control

Don't commit: Generated HTML reports Do commit: Report generation scripts, templates, CSV data

# .gitignore
reports/​*.html
!reports/​index.html

Validation Checklist

  • All plots are interactive (no static images)
  • HTML report is generated
  • CSV uses relative paths
  • Report is responsive (tested mobile/​desktop)
  • Hover tooltips show data values
  • Zoom/​pan functionality works
  • Legend is interactive
  • Export options available
  • Report loads in <3 seconds
  • Works offline (embedded data or CDN fallback)

Full Reference

See: @docs/​modules/​standards/​HTML_REPORTING_STANDARDS.md


Use this when creating reports, dashboards, or data visualizations.

More skills from majiayu000

xiaohongshu logo
majiayu000/claude-arsenal

xiaohongshu

xiaohongshu

286 148
View
agent-task-conductor logo
majiayu000/claude-skill-registry

agent-task-conductor

Conduct multi-agent task orchestration and workflow coordination.

663 1
View
conductor-setup logo
majiayu000/claude-skill-registry

conductor-setup

Initialize project with Conductor artifacts (product definition,

663 1
View
animation-designer logo
majiayu000/claude-skill-registry

animation-designer

Expert in web animations, transitions, and motion design using Framer Motion and CSS

663 1
View
diagramming logo
majiayu000/claude-skill-registry

diagramming

Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...

663 1
View
h3-pg logo
majiayu000/claude-skill-registry-data

h3-pg

PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.

23 1
View
conductor-development logo
majiayu000/claude-skill-registry

conductor-development

Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...

663 1
View
conductor-status logo
majiayu000/claude-skill-registry

conductor-status

Display project status, active tracks, and next actions

663 1
View
dockerization logo
majiayu000/claude-skill-registry

dockerization

Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.

663 1
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View