For the complete documentation index, see llms.txt. This page is also available as Markdown.

luciq-readout

Produce a shareable, audience-tailored readout of a Luciq app's health and quality for a chosen persona — C-suite, VP, PM, EM, or QA — with every figure cited to its Luciq MCP source.

Produce a shareable, audience-tailored readout of a Luciq app's health and quality. The mechanism is rendering the same data at the right altitude: pull headline aggregates from app_insights (stability rates and the APM performance section), slice detail across crashes, hangs, bugs, reviews, and NPS/CSAT surveys via the Luciq MCP, drill into per-occurrence stacktraces and diagnostics for the EM tier, then compose a report tuned to one persona's question.

The skill exists to prevent the failure mode of generic reporting: a dashboard dump nobody reads, a crash-free percentage quoted from a section that returned an error, a stacktrace pasted into a C-suite summary. Every number is cited to the MCP tool and the parameters that produced it. If a query returns nothing or a section comes back as an error, that fact is surfaced — never filled in.

Use this skill when

  • The user asks for an exec or leadership summary, a release readout, a stability or quality report.

  • The user asks for a "how is the app doing this week vs last" rollup or a period-over-period comparison.

  • The user asks to compare version X to version Y for a specific audience.

  • The user needs a C-suite, VP, PM, EM, or QA-tier rendering of Luciq app health data.

What the agent does

