/cja-dimension-analysis
Comprehensive dimension analysis and reporting for CJA. Use this skill whenever the user wants to analyze one or more dimensions — including cardinality, distribution/skew, trends, anomalies, data quality errors, comparisons, and forecasting. Also trigger when someone asks "what
$ npx -y skills add adobe/skills --skill cja-dimension-analysis --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/cja-dimension-analysis
Context preview
The summary Claude sees to decide when to auto-load this skill.
Comprehensive dimension analysis and reporting for CJA. Use this skill whenever the user wants to analyze one or more dimensions — including cardinality, distribution/skew, trends, anomalies, data quality errors, comparisons, and forecasting. Also trigger when someone asks "what
SKILL.md
cja-dimension-analysis.SKILL.mdname: cja-dimension-analysis
description: >
Comprehensive dimension analysis and reporting for CJA. Use this skill whenever the user
wants to analyze one or more dimensions — including cardinality, distribution/skew, trends,
anomalies, data quality errors, comparisons, and forecasting. Also trigger when someone
asks "what are the top values for...", "dimension health", "explore this dimension",
"dimension dashboard", "dimension statistics", "data quality check on a dimension",
"dimension cardinality", "dimension trends", "dimension skew", "dimension anomalies",
"compare dimensions", or any similar request to understand what's inside a CJA dimension.
Produces an interactive HTML dashboard or a markdown report. Works with the CJA MCP server.
license: Apache-2.0
metadata:
author: Adobe
version: "1.0"
CJA Dimension Analysis
Analyze one or more CJA dimensions to understand their cardinality, distribution, trends, anomalies, data quality issues, and forecasts. Produces an actionable report that helps teams understand what's inside their dimensions and where to focus attention.
Workflow
Execute phases in order. Each phase is **selectable** — the user can ask for a subset (e.g., "just cardinality and errors") or the full analysis. Default is all phases.
Phase 0 — Setup
1. Call `findDataViews` to list available data views. If the user hasn't specified one, ask which data view to analyze. Set it with `setDefaultSessionDataViewId`. 2. Ask which dimensions to analyze. Options:
- **Named dimensions**: "Analyze Page Name and Browser Type"
- **By ID**: user provides dimension IDs directly
- **All dimensions**: warn that this may be slow; ask for a limit (default: top 50 by name)
3. Ask which analyses to run (or confirm "all" as the default):
- Cardinality, Distribution/Skew, Trends, Anomalies, Data Quality, Comparisons, Forecasting
4. Ask for the date range. If the user hasn't specified one, test a few ranges to find data:
- Try last 30 days, last 90 days, last 6 months, last year — use the first that returns rows.
5. Ask for the primary metric to use for distribution/skew (default: occurrences or visits). 6. Confirm the plan with the user before proceeding.
Phase 1 — Cardinality
For each dimension:
1. Call `searchDimensionItems(dimensionId, limit: 50000)` to estimate unique value count, or `runReport` with the dimension as rows and a count metric to get row count. 2. Classify cardinality: | Level | Threshold | |-------|-----------| | LOW | < 100 unique values | | MEDIUM | 100 – 1,000 | | HIGH | 1,000 – 10,000 | | VERY HIGH | > 10,000 | 3. Track cardinality over time (optional): `runReport` with dimension + date breakdown; count unique dimension values per day/week to see cardinality growth trend. 4. Flag HIGH and VERY HIGH dimensions with performance recommendations.
Store: `{dimensionId, name, uniqueValueCount, cardinalityLevel, cardinalityTrend}`
Phase 2 — Distribution & Skew
For each dimension:
1. `runReport` with dimension as rows + primary metric (e.g., occurrences/visits). Request at least 50 rows to capture the distribution shape. 2. Compute top-N % share (top 1, 5, 10), Gini coefficient, and cumulative distribution. 3. Classify skew: | Label | Condition | |-------|-----------| | **Extreme skew** | Top 1 value > 50% of total | | **High skew** | Top 1 value > 30% of total | | **Moderate** | Top 5 values < 70% of total | | **Long tail** | Top 10 values < 50% of total | 4. Note: per-value breakdown with percentage and cumulative %.
Store: `{dimensionId, distribution: [{value, metric, pct, cumulative}], gini, skewLabel, top1Pct, top5Pct, top10Pct}`
Phase 3 — Trends
For each dimension:
1. `runReport` with dimension + date granularity (day or week depending on range). Compare two periods: first half vs second half of the selected date range. 2. Identify:
- **New values**: appeared in period 2 but not period 1
- **Disappeared values**: present in period 1, absent in period 2
- **Growth**: metric in period 2 > metric in period 1 by > 10%
- **Decline**: metric in period 2 < metric in period 1 by > 10%
- **Stable**: < 10% change between periods
3. Assign trend badges per value: 🟢 Growing | 🔴 Declining | 🟡 Stable | 🆕 New | ⬜ Disappeared
Store: `{dimensionId, periodComparison: {period1, period2, changes: [{value, p1Metric, p2Metric, pctChange, badge}]}, newValues: [], disappearedValues: []}`
Phase 4 — Anomalies
For each dimension:
1. From the Phase 3 time-series, compute rolling mean and stddev per dimension value. 2. **Z-score detection**: flag (value, date) pairs where the z-score exceeds the threshold (default: 2.0; sensitive: 1.5; conservative: 3.0). 3. **Threshold alerts**:
- Any single value holding > 50% of total metric on a given day
- Value count that is > 2× the rolling average for that value
4. **New/disappeared alerts**: flag values that appear or disappear mid-period (from Phase 3). 5. Collect: anomaly type (spike, drop, new, disappeared, threshold), dimension value, date, magnitude.
Store: `{dimensionId, anomalies: [{value, date, type, magnitude, zScore}]}`
Phase 5 — Data Quality / Errors
For each dimension:
1. Search for known bad values using `searchDimensionItems`:
- `"Unspecified"`, `"None"`, `"(empty)"`, `""`, `"null"`, `"undefined"`, `"N/A"`, `"unknown"`
2. Count occurrences with `runReport` filtering to each known bad value. 3. Compute: missing data % = (sum of bad value occurrences) / total occurrences. 4. Flag: dimensions where missing data > 5% (warning), > 20% (critical). 5. If the dimension has an expected format (URL, email, date), note it — but don't auto-validate patterns unless the user asks.
Store: `{dimensionId, errorPatterns: [{pattern, count, pct}], missingDataPct, missingDataSeverity}`
Phase 6 — Comparisons (multi-dimension or time-period)
This phase runs when the user is analyzing 2+ di
Read more
name: cja-dimension-analysis description: > Comprehensive dimension analysis and reporting for CJA. Use this skill whenever the user wants to analyze one or more dimensions — including cardinality, distribution/skew, trends, anomalies, data quality errors, comparisons, and forecasting. Also trigger when someone asks "what are the top values for...", "dimension health", "explore this dimension", "dimension dashboard", "dimension statistics", "data quality check on a dimension", "dimension cardinality", "dimension trends", "dimension skew", "dimension anomalies", "compare dimensions", or any similar request to understand what's inside a CJA dimension. Produces an interactive HTML dashboard or a markdown report. Works with the CJA MCP server. license: Apache-2.0 metadata: author: Adobe version: "1.0"
CJA Dimension Analysis
Analyze one or more CJA dimensions to understand their cardinality, distribution, trends, anomalies, data quality issues, and forecasts. Produces an actionable report that helps teams understand what's inside their dimensions and where to focus attention.
Workflow
Execute phases in order. Each phase is **selectable** — the user can ask for a subset (e.g., "just cardinality and errors") or the full analysis. Default is all phases.
Phase 0 — Setup
1. Call `findDataViews` to list available data views. If the user hasn't specified one, ask which data view to analyze. Set it with `setDefaultSessionDataViewId`. 2. Ask which dimensions to analyze. Options:
- **Named dimensions**: "Analyze Page Name and Browser Type"
- **By ID**: user provides dimension IDs directly
- **All dimensions**: warn that this may be slow; ask for a limit (default: top 50 by name)
3. Ask which analyses to run (or confirm "all" as the default):
- Cardinality, Distribution/Skew, Trends, Anomalies, Data Quality, Comparisons, Forecasting
4. Ask for the date range. If the user hasn't specified one, test a few ranges to find data:
- Try last 30 days, last 90 days, last 6 months, last year — use the first that returns rows.
5. Ask for the primary metric to use for distribution/skew (default: occurrences or visits). 6. Confirm the plan with the user before proceeding.
Phase 1 — Cardinality
For each dimension:
1. Call `searchDimensionItems(dimensionId, limit: 50000)` to estimate unique value count, or `runReport` with the dimension as rows and a count metric to get row count. 2. Classify cardinality: | Level | Threshold | |-------|-----------| | LOW | < 100 unique values | | MEDIUM | 100 – 1,000 | | HIGH | 1,000 – 10,000 | | VERY HIGH | > 10,000 | 3. Track cardinality over time (optional): `runReport` with dimension + date breakdown; count unique dimension values per day/week to see cardinality growth trend. 4. Flag HIGH and VERY HIGH dimensions with performance recommendations.
Store: `{dimensionId, name, uniqueValueCount, cardinalityLevel, cardinalityTrend}`
Phase 2 — Distribution & Skew
For each dimension:
1. `runReport` with dimension as rows + primary metric (e.g., occurrences/visits). Request at least 50 rows to capture the distribution shape. 2. Compute top-N % share (top 1, 5, 10), Gini coefficient, and cumulative distribution. 3. Classify skew: | Label | Condition | |-------|-----------| | **Extreme skew** | Top 1 value > 50% of total | | **High skew** | Top 1 value > 30% of total | | **Moderate** | Top 5 values < 70% of total | | **Long tail** | Top 10 values < 50% of total | 4. Note: per-value breakdown with percentage and cumulative %.
Store: `{dimensionId, distribution: [{value, metric, pct, cumulative}], gini, skewLabel, top1Pct, top5Pct, top10Pct}`
Phase 3 — Trends
For each dimension:
1. `runReport` with dimension + date granularity (day or week depending on range). Compare two periods: first half vs second half of the selected date range. 2. Identify:
- **New values**: appeared in period 2 but not period 1
- **Disappeared values**: present in period 1, absent in period 2
- **Growth**: metric in period 2 > metric in period 1 by > 10%
- **Decline**: metric in period 2 < metric in period 1 by > 10%
- **Stable**: < 10% change between periods
3. Assign trend badges per value: 🟢 Growing | 🔴 Declining | 🟡 Stable | 🆕 New | ⬜ Disappeared
Store: `{dimensionId, periodComparison: {period1, period2, changes: [{value, p1Metric, p2Metric, pctChange, badge}]}, newValues: [], disappearedValues: []}`
Phase 4 — Anomalies
For each dimension:
1. From the Phase 3 time-series, compute rolling mean and stddev per dimension value. 2. **Z-score detection**: flag (value, date) pairs where the z-score exceeds the threshold (default: 2.0; sensitive: 1.5; conservative: 3.0). 3. **Threshold alerts**:
- Any single value holding > 50% of total metric on a given day
- Value count that is > 2× the rolling average for that value
4. **New/disappeared alerts**: flag values that appear or disappear mid-period (from Phase 3). 5. Collect: anomaly type (spike, drop, new, disappeared, threshold), dimension value, date, magnitude.
Store: `{dimensionId, anomalies: [{value, date, type, magnitude, zScore}]}`
Phase 5 — Data Quality / Errors
For each dimension:
1. Search for known bad values using `searchDimensionItems`:
- `"Unspecified"`, `"None"`, `"(empty)"`, `""`, `"null"`, `"undefined"`, `"N/A"`, `"unknown"`
2. Count occurrences with `runReport` filtering to each known bad value. 3. Compute: missing data % = (sum of bad value occurrences) / total occurrences. 4. Flag: dimensions where missing data > 5% (warning), > 20% (critical). 5. If the dimension has an expected format (URL, email, date), note it — but don't auto-validate patterns unless the user asks.
Store: `{dimensionId, errorPatterns: [{pattern, count, pct}], missingDataPct, missingDataSeverity}`
Phase 6 — Comparisons (multi-dimension or time-period)
This phase runs when the user is analyzing 2+ di
Repo: adobe/skills
Other skills on adobe-skills.
- /aa-conversion-funnel-analysis
Analyzes a multi-step conversion funnel to find where visitors drop off and which steps have the worst leakage. Use this skill when someone describes a journey and asks about conversion rates, drop-off, fallout, or step completion. Trigger for "analyze our checkout funnel,"
Open skill - /aa-executive-briefing
Generates a concise, executive-ready performance summary covering key metrics, trends, and what's driving movement. Use this skill when someone needs to produce a briefing, executive summary, performance narrative, or stakeholder readout — for example, "write an exec summary of
Open skill - /aa-kpi-pulse
Produces a compact KPI digest showing how key metrics changed over a period and what's driving the movement. Use this skill when someone asks for a performance summary, a weekly recap, a morning briefing, a KPI update, or any variation of "how did we do this week/month." Also
Open skill - /aa-segment-performance-comparator
Compares the performance of two or more audience segments across key metrics side by side. Use this skill when someone wants to compare audiences or visitor groups — for example, "how do mobile visitors compare to desktop on conversion," "compare new vs. returning visitors,"
Open skill - /aa-top-movers-watchlist
Identifies which items (pages, campaigns, products, channels, regions) had the biggest increases or decreases for a key metric between two time periods. Use this skill when someone asks "what's up and what's down," "which campaigns moved the most," "top gainers and losers,"
Open skill - /cja-executive-briefing
Generates a polished, leadership-ready performance briefing with KPI tiles, executive narrative bullets, and a driver analysis — all as a print-ready HTML document. Always use this skill when someone asks for an executive summary, performance briefing, leadership readout,
Open skill

