lytics/agent-skills

audience-snapshot

Analyze what an audience looks like -- demographic breakdowns, top field values, coverage rates, and distributions. Use when the user wants to understand audience composition, view segment demographics, or analyze field coverage for a segment.

First seen Apr 2, 2026

Installation

$ npx skills add lytics/agent-skills --skill audience-snapshot

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from lytics/agent-skills · top by installs.

npx skills add lytics/agent-skills

Browse all from lytics/agent-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 4
License LICENSE
Default branch main
Open issues 1
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

More metadata
arguments
segment name or ID, optionally specific fields to analyze

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 6,760 B
  • docs SUMMARY.md 268 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 50 installs

SKILL.md

Audience Snapshot

Purpose

Provides an analytics view of an audience segment -- what do the people in this segment look like? Shows field value distributions, coverage rates, numeric statistics, and highlights notable patterns. This is a read-only operation.

Environment

Requires authenticated API access. See ../references/auth.md for credential resolution.

Inputs

  • Segment name or ID (required)
  • Specific fields to analyze (optional -- defaults to all fields)
  • Table (optional -- defaults to user)

API Endpoints

Segment Field Info by ID

Important: This endpoint requires the segment's id hash (e.g., a1b2c3d4e5f6), NOT the slug name. Using a slug will return HTTP 500. Always resolve the segment ID first via GET /v2/segment.

curl -s "${LYTICS_API_URL:-https://api.lytics.io}/api/segment/${SEGMENT_ID}/fieldinfo?limit=20&table=user" \
  -H "Authorization: ${LYTICS_API_TOKEN}"

Segment Field Info for Multiple Segments

curl -s "${LYTICS_API_URL:-https://api.lytics.io}/api/segment/fieldinfo?ids=${ID1},${ID2}&limit=20&table=user" \
  -H "Authorization: ${LYTICS_API_TOKEN}"

Query Parameters

Parameter Default Max Description
fields all - Comma-delimited list of specific fields to return
limit 20 1000 Number of term values per field
table user - Entity table name
cached true - Use cached results; set false for fresh data

Response Shape

Response uses the standard API envelope. The fieldinfo data is inside data.segments:

{
  "data": {
    "segments": [
      {
        "id": "segment_id",
        "fields": [
          {
            "field": "country",
            "terms_counts": {"US": 5000, "CA": 2000, "UK": 1500},
            "more_terms": false,
            "ents_present": 8500,
            "ents_absent": 1500,
            "approx_cardinality": 45,
            "last_updated": "2026-03-18T12:00:00Z"
          },
          {
            "field": "visit_count",
            "terms_counts": null,
            "ents_present": 9800,
            "ents_absent": 200,
            "approx_cardinality": 350,
            "stats": {"mean": 12.5, "sd": 8.3, "min": 1.0, "max": 150.0, "n": 9800},
            "histograms": [{"data": {"0-10": 4500, "10-20": 3200, "20-50": 1800, "50+": 300}}],
            "last_updated": "2026-03-18T12:00:00Z"
          }
        ]
      }
    ]
  },
  "message": "success",
  "status": 200
}

Parse with jq '.data.segments[].fields[]' to iterate over fields.

Per-field response keys:

Key Type Description
field string Field name
terms_counts object Top values with counts (categorical fields)
more_terms bool Whether more values exist beyond the limit
ents_present int Profiles with this field populated
ents_absent int Profiles missing this field
approx_cardinality int Estimated distinct value count
stats object or null Numeric fields only: mean, sd, min, max, n
histograms array or null Numeric/date fields: bucketed distributions
last_updated timestamp When field info was last computed

Behavior

Step 1: Resolve Segment ID

The fieldinfo endpoint requires the segment's id hash -- slug names will return HTTP 500. Always resolve first:

curl -s "${LYTICS_API_URL:-https://api.lytics.io}/v2/segment?table=user&sizes=true" \
  -H "Authorization: ${LYTICS_API_TOKEN}"

Find the matching segment by name or slug_name, extract its id field (hex hash) and current size.

Step 2: Fetch Field Info

curl -s "${LYTICS_API_URL:-https://api.lytics.io}/api/segment/${SEGMENT_ID}/fieldinfo?limit=20&table=user" \
  -H "Authorization: ${LYTICS_API_TOKEN}"

If the user specified particular fields, add &fields=field1,field2,field3. For deeper analysis on specific fields, increase the limit: &limit=100.

Step 3: Present Audience Snapshot

Organize the results into a readable summary:

## Audience Snapshot: High Value Customers
**Size**: 10,000 profiles

### Top Demographics
**country** (98% coverage, 45 distinct values)
  US: 5,000 (50%)
  CA: 2,000 (20%)
  UK: 1,500 (15%)
  DE: 800 (8%)
  Other: 700 (7%)

**city** (85% coverage, 1,200 distinct values)
  New York: 800 (8%)
  Toronto: 600 (6%)
  London: 500 (5%)
  ...

### Engagement Metrics
**visit_count** (98% coverage)
  Mean: 12.5 | Std Dev: 8.3
  Min: 1 | Max: 150
  Distribution: 0-10: 46%, 10-20: 33%, 20-50: 18%, 50+: 3%

### Field Coverage
| Field | Coverage | Distinct Values |
|-------|----------|----------------|
| email | 92% | 9,800 |
| country | 98% | 45 |
| city | 85% | 1,200 |
| visit_count | 98% | 350 |
| products_purchased | 67% | 890 |

Step 4: Highlight Notable Patterns

Call out interesting findings:

  • Dominant values: "87% of this audience is from the US"
  • High/low coverage: "Only 34% have a phone number"
  • Numeric outliers: "Visit count ranges from 1 to 150, but 79% have fewer than 20"
  • Comparisons: If analyzing multiple segments, highlight key differences

Step 5: Offer Follow-Up Actions

After presenting the snapshot, suggest next steps:

  • "Would you like to drill into a specific field with more detail?"
  • "Want to compare this audience against another segment?"
  • "Should I narrow this audience further based on what we see?"

Comparing Segments

When comparing two or more segments, fetch fieldinfo for each and present side-by-side:

curl -s "${LYTICS_API_URL:-https://api.lytics.io}/api/segment/fieldinfo?ids=${ID1},${ID2}&limit=20" \
  -H "Authorization: ${LYTICS_API_TOKEN}"

Present differences:

### Comparison: High Value vs All Users
| Field | High Value | All Users |
|-------|-----------|-----------|
| Avg visit_count | 12.5 | 4.2 |
| US % | 50% | 35% |
| Email coverage | 92% | 68% |

Error Handling

  • Segment not found: List available segments, suggest checking the name
  • No field info available: Segment may be too new or empty -- check segment size first
  • Stale data: If last_updated is old, suggest refetching with cached=false

Dependencies

  • Uses: ../references/auth.md, ../references/api-client.md
  • Related: segment-manager skill for segment lookup, audience-builder skill for creating segments