数据分析

growth-engineer

把移动端产品信号整合为可落地的待办草案,覆盖分析、计费、崩溃与商店数据。

它能做什么

将产品分析、崩溃监控、计费、用户反馈、应用商店、SEO 与代码仓库上下文汇聚成提案草案,可直接转入对话、提交 GitHub issue,或生成草稿 PR。由非 AI 的 CLI 负责确定性的数据采集、排程与投递,宿主 agent 保持对话与实现层。面向 React Native、Expo 或原生 iOS/Android 移动端应用,同一份 skill 文件同时供 OpenClaw 和 Hermes 安装使用。

什么时候用它

  • 把产品分析与崩溃信号转化为可执行待办
  • 在 VPS 或 Mac mini 上用 cron 跑周期性的增长复盘
  • 将提案投递到 GitHub issue 或草稿 PR
  • 自动发现 Sentry / GlitchTip 项目,免去手工维护清单

技能文档

Growth Engineer

Canonical Skill Identity

growth-engineer is the single canonical Growth Engineer for agent-driven product and growth work. The old ai-product-manager / product-manager-skill package is deprecated and should be used only as a migration alias for existing installs. Do not recommend installing or loading both skills.

Use this same skill for OpenClaw and Hermes. Do not create a duplicate Hermes-specific copy of the instructions, scripts, references, or runtime artifacts. If an agent-specific compatibility note is needed, add a small section here and keep the deterministic runtime shared.

Agent Compatibility

  • OpenClaw: install through ClawHub with clawhub install growth-engineer or npx clawhub install growth-engineer.
  • Hermes: install the same public skill repository with hermes skills install Wotaso/growth-engineer-skill.
  • Generic SKILL.md clients: install or mount the same skills/openclaw-growth-engineer folder.
  • All agents should use the same bundled scripts/, references/, and data/ files.
  • macOS hosts, including Mac mini machines, are supported as normal local hosts. Use the same terminal wizard from the app workspace. For recurring unattended runs on macOS, use OpenClaw heartbeats, openclaw run --loop, or a host scheduler such as launchd; keep secrets in the host terminal/env/secret file, not in chat.

Local AnalyticsCLI Operator Notes

These notes apply when this skill is used from the local Wotaso/analyticscli-monorepo workspace.

  • Coolify resources, projects, or deployments named prodinfos are AnalyticsCLI production infrastructure, not a separate customer app. Treat failed prodinfos deployments as AnalyticsCLI production deployment-health signals.
  • For this workspace, Coolify monitoring is configured through openclaw.config.json with https://coolify.wotaso.com; read access requires COOLIFY_API_TOKEN in the local host environment or Growth Engineer secret store.
  • Do not send OpenClaw/Hermes GitHub PR or branch links for these deployment failures. Tell them to update from ClawHub/npm after a published fix, or handle local production remediation directly from the repo and Coolify logs.

Post-Install Reply Contract

After installing this skill from ClawHub, OpenClaw or Hermes must not stop at "installed and ready" when setup is not complete. The next reply should be short and should immediately route the user to connector setup.

Use this minimal reply shape:

  1. Say the skill is installed.
  2. Say one short sentence: "Next, run the local wizard so you can choose connectors, intervals, output type, and paste secrets only in the host terminal."
  3. Provide exactly one copy/paste command block for the VPS, Mac mini, or host shell.
  4. Do not ask for API keys, private keys, or tokens in chat. Do not list provider docs unless the user asks.

Use this command block for OpenClaw, Hermes, VPS, Linux, and macOS hosts:

npx -y @analyticscli/growth-engineer wizard --connectors

Run this from the OpenClaw/Hermes workspace. Connector setup should route through the npm wizard so hosts get the latest wizard fixes without manual bootstrap commands.

Post-Setup Reply Contract

After the VPS/host wizard finishes successfully, OpenClaw or Hermes should not answer with a generic agent-status paragraph. Reply in this minimal shape:

  1. Say that Growth Engineer setup completed.
  2. List only the configured connector groups and output destinations.
  3. Say that recurring health checks run every 6 hours by default and growth runs follow the configured daily/weekly/monthly cadence.
  4. Provide exactly one next command for a manual verification run:
npx -y @analyticscli/growth-engineer run --config ~/data/openclaw-growth-engineer/config.json

Do not ask for project/repo scoping after successful setup. Do not claim a connector is broken unless growth-engineer status --config ... or the wizard result says it is blocked/partial.

Hermes Startup Override

