frontmatter · SKILL.md+
name: analytics-review
description: >
Run a weekly retro on real numbers: pull the period's posts and their actual metrics
from connected channels, say honestly what worked and what didn't, and turn it into
three concrete content moves for next week. Covers LinkedIn, X (Twitter), Instagram,
and Facebook today, with Mastodon, Threads, Bluesky, TikTok, and YouTube in platform
review — each platform reports different metrics, and gaps are shown as gaps.
Use when the user says "review my week", "what worked this week", "analytics retro",
or asks "how did my posts do". Requires the Inklate CLI (npm i -g inklate) or the Inklate MCP connection. Reads
social-context.md when present so recommendations tie back to the user's pillars and
goals rather than generic growth advice.
license: MIT
metadata:
version: 0.1.1
topics:
- analytics
- planning
examplePrompt: "Review last week's posts and tell me what to double down on"
pairsWith:
- social-audit
- social-calendar
mcpTools:
- posts_metrics
- channels_metrics
- channels_growth
- posts_list
cliCommands:
- posts metrics
- channels metrics
- channels growth
- posts listReview the period's real performance and leave the user with an honest read and three specific moves for next week.
Transports
- CLI (preferred):
inklate(npm i -g inklate) — structured YAML on stdout (--jsonfor JSON), progress on stderr, and typed exit codes:3no credentials,4a deliberate refusal with its machine-readable payload on stdout,6the resource changed underneath you,7rate limited but safe to re-run later. Pass--no-inputwhen running unattended so a missing flag fails loudly instead of prompting, and--yesto carry an approval the user has already given in chat. - MCP (fallback): the Inklate MCP tools when the CLI is not installed.
Steps below name the MCP operation with the CLI form in parentheses; the fields are the same on both.
Connection check
- Run
inklate auth check(MCP:organizations_list) first. - On exit 3 (no credentials): interactively run
inklate auth login; headless, the key comes fromINKLATE_API_KEY=inklate_…in the environment orinklate auth set --token inklate_…. If neither transport is available at all, tell the user to install withnpm i -g inklate(or connect athttps://inklate.com/skills/connect?ref=skills-analytics-review) and STOP — a retro on invented numbers is worse than no retro. - If multiple organizations exist, ask which one to review (CLI:
--org <slug>).
Context
Read social-context.md (project root, then .agents/social-context.md) if present. ## Pillars lets you group performance by theme, and ## Goals decides which metric matters most — reach for awareness, replies and profile visits for leads. Proceed without it if absent, but note that recommendations will be metric-generic rather than goal-anchored.
Workflow
- Establish the period: default to the last 7 full days; honor whatever range the user names. State the exact dates you are reviewing.
- Call
posts_list(CLI:inklate posts list --status published) for the period. If nothing was published, say so and offer to review the prior period instead — do not pad the retro with older posts unlabeled. - For each published post, call
posts_metrics(CLI:inklate posts metrics <id>). Collect what each platform actually returns: impressions, engagement, clicks, and platform-specific extras. - Call
channels_metrics(CLI:inklate channels metrics <id> --from … --to …) for each channel over the period for account-level context — aggregated per-day engagement across the channel's published posts — so post performance is read against its baseline. Follower movement is a separate call; see step 9. - Honesty rule for gaps: platforms report different metric sets, and some metrics arrive late or not at all. A missing metric is a dash, never a zero — a zero is a claim, a dash is an absence. Say once which metrics a platform doesn't provide.
- Build the metrics table (see Receipt) and read it before interpreting:
- Best and worst post by the goal metric, per channel.
- Per-pillar patterns when social-context.md names pillars — which theme carried the week.
- Format patterns: did threads, single posts, or media posts outperform on each platform?
- Timing: anything notable about which days or slots performed, stated cautiously at weekly sample sizes.
- What worked / what didn't. Two short lists, each item citing its number ("the contrarian take drew 4x your median impressions"). Attribute honestly: if the sample is 3 posts, say the pattern is weak. Never invent causality the data can't support.
- Three moves for next week. Exactly three, each concrete enough to act on without discussion — a topic, a format, and a cadence or channel adjustment, each tied to a pillar (when known) and to the evidence from step 7. "Post more consistently" fails; "the two build-in-public posts beat everything else — make Tuesday a fixed build-in-public slot on LinkedIn" passes.
- For follower movement, call
channels_growth(CLI:inklate channels growth <id> --from … --to …) per channel — it returns the followers trajectory and per-day page flows, which is the real answer to "am I growing", wherechannels_metricsanswers "did my content land". Report the period delta per channel alongside the post table, and keep the two apart: a good engagement week with flat followers is a different story from the reverse. - Offer the bridge: hand the three moves to the
social-calendarskill to plan next week, or tocalendar-scheduleif drafts already exist.
Quality bar
- Every number in the retro comes from
posts_metrics,channels_metrics, orchannels_growththis session — no remembered, estimated, or extrapolated figures. - Missing metrics render as "—" with a footnote, never as 0; late-arriving metrics (recent posts) are marked "too early".
- Claims are proportional to sample size; with under five posts, findings are labeled directional.
- Exactly three moves — not two, not five — each specific enough that a stranger could execute it.
- When social-context.md exists, each move names the pillar it serves; when it doesn't, say the retro would sharpen with one and suggest the
social-contextskill. - This skill reads and recommends; it publishes and schedules nothing.
- Comparisons across platforms are framed carefully: an impression on X and an impression on LinkedIn are not the same unit, so cross-platform tables never sum them into one total.
Receipt
End with the period's metrics table and the three moves:
| Post | Channel | Published | Impressions | Engagement | Clicks | Notes |
|---|---|---|---|---|---|---|
| "Why we killed our roadmap" | Jul 13 | 8,420 | 312 | 47 | best of week | |
| Thread: roadmap lessons | X | Jul 13 | 21,050 | 460 | — | X doesn't report clicks here |
| Carousel: 5 lessons | Jul 15 | 1,180 | 96 | — | too early for full metrics |
Below the table: channel-level context (follower delta and reach per channel for the period), the what-worked and what-didn't lists with their numbers, and then the three moves for next week, numbered, each with its pillar and its evidence.
Close with the offer to turn the moves into next week's plan via social-calendar, or into booked posts via calendar-schedule if drafts exist.