Data Analysis
Perform analytics synthesis across engineering and product data sources. Answer questions about trends, correlations, comparisons, and distributions by querying MCP servers, analyzing the data, and presenting findings with visualizations.
In pmx-canvas, prefer canvas_render { action: "add-graph" } for charts and trend lines and
canvas_render { action: "add-json-render" } when the analysis should land as a richer dashboard
or table inside the canvas.
For chart design and color choices, apply the tufte-viz skill (skills/tufte-viz/SKILL.md): color
must encode data, not decorate. Single-series bar charts default to one accent with the key bar
highlighted (colorBy: series); opt into category/value only when color carries a variable.
Prefer sparkline/dot-plot/bullet/slopegraph and direct labels over legends; use small
multiples for more than ~4 overlapping series.
When to Use
- Answering quantitative questions about engineering performance, delivery, or team health
- Trend analysis: "How has X changed over time?"
- Correlation analysis: "Is there a relationship between X and Y?"
- Comparison analysis: "How does team A compare to team B?"
- Distribution analysis: "What is the breakdown of X by Y?"
- Preparing data-backed arguments for planning, retrospectives, or leadership updates
- Any request that starts with "analyze", "compare", "show me the trend", "what is the distribution"
How It Works
Step 1: Parse the Question
Analyze the user's question to determine:
- Analysis type: trend, correlation, comparison, distribution, or summary
- Metrics needed: What data points are required (cycle time, velocity, bug count, etc.)
- Time range: What period to analyze (last quarter, last 4 sprints, this year, etc.)
- Grouping: How to segment the data (by team, by sprint, by week, by component, etc.)
- Data sources: Which MCP servers have the required data
If the question is ambiguous, ask clarifying questions before proceeding.
Step 2: Pull Data
Query the relevant MCP servers:
DX Data Cloud (DX MCP queryData tool in current session)
Primary source for engineering metrics:
- DORA metrics (deployment frequency, lead time, change failure rate, MTTR)
- DX Index (DXI) survey results
- Cycle time breakdowns
- Throughput and flow metrics
- Team-level aggregations
Query using SQL against the DX Data Cloud PostgreSQL database. Tool prefixes vary by deployment (dx-data-cloud vs dx-mcp), so select the available DX queryData tool at runtime. Start with information_schema if unsure of available tables and columns.
Jira/Linear
Issue and sprint data:
- Sprint velocity over time
- Issue type distribution
- Bug rates and trends
- Epic completion rates
- Cycle time (issue-level)
GitHub
Code and collaboration data:
- PR cycle time (open to merge)
- PR size distribution
- Review turnaround time
- Merge frequency
- Contributor activity
WorkIQ
Collaboration and time data:
- Meeting hours per week
- Focus time trends
- Collaboration patterns
- Context switching indicators
Step 3: Perform Analysis
Based on the analysis type identified in Step 1:
Trend Analysis
- Calculate the metric value for each time period (week, sprint, month)
- Compute week-over-week or period-over-period change
- Identify the overall trend direction (improving, declining, stable)
- Calculate the rate of change
- Identify inflection points or anomalies
- Project forward if asked ("at this rate, when will we reach X?")
Correlation Analysis
- Pull both metrics for the same time periods
- Calculate correlation coefficient (Pearson r)
- Interpret strength: |r| > 0.7 strong, 0.4-0.7 moderate, < 0.4 weak
- Note: correlation does not imply causation (always state this)
- Show a scatter plot description or data table
Comparison Analysis
- Pull the same metric for different groups (teams, sprints, projects)
- Calculate absolute and percentage differences
- Rank groups by performance
- Identify outliers (groups significantly above or below average)
- Apply statistical context (is the difference significant or within normal variation?)
Distribution Analysis
- Group data by the specified dimension
- Calculate counts and percentages for each group
- Identify the dominant category and any long tails
- Show as a table and describe what a pie/bar chart would look like
Step 4: Generate Output
Markdown Format
# Analysis: [Question Restated]
**Period**: [time range]
**Data Sources**: [list of sources queried]
**Generated**: [timestamp]
## Key Findings
1. [Finding 1 - the most important insight]
2. [Finding 2]
3. [Finding 3]
## Data
### [Metric Name] Over Time
| Period | Value | Change |
|--------|-------|--------|
| Week 1 | X | - |
| Week 2 | Y | +Z% |
| ... | ... | ... |
### Summary Statistics
- Mean: X
- Median: Y
- Min: Z (period)
- Max: W (period)
- Standard Deviation: V
## Interpretation
[What the data means in plain language. Connect findings to
business context. Explain why the trends matter.]
## Recommendations
1. [Actionable recommendation based on the data]
2. [Another recommendation]
## Methodology
[Brief note on data sources, time ranges, and any caveats
about data quality or completeness]
HTML Format
Generate a self-contained HTML file with:
- Chart.js visualizations:
- Line charts for trends
- Bar charts for comparisons
- Scatter plots for correlations
- Pie/doughnut charts for distributions
- Interactive features: Hover tooltips, legend toggles
- Data tables: Below each chart with the raw numbers
- Styled sections: Clean typography, responsive layout
- Print-friendly: CSS media queries for clean printing
Include Chart.js via CDN link in the HTML head.
Analysis Framework: Numbers First, Then Interpretation
Following the PMX vibe rules, always present data in this order:
- Numbers: Show the raw data and calculations first
- Pattern: Describe what the data shows (trend, correlation, distribution)
- Interpretation: Explain what it means in context
- Recommendation: Suggest action based on the findings
Never lead with interpretation. Let the numbers speak first.
Examples
Example 1: Trend Analysis
Prompt: "How has our PR cycle time changed over the last quarter?"
Expected behavior:
- Query DX Data Cloud for PR cycle time, weekly, last 12 weeks
- Calculate week-over-week changes
- Identify overall trend (improving/declining)
- Generate markdown with data table and findings
- If HTML, include a line chart
Output includes:
- Weekly cycle time values
- Average, min, max
- Trend direction and rate of change
- Comparison to team goals if defined in context.md
Example 2: Correlation Analysis
Prompt: "Analyze the correlation between meeting load and developer productivity"
Expected behavior:
- Query WorkIQ for meeting hours per developer per week
- Query DX Data Cloud or Jira for productivity proxy (throughput, cycle time, or velocity)
- Align time periods
- Calculate correlation coefficient
- Present scatter data and interpretation
- Note: "Correlation does not imply causation"
Example 3: Comparison Analysis
Prompt: "Compare velocity across the last 4 sprints"
Expected behavior:
- Query Jira/Linear for sprint velocity (story points completed) for last 4 sprints
- Calculate average, identify best and worst sprints
- Show sprint-over-sprint changes
- Identify contributing factors (scope changes, team changes, holidays)
- Present as comparison table and bar chart description
Example 4: Distribution Analysis
Prompt: "What is the breakdown of issues by type this quarter?"
Expected behavior:
- Query Jira/Linear for all issues created this quarter
- Group by type (feature, bug, task, spike, etc.)
- Calculate counts and percentages
- Present as table and describe pie chart
- Compare to previous quarter if useful
Example 5: Multi-Source Analysis
Prompt: "Is there a relationship between our deployment frequency and bug reports?"
Expected behavior:
- Query DX Data Cloud for deployment frequency (weekly)
- Query Jira/Linear for bug count (weekly, created date)
- Align time periods
- Calculate correlation
- Present findings with appropriate caveats
Example 6: Team Health Dashboard
Prompt: "Give me an overview of engineering health metrics"
Expected behavior:
- Pull DORA metrics from DX Data Cloud
- Pull DXI from DX Data Cloud
- Pull velocity from Jira/Linear
- Pull meeting load from WorkIQ
- Present dashboard-style summary with all metrics, trends, and RAG indicators
Statistical Methods
Trend Detection
- Calculate linear regression slope over the period
- Positive slope = improving (for metrics where higher is better)
- Negative slope = improving (for metrics where lower is better, like cycle time)
- Classify: strong improvement (>10% change), slight improvement (2-10%), stable (-2% to 2%), slight decline, strong decline
Correlation
- Pearson correlation coefficient for linear relationships
- Report r value and interpretation
- Minimum 8 data points for meaningful correlation
- Always caveat: correlation is not causation
Outlier Detection
- Values beyond 2 standard deviations from the mean
- Flag as anomalies with potential explanations (holidays, incidents, team changes)
Comparison Significance
- For small sample sizes (< 10), note that differences may not be statistically significant
- Calculate percentage difference and absolute difference
- Provide context: "This is within/outside normal variation for this metric"
Data Source Discovery
If unsure which tables or columns are available in DX Data Cloud, start with:
SELECT table_name, column_name, data_type
FROM information_schema.columns
WHERE table_schema = 'public'
ORDER BY table_name, ordinal_position;
This helps discover the available data before writing analysis queries.
Notes
- Always show numbers first, then interpretation (this is a core PMX principle)
- Include data freshness: when was the data last updated?
- If a data source is unavailable, note it and proceed with available sources
- For time series, use consistent time buckets (don't mix weekly and monthly)
- Always state the time range explicitly in findings
- Round numbers appropriately: percentages to 1 decimal, days to 1 decimal, counts as integers
- For HTML output, ensure the file is self-contained (inline CSS/JS, CDN for Chart.js)
- When comparing teams, be sensitive: focus on systemic factors, not individual blame
- If the data is insufficient to answer the question, say so rather than speculating
1---2name: data-analysis3description: Analytics synthesis with visualizations from engineering and product data sources4---56# Data Analysis78Perform analytics synthesis across engineering and product data sources. Answer questions about trends, correlations, comparisons, and distributions by querying MCP servers, analyzing the data, and presenting findings with visualizations.910In `pmx-canvas`, prefer `canvas_render { action: "add-graph" }` for charts and trend lines and11`canvas_render { action: "add-json-render" }` when the analysis should land as a richer dashboard12or table inside the canvas.1314For chart design and color choices, apply the `tufte-viz` skill (`skills/tufte-viz/SKILL.md`): color15must encode data, not decorate. Single-series bar charts default to one accent with the key bar16highlighted (`colorBy: series`); opt into `category`/`value` only when color carries a variable.17Prefer `sparkline`/`dot-plot`/`bullet`/`slopegraph` and direct labels over legends; use small18multiples for more than ~4 overlapping series.1920## When to Use2122- Answering quantitative questions about engineering performance, delivery, or team health23- Trend analysis: "How has X changed over time?"24- Correlation analysis: "Is there a relationship between X and Y?"25- Comparison analysis: "How does team A compare to team B?"26- Distribution analysis: "What is the breakdown of X by Y?"27- Preparing data-backed arguments for planning, retrospectives, or leadership updates28- Any request that starts with "analyze", "compare", "show me the trend", "what is the distribution"2930## How It Works3132### Step 1: Parse the Question3334Analyze the user's question to determine:35361. **Analysis type**: trend, correlation, comparison, distribution, or summary372. **Metrics needed**: What data points are required (cycle time, velocity, bug count, etc.)383. **Time range**: What period to analyze (last quarter, last 4 sprints, this year, etc.)394. **Grouping**: How to segment the data (by team, by sprint, by week, by component, etc.)405. **Data sources**: Which MCP servers have the required data4142If the question is ambiguous, ask clarifying questions before proceeding.4344### Step 2: Pull Data4546Query the relevant MCP servers:4748#### DX Data Cloud (DX MCP `queryData` tool in current session)49Primary source for engineering metrics:50- DORA metrics (deployment frequency, lead time, change failure rate, MTTR)51- DX Index (DXI) survey results52- Cycle time breakdowns53- Throughput and flow metrics54- Team-level aggregations5556Query using SQL against the DX Data Cloud PostgreSQL database. Tool prefixes vary by deployment (`dx-data-cloud` vs `dx-mcp`), so select the available DX `queryData` tool at runtime. Start with `information_schema` if unsure of available tables and columns.5758#### Jira/Linear59Issue and sprint data:60- Sprint velocity over time61- Issue type distribution62- Bug rates and trends63- Epic completion rates64- Cycle time (issue-level)6566#### GitHub67Code and collaboration data:68- PR cycle time (open to merge)69- PR size distribution70- Review turnaround time71- Merge frequency72- Contributor activity7374#### WorkIQ75Collaboration and time data:76- Meeting hours per week77- Focus time trends78- Collaboration patterns79- Context switching indicators8081### Step 3: Perform Analysis8283Based on the analysis type identified in Step 1:8485#### Trend Analysis86- Calculate the metric value for each time period (week, sprint, month)87- Compute week-over-week or period-over-period change88- Identify the overall trend direction (improving, declining, stable)89- Calculate the rate of change90- Identify inflection points or anomalies91- Project forward if asked ("at this rate, when will we reach X?")9293#### Correlation Analysis94- Pull both metrics for the same time periods95- Calculate correlation coefficient (Pearson r)96- Interpret strength: |r| > 0.7 strong, 0.4-0.7 moderate, < 0.4 weak97- Note: correlation does not imply causation (always state this)98- Show a scatter plot description or data table99100#### Comparison Analysis101- Pull the same metric for different groups (teams, sprints, projects)102- Calculate absolute and percentage differences103- Rank groups by performance104- Identify outliers (groups significantly above or below average)105- Apply statistical context (is the difference significant or within normal variation?)106107#### Distribution Analysis108- Group data by the specified dimension109- Calculate counts and percentages for each group110- Identify the dominant category and any long tails111- Show as a table and describe what a pie/bar chart would look like112113### Step 4: Generate Output114115#### Markdown Format116117```markdown118# Analysis: [Question Restated]119120**Period**: [time range]121**Data Sources**: [list of sources queried]122**Generated**: [timestamp]123124## Key Findings1251261. [Finding 1 - the most important insight]1272. [Finding 2]1283. [Finding 3]129130## Data131132### [Metric Name] Over Time133134| Period | Value | Change |135|--------|-------|--------|136| Week 1 | X | - |137| Week 2 | Y | +Z% |138| ... | ... | ... |139140### Summary Statistics141142- Mean: X143- Median: Y144- Min: Z (period)145- Max: W (period)146- Standard Deviation: V147148## Interpretation149150[What the data means in plain language. Connect findings to151business context. Explain why the trends matter.]152153## Recommendations1541551. [Actionable recommendation based on the data]1562. [Another recommendation]157158## Methodology159160[Brief note on data sources, time ranges, and any caveats161about data quality or completeness]162```163164#### HTML Format165166Generate a self-contained HTML file with:167168- **Chart.js visualizations**:169 - Line charts for trends170 - Bar charts for comparisons171 - Scatter plots for correlations172 - Pie/doughnut charts for distributions173- **Interactive features**: Hover tooltips, legend toggles174- **Data tables**: Below each chart with the raw numbers175- **Styled sections**: Clean typography, responsive layout176- **Print-friendly**: CSS media queries for clean printing177178Include Chart.js via CDN link in the HTML head.179180### Analysis Framework: Numbers First, Then Interpretation181182Following the PMX vibe rules, always present data in this order:1831841. **Numbers**: Show the raw data and calculations first1852. **Pattern**: Describe what the data shows (trend, correlation, distribution)1863. **Interpretation**: Explain what it means in context1874. **Recommendation**: Suggest action based on the findings188189Never lead with interpretation. Let the numbers speak first.190191## Examples192193### Example 1: Trend Analysis194**Prompt**: "How has our PR cycle time changed over the last quarter?"195196Expected behavior:1971. Query DX Data Cloud for PR cycle time, weekly, last 12 weeks1982. Calculate week-over-week changes1993. Identify overall trend (improving/declining)2004. Generate markdown with data table and findings2015. If HTML, include a line chart202203Output includes:204- Weekly cycle time values205- Average, min, max206- Trend direction and rate of change207- Comparison to team goals if defined in context.md208209### Example 2: Correlation Analysis210**Prompt**: "Analyze the correlation between meeting load and developer productivity"211212Expected behavior:2131. Query WorkIQ for meeting hours per developer per week2142. Query DX Data Cloud or Jira for productivity proxy (throughput, cycle time, or velocity)2153. Align time periods2164. Calculate correlation coefficient2175. Present scatter data and interpretation2186. Note: "Correlation does not imply causation"219220### Example 3: Comparison Analysis221**Prompt**: "Compare velocity across the last 4 sprints"222223Expected behavior:2241. Query Jira/Linear for sprint velocity (story points completed) for last 4 sprints2252. Calculate average, identify best and worst sprints2263. Show sprint-over-sprint changes2274. Identify contributing factors (scope changes, team changes, holidays)2285. Present as comparison table and bar chart description229230### Example 4: Distribution Analysis231**Prompt**: "What is the breakdown of issues by type this quarter?"232233Expected behavior:2341. Query Jira/Linear for all issues created this quarter2352. Group by type (feature, bug, task, spike, etc.)2363. Calculate counts and percentages2374. Present as table and describe pie chart2385. Compare to previous quarter if useful239240### Example 5: Multi-Source Analysis241**Prompt**: "Is there a relationship between our deployment frequency and bug reports?"242243Expected behavior:2441. Query DX Data Cloud for deployment frequency (weekly)2452. Query Jira/Linear for bug count (weekly, created date)2463. Align time periods2474. Calculate correlation2485. Present findings with appropriate caveats249250### Example 6: Team Health Dashboard251**Prompt**: "Give me an overview of engineering health metrics"252253Expected behavior:2541. Pull DORA metrics from DX Data Cloud2552. Pull DXI from DX Data Cloud2563. Pull velocity from Jira/Linear2574. Pull meeting load from WorkIQ2585. Present dashboard-style summary with all metrics, trends, and RAG indicators259260## Statistical Methods261262### Trend Detection263- Calculate linear regression slope over the period264- Positive slope = improving (for metrics where higher is better)265- Negative slope = improving (for metrics where lower is better, like cycle time)266- Classify: strong improvement (>10% change), slight improvement (2-10%), stable (-2% to 2%), slight decline, strong decline267268### Correlation269- Pearson correlation coefficient for linear relationships270- Report r value and interpretation271- Minimum 8 data points for meaningful correlation272- Always caveat: correlation is not causation273274### Outlier Detection275- Values beyond 2 standard deviations from the mean276- Flag as anomalies with potential explanations (holidays, incidents, team changes)277278### Comparison Significance279- For small sample sizes (< 10), note that differences may not be statistically significant280- Calculate percentage difference and absolute difference281- Provide context: "This is within/outside normal variation for this metric"282283## Data Source Discovery284285If unsure which tables or columns are available in DX Data Cloud, start with:286287```sql288SELECT table_name, column_name, data_type289FROM information_schema.columns290WHERE table_schema = 'public'291ORDER BY table_name, ordinal_position;292```293294This helps discover the available data before writing analysis queries.295296## Notes297298- Always show numbers first, then interpretation (this is a core PMX principle)299- Include data freshness: when was the data last updated?300- If a data source is unavailable, note it and proceed with available sources301- For time series, use consistent time buckets (don't mix weekly and monthly)302- Always state the time range explicitly in findings303- Round numbers appropriately: percentages to 1 decimal, days to 1 decimal, counts as integers304- For HTML output, ensure the file is self-contained (inline CSS/JS, CDN for Chart.js)305- When comparing teams, be sensitive: focus on systemic factors, not individual blame306- If the data is insufficient to answer the question, say so rather than speculating