Hermes must treat user messages such as "ja los", "starte den Growth Engineer", "Connectoren einrichten", "setup", "installieren und starten", or close variants as a wizard setup/start request.

Do not satisfy those messages by only installing analyticscli, running analyticscli login, or telling the user to run analyticscli login manually. The Growth Engineer setup path is the bundled local terminal wizard because it handles connector selection, secret storage, project/app discovery, cadence, and smoke tests.

When Hermes is running from chat/Discord or any non-interactive agent terminal, do not start the interactive wizard process yourself. Reply with one complete copy/paste command and tell the user to run it in the VPS or host shell where Hermes/OpenClaw should be configured. Secrets must be pasted into that shell only, not into chat.

Use this exact command block in the reply after skill installation:

npx -y @analyticscli/growth-engineer wizard --connectors

Then add exactly one short instruction sentence: "Run this in your VPS/host shell and paste secrets only there."

If AnalyticsCLI auth is missing or invalid, the next action is still the wizard command above. The wizard should ask for the readonly token in the local terminal and persist it as ANALYTICSCLI_ACCESS_TOKEN; chat should not ask the user to paste tokens or detour into a separate analyticscli login flow.

Use This Skill When

  • you want an agent to turn product signals into execution-ready backlog work
  • you need one workflow across AnalyticsCLI product analytics/feedback, RevenueCat or Paddle monetization, SEO/GSC/Bing Webmaster/DataForSEO acquisition, Sentry-compatible crash monitoring including GlitchTip, ASC/App Store Connect, app reviews, and repo context
  • you want the deterministic work to live in a standalone CLI and the host agent to stay the AI/chat layer
  • you want proposal delivery to be configurable between agent chat handoff, GitHub issues, and draft pull requests

Product Focus

  • Primary focus: mobile apps
  • Works well with: React Native, Expo, native iOS/Android, mobile growth loops, paywalls, store reviews, crashes, release readiness
  • Still valid for SaaS/web products when your connectors export the same summary JSON shape

Private Repo / Minimal Input Rule

Treat this as a private-repo-first skill. The setup and connector wizards should ask the user for as little information as possible.

  • Do not require project.githubRepo during connector setup. Defer repo selection until GitHub delivery or code mapping actually needs it.
  • When the agent has permission to list repos, projects, apps, or Sentry/GlitchTip projects, discover them automatically and persist the best available mapping.
  • Sentry/GlitchTip project lists are not required input. If org + token are configured, the exporter should discover visible projects at runtime and let the agent choose the relevant project from app/release context.
  • If there are multiple plausible targets, use app/release/config context first; ask the user only when the choice is genuinely ambiguous.
  • Keep GitHub issue/PR creation disabled unless explicitly requested or clearly configured. Missing repo context should be a deferred state, not a setup blocker.

Preferred Runtime

Prefer the standalone growth-engineer CLI as the user-facing runtime surface when it is available. The old OpenClaw workspace CLI package is retired; do not direct users or automation to it.

  • Wizard path: growth-engineer wizard --connectors
  • Setup path: growth-engineer setup --config openclaw.config.json
  • Primary path: growth-engineer start --config openclaw.config.json
  • Local monorepo path: pnpm --filter @analyticscli/growth-engineer dev start --repo-root
  • Copied-runtime scripts under scripts/openclaw-growth-*.mjs remain the compatibility path for agents that install this as a plain SKILL.md folder

The CLI is intentionally non-AI. The host agent should stay the only conversational/implementation layer. Use the CLI to gather signals, generate proposals, schedule checks, and send deliveries. If the user later asks the agent to implement a proposal, the agent should inspect the generated drafts and then use its own AI/runtime to do the work.

OpenClaw And Hermes Cron / Recurring Run Contract

