skill: "creating-dashboards" version: "1.0" domain: "frontend" # Base outputs required for all dashboard implementations base_outputs: - path: "components/" must_contain: ["widgets/", "layouts/", "filters/"] reason: "Core dashboard component structure (widgets, layouts, filters)" - path: "components/widgets/" must_contain: [] reason: "Individual widget components (KPI cards, charts, tables)" - path: "components/layouts/" must_contain: [] reason: "Dashboard layout components (grid systems, responsive containers)" - path: "context/" must_contain: [] reason: "Global state management for filters and dashboard coordination" - path: "package.json" must_contain: ["dependencies", "scripts"] reason: "Project dependencies and build scripts" # Conditional outputs based on configuration conditional_outputs: maturity: starter: - path: "components/KPICard.tsx" must_contain: ["interface KPICard", "value:", "trend:"] reason: "Basic KPI card component with value and trend" - path: "components/SimpleDashboard.tsx" must_contain: ["Grid", "KPICard"] reason: "Simple static dashboard layout with KPI cards" - path: "package.json" must_contain: ["@tremor/react"] reason: "Tremor library for quick dashboard development" - path: "pages/Dashboard.tsx" must_contain: ["Card", "Metric", "Text"] reason: "Basic dashboard page using Tremor components" - path: "styles/dashboard.css" must_contain: [".dashboard", ".widget", "grid"] reason: "Basic dashboard styling with grid layout" intermediate: - path: "components/widgets/KPICard.tsx" must_contain: ["value", "trend", "sparkline", "onClick"] reason: "Enhanced KPI card with sparkline and interactivity" - path: "components/widgets/ChartWidget.tsx" must_contain: ["AreaChart", "loading", "error"] reason: "Chart widget with loading and error states" - path: "components/widgets/TableWidget.tsx" must_contain: ["pagination", "sorting"] reason: "Table widget with basic interactivity" - path: "components/filters/FilterPanel.tsx" must_contain: ["DateRangePicker", "onChange"] reason: "Filter panel with date range selection" - path: "context/DashboardContext.tsx" must_contain: ["createContext", "filters", "setFilters"] reason: "Context for coordinating filters across widgets" - path: "hooks/useSSEUpdates.ts" must_contain: ["EventSource", "useEffect"] reason: "Server-sent events hook for real-time updates" - path: "utils/formatters.ts" must_contain: ["formatLargeNumber", "formatCurrency", "formatPercentage"] reason: "Number formatting utilities for metrics" - path: "components/DashboardGrid.tsx" must_contain: ["LazyLoad", "WidgetSkeleton"] reason: "Lazy loading grid for performance optimization" - path: "package.json" must_contain: ["@tremor/react", "react-lazyload"] reason: "Dashboard libraries with lazy loading support" advanced: - path: "components/widgets/KPICard.tsx" must_contain: ["value", "trend", "sparkline", "comparison", "status", "icon"] reason: "Full-featured KPI card with all visual elements" - path: "components/widgets/ChartWidget.tsx" must_contain: ["AreaChart", "BarChart", "LineChart", "loading", "error", "export"] reason: "Multi-type chart widget with export capability" - path: "components/widgets/TableWidget.tsx" must_contain: ["pagination", "sorting", "filtering", "export"] reason: "Advanced table widget with full interactivity" - path: "components/layouts/CustomizableGrid.tsx" must_contain: ["react-grid-layout", "Responsive", "onLayoutChange", "localStorage"] reason: "Drag-and-drop customizable dashboard grid with persistence" - path: "components/layouts/WidgetCatalog.tsx" must_contain: ["AVAILABLE_WIDGETS", "addWidget", "removeWidget"] reason: "Widget catalog for dashboard customization" - path: "components/filters/AdvancedFilterPanel.tsx" must_contain: ["DateRangePicker", "MultiSelect", "SearchInput", "FilterPresets"] reason: "Advanced filter panel with multiple filter types and presets" - path: "context/DashboardContext.tsx" must_contain: ["createContext", "filters", "setFilters", "refreshInterval", "autoRefresh"] reason: "Full dashboard context with auto-refresh support" - path: "hooks/useWebSocket.ts" must_contain: ["WebSocket", "reconnect", "heartbeat"] reason: "WebSocket hook with reconnection and heartbeat" - path: "hooks/useSmartPolling.ts" must_contain: ["setInterval", "document.hidden", "pause"] reason: "Smart polling with tab visibility detection" - path: "hooks/useCachedWidget.ts" must_contain: ["useRef", "cache", "ttl", "timestamp"] reason: "Widget-level caching hook for performance" - path: "utils/exportDashboard.ts" must_contain: ["exportToPDF", "exportToImage", "exportToCSV"] reason: "Dashboard export utilities for multiple formats" - path: "utils/performanceMonitor.ts" must_contain: ["measureRenderTime", "trackDataFetch", "reportMetrics"] reason: "Performance monitoring and analytics" - path: "config/dashboardTemplates.json" must_contain: ["templates", "widgets", "layouts"] reason: "Pre-built dashboard template configurations" - path: "package.json" must_contain: ["react-grid-layout", "@tremor/react", "react-lazyload"] reason: "Full dashboard toolkit with customization support" frontend_framework: react: - path: "components/DashboardProvider.tsx" must_contain: ["createContext", "useContext", "useState", "useEffect"] reason: "React Context-based dashboard provider" - path: "hooks/useDashboard.ts" must_contain: ["useContext", "DashboardContext"] reason: "React hook for accessing dashboard context" - path: "components/widgets/KPICard.tsx" must_contain: ["React.FC", "interface", "props"] reason: "React functional component with TypeScript" - path: "tsconfig.json" must_contain: ["jsx", "react"] reason: "TypeScript configuration for React" vue: - path: "components/DashboardProvider.vue" must_contain: ["provide", "inject", "ref", "reactive"] reason: "Vue Composition API dashboard provider" - path: "composables/useDashboard.ts" must_contain: ["inject", "computed"] reason: "Vue composable for dashboard state" - path: "components/widgets/KPICard.vue" must_contain: ["