Funnel Analysis
liangdabiao/claude-data-analysis-ultra-main
Analyze user conversion funnels, calculate step-by-step conversion rates, create interactive visualizations, and identify optimization opportunities.
Analyzes a multi-step conversion funnel to find where visitors drop off and which steps have the worst leakage.
$ npx skills add adobe/skills --skill aa-conversion-funnel-analysis -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install adobe/skills aa-conversion-funnel-analysis --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/adobe-analytics/skills/aa-conversion-funnel-analysis .claude/skills/aa-conversion-funnel-analysis && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "aa-conversion-funnel-analysis" agent skill from https://github.com/adobe/skills/tree/main/plugins/adobe-analytics/skills/aa-conversion-funnel-analysis into .claude/skills/aa-conversion-funnel-analysis/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aa-conversion-funnel-analysis", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/adobe/skills/tree/main/plugins/adobe-analytics/skills/aa-conversion-funnel-analysisType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add adobe/skills --skill aa-conversion-funnel-analysis -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install adobe/skills aa-conversion-funnel-analysis --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/adobe-analytics/skills/aa-conversion-funnel-analysis .agents/skills/aa-conversion-funnel-analysis && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "aa-conversion-funnel-analysis" agent skill from https://github.com/adobe/skills/tree/main/plugins/adobe-analytics/skills/aa-conversion-funnel-analysis into .agents/skills/aa-conversion-funnel-analysis/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aa-conversion-funnel-analysis", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add adobe/skills --skill aa-conversion-funnel-analysis -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install adobe/skills aa-conversion-funnel-analysis --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/adobe-analytics/skills/aa-conversion-funnel-analysis .cursor/skills/aa-conversion-funnel-analysis && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "aa-conversion-funnel-analysis" agent skill from https://github.com/adobe/skills/tree/main/plugins/adobe-analytics/skills/aa-conversion-funnel-analysis into .cursor/skills/aa-conversion-funnel-analysis/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aa-conversion-funnel-analysis", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/adobe/skills.git --path plugins/adobe-analytics/skills/aa-conversion-funnel-analysis--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add adobe/skills --skill aa-conversion-funnel-analysis -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install adobe/skills aa-conversion-funnel-analysis --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/adobe-analytics/skills/aa-conversion-funnel-analysis .gemini/skills/aa-conversion-funnel-analysis && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "aa-conversion-funnel-analysis" agent skill from https://github.com/adobe/skills/tree/main/plugins/adobe-analytics/skills/aa-conversion-funnel-analysis into .gemini/skills/aa-conversion-funnel-analysis/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aa-conversion-funnel-analysis", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install adobe/skills aa-conversion-funnel-analysisInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add adobe/skills --skill aa-conversion-funnel-analysis -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/adobe-analytics/skills/aa-conversion-funnel-analysis .github/skills/aa-conversion-funnel-analysis && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "aa-conversion-funnel-analysis" agent skill from https://github.com/adobe/skills/tree/main/plugins/adobe-analytics/skills/aa-conversion-funnel-analysis into .github/skills/aa-conversion-funnel-analysis/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aa-conversion-funnel-analysis", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add adobe/skills --skill aa-conversion-funnel-analysis -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install adobe/skills aa-conversion-funnel-analysis --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/adobe/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/adobe-analytics/skills/aa-conversion-funnel-analysis .opencode/skills/aa-conversion-funnel-analysis && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "aa-conversion-funnel-analysis" agent skill from https://github.com/adobe/skills/tree/main/plugins/adobe-analytics/skills/aa-conversion-funnel-analysis into .opencode/skills/aa-conversion-funnel-analysis/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "aa-conversion-funnel-analysis", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
aa-conversion-funnel-analysisAnalyzes a multi-step conversion funnel to find where visitors drop off and which steps have the worst leakage.
Aa Conversion Funnel Analysis is an agent skill from adobe/skills. 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," "where are visitors dropping off," "what's our add-to-cart to purchase conversion rate," "funnel analysis," "show me fallout between steps," or "which step loses the most visitors."
Its SKILL.md is about 5.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `evals/evals.json`).
It sits in Data & Analytics, covering Product analytics and Conversion rate optimization. The repository describes itself as: Adobe Skills for Agents. The licence is Apache-2.0.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit cbc9952. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are html and bash).
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
fonts.googleapis.comfonts.gstatic.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Aa Conversion Funnel Analysis loads about 5.1k tokens when it runs. Until then it costs about 122 tokens; SKILL.md has 895 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from adobe/skills at commit cbc9952, republished under its Apache-2.0 licence (© adobe). 895 words, ~5,057 tokens.
.claude/skills/aa-conversion-funnel-analysis/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Analyze a multi-step conversion funnel to identify where visitors drop off, which steps have the worst leakage, and what drives visitors to convert or abandon. Uses AA visit-level segment-based reporting to simulate funnel steps.
AA Container Model: AA funnels use hit, visit, and visitor containers — not CJA's event/session/person. Funnel steps are defined as visit-level segments (visitors who completed the step during a visit).
Reporting approach: AA does not have a native sequential fallout API accessible via MCP. This skill approximates fallout by creating or finding visit-level segments for each funnel step, then running the metric for each step segment to compute pass-through rates.
findReportSuites — select report suitesetSessionDefaults — set session context (reportSuiteId + globalCompanyId)findDimensions — discover page/event dimensions for step definitionfindMetrics — find visits or orders as the counting metricsearchDimensionItems — validate page names or event valuesfindSegments — find existing step segments if availableupsertSegment — create visit-level step segments if not foundrunReport — run visits count for each step segmentfindReportSuites / setSessionDefaults.findReportSuites(globalCompanyId: "<gcid>", page: 0, limit: 10)
setSessionDefaults(globalCompanyId: "<gcid>", reportSuiteId: "<rsid>")Ask the user to describe each step of the funnel in plain language. Prompt for 3–8 steps. Example:
For each step, ask:
For page-based steps:
findDimensions(page: 1, limit: 500) # returns all available dimensions; look for variables/page
searchDimensionItems(
dimensionId: "variables/page",
searchOr: "<step page keywords>", # space-separated keywords OR'd together
startDate: "<start>",
endDate: "<end>",
page: 1,
limit: 20
)Common page dimension IDs: variables/page, variables/entrypage, variables/exitpage.
Confirm the correct page name value with the user if multiple matches exist.
Note:
searchDimensionItemsusessearchOrorsearchAndfor filtering — notsearchTerm. If no rows return, try a wider date range — some report suites only have historical data.
For event-based steps (add to cart, checkout, purchase):
findMetrics(expansions: "componentType,categories", page: 0, limit: 200)
# Filter results locally by name: visits, orders, pageviews, etc.For each funnel step, search for an existing segment:
findSegments(searchTerm: "<step description>")If an appropriate visit-level segment exists, use it directly.
If not, create a new visit-level segment for each step:
upsertSegment(
definition: {
"name": "Visit: Checkout Started",
"description": "Visits where the visitor reached the checkout page",
"reportSuiteID": "<rsid>",
"container": {
"func": "segment",
"context": "visits",
"pred": {
"func": "streq",
"val": "/checkout",
"str": "/checkout",
"dimension": "variables/page"
}
},
"tags": [{ "name": "funnel" }]
}
)Create all step segments before running reports. Record each segment id.
Important: Only create new segments with explicit user confirmation. Present the list of segments to be created and ask: "I need to create N visit-level segments to define your funnel steps. Is that OK?"
For each step segment, run the visits count over the analysis period:
runReport(
dimensionId: "variables/page", # required by AA runReport
metricIds: "metrics/visits", # note: plural field name "metricIds"
segmentIds: "<step segment id>", # note: plural field name "segmentIds"
startDate: "<start>",
endDate: "<end>",
limit: 1
)
# summaryData.totals[0] is the total visits for this segmentThis is 1 call per funnel step. For a 5-step funnel = 5 calls.
Also run total visits (no segment) as the 100% baseline:
runReport(
dimensionId: "variables/page",
metricIds: "metrics/visits",
startDate: "<start>",
endDate: "<end>",
limit: 1
)
# Use summaryData.totals[0] as the baseline visit countAA runReport field names: Use
metricIds(notmetricId) andsegmentIds(notsegmentId). UsestartDate/endDate(ISO 8601) rather than adateRangeobject. Always read totals fromsummaryData.totals[0], not fromrows.
For each step, compute:
| Metric | Formula |
|---|---|
| Step visits | Raw count from runReport |
| Step conversion rate | Step visits / Total visits × 100 |
| Step-to-step rate | Step N visits / Step N-1 visits × 100 |
| Step-to-step drop-off | Step N-1 visits - Step N visits |
| Drop-off rate | 100 - step-to-step rate |
Identify the biggest leakage step (highest absolute drop-off count) and the weakest conversion step (lowest step-to-step rate).
For the step with the highest drop-off, run a dimension breakdown to find what differentiates visitors who progressed vs. those who dropped:
runReport(
dimensionId: "variables/mobiledevicetype",
metricIds: "metrics/visits",
segmentIds: "<worst step segment>",
startDate: "<start>",
endDate: "<end>",
limit: 10
)
runReport(
dimensionId: "variables/mobiledevicetype",
metricIds: "metrics/visits",
segmentIds: "<next step segment>",
startDate: "<start>",
endDate: "<end>",
limit: 10
)Compare the device-type mix between visitors who completed the worst step and those who made it to the next step. Repeat for 1–2 other dimensions (e.g., traffic source, new vs. returning).
Build the funnel report inline and write to
/tmp/aa_funnel_analysis_report_<YYYY-MM-DD_HHMMSS>.html.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Funnel Health — {ORG_NAME} — {FUNNEL_NAME}</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700;900&family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<style>
* { box-sizing: border-box; margin: 0; padding: 0; }
:root {
--bg: #f5f4f1;
--surface: #ffffff;
--ink: #1a1a1a;
--ink-muted: #6b6b6b;
--border: #e5e2dc;
--header-bg: #0e0e10;
--header-warm: #3a1010;
--accent-red: #c8312f;
--accent-red-bright: #ff6b68;
--accent-red-soft: #fdecea;
--accent-green: #1f7a4d;
--accent-yellow: #d4a017;
}
body { font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
background: var(--bg); color: var(--ink); line-height: 1.5;
-webkit-font-smoothing: antialiased; }
/* === Header === */
header { background: linear-gradient(120deg, var(--header-bg) 0%, #1a0d0d 55%, var(--header-warm) 100%);
color: #fff; padding: 56px 56px 44px; position: relative; overflow: hidden; }
header::after { content: ""; position: absolute; right: -140px; top: -140px;
width: 460px; height: 460px;
background: radial-gradient(circle, rgba(200,49,47,.35) 0%, transparent 70%);
pointer-events: none; }
.header-inner { max-width: 1080px; margin: 0 auto; position: relative; z-index: 1; }
.eyebrow { display: inline-flex; align-items: center; gap: 8px;
padding: 6px 14px; border: 1px solid rgba(255,107,104,.55);
border-radius: 999px; color: var(--accent-red-bright);
font-size: 11px; font-weight: 600; letter-spacing: 1.2px;
text-transform: uppercase; margin-bottom: 24px;
background: rgba(200,49,47,.10); }
.eyebrow::before { content: ""; width: 6px; height: 6px;
background: var(--accent-red-bright); border-radius: 50%; }
header h1 { font-family: "Playfair Display", Georgia, serif;
font-size: 56px; font-weight: 700; letter-spacing: -1.5px;
line-height: 1.05; margin-bottom: 14px; color: #fff; }
header .lede { font-size: 16px; max-width: 600px;
color: rgba(255,255,255,.80); margin-bottom: 24px;
line-height: 1.55; }
header .meta { display: flex; flex-wrap: wrap; gap: 22px;
font-size: 13px; color: rgba(255,255,255,.60); }
header .meta span { display: inline-flex; align-items: center; gap: 6px; }
header .meta .icon { opacity: .8; }
/* === Tabs === */
nav { background: var(--surface); border-bottom: 1px solid var(--border);
padding: 0 56px; display: flex; gap: 28px;
position: sticky; top: 0; z-index: 50; }
nav a { display: block; padding: 16px 0; font-size: 14px;
color: var(--ink); text-decoration: none;
border-bottom: 2px solid transparent;
transition: border-color .15s ease; }
nav a:hover { border-bottom-color: var(--accent-red); }
/* === Container === */
.container { max-width: 1080px; margin: 0 auto; padding: 36px 56px 60px; }
/* === Section label === */
.section-label { font-size: 11px; font-weight: 700;
text-transform: uppercase; letter-spacing: 1.4px;
color: var(--ink-muted); margin-bottom: 14px;
padding-bottom: 10px; border-bottom: 1px solid var(--border); }
/* === Funnel visualization (horizontal stepped bars) ===
Bar color is set per step by tier:
.tier-strong = green (rate >= 70% pass-through)
.tier-mid = yellow (40-69%)
.tier-weak = red (< 40%)
The biggest-leakage step also gets .step-bar.worst (red, regardless of tier). */
.funnel-wrap { background: var(--surface); border-radius: 8px;
padding: 28px 32px; margin-bottom: 28px;
box-shadow: 0 1px 3px rgba(0,0,0,.04); }
.funnel-step { display: flex; align-items: center; margin-bottom: 10px; }
.step-label { width: 220px; font-size: 14px; font-weight: 600;
text-align: right; padding-right: 16px; white-space: nowrap;
overflow: hidden; text-overflow: ellipsis; color: var(--ink); }
.step-bar-wrap { flex: 1; position: relative; height: 44px;
background: #f4f1eb; border-radius: 4px; }
.step-bar { height: 44px; border-radius: 4px;
display: flex; align-items: center; padding: 0 14px;
color: #fff; font-size: 13px; font-weight: 700;
transition: width 0.4s ease;
background: var(--accent-green); }
.step-bar.tier-strong { background: var(--accent-green); }
.step-bar.tier-mid { background: var(--accent-yellow); color: #3a2a05; }
.step-bar.tier-weak { background: var(--accent-red); }
.step-bar.worst { background: var(--accent-red); color: #fff; }
.step-meta { width: 200px; padding-left: 16px; font-size: 12px;
color: var(--ink-muted); }
.step-meta .rate { font-family: "Playfair Display", Georgia, serif;
font-size: 18px; font-weight: 700;
color: var(--ink); line-height: 1; }
.step-meta .drop { color: var(--accent-red); font-weight: 600;
display: block; margin-top: 4px; }
/* === Collapsible sections === */
.section { background: var(--surface); border-radius: 8px;
box-shadow: 0 1px 3px rgba(0,0,0,.04);
margin-bottom: 22px; overflow: hidden; }
.section-header { padding: 18px 28px; border-bottom: 1px solid var(--border);
display: flex; justify-content: space-between;
align-items: center; cursor: pointer; user-select: none; }
.section-header h2 { font-family: "Playfair Display", Georgia, serif;
font-size: 18px; font-weight: 700; }
.toggle { font-size: 16px; color: var(--accent-red); }
/* === Tables === */
table { width: 100%; border-collapse: collapse; font-size: 13px; }
thead th { background: #faf8f4; padding: 12px 22px;
text-align: left; font-weight: 600;
text-transform: uppercase; letter-spacing: .6px;
font-size: 11px; color: var(--ink-muted);
border-bottom: 1px solid var(--border); }
tbody td { padding: 12px 22px; border-bottom: 1px solid #f4f1eb; }
tbody tr:last-child td { border-bottom: none; }
/* === Badges === */
.badge { display: inline-block; padding: 3px 9px; border-radius: 4px;
font-size: 11px; font-weight: 600; }
.badge.green { background: #ebf5ef; color: var(--accent-green); }
.badge.yellow { background: #fef6e3; color: #b67a08; }
.badge.red { background: var(--accent-red-soft); color: var(--accent-red); }
/* === Insight callout === */
.insight { background: var(--accent-red-soft);
border-left: 4px solid var(--accent-red);
border-radius: 6px; padding: 16px 22px;
margin: 16px 28px; font-size: 14px; line-height: 1.6;
color: #4a2222; }
.back-top { position: fixed; bottom: 24px; right: 24px; background: var(--accent-red);
color: #fff; width: 44px; height: 44px; border-radius: 50%; border: none;
font-size: 20px; cursor: pointer;
box-shadow: 0 4px 12px rgba(200,49,47,.35); }
footer { text-align: center; padding: 32px 24px;
font-size: 12px; color: var(--ink-muted); }
/* === Print === */
@media print {
nav { display: none; position: static; }
header { padding: 36px 32px 28px; }
header h1 { font-size: 42px; }
.section-header { cursor: default; }
.back-top { display: none; }
.funnel-wrap, .section {
box-shadow: none; border: 1px solid var(--border); break-inside: avoid;
}
}
</style>
</head>
<body>
<header>
<div class="header-inner">
<div class="eyebrow">Funnel Health Report</div>
<h1>{ORG_NAME} Funnel Health</h1>
<p class="lede">Step-by-step pass-through for the {FUNNEL_NAME} funnel during {DATE_RANGE}.</p>
<div class="meta">
<span><span class="icon">📅</span> {DATE_RANGE}</span>
<span><span class="icon">📊</span> {REPORT_SUITE}</span>
<span><span class="icon">🕔</span> Prepared {GENERATED_DATE}</span>
</div>
</div>
</header>
<nav>
<a href="#funnel">Funnel</a>
<a href="#steps">Step Detail</a>
<a href="#leakage">Leakage Analysis</a>
<a href="#recommendations">Recommendations</a>
</nav>
<div class="container">
<!-- Funnel Visualization -->
<div class="section-label">Funnel Pass-Through</div>
<div id="funnel" class="funnel-wrap">
<!-- One .funnel-step per step:
- Bar width = (step visits / total visits) * 100%
- Apply tier class to .step-bar based on step pass-through rate:
tier-strong (>=70%), tier-mid (40-69%), tier-weak (<40%)
- Worst step also gets .step-bar.worst (red, always)
-->
</div>
<!-- Step Detail Table -->
<div id="steps" class="section">
<div class="section-header" onclick="toggle('steps-body')">
<h2>Step Detail</h2>
<span class="toggle" id="steps-body-icon">▾</span>
</div>
<div id="steps-body">
<table>
<thead><tr>
<th>Step</th><th>Visits</th><th>% of Total</th>
<th>Step Rate</th><th>Drop-off</th>
</tr></thead>
<tbody><!-- step rows with badge coloring on step rate --></tbody>
</table>
</div>
</div>
<!-- Leakage Analysis -->
<div id="leakage" class="section">
<div class="section-header" onclick="toggle('leak-body')">
<h2>Leakage Analysis (Worst Step: {WORST_STEP_NAME})</h2>
<span class="toggle" id="leak-body-icon">▾</span>
</div>
<div id="leak-body">
<div class="insight">{LEAKAGE_INSIGHT_TEXT}</div>
<table>
<thead><tr>
<th>Dimension</th><th>Entered Step</th><th>Completed Step</th>
<th>Step Rate</th><th>vs. Average</th>
</tr></thead>
<tbody><!-- leakage breakdown rows --></tbody>
</table>
</div>
</div>
<!-- Recommendations -->
<div id="recommendations" class="section">
<div class="section-header" onclick="toggle('rec-body')">
<h2>Recommendations</h2>
<span class="toggle" id="rec-body-icon">▾</span>
</div>
<div id="rec-body">
<!-- insight divs with specific recommendations per step -->
</div>
</div>
</div>
<button class="back-top" onclick="window.scrollTo({top:0,behavior:'smooth'})">
⇧
</button>
<footer>Funnel Health — {ORG_NAME} — Generated {GENERATED_DATE}</footer>
<script>
function toggle(id) {
var el = document.getElementById(id);
var ic = document.getElementById(id + '-icon');
if (el.style.display === 'none') { el.style.display = ''; ic.textContent = '\u25be'; }
else { el.style.display = 'none'; ic.textContent = '\u25b8'; }
}
</script>
</body>
</html>Section titles — no phase prefix: Section headings in the HTML report must not include the phase number. Use the plain section name only (e.g., "Funnel Overview" not "Phase 2 — Funnel Overview", "Drop-off Analysis" not "Phase 3 — Drop-off Analysis").
Write to /tmp/aa_funnel_analysis_report_<YYYY-MM-DD_HHMMSS>.html and open:
open /tmp/aa_funnel_analysis_report_<YYYY-MM-DD_HHMMSS>.htmlupsertSegment.findSegments first."Analyze our checkout funnel — I want to see where visitors drop off."
searchDimensionItems.© adobe, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in plugins/adobe-analytics/skills/aa-conversion-funnel-analysis of adobe/skills.
Open the folder on GitHubat commit cbc9952
Aa Conversion Funnel Analysis next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Aa Conversion Funnel Analysis this skilladobe/skills | 195 | — | ~5.1k | Automated safety check: Pass | Apache-2.0 | |
| Funnel Analysisliangdabiao/claude-data-analysis-ultra-main | 290 | 2 repos | ~781 | Automated safety check: Notes | None | |
| PostHog CLI Queriesdebugtheworldbot/keyStats | 1.5k | — | ~1.2k | Automated safety check: Pass | MIT | |
| Retentioneering Contributingretentioneering/retentioneering-tools | 920 | — | ~1.8k | Automated safety check: Pass | Apache-2.0 | |
| Retentioneering Product Analyticsretentioneering/retentioneering-tools | 920 | — | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| Retention Analysisliangdabiao/claude-data-analysis-ultra-main | 290 | 1 repos | ~1.3k | Automated safety check: Notes | None |
liangdabiao/claude-data-analysis-ultra-main
Analyze user conversion funnels, calculate step-by-step conversion rates, create interactive visualizations, and identify optimization opportunities.
debugtheworldbot/keyStats
Runs HogQL queries against this project's PostHog data from the terminal using posthog-cli, with bundled scripts for dashboard metadata the CLI itself has no command for.
retentioneering/retentioneering-tools
Help the user turn their Retentioneering ideas, friction reports, bug findings, or feature needs into high-quality upstream contributions: from capturing and validating the idea, through minimal…
retentioneering/retentioneering-tools
Analyze event logs, clickstreams, user paths, product funnels, retention, behavioral segments, transition graphs, step matrices, sequence patterns, and customer journeys using Retentioneering.
liangdabiao/claude-data-analysis-ultra-main
Analyze user retention and churn using survival analysis, cohort analysis, and machine learning.
mistralai/mistral-vibe
Plans which analytics events and properties a new feature needs, checks them against the existing event registry, and verifies them per environment.
adobe/skills
Scaffolds, implements, deploys and debugs Adobe Runtime actions in App Builder projects, with templates for webhooks, events, database CRUD, sequences and Asset Compute workers.
adobe/skills
Launches Chrome with an unpacked extension over CDP, opens its sidepanel, popup or options page, and hands over to cdp-connect for clicks, typing and screenshots.
adobe/skills
Extracts icons, metadata, text, forms, videos and social links from any web page with playwright-cli, with SVG icon classification and cleanup.
adobe/skills
Detect all languages used on a webpage — both declared (html@lang, hreflang alternate links, nested lang= attributes, meta content-language) and actually present in the body text (Google CLD3 via…
adobe/skills
Prepare any webpage for clean interaction by detecting and removing disruptive overlays (cookie banners, GDPR consent, modals, popups, newsletter signups, paywalls, login walls).
adobe/skills
Reduce a webpage to a structural skeleton with semantic tokens.
Categories
Analyzes a multi-step conversion funnel to find where visitors drop off and which steps have the worst leakage. Aa Conversion Funnel Analysis is an agent skill from adobe/skills. Analyzes a multi-step conversion funnel to find where visitors drop off and which steps have the worst leakage.
Aa Conversion Funnel Analysis fits situations like: someone describes a journey and asks about conversion rates; step completion; analyze our checkout funnel; where are visitors dropping off.
Run `npx skills add adobe/skills --skill aa-conversion-funnel-analysis -a claude-code`. Or copy the skill folder (plugins/adobe-analytics/skills/aa-conversion-funnel-analysis in adobe/skills) into .claude/skills/aa-conversion-funnel-analysis in your project. Claude Code loads it when a task matches its description.
Run `npx skills add adobe/skills --skill aa-conversion-funnel-analysis -a codex`. Or copy the skill folder (plugins/adobe-analytics/skills/aa-conversion-funnel-analysis in adobe/skills) into .agents/skills/aa-conversion-funnel-analysis in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add adobe/skills --skill aa-conversion-funnel-analysis -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/aa-conversion-funnel-analysis, .gemini/skills/aa-conversion-funnel-analysis, .github/skills/aa-conversion-funnel-analysis and .opencode/skills/aa-conversion-funnel-analysis in your project.
SKILL.md names no scripts, command-line tools or credentials: Aa Conversion Funnel Analysis is instructions for the agent only.
SKILL.md names 2 domains. In commands or code: fonts.googleapis.com and fonts.gstatic.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Aa Conversion Funnel Analysis is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.1k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Aa Conversion Funnel Analysis: Funnel Analysis (liangdabiao/claude-data-analysis-ultra-main, 290 stars), PostHog CLI Queries (debugtheworldbot/keyStats, 1.5k stars), Retentioneering Contributing (retentioneering/retentioneering-tools, 920 stars) and Retentioneering Product Analytics (retentioneering/retentioneering-tools, 920 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
adobe (a GitHub organization) maintains it in adobe/skills, which has 195 GitHub stars. The repository holds 105 skills in this directory. The repository was last updated on October 6, 2026.
Source: adobe/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.