OpenClaw Gateway cron is the preferred wake-up mechanism for reliable VPS installs. The Growth Engineer schedule in config.json only decides what is due after the runner is invoked; it does not wake the agent by itself unless OpenClaw cron, openclaw run --loop, or a host scheduler is running. Hermes Gateway cron is the matching wake-up mechanism for Hermes installs. Hermes jobs must use hermes cron create ... --skill growth-engineer --deliver local --workdir so the scheduled run loads this skill and the app workspace context.

  • Bootstrap/start must create or repair a non-empty workspace HEARTBEAT.md with an openclaw-growth-engineer-run fallback task.
  • Wizard/start must also configure or print an OpenClaw Gateway cron job (openclaw cron add ... --session main --system-event ... --wake now) when automation.openclawCron.enabled is true.
  • Wizard/start must also configure or print a Hermes cron job (hermes cron create ... --skill growth-engineer --deliver local --workdir ) when automation.hermesCron.enabled is true and Hermes is installed.
  • The cron/system-event prompt must invoke node scripts/openclaw-growth-runner.mjs --config --state /state.json. Do not let cron read config from one directory while the runner writes state/proof under the workspace default. The runner remains the source of truth for schedule.intervalMinutes, daily/weekly/monthly/quarterly/six-month/yearly cadences, connector health intervals, data-change skipping, and notification delivery.
  • If a user asks whether automatic checks are enabled, inspect the matching agent scheduler first (openclaw cron list, openclaw cron runs --id , openclaw tasks list, or hermes cron list / hermes cron status ), then inspect runner proof (/runtime/scheduler-proof.jsonl) and state (/state.json). Do not use Discord as the default coordination path.
  • Keep HEARTBEAT.md tiny and secret-free. It is a fallback/awareness checklist and should say to reply HEARTBEAT_OK when no connector alert, production crash, generated issue, or actionable growth finding exists.

