Install
openclaw skills install growth-engineerGrowth Engineer for mobile apps and agent runtimes including OpenClaw and Hermes. Correlate analytics, crashes, billing, feedback, store signals, and repo context into proposal drafts that can flow into agent chat, GitHub issues, or draft pull requests.
openclaw skills install growth-engineergrowth-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.
clawhub install growth-engineer or npx clawhub install growth-engineer.hermes skills install Wotaso/growth-engineer-skill.skills/openclaw-growth-engineer folder.scripts/, references/, and data/ files.openclaw run --loop, or a host scheduler such as launchd; keep secrets in the host terminal/env/secret file, not in chat.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:
Use this command block for OpenClaw, Hermes, VPS, Linux, and macOS hosts:
npx -y @analyticscli/growth-engineer@preview wizard --connectors
If npm/npx is unavailable, fall back to the bundled installed skill script path and run node scripts/openclaw-growth-wizard.mjs --connectors only after bootstrapping the workspace from the installed skill root.
After the VPS/host wizard finishes successfully, OpenClaw or Hermes should not answer with a generic agent-status paragraph. Reply in this minimal shape:
npx -y @analyticscli/growth-engineer@preview 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 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@preview 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.
Treat this as a private-repo-first skill. The setup and connector wizards should ask the user for as little information as possible.
project.githubRepo during connector setup. Defer repo selection until GitHub delivery or code mapping actually needs it.Prefer the standalone growth-engineer CLI as the user-facing runtime surface when it is available. openclaw remains the lower-level compatibility runtime.
growth-engineer wizard --connectorsgrowth-engineer setup --config openclaw.config.jsongrowth-engineer start --config openclaw.config.jsonopenclaw setup --config openclaw.config.json and openclaw start --config openclaw.config.jsonpnpm --filter @analyticscli/openclaw-cli dev start --repo-root <repo-root>scripts/openclaw-growth-*.mjs remain the compatibility path for agents that install this as a plain SKILL.md folderThe 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 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.
HEARTBEAT.md with an openclaw-growth-engineer-run fallback task.openclaw cron add ... --session main --system-event ... --wake now) when automation.openclawCron.enabled is true.node scripts/openclaw-growth-runner.mjs --config data/openclaw-growth-engineer/config.json or the configured equivalent. 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.openclaw cron list, openclaw cron runs --id <job-id>, openclaw tasks list), then inspect runner proof (data/openclaw-growth-engineer/runtime/scheduler-proof.jsonl) and state (data/openclaw-growth-engineer/state.json). Do not use Discord as the default coordination path.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:
.openclaw/proposals/*.md, docs, or markdown planning files is not a valid implementation PR unless the user explicitly requested a proposal-only artifact.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.
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 should feel guided for a developer, not like a silent preflight dump.
.p8 private-key contents into Discord, OpenClaw chat, Hermes chat, GitHub issues, PRs, or any shared transcript. Chat is not an appropriate secret transport.~/.config/openclaw-growth/secrets.env with chmod 600. Growth commands must load that env file automatically. For .p8, the terminal wizard must validate pasted file content cryptographically before writing it to ~/.config/openclaw-growth/AuthKey_<KEY_ID>.p8 with chmod 600; store only ASC_PRIVATE_KEY_PATH and never echo the private key back.analyticscli-ts-sdk setup path so analytics events become useful for later growth analysis.openclaw start --config openclaw.config.json --project <project_id> or analyticscli projects select <project_id>, 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:
node scripts/openclaw-growth-status.mjs --config data/openclaw-growth-engineer/config.json --json
~/.config/openclaw-growth/secrets.env, runs live connector checks, and treats GitHub code access separately from GitHub issue/PR delivery.connected; otherwise list only the non-connected connector names and the status command's next action.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, or a custom command channel. Alert once per unhealthy incident/fingerprint, then suppress repeats until the connector recovers or the unhealthy fingerprint changes. Discord is only one possible command/webhook channel, not the default assumption.Retention reliability:
analyticscli retention response quality.reliability, stable identity share, and warnings.low or unknown, say the metric may be undercounted because some SDK sessions/users do not have persistent identity. Recommend verifying SDK identity persistence and rerunning retention with analyticscli retention --identity-quality stable before prioritizing major retention work from D1/D7 alone.AnalyticsCLI product feedback:
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.analyticscli feedback submit is operator feedback about AnalyticsCLI/OpenClaw tooling.npx -y clawhub --no-input --dir skills update growth-engineer --force or reinstall from the canonical skill source, then rerun the workflow.@analyticscli/cli@preview, verify analyticscli --help, then rerun the exact failing command.@analyticscli/sdk within the supported range and rerun the minimal host-app or test repro.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.analyticscli feedback submit --category bug --message "Retention query returns HTTP 500 for minimal payload" --context "endpoint=/v1/query/retention project=<project_id> anchorEvent=onboarding:start days=[1] last=7d identityQuality=all updateAttempt=cli@preview+skill@latest workaround=funnel+RevenueCat requestId=<request_id_if_present>"
Growth operating plan:
notifications.growthRun.enabled=false, notifications.connectorHealth.enabled=false, or a direct user request to stop social summaries.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:
not_public_or_not_analytics_ready and skipped without calling them broken.crashRate only as a supporting ratio, never as the only stability signal. TestFlight crashes are out of scope unless the user explicitly asks.actions.disableAutoCreateGitHubArtifacts = true, GitHub write access is unavailable, or the finding is too low-confidence to be useful.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.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.ASC_WEB_APPLE_ID to the Apple Account email, run asc web auth login --apple-id "$ASC_WEB_APPLE_ID", verify with asc web auth status --output json --pretty, then rerun Growth Engineer. Do not confuse this with API-key ASC auth.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:
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
- 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@preview 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
- 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@preview 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@preview wizard --connectors analytics,github,revenuecat,sentry,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.
Connection setup requests are not satisfied by a successful product-manager run. If the user asks to set up asc, App Store Connect, RevenueCat, Sentry, GitHub, or codebase access, point them to the wizard command above and keep any extra explanation out of chat unless requested.
Reference URLs for the wizard or for explicit follow-up questions:
Safe secret handoff rules:
.p8 private keys because messages can be retained, logged, indexed, screenshotted, or visible to other bots/users.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
.p8 pattern: paste the full downloaded App Store Connect private key content into the local terminal wizard so it can validate and save ~/.config/openclaw-growth/AuthKey_<KEY_ID>.p8 with chmod 600, or save the file yourself and share only ASC_PRIVATE_KEY_PATH.Before autopilot runs, these are non-negotiable:
analyticscli CLI availableproject.repoRootopenclaw.config.jsonsources.analytics enabledGitHub 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 advanced gh api queries, so it should own GitHub command patterns while this skill owns product/growth analysis.
Install or verify it before deeper GitHub setup when OpenClaw can manage skills:
openclaw skills install steipete/github
# or
npx clawhub@latest install github
GitHub setup must go through the connector wizard's classic-token scope guide, not a raw gh auth login flow. The wizard should:
https://github.com/settings/tokens/new.public_repo, repo, and optional workflow.GITHUB_TOKEN locally when the user pastes it into the terminal wizard.gh locally only as a helper binary; do not use GitHub CLI OAuth as the default credential path because it can request broad repository/workflow permissions.Use least privilege:
public_reporepo (classic tokens make this broad)workflow only when the user explicitly wants OpenClaw to edit GitHub Actions workflow filesRun this protocol at the start of every setup/start/run request, and whenever the user asks to fetch, update, upgrade, or reinstall this skill.
Do not stop after saying the skill was fetched from ClawHub.
The job is not done until the npm binary and companion skills are updated and verified.
If the user reports analyticscli: command not found in their own terminal, treat that as unresolved even if analyticscli works inside OpenClaw's child process.
Child processes cannot mutate the PATH of an already-open parent terminal.
npx -y clawhub install growth-engineer
npx -y skills add wotaso/analyticscli-skills --skill analyticscli-cli
If this command asks an interactive agent-selection question, stop that command and continue with the npm package install instead of blocking.
Do not describe an interactive skills add prompt as a successful refresh.analyticscli binary:
npm install -g @analyticscli/cli@preview
bash skills/openclaw-growth-engineer/scripts/install-analyticscli-cli.sh
command -v analyticscli
analyticscli --help
If analyticscli: command not found still happens, do not claim setup is complete.
Find the user-local binary and fix PATH for future shells yourself; do not bounce this step back to the user:
export PATH="$HOME/.local/bin:$HOME/.local/analyticscli-npm/bin:$PATH"
command -v analyticscli || ls -l "$HOME/.local/bin/analyticscli" "$HOME/.local/analyticscli-npm/bin/analyticscli"
If the binary exists under $HOME/.local/bin or $HOME/.local/analyticscli-npm/bin, make future shells pick it up. Update all common shell startup files idempotently, then verify from a fresh shell:
for f in "$HOME/.profile" "$HOME/.bashrc" "$HOME/.bash_profile" "$HOME/.zshrc" "$HOME/.zprofile"; do
touch "$f"
grep -Fq 'export PATH="$HOME/.local/bin:$HOME/.local/analyticscli-npm/bin:$PATH"' "$f" ||
printf '\n# AnalyticsCLI CLI user-local npm bin\nexport PATH="$HOME/.local/bin:$HOME/.local/analyticscli-npm/bin:$PATH"\n' >> "$f"
done
bash -lc 'source "$HOME/.bashrc" 2>/dev/null || true; source "$HOME/.profile" 2>/dev/null || true; command -v analyticscli && analyticscli --help >/dev/null'
Child processes cannot mutate an already-open parent terminal. Say that only as residual context after you have already updated profile files and verified a fresh shell. Do not say "analyticscli is fixed" unless this exact command succeeds in the same command context you control:
command -v analyticscli && analyticscli --help >/dev/null
Before any setup, preflight, start, or run path tries to execute analyticscli, make sure the npm package is installed and current.
If the user reports analyticscli: command not found, run the Dependency Refresh Protocol before any other action.
The package name is @analyticscli/cli; the installed binary name is analyticscli.
Do not search npm for analyticscli or analyticsscli.
Use this exact install/update command:
npm install -g @analyticscli/cli@preview
Then verify:
command -v analyticscli
analyticscli --help
If global npm installs are blocked on a VPS, use the bundled helper from the installed skill root:
bash skills/openclaw-growth-engineer/scripts/install-analyticscli-cli.sh
The helper falls back to a user-local npm prefix at ~/.local when global install fails with permissions errors, prepends ~/.local/bin for the current run, and prints a PATH hint if the shell needs it.
It must also update common shell profile files and verify that a fresh shell can resolve analyticscli.
Only ask the user for help if both direct npm install and the bundled helper fail with a concrete permission, missing npm, or network error.
The CLI can write proposals to one or more targets:
deliveries.openclawChat.enabled = true: write .openclaw/chat/latest.md and .openclaw/chat/latest.json for OpenClaw to pick up in chatdeliveries.github.mode = "issue" with deliveries.github.autoCreate = true: create implementation-ready GitHub issuesdeliveries.github.mode = "pull_request" with deliveries.github.autoCreate = true: create proposal-only draft PRs that add .openclaw/proposals/...md proposal files to the repo. Use this only for explicit proposal delivery, not when the user asks OpenClaw to implement changes.Use issue mode when:
Use pull-request mode when:
Built-in channels:
analyticsrevenuecatsentryfeedback
default command path: analyticscli feedback summary --format json
default cursor behavior: auto-bounded with --last 30d on first run, then --since <lastCollectedAt> on later runs unless the command already sets --since, --until, or --lastAdditional connectors:
sources.extra[]mode=file or mode=commandsignals[]issues[]items[]For iOS/macOS products, explicitly ask whether the user wants to connect the asc CLI and the related App Store Connect agent skill. ASC means App Store Connect, not analytics.
Never abbreviate this as just "analytics" in status messages, because it is easy to confuse with AnalyticsCLI.
Say "ASC / App Store Connect" when referring to asc, and "AnalyticsCLI baseline" when referring to the AnalyticsCLI project.
An AnalyticsCLI auth check, selected AnalyticsCLI project, or successful PM run does not prove that ASC is connected.
Only say ASC is connected after asc auth is configured, accessible App Store Connect apps are discovered or an explicit app filter is set, and a read-only ASC command/export has succeeded.
Frame ASC as an App Store Connect connector, not as a synonym for analytics. AnalyticsCLI remains the product analytics baseline; when ASC is configured, App Store Connect reports are fully used for discovery, downloads/units, redownloads, conversion, source traffic, app usage, purchases, subscriptions, ratings, reviews, release, build, TestFlight, and crash-total context when those surfaces are available.
Do not request ASC permissions for release management, TestFlight management, pricing changes, user management, or other write/admin workflows when the user only selected read-only App Store Connect reporting.
Reference the ASC skill pack as the canonical companion skills for asc: rorkai/app-store-connect-cli-skills (https://github.com/rorkai/app-store-connect-cli-skills).
Use it for asc command syntax, auth, pagination, ID resolution, and App Store Connect workflows; for read-only App Store Connect reporting prefer the least invasive skills such as asc-cli-usage and asc-id-resolver, not release/submission/signing skills.
Install or refresh it when the user selects ASC:
npx skills add rorkai/app-store-connect-cli-skills
ASC setup guidance:
Sales, required for App Analytics, Sales and Trends, downloads, revenue, and conversion context. Add Customer Support for App Store ratings/review text, Developer for builds/TestFlight/delivery status, and App Manager only when app metadata, pricing, or release settings are needed. Avoid Admin unless a one-off App Store Connect permission requires it.ASC_ISSUER_ID from the API keys page, copy ASC_KEY_ID from the key row or downloaded AuthKey_<KEY_ID>.p8 file name, download the .p8, open it, and paste the full file content into the local terminal wizard.ASC_KEY_ID, ASC_ISSUER_ID, and ASC_PRIVATE_KEY_PATH; the wizard can create the .p8 file from validated pasted terminal content. Never commit the .p8 private key.ASC_APP_ID upfront. After auth succeeds, ASC should use all accessible apps by default. Store an app filter only if the user explicitly asks to scope ASC to one app.asc smoke test before marking ASC connected. Do not force a target app selection; default ASC analysis covers all accessible apps.asc auth login when the local asc CLI supports keychain storage; otherwise use runtime env injection.RevenueCat setup guidance:
analyticscli, choose API version 2, and set Charts metrics, Customer information, and Project configuration permissions to read.Sentry setup guidance:
node scripts/export-sentry-summary.mjs.baseUrl, tokenEnv, token, org, environment, and optional comma-separated projects[]. Do not ask for a single global SENTRY_PROJECT; defer project scope to app/repo/release context unless the user provides known fixed projects for that account. Use this for Sentry Cloud plus self-hosted GlitchTip with separate tokens and projects.sources.sentry.accounts[] instead of overwriting one global account. Each account can define its own baseUrl, tokenEnv, org, projects[], and environment.org:read, project:read, and event:read.@sentry/mcp-server@latest when npx and SENTRY_AUTH_TOKEN are available, but do not ask for broader write scopes unless the user explicitly wants Sentry mutation workflows.Mobile-focused extra source examples:
firebase-crashlyticsapp-store-reviewsplay-consolestripeadaptysuperwallDo not list GlitchTip or ASC CLI as mobile extras in setup answers. GlitchTip belongs under the Sentry-compatible connector when it exposes the Sentry API; ASC CLI is the App Store Connect connector.
locationId for feedback collection pointsoriginName for where the feedback originated in the productonboarding/paywall, settings/restore, profile/delete_accountfeedback source.sources.feedback.cursorMode = "auto_since_last_fetch" and the command has no explicit time flags, the CLI should:
first run: append --last <initialLookback> (default 30d)
later runs: append --since <lastCollectedAt>--last / --since / --until in the command
or reset the stored cursor stateWhen the user says "start", "run", or "kick off" the skill:
analyticscli-cli skill when available, and the @analyticscli/cli@preview npm package, then verify command -v analyticscli.npx -y @analyticscli/growth-engineer@preview wizard --connectors
Do not tell the user to run analyticscli login as the next step; the wizard owns AnalyticsCLI token collection and retesting.growth-engineer setup --config openclaw.config.jsongrowth-engineer start --config openclaw.config.jsonopenclaw is not installed globally:
pnpm --filter @analyticscli/openclaw-cli dev start --repo-root <repo-root>command -v analyticsclianalyticscli projects listproject.githubRepo from git remote when possibleanalyticscli loginopenclaw run --config openclaw.config.jsonWhen the user asks for analysis only:
When the user asks OpenClaw to implement:
The CLI config should expose strategy.proposalMode:
mandatory: only strongest, clearly evidenced fixes and must-have requestsbalanced: default mix of necessary fixes and moderate product ideascreative: still evidence-led, but more willing to suggest bolder experiments or feature ideasUse the legacy bootstrap-and-copy runtime only when the standalone CLI is unavailable in the target workspace.
GITHUB_TOKEN
https://github.com/settings/tokens/new; use public_repo for public repos, repo for private repo access, and workflow only for GitHub Actions workflow editsIssues: Read/Write only when issue creation is enabledPull requests: Read/Write and Contents: Read/Write only when draft PR creation is enabledASC_KEY_ID, ASC_ISSUER_ID, ASC_PRIVATE_KEY_PATH
ANALYTICSCLI_ACCESS_TOKEN
ANALYTICSCLI_READONLY_TOKEN; the readonly token is collected by the connector wizard and stored as ANALYTICSCLI_ACCESS_TOKENREVENUECAT_API_KEY
SENTRY_AUTH_TOKEN
secretEnv per sources.extra[]