Claude-skill-registry Knack Dashboard AI
Generates insight layers and visual summaries from HTI operational data. Transforms raw Knack records into actionable intelligence for stakeholders...
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/knack-dashboard-ai" ~/.claude/skills/majiayu000-claude-skill-registry-knack-dashboard-ai && rm -rf "$T"
skills/data/knack-dashboard-ai/SKILL.mdKnack Dashboard AI
Purpose
Generates insight layers and visual summaries from HTI operational data. Transforms raw Knack records into actionable intelligence for stakeholders and grant reporting.
Core Capabilities
- Metrics Generation: Aggregate data into KPIs
- Trend Analysis: Identify patterns over time
- Predictive Insights: Forecast progress toward goals
- Visual Recommendations: Suggest optimal chart types
- Anomaly Detection: Flag unusual data patterns
Core Functions
generate_metrics
Purpose: Calculate key performance indicators from raw data
Parameters:
(array, required): Which metrics to calculatefields
(array, optional): Custom dataset (default: fetch all)dataset
(string, optional): "all", "quarter", "month", "week"time_period
Available Metrics:
const metrics = { // Device Lifecycle acquired: "Total laptops received", converted: "Chromebooks successfully created", ready: "Devices ready for donation", presented: "Devices delivered to recipients", discarded: "Units recycled/unusable", // Conversion Rates conversion_rate: "(converted / acquired) * 100", success_rate: "(presented / ready) * 100", discard_rate: "(discarded / acquired) * 100", // Training train_hours: "Total digital literacy hours delivered", participants: "Unique individuals trained", // Business Development donors: "Unique donor organizations", recurring_donors: "Donors with 3+ donations", avg_donation_size: "Mean laptops per donation" };
Example:
const kpis = await generate_metrics({ fields: ["acquired", "converted", "ready", "conversion_rate"], time_period: "quarter" }); // Output: // { // acquired: 875, // converted: 623, // ready: 89, // conversion_rate: 71.2 // }
calculate_trends
Purpose: Analyze changes over time
Example:
const trend = await calculate_trends({ metric: "acquired", granularity: "month", // day, week, month, quarter periods: 6 // Last 6 months }); // Output: // { // data: [ // { period: "2024-07", value: 145 }, // { period: "2024-08", value: 167 }, // { period: "2024-09", value: 152 }, // { period: "2024-10", value: 178 }, // { period: "2024-11", value: 156 }, // { period: "2024-12", value: 189 } // ], // trend: "upward", // average: 164.5, // growth_rate: 4.2 // Percent per month // }
predict_goal_completion
Purpose: Forecast when goals will be reached
Example:
const forecast = await predict_goal_completion({ goal: { target: 3500, field: "acquired" }, current_value: 1250, time_elapsed_months: 8, time_remaining_months: 16 }); // Output: // { // projected_total: 3750, // will_meet_goal: true, // projected_completion: "2025-09-15", // confidence: 0.85, // recommendation: "On track - maintain current pace" // }
build_charts
Purpose: Generate chart configurations for visualization libraries
Parameters:
(string, required): "bar" | "line" | "donut" | "area" | "scatter"type
(object, required): Dataset to visualizedata
(object, optional): Customization (colors, labels, etc.)options
Example - Bar Chart:
const chart = build_charts({ type: "bar", data: { labels: ["Wake", "Durham", "Vance", "Franklin", "Granville"], values: [234, 189, 67, 45, 78] }, options: { title: "Devices by County", colors: ["#0E2240", "#6FC3DF"], // HTI brand colors y_axis_label: "Number of Devices" } }); // Output: Chart.js compatible config
Example - Line Chart (Trend):
const trend_chart = build_charts({ type: "line", data: { labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun"], datasets: [ { label: "Acquired", values: [145, 167, 152, 178, 156, 189] }, { label: "Converted", values: [98, 112, 108, 125, 110, 134] } ] }, options: { title: "Device Pipeline - Q1/Q2 2025", colors: ["#0E2240", "#6FC3DF"] } });
Example - Donut Chart (Breakdown):
const status_chart = build_charts({ type: "donut", data: { labels: ["Ready", "In Progress", "Awaiting Parts", "Discarded"], values: [89, 234, 45, 12] }, options: { title: "Current Device Status", colors: ["#0E2240", "#6FC3DF", "#A0C4D9", "#E0E0E0"] } });
detect_anomalies
Purpose: Flag unusual patterns requiring attention
Example:
const anomalies = await detect_anomalies({ metric: "discard_rate", threshold: 20, // Alert if >20% time_period: "month" }); // Output: // [ // { // period: "2024-11", // value: 28.5, // expected_range: [10, 20], // severity: "high", // message: "Discard rate 42% above normal - check testing process" // } // ]
compare_performance
Purpose: Benchmark against goals or historical data
Example:
const performance = await compare_performance({ actual: { acquired: 1250, converted: 890 }, target: { acquired: 1458, converted: 1042 }, // Proportional to 3500/2500 goal period: "8 months into 24-month grant" }); // Output: // { // acquired: { actual: 1250, target: 1458, variance: -14.3, status: "behind" }, // converted: { actual: 890, target: 1042, variance: -14.6, status: "behind" }, // overall_health: "at_risk", // recommendation: "Increase acquisition efforts by 15% to meet goal" // }
HTI-Specific Dashboards
Executive Summary Dashboard
const executive_summary = { kpis: await generate_metrics({ fields: ["acquired", "converted", "ready", "train_hours"] }), progress: await compare_performance({ actual: kpis, target: { acquired: 3500, converted: 2500, train_hours: 156 } }), trends: await calculate_trends({ metric: "acquired", periods: 12 }), counties: await county_breakdown() };
Operations Dashboard
const ops_dashboard = { pipeline: await generate_metrics({ fields: ["acquired", "converted", "ready", "discarded"] }), bottlenecks: await detect_anomalies({ metric: "conversion_rate" }), county_map: await build_charts({ type: "bar", data: await county_breakdown() }), recent_activity: await recent_transactions(limit: 10) };
Grant Compliance Dashboard
const compliance_dashboard = { quarterly_progress: await generate_quarterly_report("Q4", "2024"), goal_forecast: await predict_goal_completion({ goal: { target: 3500, field: "acquired" } }), training_hours: await generate_metrics({ fields: ["train_hours", "participants"] }), county_coverage: await verify_15_county_coverage() };
Donor Relations Dashboard
const donor_dashboard = { top_donors: await rank_donors({ limit: 10 }), recurring_donors: await identify_recurring_donors({ min_donations: 3 }), avg_donation: await generate_metrics({ fields: ["avg_donation_size"] }), retention_rate: await calculate_donor_retention(), outreach_targets: await identify_outreach_opportunities() };
Chart Type Recommendations
When to Use Each Chart Type
Bar Chart: Comparing categories
- County-level device distribution
- Donor organization rankings
- Monthly acquisition totals
Line Chart: Trends over time
- Cumulative devices acquired
- Conversion rate over 24 months
- Training hours per quarter
Donut/Pie: Parts of a whole
- Device status breakdown (Ready, In Progress, Discarded)
- County coverage (what % of 15 counties reached)
Area Chart: Cumulative growth
- Progress toward 3,500 laptop goal
- Training hours accumulation
Scatter Plot: Correlation analysis
- Donation size vs. donor frequency
- Conversion rate vs. device age
Brand-Aligned Visualizations
HTI Color Palette
const HTI_COLORS = { primary: "#0E2240", // Navy Blue secondary: "#6FC3DF", // Light Blue white: "#FFFFFF", accent: "#A0C4D9", // Muted blue neutral: "#E0E0E0", // Light gray success: "#4CAF50", warning: "#FF9800", danger: "#F44336" };
Chart Styling
const brand_chart_options = { font_family: "Inter, sans-serif", colors: [HTI_COLORS.primary, HTI_COLORS.secondary], background: HTI_COLORS.white, grid_color: HTI_COLORS.neutral, title_size: 18, label_size: 12 };
Real-Time Insights
Live Progress Indicator
const live_progress = await generate_metrics({ fields: ["acquired", "converted"] }); const progress_pct = (live_progress.acquired / 3500) * 100; const indicator = { value: progress_pct.toFixed(1), display: `${progress_pct.toFixed(1)}% toward 3,500 laptop goal`, color: progress_pct > 50 ? HTI_COLORS.success : HTI_COLORS.warning };
Dynamic Goal Status
const goal_status = await predict_goal_completion({ goal: { target: 3500, field: "acquired" } }); const status_message = goal_status.will_meet_goal ? "✅ On track to meet goal" : "⚠️ Action needed to meet goal";
Integration Points
- knack_reader: Fetch raw data for analysis
- knack_pagination: Retrieve full datasets for accurate metrics
- knack_filter_sort: Filter data by time period or category
- knack_cache_optimizer: Cache computed metrics (expensive calculations)
- knack_reporting_sync: Power quarterly reports with AI-generated insights
- knack_goal_tracker: Real-time progress monitoring
Export Formats
JSON (API Responses)
const metrics = await generate_metrics({ fields: ["acquired", "converted"] }); res.json(metrics);
HTML (Email Reports)
const html = generate_html_report({ metrics: kpis, charts: [trend_chart, status_chart], branding: HTI_COLORS });
PDF (Quarterly Reports)
const pdf = generate_pdf_report({ data: compliance_dashboard, template: "ncdit_quarterly_template" });
Best Practices
- Cache metrics: Expensive aggregations should be cached (5-min TTL)
- Use appropriate granularity: Daily for ops, monthly for trends, quarterly for grants
- Brand consistency: Always use HTI color palette
- Contextual insights: Include "why" and "what next" with every metric
- Progressive disclosure: Start with summary, drill down on click
Grant Reporting Automation
Auto-Generate Quarterly Narrative
const narrative = await generate_narrative({ metrics: await generate_quarterly_report("Q1", "2025"), template: "ncdit_compliance", tone: "factual, mission-driven" }); // Output: // "During Q1 2025, HTI acquired 875 laptops from 12 donor organizations // across 8 counties, converting 623 into HTI Chromebooks. This represents // a 71% conversion rate, exceeding our 70% target. We delivered 42 hours // of digital literacy training to 156 participants..."