Implementation PR rule:

  • If the user asks for a GitHub issue plus a pull request, or says "create a PR", "make the PR", "implement this", "fix the app", or close variants after a product/growth analysis, the agent must create an implementation PR with production app code changes in the target repository.
  • Do not satisfy that request with a proposal-only markdown PR. The CLI's proposal PR mode is only for explicit requests such as "make a proposal PR", "planning PR", "draft proposal", or scheduled proposal delivery.
  • A PR that only adds .openclaw/proposals/*.md, docs, or markdown planning files is not a valid implementation PR unless the user explicitly requested a proposal-only artifact.
  • For implementation PRs, the agent must inspect the app repo, create or reuse a branch, edit the relevant app files, run targeted checks where feasible, then open/update the PR. Use GitHub issue creation for tracking, but keep the PR focused on real app behavior.
  • If the implementation cannot be completed because repo write access, branch access, or local checkout is unavailable, say that directly and do not create a placeholder markdown PR.

openclaw setup should reuse the existing analyticscli setup flow instead of redefining skill installation locally. That means shared skills such as analyticscli-cli and analyticscli-ts-sdk come from the canonical AnalyticsCLI installer.

Customization Boundary

Treat this installed skill as vendor-managed and replaceable. Agents should almost never edit this skill in-place for user- or project-specific customization, because future skill updates may overwrite local changes. When the user wants custom behavior, create a separate companion skill or project-local customization skill instead, for example openclaw-growth-custom, and have that skill reference or layer on top of this one. Only modify this skill directly when the change is intended as an upstream reusable fix for the canonical skill repository.

Setup DX Rules

Setup should feel guided for a developer, not like a silent preflight dump.

  • Root-cause policy: when connector setup fails for a user, do not hand out VPS-specific workaround commands as the final answer. Fix the reusable Growth Engineer/CLI/wizard so every future installer gets the corrected flow, then publish/sync the skill and ask the running agent instance to refetch it.
  • Prefer auto-detection and direct fixes over asking the user to run generic commands.
  • In chat, explain only what the user needs for the next step. Put provider details, scopes, and secret prompts in the wizard unless the user asks.
  • Ask for the minimum missing value only; do not request issue/PR permissions unless artifact creation is enabled.
  • For blockers, return one short next action first. Add detailed status, permissions, or URLs only when the user asks or the wizard needs that value.
  • After each setup phase, summarize only the result and the next concrete action.
  • Keep secrets out of prompts, repo files, logs, and command arguments; prefer host-agent secret storage or environment injection.
  • Never ask the user to paste API keys, GitHub tokens, or App Store Connect .p8 private-key contents into Discord, OpenClaw chat, Hermes chat, GitHub issues, PRs, or any shared transcript. Chat is not an appropriate secret transport.
  • For secrets, give a secure host-terminal path: set env vars in the runtime shell, an agent secret store, a password manager injection flow, or the wizard-managed ~/.config/openclaw-growth/secrets.env with chmod 600. Growth commands must load that env file automatically. For ASC .p8, prefer asking for the local file path to Apple's original downloaded file name AuthKey_.p8; do not rename the file because the wizard derives the key id from that name. Pasted .p8 content is only a fallback. Store only ASC_PRIVATE_KEY_PATH and never echo the private key back.
  • When SDK instrumentation is missing or weak, guide the developer through the analyticscli-ts-sdk setup path so analytics events become useful for later growth analysis.
  • If AnalyticsCLI has no default project and multiple projects are visible, do not report that as a hard error. List the available projects, ask the user which one to use, persist the choice with openclaw start --config openclaw.config.json --project or analyticscli projects select , and then retry the setup/run.

During setup chat, keep the first answer short. The agent should not dump provider docs, permissions, status history, or troubleshooting unless the user asks for details.

Connector status questions:

  • If the user asks whether connectors are connected, which connectors have access, or whether a specific app such as "Flashes" has all connectors, do not infer from memory, skill text, MCP config, or whether helper binaries exist.
  • Run the deterministic status command from the active agent workspace:
    node scripts/openclaw-growth-status.mjs --config data/openclaw-growth-engineer/config.json --json
    
  • The status command loads ~/.config/openclaw-growth/secrets.env, runs live connector checks, and treats GitHub code access separately from GitHub issue/PR delivery.
  • Do not require a single global GitHub repo for connector setup. GitHub is connected when auth/token is valid; choose or infer the repository per app/task later.
  • Answer from that command only. If it cannot be run, say "I have not run a connector status check yet" and give the wizard command; do not say credentials are missing just because they are not visible in chat.
  • Keep the answer short: say "Ja" only if every connector status is connected; otherwise list only the non-connected connector names and the status command's next action.
  • The interval runner performs a connector health check at least every 6 hours by default (schedule.connectorHealthCheckIntervalMinutes, default 360). If a configured connector is partial, blocked, or unknown, it writes a connector-health alert and sends it through the configured notification channel(s): agent chat outbox, Slack, generic webhook, Discord, or a custom command channel. Connector probes and source-collection failures use independent incident streams. Send a human notification for a new/changed incident and once on recovery; keep unchanged, successfully delivered incidents silent. Track delivery receipts per runner-managed target so a failed target is retried without reposting to targets that already succeeded. The bundled Discord bridge additionally receipts OpenClaw and Hermes independently. Clean healthcheck/daily runs must produce HEARTBEAT_OK, not a repetitive success post. Discord is only one possible channel, not the default assumption.

Retention reliability:

  • Treat D1/D3/D7 retention as an identity-quality-sensitive metric, not as an unconditional product fact.
  • Before making strong retention claims, inspect the analyticscli retention response quality.reliability, stable identity share, and warnings.
  • analyticscli retention defaults to --identity-quality stable. This excludes ephemeral/unknown SDK identities so consent-gated users without persistent identity do not create misleading multi-day retention noise.
  • Use --identity-quality all only as an explicit diagnostic comparison. Do not treat all-identity D1/D3/D7 as product truth when stable identity share is low.
  • If retention reliability is low or unknown, say the metric may be undercounted because some SDK sessions/users do not have persistent identity. Recommend verifying SDK identity persistence before prioritizing major retention work from D1/D7 alone.
  • Do not filter silently. If using stable-only retention, disclose that ephemeral/unknown identities were excluded and compare the remaining cohort size.
  • Product recommendations can still mention weak retention, but phrase it as "appears low" when reliability is weak and pair it with an instrumentation/persistence action.

AnalyticsCLI product feedback:

  • Use Sentry/GlitchTip for production exceptions, crashes, hangs, and backend stack traces.
  • Use analyticscli feedback submit for feedback to the AnalyticsCLI SaaS owner about AnalyticsCLI itself: missing features, broken CLI/API/dashboard behavior, confusing errors, poor docs, or workflow friction.
  • Do not confuse this with tenant-owned end-user feedback collected by the AnalyticsCLI feedback feature. Tenant feedback is a product signal for the tenant's app; analyticscli feedback submit is operator feedback about AnalyticsCLI/OpenClaw tooling.
  • When an AnalyticsCLI/OpenClaw/SDK command, endpoint, or documented workflow fails, first try to refetch or update the relevant current version before declaring the behavior broken:
    • Growth Engineer: npx -y clawhub --no-input --dir skills update growth-engineer --force or reinstall from the canonical skill source, then rerun the workflow.
    • AnalyticsCLI CLI: update @analyticscli/cli, verify analyticscli --help, then rerun the exact failing command.
    • AnalyticsCLI SDK: upgrade @analyticscli/sdk within the supported range and rerun the minimal host-app or test repro.
  • If no newer version is available, the update cannot be applied, or the newest version still fails, submit a bounded analyticscli feedback submit report if feedback service credentials are configured. Include installed versions checked, command/endpoint, project id when safe, sanitized payload shape, status code, error body, request id if present, expected behavior, workaround used, and whether an update was attempted.
  • Example:
    analyticscli feedback submit --category bug --message "Retention query returns HTTP 500 for minimal payload" --context "endpoint=/v1/query/retention project= anchorEvent=onboarding:start days=[1] last=7d identityQuality=all updateAttempt=cli@preview+skill@latest workaround=funnel+RevenueCat requestId="
    

Growth operating plan:

  • Goal: increase durable product value and business output by reducing churn, increasing MRR/LTV, improving acquisition quality, optimizing funnels/paywalls/onboarding/activation, and creating, changing, or deleting features only when the data supports it.
  • Data-first rule: gather all connected sources before recommendations whenever feasible: AnalyticsCLI events/funnels/retention, RevenueCat subscriptions/churn/revenue, Paddle billing metrics, SEO/GSC/Bing Webmaster/DataForSEO acquisition signals, Sentry crashes/performance, App Store Connect store/reviews/builds, GitHub code/release context, feedback, and any configured social/marketing sources.
  • Long analysis rule: prefer a longer cross-source investigation over fast generic advice. Look for correlations across connectors, for example Sentry regressions after a release, RevenueCat churn after a paywall change, App Store review themes matching funnel drop-offs, or marketing traffic that brings low-retention users.
  • Usage-choice rule: setup must ask how the user wants to use the tool before scheduling it. At minimum offer production autopilot, advisory-only summaries, and manual reports. Then ask whether the default cadence plan is acceptable; if not, collect/edit what should happen daily, weekly, monthly, every 3 months, every 6 months, and yearly.
  • GitHub production-version rule: always determine which code version is production before mapping data to files. Check repo default branch, release branches/tags, app version/build metadata, deployment workflows, App Store Connect build/version, Sentry release tags, and AnalyticsCLI appVersion. If they disagree, state the uncertainty and avoid overconfident file blame.
  • Action rule: every recommendation should include a concrete user/operator plan: what to do, where to do it, what data supports it, how to verify it, and which KPI should move. For implementation requests, create real code changes, not proposal-only docs.
  • Cadence for the user:
    • Daily default: analyze every configured project for critical production or business-health issues: Sentry/GlitchTip crashes/errors, ASC crash totals, failed releases, onboarding or purchase drop-offs, zero-conversion days, missing buyers, very low active users, or other severe analytics anomalies. Always do root-cause analysis with exact evidence, recent code/release changes, and a concrete fix/debugging step. Prefer a GitHub issue or draft PR when write access is configured; otherwise hand off via OpenClaw chat. Do not generate generic growth ideas on a daily-only run.
    • Weekly default: create an executive product and growth summary across all configured projects, connectors, recent releases, code changes, revenue, activation, retention, reviews, and stability. Pick one to three high-confidence improvements with KPI target and verification plan.
    • Monthly default: compare all configured projects month-over-month: MRR, trial conversion, churn, acquisition quality, store/listing conversion, retention, review themes, feature usage, crash totals, and codebase changes. Decide what to build, change, delete, or instrument next.
    • Every 3 months default: revisit positioning, pricing/packaging, onboarding architecture, roadmap assumptions, tracking quality, and major funnel bets. Look for structural constraints and durable opportunities.
    • Every 6 months default: audit connector coverage, SDK instrumentation, event taxonomy, data reliability, memory, growth loops, and whether product/marketing strategy still matches the best users.
    • Yearly default: reset strategy from all evidence: market/channel fit, monetization model, retention ceiling, product scope, and whether to double down, reposition, rebuild, or sunset major surfaces/features.
  • Memory and change-correlation rule: inspect persisted OpenClaw state, prior summaries, release/build metadata, Git history/recent commits where available, and previously created issues/PRs before assigning causality. Prefer explanations that connect "what changed" to "what moved" across data sources.
  • Marketing/social rule: if social or marketing automation exists, treat it as a growth source when data is available. Ask for or configure account analytics case-by-case (TikTok, Instagram, ads, creator automation, landing pages, UTM/source data), then connect those signals back to acquisition quality, activation, retention, churn, and revenue instead of optimizing impressions alone.
  • Social summary rule: whenever the Growth Engineer completes a meaningful run, creates a finding, or detects connector/production-health attention, send a short summary through configured social/chat channels (OpenClaw/Hermes native routing, Slack, Discord, generic webhook, command bridge, or equivalent). Use the shared status/impact/affected-item/next-action/automation shape; distinguish setup gaps, collection failures, product findings, and recoveries. Never paste raw commands, host paths, JSON error bodies, tokens, or secrets into social copy. OpenClaw channel=last must remain channel-neutral so the same fallback works for Discord, Slack, Telegram, WhatsApp, Matrix, Teams, and other supported native routes. Respect notifications.growthRun.enabled=false, notifications.connectorHealth.enabled=false, or a direct user request to stop social summaries.
  • Chart rule: when a result has meaningful numeric evidence, try to render a simple chart using the bundled Matplotlib script (scripts/openclaw-growth-charts.py). Prefer a bar/column chart for current-vs-baseline metrics and use other chart types only when they genuinely make the signal easier to understand. Attach generated PNGs to GitHub issues/PRs when GitHub artifact delivery is active. For chat/social/webhook delivery, include the chart manifest and local PNG attachment metadata so OpenClaw/Hermes can attach the images when the target channel supports file uploads.

Production crash and ASC growth monitoring:

  • Run the production health loop every day for every public, analytics-accessible app. Apps that are not public yet, not eligible for ASC API-key analytics reports, or returning ASC analytics-report 403s should be marked not_public_or_not_analytics_ready and skipped without calling them broken.
  • Daily crash check: prefer total production crashes from ASC App Usage breakdowns and Sentry production issue/event counts. Use ASC crashRate only as a supporting ratio, never as the only stability signal. TestFlight crashes are out of scope unless the user explicitly asks.
  • Any non-zero production crash count should trigger a short user notification through the configured agent chat/social delivery channel. The notification should name the app, date range, total crash count, affected app version when available, Sentry issue count/users when connected, and the recommended next action.
  • If GitHub issue/PR write access is configured through the agent's GitHub API connection, automatically create the tracking GitHub issue or implementation PR for production crashes and high-confidence growth findings. Only skip GitHub artifact creation when actions.disableAutoCreateGitHubArtifacts = true, GitHub write access is unavailable, or the finding is too low-confidence to be useful.
  • Correlate ASC total crashes with Sentry production data before recommending growth pushes: app version/build, release date, top Sentry issue, affected users/events, funnel step, paywall/purchase path, and recent code changes. If ASC and Sentry disagree, report both and say which connector is more complete for the app.
  • Sentry-compatible crash monitoring is multi-account. Do not assume one global Sentry org/project. Support sources.sentry.accounts[] with separate baseUrl, tokenEnv, org, projects[], and environment entries, for example Sentry Cloud plus a self-hosted GlitchTip instance with different projects.
  • Daily ASC acquisition check: refresh and parse API-key ASC batch reports in the background when ASC is configured: App Analytics report instances, Sales and Trends reports when ASC_VENDOR_NUMBER is available, plus ratings/reviews/build/TestFlight/status surfaces. Collect all available metrics, including but not limited to units, redownloads, conversionRate, crashRate, source page views, app usage, updates, app opens, subscription state, and total crashes. Treat ASC source data as source-level product page views, not source-level download units unless the CLI exposes a true source-download measure.
  • Do not require ASC web auth for setup, health checks, or normal scheduled runs. Experimental asc web analytics ... may be used only as an exception when a specific needed metric cannot be retrieved through documented API-key reports. In that case, ask the user before prompting for ASC_WEB_APPLE_ID, explain that the Apple Account web session can expire quickly on a VPS, and continue using API-key ASC reports if the user declines or the session expires.
  • Weekly growth review: compare units/downloads, redownloads, conversion rate, source mix, AnalyticsCLI activation/funnels/retention, Sentry stability, RevenueCat monetization, reviews, and recent releases. Turn the strongest cross-source pattern into one implementation-ready Handlungsempfehlung.
  • Monthly growth review: compare month-over-month units, conversion, source quality, reviews, retention, churn, crash totals, and production versions. Decide which acquisition channel, store listing element, onboarding step, paywall, or feature should be built, changed, or deleted next.
  • Handlungsempfehlungen must be source-aware: Search means ASO/keywords/screenshots; Web Referrer means landing pages, UTMs, creator/SEO traffic, and deep links; Browse means category positioning and visual conversion; App Referrer means cross-promotion and in-app referral paths. Always verify the recommendation against units/conversion and downstream activation, not traffic volume alone.
  • For financial data, keep it secondary unless the user asks. Prioritize production crashes, downloads/units, redownloads, conversion, source traffic, activation, retention, and qualitative store/user feedback.

Hard override for Growth Engineer connector questions:

If the user says any of these or close variants, apply this override before any generic OpenClaw, AnalyticsCLI, MCP, messaging-channel, or env-var connector knowledge:

  • "Growth Engineer connectors"
  • "analyticscli connectors"
  • "AI Product Manager connectors"
  • "I want to setup connectors" in the context of this skill
  • "which connectors can I set up" in the context of this skill
  • "how do I set them up" after asking about this skill's connectors

Answer only with this shape:

Growth Engineer connectors:
- AnalyticsCLI baseline: product analytics plus built-in feedback summaries
- GitHub code access: repo context and issue/PR delivery
- RevenueCat monetization: subscriptions, trials, revenue, and churn
- Sentry-compatible crash monitoring: Sentry Cloud and/or self-hosted GlitchTip via multi-account Sentry config
- Coolify deployment monitoring: failed deploys, unhealthy resources, servers, and production health-check gaps
- ASC / App Store Connect CLI: store analytics, reviews/ratings, builds/TestFlight/release context, downloads/units, conversion, source traffic, app usage, subscriptions, purchases, and crash totals when configured

Run the wizard from the active agent workspace:
npx -y @analyticscli/growth-engineer wizard --connectors

Then add only: "Select the connectors in the wizard. Secrets stay in the terminal."

Do not list Discord, Telegram, WhatsApp, Slack, Matrix, OpenAI service connectors, MCP servers, browser connectors, feedback endpoints, raw environment variables, token scopes, verification commands, or provider URLs in the initial answer. Do not list GlitchTip as a separate connector; it is a Sentry-compatible account under Sentry. Do not list Feedback as a separate primary connector; feedback is part of AnalyticsCLI when available or a custom extra source when explicitly configured. Do not present ASC as optional/partial after it is connected; when configured, use every available read-only App Store Connect signal. Those details belong inside the wizard or in a direct follow-up answer.

If the user asks a broad question such as "how do I setup everything", answer with only:

Available connectors:
- AnalyticsCLI baseline: product analytics plus built-in feedback summaries
- GitHub code access: repo context and issue/PR delivery
- RevenueCat monetization: subscriptions, trials, revenue, and churn
- Sentry-compatible crash monitoring: Sentry Cloud and/or self-hosted GlitchTip via multi-account Sentry config
- Coolify deployment monitoring: failed deploys, unhealthy resources, servers, and production health-check gaps
- ASC / App Store Connect CLI: store analytics, reviews/ratings, builds/TestFlight/release context, downloads/units, conversion, source traffic, app usage, subscriptions, purchases, and crash totals when configured

Run the wizard from the active agent workspace:
npx -y @analyticscli/growth-engineer wizard --connectors

Then add one sentence: "The wizard will ask for the selected connectors and any secrets in the local terminal only."

If the user asks which connectors exist, list only the connector names and one short purpose each. Treat Sentry Cloud and GlitchTip as Sentry-compatible accounts under one Sentry connector. Treat AnalyticsCLI feedback as part of AnalyticsCLI unless the user asks for custom extra sources. Do not include setup URLs, permissions, token scopes, status history, or validation output in that initial answer.

If the user already names specific connectors, still prefer the checkbox wizard unless they explicitly ask for a non-interactive command. For explicit connector setup, use one copy-paste command from the active agent workspace:

npx -y @analyticscli/growth-engineer wizard --connectors analytics,github,revenuecat,paddle,seo,sentry,coolify,asc

Use only the connectors the user accepted. The wizard owns provider-specific instructions, local-terminal secret prompts, helper setup, and smoke tests. Chat should only summarize results after the wizard finishes or when the user asks.

Do not ask for ASC_APP_ID during initial setup. ASC summaries default to all accessible App Store Connect apps. A single app ID is only an optional explicit filter later.

Growth Engineer connectors are local CLI/secrets-backed sources, not chat/MCP tools. ASC/App Store Connect is not expected to appear as a loaded chat tool. If the user asks whether ASC/App Store Connect analytics access is available, never inspect loaded tools and never answer "no" because no App Store Connect tool is callable. Check Growth Engineer status from the active workspace with node scripts/openclaw-growth-status.mjs --config --json --only-connectors asc or run node scripts/openclaw-growth-runner.mjs --config --state . If ASC status/setup reports pass, connected, healthy, or the wizard just finished ASC connector setup successfully, answer exactly: "Yes. ASC analytics is connected through Growth Engineer local asc CLI/API-key setup."

Connection setup requests are not satisfied by a successful product-manager run. If the user asks to set up asc, App Store Connect, RevenueCat, Paddle, SEO/GSC/Bing Webmaster/DataForSEO, Sentry, Coolify, GitHub, or codebase access, point them to the wizard command above and keep any extra explanation out of chat unless requested.

For Paddle setup, the wizard must explain the account-level metrics model: do not ask for or hard-code one Paddle product/project. The user should create a live API key at https://vendors.paddle.com/authentication-v2 with metrics.read permission.

For SEO setup, the wizard must not hard-code one Search Console property by default. Leave GSC_SITE_URL empty to query all verified properties visible to the account; set it only when the user explicitly wants to restrict analysis. Bing Webmaster is optional supplemental indexing/sitemap evidence; store BING_WEBMASTER_API_KEY and BING_WEBMASTER_SITE_URL only in the host terminal/secret file. Explain Search Console (https://search.google.com/search-console), service-account setup (https://console.cloud.google.com/iam-admin/serviceaccounts), Bing Webmaster API (https://www.bing.com/webmasters/), and optional paid DataForSEO (https://app.dataforseo.com/api-dashboard) step by step.

Reference URLs for the wizard or for explicit follow-up questions:

Safe secret handoff rules:

  • Do not ask the user to send secrets through Discord/OpenClaw chat. It is not safe enough for API keys, GitHub tokens, or .p8 private keys because messages can be retained, logged, indexed, screenshotted, or visible to other bots/users.
  • Ask the user to set secrets directly on the host where OpenClaw runs, then reply only with "done" or the non-sensitive file path/variable name.
  • Good terminal pattern for env secrets:
    install -d -m 700 ~/.config/openclaw-growth
    umask 077
    $EDITOR ~/.config/openclaw-growth/secrets.env
    # add lines like:
    # REVENUECAT_API_KEY=...
    # ASC_KEY_ID=...
    # ASC_ISSUER_ID=...
    # ASC_PRIVATE_KEY_PATH=/home/lo/.config/openclaw-growth/AuthKey_XXXX.p8
    chmod 600 ~/.config/openclaw-growth/secrets.env
    
  • Good .p8 pattern: keep Apple's original downloaded file name AuthKey_.p8, then paste only that local file path into the terminal wizard. Do not rename the file; the wizard derives ASC_KEY_ID / ASC_BOOTSTRAP_KEY_ID from the file name. Pasting the full .p8 content is only a fallback when the file is not available on the host.
  • OpenClaw Growth commands load the wizard-managed env file automatically; never put secrets in command-line args.

Mandatory Baseline

Before autopilot runs, these are non-negotiable:

  • analyticscli CLI available
  • target repo checkout readable via project.repoRoot
  • a writable openclaw.config.json
  • sources.analytics enabled

GitHub connection is strongly recommended for serious analysis, even when GitHub delivery is disabled. Treat readable GitHub repo access as very important because analytics signals become much more actionable when OpenClaw can map funnels, events, crashes, revenue signals, and feedback back to actual code areas. Without repo context, findings stay generic and file/module hypotheses are lower confidence.

When the user says they want to connect GitHub or the codebase, do not ask them to manually send a repo path first. Reference and use the dedicated ClawHub GitHub skill when available: steipete/github (https://clawhub.ai/steipete/github). It is a gh CLI helper skill for issues, PRs, runs, and advance

常见问题

CLI 本身带 AI 模型吗?
不带。`growth-engineer` CLI 是刻意保持非 AI 的:只负责采集信号、生成提案、排程和投递。对话与代码实现交给宿主 agent 完成。
配置 connector 时必须先指定 GitHub 仓库吗?
不需要。向导会把仓库选择推迟到真正需要 GitHub 投递或代码映射的阶段。除非显式开启,issue 与 PR 创建默认处于关闭状态。
API token 应该贴在哪里?
在主机终端里执行 `growth-engineer wizard --connectors` 时粘贴,不要贴到对话窗口。token 会写入宿主环境变量或 Growth Engineer 本地密钥存储。

相关技能

诊断漏斗中受约束的环节,挑选可复利的增长回路,并量化渠道与实验组合的规模。

69 次安装4 星标

读取产品的漏斗、路径、留存与实验结果,并给出下一步最小可行的增长动作。

163 次安装2 星标

一个把开源项目从 0 推到持续涨 star 的分阶段决策框架,覆盖预热、发布、增长三个阶段。

70 次安装

按命令族和 profile 选择合适的 OpenClaw CLI 命令,并校验执行结果。

334 次安装6 星标

面向 iOS 平台的构建、上架与调试:覆盖生命周期、权限、推送、Widget、StoreKit 与 App Store 审核。

110 次安装6 星标

Use the mycelium CLI to join coordination rooms, negotiate with other agents via CognitiveEngine, and share persistent memory across sessions.

56 次安装1 星标