luciq-readout turns the agent into an audience-calibrated reporting tool:

  • Persona altitude. Reads the requested persona (C-suite, VP, PM, EM, or QA) and sets the lead metric, drill-down depth, and omit-list accordingly. If unspecified, asks — the wrong altitude is the most common way a readout fails.

  • MCP tool sequencing. Calls app_insights for the headline stability and APM aggregate, list_crashes and crash_patterns for issue distribution, list_app_hangs for hang volume, list_bugs for user-reported issues, list_reviews for store sentiment, and list_surveys plus survey_details for NPS/CSAT data.

  • EM deep-dive chain. For EM-tier readouts, drives the per-occurrence chain: crash_detailslist_occurrences_tokensget_occurrence_details (one session's device context) → crash_diagnostics (aggregated patterns and distributions).

  • Comparison integrity. Enforces matched time windows, rates over raw counts, and low-sample labeling before stating any delta.

  • Evidence citation. Every number in the rendered readout carries a citation naming the Luciq MCP tool and the parameters that produced it.

  • Dual rendering. Produces both an HTML artifact (executive-ready, shareable) and Markdown (inline preview).

Install

The fastest path is the plugin install. Add the marketplace and install:

Works in Claude Code and Cursor. The plugin install also wires up the Luciq MCP server in one step (this skill needs it).

After install, the skill is available as /luciq-skills:luciq-readout.

For other agents, install via npm:

Or copy SKILL.md from the public repo to ~/.claude/skills/luciq-readout/SKILL.md (user-global) or .claude/skills/luciq-readout/SKILL.md (project-local). The full SKILL.md is reproduced in the expandable below.

📋 Click to expand the full SKILL.md

Prerequisites

  • The Luciq MCP server is configured and authenticated. This is a hard dependency — the entire readout is grounded in what the Luciq MCP exposes. Without it the skill will not run.

  • A resolved app slug and mode. The skill calls list_applications first and confirms with the user which app and mode (default production).

  • A named persona. The skill asks if unspecified — the wrong altitude produces a readout that is worse than no readout.

If the MCP server isn't connected, the skill stops and points the user to Setup by IDE. Do not assemble a readout from memory or from a prior session's numbers — a readout with stale or invented figures is the exact failure this skill exists to prevent.

How the agent builds a readout

The skill follows a seven-step checklist. The agent tracks every step and asks rather than guesses on persona or comparison frame.

Step 1. Resolve the app and mode

The agent calls list_applications to get the slug, filtering by platform if the user named a stack. It confirms the mode with the user (default: production). An app can have several modes — production, beta, staging, alpha, qa, development — each is a separate dataset.

Step 2. Confirm the audience and the angle

Before pulling any data, the agent resolves three things:

  • Persona. C-suite, VP (Eng or Product), PM, EM, or QA. This sets the lead metric, the drill-down depth, and the omit-list. The per-persona spec is in the persona-playbooks reference file bundled with the skill.

  • Comparison frame. Version-vs-version, period-over-period, or a single snapshot. This determines how many app_insights calls to make and which deltas can be honestly stated.

  • Segment cut (optional). A device tier, OS, screen (current_views), feature flag, owning team, or review country. The agent picks the one cut that answers the persona's question.

If any of these is unspecified, the agent asks. It does not guess the audience.

Step 3. Pull headline aggregates

app_insights is the headline source. It returns four independent sections: monitoring (crash-free sessions, ANR, OOM, app hangs), crashes, bugs, and apm (networks, screen loads, cold and hot launches, flows). The agent calls it once per version or window in scope.

Each section is independent and may carry an error object instead of data. When a section errors, the agent records it as unavailable — it does not reconstruct it from another tool. A count from list_crashes is a volume, not the monitoring crash-free rate. An empty section (has_occurrences: false) means no data captured for that window, not a healthy zero.

The apm section is a real readout dimension for VP, PM, and EM tiers: network apdex and failure counts, screen-load p95, cold and hot launch apdex, and flow drop-off counts. This aggregate covers the full performance dimension for a readout. Per-span APM tools (apm_list_groups, apm_group_view, apm_occurrence) exist for deeper drills but are out of scope for most personas.

Step 4. Slice the detail

The headline numbers tell you how big; the list and pattern tools tell you where and what.

Tool
What it adds

list_crashes

Top issues by users affected, volume, or recency — sliced by version, OS, device, screen, feature flag, owning team, type, or status.

crash_patterns

Distribution of one crash group across versions, OSes, devices, screens, or experiments — including a per-bucket adoption signal on app_versions.

list_app_hangs

Hang and ANR volume and worst offenders, same filtering surface as crashes.

list_bugs

User-reported bug volume by priority, status, and version. (list_bugs is the real source; the bugs section of app_insights frequently errors.)

list_reviews

App Store and Play Store rating trend and verbatim review bodies — the external quality proxy.

list_surveys + survey_details

NPS or CSAT score with promoter/passive/detractor splits, and verbatim "how can we do better" responses — the in-app voice-of-customer signal.

The adoption nuance. app_insights does not return adoption or rollout percentage. crash_patterns does return an adoption value per bucket (confirmed on app_versions) plus total_sessions_count for the group. The agent uses those where the tool gives them, cites them to crash_patterns, and does not invent an adoption figure for a version where only app_insights data is available.

Step 4b. EM tier only — the per-occurrence chain

For an EM readout, the agent descends from the crash group to a single occurrence and the aggregated diagnostics. No other persona goes this far.

  1. list_crashes sorted by affected_users_counter — pick the top group, note its number.

  2. crash_details — the synchronous stacktrace. Application frames, especially the one flagged is_grouping_frame, are the fix target.

  3. list_occurrences_tokens — the ULID tokens for individual occurrences.

  4. get_occurrence_details — one session's device, OS, app version, memory, screen at crash time, and foreground/background state.

  5. crash_diagnostics — aggregated patterns and distributions across occurrences: screen-flow patterns, device and OS distributions, memory and battery histograms. Async — the agent re-calls while status is generating.

This chain is the EM tier's evidence. None of it belongs in a C-suite, VP, PM, or QA readout.

Step 5. Apply the comparison rules

Before stating any delta, the agent applies these rules to keep comparisons honest:

  • Match the windows. Use the same date_ms length for both sides. Unequal windows mislead on both rates and raw counts.

  • Prefer rates over raw where the tool gives them. The monitoring rates compare cleanly across versions. Raw list counts depend on traffic volume.

  • Label confidence by sample. Mark a comparison low-confidence when a version's totals are small. crash_patterns session counts are the honest signal for how thin a version's exposure is.

  • Separate new from regressed from trending. New-in-version, returned-after-fix, and accelerating-in-rate are three different stories that drive three different actions.

  • Segment before concluding. A flat version-level delta can hide a device- or OS-specific regression. Pivot with crash_patterns or the filter surface before declaring a release healthy.

Step 6. Compose for the persona

The agent leads with the persona's headline metric, includes only their drill-down, and honors their omit-list.

Persona
Leads on
Drill-down included
Omit

C-suite (CEO / CPO / CTO)

One stability headline, direction vs last period, App Store rating trend, NPS score, one-line top risk

None inline

Stacktraces, device / OS matrices, raw counts, APM apdex detail, tool names in the prose

VP Eng / VP Product

Crash-free sessions and users across versions, ANR / OOM / hang rates, key APM rates, regression flags by version, top issues with owning team, NPS trend

Top-issue list (titles, not traces), an APM panel

Full traces, device long tail

Product Manager

Crash-free for the owned flow, flow drop-off and slow-screen APM for those screens, top issues on key flows, review themes, NPS verbatim

Issue list plus representative review and survey quotes

Symbolicated traces, infra detail

Engineering Manager

New and trending issues in their components, crash and ANR rates with deltas, top crashes by frequency and users, device / OS breakdown

Full stacktraces, occurrence detail (the step 4b chain)

Exec and revenue narrative

QA / Release

Crash-free and ANR / OOM / hang vs the team's ship thresholds, APM rates vs thresholds, new-in-version issues, regression count vs baseline

Issue list plus repro context

Long-term business trends

The skill reports the data. It does not emit the ship, hold, or rollback verdict — that decision stays with the release owner.

Step 7. Render HTML + Markdown

The agent renders the readout in both HTML (executive-ready, shareable) and Markdown (inline preview). Each section that carries a number carries a citation naming the tool and the parameters that produced it, for example [from: luciq:app_insights version=3.1.4 mode=production]. The HTML uses a compact KPI band, generous whitespace, and a visible source footer per figure or per section.

Honest about what's out of scope

The skill is grounded in what the Luciq MCP exposes today. It deliberately does not:

  • Mutate any data. A readout is read-only. update_bug and all write tools are off-limits.

  • Emit a ship, hold, or rollback verdict. The skill lays the thresholds and numbers side by side; the release owner decides.

  • Root-cause a single issue. Per-occurrence depth (step 4b) shows an EM the evidence; it doesn't author a fix. Deep single-issue debugging is luciq-debug's job.

  • Compute MTTR, time-to-resolve, or a whole-app adoption percentage. The MCP doesn't expose them at the app level. Per-crash-group session counts from crash_patterns are the one real adoption signal — the skill uses them and cites them.

  • Reconstruct an unavailable app_insights section. If a section returned an error or is present-but-empty, the skill reports it as unavailable. Same for surveys: if none is published or has no responses, there is no NPS signal.

When new MCP tools land — app-level adoption, release-comparison endpoints, deeper APM aggregates — this skill grows with them.

Last updated