From nanopm
Answers product questions via PostHog/Amplitude analytics — trends, funnels, retention, paths. Saves results to DATA.md for downstream PM challenges and PRDs.
How this skill is triggered — by the user, by Claude, or both
Slash command
/nanopm:pm-dataThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
<!-- portability-v2 -->
Multi-host portability rules. When invoking
AskUserQuestion:
- The
headerfield MUST be a short noun phrase (≤ 12 characters). Mistral Vibe rejects longer headers withstring_too_long. Pick from:Start,Target,Scope,Audience,Methodology,Feature,Question.- The
optionslist MUST have at least 2 items. Vibe rejects empty/single-option calls. For free-text input, always provide ≥ 2 framing options (e.g.Yes, here's the input/Skip) — never callask_user_questionwithoptions: [].
source ~/.nanopm/lib/nanopm.sh 2>/dev/null || \
source .nanopm/lib/nanopm.sh 2>/dev/null || \
{ echo "ERROR: nanopm not installed. Run: curl -fsSL https://raw.githubusercontent.com/nmrtn/nanopm/main/setup | bash"; exit 1; }
nanopm_preamble
_DATA_FILE=".nanopm/DATA.md"
Run /pm-data when:
One question per run. A vague question ("how is the product doing?") produces useless output. A specific question ("what is the Day 7 retention for users who completed onboarding vs those who didn't?") produces an insight.
source ~/.nanopm/lib/nanopm.sh 2>/dev/null || source .nanopm/lib/nanopm.sh 2>/dev/null || true
nanopm_context_read pm-data
nanopm_context_all
Check for prior DATA.md — if it exists, show a one-line summary of the last analysis and its date. Don't repeat the same analysis unless explicitly requested.
[ -f ".nanopm/DATA.md" ] && echo "DATA_EXISTS" || echo "DATA_MISSING"
_CHALLENGES=".nanopm/CHALLENGES.md"; [ -f "$_CHALLENGES" ] || _CHALLENGES=".nanopm/AUDIT.md" # legacy pre-rename name
[ -f "$_CHALLENGES" ] && echo "CHALLENGES_EXISTS" || echo "CHALLENGES_MISSING"
[ -f ".nanopm/DISCOVERY.md" ] && echo "DISCOVERY_EXISTS" || echo "DISCOVERY_MISSING"
[ -f ".nanopm/PRODUCT.md" ] && echo "PRODUCT_EXISTS" || echo "PRODUCT_MISSING"
If CHALLENGES_EXISTS: scan for "biggest gap" or "question you're avoiding" — suggest turning those into data questions if the user hasn't specified one.
If PRODUCT_EXISTS: read .nanopm/PRODUCT.md. Use it to ground which events and features the metrics refer to — map the question's funnel steps and key events onto the real product surfaces and core workflow before querying, so the analysis measures the right behavior. This read is advisory — if it's absent, proceed without it. If PRODUCT.md's header shows Completeness: draft, surface a one-line non-blocking warning: "Note: analyzing against a draft product concept."
Ask via AskUserQuestion:
"What specific product question do you want to answer with data?
Good examples:
Bad examples (too vague):
From the question, identify:
source ~/.nanopm/lib/nanopm.sh 2>/dev/null || source .nanopm/lib/nanopm.sh 2>/dev/null || true
_TIER_POSTHOG=$(nanopm_has_connector posthog)
_TIER_AMPLITUDE=$(nanopm_has_connector amplitude)
echo "POSTHOG: $_TIER_POSTHOG | AMPLITUDE: $_TIER_AMPLITUDE"
Priority: PostHog MCP first (most capable) → PostHog API → Amplitude API → manual.
If PostHog MCP available: fetch available event definitions first to use correct event names:
mcp__claude_ai_PostHog__event-definitions-list()
mcp__claude_ai_PostHog__projects-get()
If neither PostHog nor Amplitude available: go to Tier 4 (manual paste).
Run the appropriate queries based on the analysis type. Show progress ("Fetching funnel data...") but do not show raw API responses to the user — only the interpreted output.
For funnel questions:
For retention questions:
For trend questions:
For path questions:
For cohort comparison:
For feature impact:
Do not just dump numbers. Interpret every metric:
For each data point:
The so-what rule: Every number must be followed by "which means..." or "which suggests...". A number without interpretation is noise.
Confidence level for each finding:
Triangulation: If FEEDBACK.md exists, check for qualitative signal that confirms or contradicts the quantitative findings. A quantitative drop-off confirmed by user interview quotes is a strong signal. A number with no qualitative backing is a hypothesis, not a finding.
Write to .nanopm/DATA.md (append if file exists — preserve prior analyses):
---
## Data Analysis — {date}
**Question:** {the specific question answered}
**Source:** {PostHog | Amplitude | manual}
**Time range:** {date range}
### Findings
**{Finding 1 title}**
{Number}: {what it means} — {so what / implication}
Confidence: {🟢 High | 🟡 Medium | 🔴 Low} — {reason}
**{Finding 2 title}**
...
### Key insight
{One paragraph. The most important thing the data reveals. Not a list — a narrative.
What is the data actually saying about user behavior? What does it suggest you should do?}
### Biggest unknown
{The most important question the data raises but cannot answer alone.
Usually answered by qualitative research — flag it for /pm-interview if relevant.}
### Recommended next
{/pm-challenge-me to fold this into the product assessment |
/pm-interview to investigate the biggest unknown qualitatively |
/pm-prd if the problem is validated and sized}
---
source ~/.nanopm/lib/nanopm.sh 2>/dev/null || source .nanopm/lib/nanopm.sh 2>/dev/null || true
nanopm_context_append "{\"skill\":\"pm-data\",\"outputs\":{\"question\":\"$(head -10 .nanopm/DATA.md | grep 'Question' | cut -d: -f2- | xargs | tr '\"' \"'\" | head -c 100)\",\"source\":\"posthog\",\"next\":\"pm-challenge-me\"}}"
Tell the user:
If the data reveals a clear problem with quantified size: "This is now ready to feed into /pm-challenge-me — the quantitative problem size strengthens the challenge session's strategic recommendations."
STATUS: DONE
npx claudepluginhub nmrtn/nanopm --plugin nanopmReviews product metrics — trends, anomalies, root causes, and action recommendations. Supports North Star decomposition (L1/L2), retention diagnostics, funnel analysis, A/B experiment reading, and OKR alignment checks. Triggered via /pm-metrics.
Runs a structured product data analysis covering metric deep-dives, funnel analysis, or cohort studies. Answers what changed, why, impact, and recommended action.