Fullstory Org Discovery
The goal is to produce a concise, accurate context file that captures the signal from a Fullstory org in a form that's immediately useful to both humans and analysis skills. Quality matters more than completeness — a curated file of 20 meaningful entries is far more useful than a raw dump of 200 auto-learned pages.
Step 1 — Identify the org
If the org name or slug hasn't been provided, ask before proceeding:
"What's the org name or slug? I'll save the context file to ~/claude/accounts/{slug}-fullstory-context.md."
Once you have a name, derive a slug (lowercase, hyphens, no spaces) and the output path.
Step 2 — Parallel discovery
Fire all four of these simultaneously — they're independent and waiting is wasteful:
get_managed_funnels() — all defined funnels
get_pages(regex=null) — full page list (you'll curate this in Step 3)
discover_org_context with these queries and limit=5:checkout, purchase, order, cart, payment,
login, signup, register,
search, filter,
confirm, success, complete, thank you,
error, failed,
product, listing, item,
conversion, revenue
get_opportunities(time_range="30d") — StoryAI's pre-ranked issues org-wide
Step 3 — Curate pages
The raw page list may contain hundreds of auto-learned entries. Keep:
- All user-defined pages — these are always meaningful, whatever they're named
- Auto-learned pages whose name or friendly_id contains any of:
checkout, cart, product, search, login, register, sign, confirm, order, home, landing, account, error, 404, basket, booking, payment, success, thank
Discard: root-only paths (/), UUID/hash paths, pages with no recognisable business purpose.
The goal is a curated list that a trading manager or COO could read and immediately understand — not an exhaustive inventory.
Step 3b — Validate events against key pages
Pick the top pages by funnel importance — include all pages that appear in funnels, then fill remaining slots with high-signal pages (home, search results, PDP) up to a maximum of 10. Call discover_groups for each in parallel:
discover_groups(page_id=X, relative_time_range="30d", limit=5)
Use the results as a validation and enrichment pass — not a new output section:
- Confirm active events: Cross-reference the groups returned against the Defined Events and Named Elements you already found. Events/elements that appear in page signals are confirmed as genuinely active — note this in their table row (e.g. add a "Pages" column or parenthetical).
- Flag outliers: If a group appears prominently in page signals but has no match in your discovered events/elements, it's a potential gap in the org's instrumentation or a signal your discovery queries missed. Add it to the Notes section as: "Unmatched signal on [page]: [element/event] — consider including in analysis."
If everything from discover_groups matches what you already found, no output change needed. Only surface what's genuinely new or confirmatory.
Step 4 — Synthesise and characterise
Now reason over everything you've collected. The output should make sense to a non-technical senior stakeholder, not just a developer:
- Infer site type: eCommerce, SaaS, financial services, travel, media, etc. — use the vocabulary of funnels, pages, and events to make this call
- Map funnels to business purpose: "Checkout Funnel" → "The primary path from product selection to completed purchase"
- Write a site characterisation: one paragraph a COO could read. What does this site do? What are the key user journeys? What's the scale of implementation (shallow/rich)?
- Flag implementation gaps: if there are no funnels, no named events, or very few user-defined pages, note this. It means analysis will be less precise and is important context for a POC.
Step 5 — Write the context file
Write to ~/claude/accounts/{slug}-fullstory-context.md using this structure exactly:
# Fullstory Org Context: {Org Name}
Last updated: {YYYY-MM-DD}
Org slug: {slug}
## Site Characterisation
**Type:** {eCommerce / SaaS / financial services / travel / other}
{One paragraph describing the site: what it does, key user journeys,
and the richness of the Fullstory implementation.}
## Funnels
| Name | ID | Business Purpose |
|------|----|-----------------|
| ... | ... | ... |
## Key Pages
| Name | ID | Type | Business Purpose |
|------|----|------|-----------------|
| ... | ... | user-defined / learned | ... |
## Defined Events
| Name | ID | Meaning |
|------|----|---------|
| ... | ... | ... |
## Named Elements
| Name | ID | Purpose |
|------|----|---------|
| ... | ... | ... |
## Custom User Variables
{List any user properties defined in this org — useful for building segments.
If none, write: "None defined."}
## Top StoryAI Opportunities (last 30 days)
| Title | Severity | Users Affected | Metric ID | Group ID |
|-------|----------|---------------|-----------|----------|
| ... | ... | ...% | ... | ... |
{Keep Metric ID and Group ID — analysis skills need these for drill-in.}
## Notes for Analysis Skills
{Any flags that would affect downstream analysis:
- No funnels defined → conversion analysis will need manual scoping
- No named events → rely on page/click patterns only
- Shallow implementation → StoryAI opportunities may be limited
- Unusual naming conventions → note them here
- Any other context useful to an analysis running against this org}
If a section has no data (e.g. no named elements), write "None found" rather than omitting the section — analysis skills need to know what's absent, not just what's present.
Step 6 — Report to user
After writing the file, you MUST print this summary to the user. This is the primary output they see — don't skip it or bury it in prose.
Org discovery complete — {Org Name}
Saved to: ~/claude/accounts/{slug}-fullstory-context.md
Site type: {inferred type}
Found: {N} funnels · {N} key pages · {N} defined events · {N} named elements
Top 3 issues (StoryAI):
1. {title} — {severity}
2. {title} — {severity}
3. {title} — {severity}
Notes: {any flags from implementation gaps or outliers, or "None — implementation looks well-structured."}
Example:
Org discovery complete — Cargo Rentals
Saved to: ~/claude/accounts/cargo-rentals-fullstory-context.md
Site type: Peer-to-peer car rental marketplace
Found: 15 funnels · 23 key pages · 34 defined events · 26 named elements
Top 3 issues (StoryAI):
1. Script errors on checkout — 133 users (INVESTIGATING)
2. Dead clicks on "Add to Cart" button — 41 users (TICKET_OPENED)
3. "No cars found" modal after city search — 31 users (TICKET_OPENED)
Notes: Duplicate Revenue Event defined — verify KSNijoJTTEpe is the active one before building funnels. No custom user variables found.
1---2name: fullstory-org-discovery3description: Discover and document a Fullstory org's structure — funnels, pages, events, named elements, and StoryAI opportunities — into a persistent context file at ~/claude/accounts/{slug}-fullstory-context.md. This context file is then loaded by analysis skills (conversion investigation, CX health brief, POC insight finder) so they can run without rediscovering the org each time. Use this skill whenever someone says "discover the org", "learn this Fullstory org", "run org discovery", "set up Fullstory context", or "analyse this Fullstory org". Also trigger when someone asks what a Fullstory org contains, wants to understand its structure, or is about to run a POC and needs to orient themselves in the data.4---56# Fullstory Org Discovery78The goal is to produce a concise, accurate context file that captures the signal from a Fullstory org in a form that's immediately useful to both humans and analysis skills. Quality matters more than completeness — a curated file of 20 meaningful entries is far more useful than a raw dump of 200 auto-learned pages.910## Step 1 — Identify the org1112If the org name or slug hasn't been provided, ask before proceeding:1314> "What's the org name or slug? I'll save the context file to ~/claude/accounts/{slug}-fullstory-context.md."1516Once you have a name, derive a slug (lowercase, hyphens, no spaces) and the output path.1718## Step 2 — Parallel discovery1920Fire all four of these simultaneously — they're independent and waiting is wasteful:21221. `get_managed_funnels()` — all defined funnels232. `get_pages(regex=null)` — full page list (you'll curate this in Step 3)243. `discover_org_context` with these queries and limit=5:25 ```26 checkout, purchase, order, cart, payment,27 login, signup, register,28 search, filter,29 confirm, success, complete, thank you,30 error, failed,31 product, listing, item,32 conversion, revenue33 ```344. `get_opportunities(time_range="30d")` — StoryAI's pre-ranked issues org-wide3536## Step 3 — Curate pages3738The raw page list may contain hundreds of auto-learned entries. Keep:39- **All user-defined pages** — these are always meaningful, whatever they're named40- **Auto-learned pages** whose name or friendly_id contains any of: `checkout`, `cart`, `product`, `search`, `login`, `register`, `sign`, `confirm`, `order`, `home`, `landing`, `account`, `error`, `404`, `basket`, `booking`, `payment`, `success`, `thank`4142Discard: root-only paths (`/`), UUID/hash paths, pages with no recognisable business purpose.4344The goal is a curated list that a trading manager or COO could read and immediately understand — not an exhaustive inventory.4546## Step 3b — Validate events against key pages4748Pick the top pages by funnel importance — include all pages that appear in funnels, then fill remaining slots with high-signal pages (home, search results, PDP) up to a maximum of 10. Call `discover_groups` for each in parallel:4950```51discover_groups(page_id=X, relative_time_range="30d", limit=5)52```5354Use the results as a validation and enrichment pass — not a new output section:5556- **Confirm active events**: Cross-reference the groups returned against the Defined Events and Named Elements you already found. Events/elements that appear in page signals are confirmed as genuinely active — note this in their table row (e.g. add a "Pages" column or parenthetical).57- **Flag outliers**: If a group appears prominently in page signals but has *no* match in your discovered events/elements, it's a potential gap in the org's instrumentation or a signal your discovery queries missed. Add it to the Notes section as: "Unmatched signal on [page]: [element/event] — consider including in analysis."5859If everything from discover_groups matches what you already found, no output change needed. Only surface what's genuinely new or confirmatory.6061## Step 4 — Synthesise and characterise6263Now reason over everything you've collected. The output should make sense to a non-technical senior stakeholder, not just a developer:6465- **Infer site type**: eCommerce, SaaS, financial services, travel, media, etc. — use the vocabulary of funnels, pages, and events to make this call66- **Map funnels to business purpose**: "Checkout Funnel" → "The primary path from product selection to completed purchase"67- **Write a site characterisation**: one paragraph a COO could read. What does this site do? What are the key user journeys? What's the scale of implementation (shallow/rich)?68- **Flag implementation gaps**: if there are no funnels, no named events, or very few user-defined pages, note this. It means analysis will be less precise and is important context for a POC.6970## Step 5 — Write the context file7172Write to `~/claude/accounts/{slug}-fullstory-context.md` using this structure exactly:7374```markdown75# Fullstory Org Context: {Org Name}76Last updated: {YYYY-MM-DD}77Org slug: {slug}7879## Site Characterisation80**Type:** {eCommerce / SaaS / financial services / travel / other}8182{One paragraph describing the site: what it does, key user journeys, 83and the richness of the Fullstory implementation.}8485## Funnels86| Name | ID | Business Purpose |87|------|----|-----------------|88| ... | ... | ... |8990## Key Pages91| Name | ID | Type | Business Purpose |92|------|----|------|-----------------|93| ... | ... | user-defined / learned | ... |9495## Defined Events96| Name | ID | Meaning |97|------|----|---------|98| ... | ... | ... |99100## Named Elements101| Name | ID | Purpose |102|------|----|---------|103| ... | ... | ... |104105## Custom User Variables106{List any user properties defined in this org — useful for building segments.107If none, write: "None defined."}108109## Top StoryAI Opportunities (last 30 days)110| Title | Severity | Users Affected | Metric ID | Group ID |111|-------|----------|---------------|-----------|----------|112| ... | ... | ...% | ... | ... |113114{Keep Metric ID and Group ID — analysis skills need these for drill-in.}115116## Notes for Analysis Skills117{Any flags that would affect downstream analysis:118- No funnels defined → conversion analysis will need manual scoping119- No named events → rely on page/click patterns only120- Shallow implementation → StoryAI opportunities may be limited121- Unusual naming conventions → note them here122- Any other context useful to an analysis running against this org}123```124125If a section has no data (e.g. no named elements), write "None found" rather than omitting the section — analysis skills need to know what's absent, not just what's present.126127## Step 6 — Report to user128129After writing the file, you MUST print this summary to the user. This is the primary output they see — don't skip it or bury it in prose.130131```132Org discovery complete — {Org Name}133Saved to: ~/claude/accounts/{slug}-fullstory-context.md134135Site type: {inferred type}136Found: {N} funnels · {N} key pages · {N} defined events · {N} named elements137138Top 3 issues (StoryAI):1391. {title} — {severity}1402. {title} — {severity}1413. {title} — {severity}142143Notes: {any flags from implementation gaps or outliers, or "None — implementation looks well-structured."}144```145146**Example:**147```148Org discovery complete — Cargo Rentals149Saved to: ~/claude/accounts/cargo-rentals-fullstory-context.md150151Site type: Peer-to-peer car rental marketplace152Found: 15 funnels · 23 key pages · 34 defined events · 26 named elements153154Top 3 issues (StoryAI):1551. Script errors on checkout — 133 users (INVESTIGATING)1562. Dead clicks on "Add to Cart" button — 41 users (TICKET_OPENED)1573. "No cars found" modal after city search — 31 users (TICKET_OPENED)158159Notes: Duplicate Revenue Event defined — verify KSNijoJTTEpe is the active one before building funnels. No custom user variables found.160```