Claude-skill-registry executive-dashboard
Эксперт executive dashboards. Используй для KPI визуализации, business intelligence и reporting.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/executive-dashboard" ~/.claude/skills/majiayu000-claude-skill-registry-executive-dashboard && rm -rf "$T"
manifest:
skills/data/executive-dashboard/SKILL.mdsource content
Executive Dashboard Expert
Expert in designing and building executive dashboards that deliver actionable insights to C-level executives and senior leadership.
Core Dashboard Principles
Strategic Focus
- Lead with business outcomes, not data points
- Align KPIs directly to company objectives and strategic initiatives
- Prioritize forward-looking metrics over historical reporting
- Enable drill-down capabilities without overwhelming the main view
- Design for mobile and presentation contexts
Information Hierarchy
- Follow the "5-second rule" - key insights visible immediately
- Use progressive disclosure: summary → trends → details
- Implement the "traffic light" system for status indicators
- Group related metrics into coherent business themes
- Maintain consistent terminology across all metrics
Essential KPI Categories
Financial Performance
const financialKPIs = { revenue: { current: 'Monthly Recurring Revenue (MRR)', trend: 'Revenue Growth Rate (YoY)', health: 'Revenue per Employee', forecast: 'Pipeline Value & Conversion Rate' }, profitability: { margin: 'Gross Margin %', efficiency: 'Operating Expense Ratio', cash: 'Cash Flow & Burn Rate', roi: 'Return on Investment by Initiative' }, unit_economics: { cac: 'Customer Acquisition Cost', ltv: 'Customer Lifetime Value', ltv_cac_ratio: 'LTV:CAC Ratio (target: 3:1)', payback: 'CAC Payback Period' } };
Operational Excellence
const operationalKPIs = { customers: { acquisition: 'Customer Acquisition Cost (CAC)', retention: 'Net Revenue Retention (NRR)', satisfaction: 'Net Promoter Score (NPS)', lifetime: 'Customer Lifetime Value (CLV)', churn: 'Monthly/Annual Churn Rate' }, performance: { quality: 'Defect Rate & SLA Performance', speed: 'Time to Market & Cycle Time', capacity: 'Utilization Rates & Capacity Planning' }, growth: { pipeline: 'Sales Pipeline Coverage', conversion: 'Stage Conversion Rates', velocity: 'Deal Velocity' } };
Dashboard Layout Patterns
Executive Summary Layout
<!-- Top-level executive view --> <div class="executive-dashboard"> <!-- Hero Metrics (top 20% of screen) --> <section class="hero-metrics"> <div class="primary-kpi">Revenue: $2.3M ↗️ 12%</div> <div class="status-indicators"> <span class="green">Growth</span> <span class="yellow">Margins</span> <span class="red">Churn</span> </div> </section> <!-- Key Trends (middle 60%) --> <section class="trend-charts"> <div class="chart-grid"> <chart type="line" data="revenue-trend" period="12mo"/> <chart type="gauge" data="nps-score" target="50"/> <chart type="funnel" data="sales-pipeline"/> <chart type="heatmap" data="regional-performance"/> </div> </section> <!-- Action Items (bottom 20%) --> <section class="action-items"> <alert type="critical">Customer churn up 3% - immediate action required</alert> <insight>Marketing ROI improved 24% - scale successful campaigns</insight> </section> </div>
CSS Grid Layout
.executive-dashboard { display: grid; grid-template-areas: "hero hero hero hero" "chart1 chart1 chart2 chart2" "chart3 chart4 chart5 chart6" "alerts alerts insights insights"; grid-template-columns: repeat(4, 1fr); grid-template-rows: auto 1fr 1fr auto; gap: 24px; padding: 24px; min-height: 100vh; } .hero-metrics { grid-area: hero; display: flex; justify-content: space-between; align-items: center; background: linear-gradient(135deg, #1a365d 0%, #2d3748 100%); border-radius: 12px; padding: 32px; } .primary-kpi { font-size: 48px; font-weight: 700; color: white; } .status-indicator { padding: 8px 16px; border-radius: 20px; font-weight: 600; } .status-indicator.green { background: #48bb78; } .status-indicator.yellow { background: #ecc94b; color: #1a202c; } .status-indicator.red { background: #f56565; }
Data Visualization Best Practices
Chart Selection Guidelines
def select_chart_type(data_type, purpose): chart_mapping = { ('trend', 'time_series'): 'line_chart', ('comparison', 'categories'): 'bar_chart', ('part_to_whole', 'composition'): 'donut_chart', ('performance', 'target'): 'gauge_chart', ('correlation', 'scatter'): 'scatter_plot', ('geographic', 'regional'): 'choropleth_map', ('process', 'conversion'): 'funnel_chart', ('distribution', 'variance'): 'box_plot', ('ranking', 'top_n'): 'horizontal_bar', ('change', 'waterfall'): 'waterfall_chart' } return chart_mapping.get((data_type, purpose), 'table') # Executive dashboard color palette EXEC_COLORS = { 'success': '#00A86B', # Green - targets met/exceeded 'warning': '#FFB000', # Amber - attention needed 'critical': '#D2222D', # Red - immediate action required 'neutral': '#708090', # Gray - informational 'primary': '#1f4e79', # Navy - brand/emphasis 'secondary': '#4a5568', # Dark gray - secondary elements 'background': '#f7fafc' # Light gray - backgrounds }
Interactive Elements
class ExecutiveDashboard { constructor() { this.filters = { timeframe: 'YTD', region: 'All', business_unit: 'All' }; this.alertThresholds = { revenue_variance: 0.05, customer_churn: 0.02, margin_decline: 0.03 }; } // Auto-refresh critical metrics setupRealTimeUpdates() { setInterval(() => { this.updateMetrics(['revenue', 'active_users', 'system_health']); this.checkAlertConditions(); }, 300000); // 5-minute intervals } // Contextual drill-downs enableDrillDown(metric, level = 'summary') { const drillPaths = { 'revenue': ['total', 'by_product', 'by_region', 'by_customer'], 'churn': ['rate', 'by_segment', 'by_reason', 'cohort_analysis'], 'pipeline': ['total', 'by_stage', 'by_rep', 'by_source'] }; return drillPaths[metric] || ['summary']; } // Export for board presentations exportToPDF() { return { format: 'landscape', pages: ['executive_summary', 'financial', 'operational'], branding: true, timestamp: new Date().toISOString() }; } }
Executive Communication Features
Automated Insights
def generate_executive_insights(metrics_data): insights = [] # Trend analysis if metrics_data['revenue_growth'] > 0.15: insights.append({ 'type': 'opportunity', 'message': f"Revenue accelerating at {metrics_data['revenue_growth']:.1%} - consider scaling successful initiatives", 'action': 'Review top-performing channels for expansion' }) # Anomaly detection if abs(metrics_data['current_vs_forecast']) > 0.1: insights.append({ 'type': 'alert', 'message': 'Significant variance from forecast detected', 'impact': 'May affect quarterly targets', 'next_steps': 'Schedule forecast review meeting' }) # Churn warning if metrics_data['churn_rate'] > metrics_data['churn_threshold']: insights.append({ 'type': 'critical', 'message': f"Churn rate at {metrics_data['churn_rate']:.1%} exceeds threshold", 'impact': f"Potential ARR loss: ${metrics_data['at_risk_arr']:,.0f}", 'next_steps': 'Activate retention playbook' }) return sorted(insights, key=lambda x: {'critical': 0, 'alert': 1, 'opportunity': 2}[x['type']])
Board Presentation Export
// Board presentation export function exportToBoardDeck() { const slideTemplates = { 'executive_summary': { layout: 'hero_metrics_with_trend', charts: ['revenue_trend', 'key_kpis_table'], insights: 'auto_generated' }, 'financial_performance': { layout: 'financial_grid', charts: ['revenue_waterfall', 'margin_analysis', 'cash_flow'], commentary: 'variance_explanation' }, 'operational_highlights': { layout: 'balanced_scorecard', charts: ['customer_metrics', 'efficiency_trends'], actions: 'priority_initiatives' }, 'forward_look': { layout: 'forecast_view', charts: ['pipeline_coverage', 'growth_projections'], risks: 'risk_register_summary' } }; return generatePresentation(slideTemplates); }
Performance and Scalability
Data Refresh Strategy
-- Executive dashboard data mart optimization CREATE MATERIALIZED VIEW executive_kpis_daily AS SELECT date_key, SUM(revenue) as total_revenue, COUNT(DISTINCT customer_id) as active_customers, AVG(satisfaction_score) as avg_nps, SUM(revenue) / COUNT(DISTINCT customer_id) as revenue_per_customer, SUM(CASE WHEN is_churned THEN arr ELSE 0 END) as churned_arr, SUM(CASE WHEN is_new THEN arr ELSE 0 END) as new_arr FROM fact_daily_metrics WHERE date_key >= CURRENT_DATE - INTERVAL '2 years' GROUP BY date_key; -- Create index for fast filtering CREATE INDEX idx_exec_kpis_date ON executive_kpis_daily(date_key); -- Refresh every 4 hours for near real-time executive view SELECT cron.schedule('refresh-exec-dashboard', '0 */4 * * *', 'REFRESH MATERIALIZED VIEW CONCURRENTLY executive_kpis_daily;');
Caching Strategy
const cacheConfig = { // Hero metrics - most viewed, short cache heroMetrics: { ttl: 300, // 5 minutes preload: true }, // Trend charts - moderate cache trendCharts: { ttl: 900, // 15 minutes preload: false }, // Historical data - long cache historicalData: { ttl: 3600, // 1 hour preload: false }, // Real-time metrics - no cache realTimeMetrics: { ttl: 0, streaming: true } };
Mobile Optimization
/* Mobile-first executive dashboard */ @media (max-width: 768px) { .executive-dashboard { grid-template-areas: "hero" "chart1" "chart2" "alerts"; grid-template-columns: 1fr; padding: 16px; } .primary-kpi { font-size: 32px; } .chart-container { min-height: 200px; } /* Touch-friendly controls */ .filter-button { min-height: 44px; min-width: 44px; } }
Testing and Validation
Dashboard Quality Checklist
- 5-Second Test: Key insights visible immediately upon load
- Mobile Compatibility: Readable on executive mobile devices
- Data Accuracy: Automated validation against source systems
- Performance: < 3 second load times for all views
- Accessibility: Color-blind friendly palette and screen reader support
- Stakeholder Validation: Monthly review sessions with dashboard users
Automated Testing
def test_dashboard_accuracy(): """Compare dashboard values to source systems.""" dashboard_revenue = get_dashboard_metric('total_revenue') source_revenue = query_source_system('SELECT SUM(amount) FROM orders') variance = abs(dashboard_revenue - source_revenue) / source_revenue assert variance < 0.001, f"Revenue variance {variance:.2%} exceeds threshold"
Лучшие практики
- 5-second rule — ключевые метрики видны сразу
- Progressive disclosure — от общего к деталям
- Mobile-first — работает на телефоне CEO
- Real-time where needed — критичные метрики обновляются часто
- Actionable insights — не просто данные, а рекомендации
- Consistent design — единый визуальный язык