OpenClaw-first AI product manager for turning analytics, revenue, crash, store, and feedback signals into execution-ready proposals and backlog work.
Resources
5Install
npx skillscat add wotaso/ai-product-manager-skill Install via the SkillsCat registry.
AI Product Manager
Use This Skill When
- you want OpenClaw to turn product signals into execution-ready backlog work
- you need one workflow across analytics, RevenueCat, Sentry/GlitchTip, feedback, store signals, and repo context
- you want the deterministic work to live in a standalone
openclawCLI and OpenClaw to stay the AI/chat layer - you want delivery configurable between OpenClaw chat handoff, GitHub issues, and draft pull requests
Preferred Runtime
Prefer the standalone openclaw CLI as the runtime surface.
- Setup path:
openclaw setup --config openclaw.config.json - Primary path:
openclaw start --config openclaw.config.json - Local monorepo path:
pnpm --filter @analyticscli/openclaw-cli dev -- start - Legacy copied-runtime scripts under
scripts/openclaw-growth-*.mjsremain fallback-only for older OpenClaw workspaces
The CLI is intentionally non-AI. OpenClaw should stay the only conversational and implementation layer.
Use the CLI to gather signals, generate proposals, schedule checks, and send deliveries.
If the user later asks OpenClaw to implement a proposal, OpenClaw should inspect the generated drafts and then use OpenClaw itself to do the work.
Setup DX Rules
Setup should feel guided for a developer, not like a silent preflight dump.
- Prefer auto-detection and direct fixes over asking the user to run generic commands.
- Explain why each connection matters before asking for it, especially AnalyticsCLI auth, GitHub code access, and optional GitHub write scopes.
- Ask for the minimum missing value only; do not request issue/PR permissions unless artifact creation is enabled.
- For every blocker, return a compact checklist with status, why it matters, where to get it, and the exact minimum permission or command.
- After each setup phase, report what was detected, what was configured, and the next concrete command OpenClaw will run.
- Keep secrets out of prompts, repo files, logs, and command arguments; prefer OpenClaw secret storage or environment injection.
- When SDK instrumentation is missing or weak, guide the developer through the
analyticscli-ts-sdksetup path so analytics events become useful for later growth analysis.
Mandatory Baseline
Before autopilot runs, these are non-negotiable:
analyticscliCLI available- target repo checkout readable via
project.repoRoot - a writable
openclaw.config.json sources.analyticsenabled
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.
Use the least privilege GitHub access that matches the requested workflow:
- code analysis only: readable repo/code access is enough
- issue creation: add issue write permission only when GitHub issue delivery is enabled
- pull-request creation: add pull-request and contents write permission only when draft PR delivery is enabled
Dependency Refresh Protocol
Run 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.
- Refresh this ClawHub skill:
npx -y clawhub install ai-product-manager - Refresh the AnalyticsCLI agent skill only when it can run non-interactively:
If this command asks an interactive agent-selection question, stop that command and continue with the npm package install instead of blocking.npx -y skills add wotaso/analyticscli-skills --skill analyticscli-cli
Do not describe an interactiveskills addprompt as a successful refresh. - Install or update the npm package that provides the
analyticsclibinary:npm install -g @analyticscli/cli@preview - If global npm install fails with a permissions error, use the bundled helper from the installed skill root:
bash skills/ai-product-manager/scripts/install-analyticscli-cli.sh - Verify and report the exact binary path:
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/nullAnalyticsCLI CLI Install Protocol
If analyticscli is missing or the user reports analyticscli: command not found, OpenClaw must install/update it directly from the scoped npm package before doing anything else.
Do not search npm for analyticscli.
Do not search npm for analyticsscli.
Those are binary names or typos, not package names.
Use this exact package:
npm install -g @analyticscli/cli@previewThen verify:
command -v analyticscli
analyticscli --helpIf global npm installs are blocked, use the bundled helper from the installed skill root:
bash skills/ai-product-manager/scripts/install-analyticscli-cli.shThe bundled helper automatically falls back from global npm install to a user-local npm prefix at ~/.local when global install fails with permissions errors.
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 or network error.
Delivery Modes
The CLI can write proposals to one or more targets:
deliveries.openclawChat.enabled = true: write.openclaw/chat/latest.mdand.openclaw/chat/latest.jsonfor OpenClaw to pick up in chatdeliveries.github.mode = "issue"withdeliveries.github.autoCreate = true: create implementation-ready GitHub issuesdeliveries.github.mode = "pull_request"withdeliveries.github.autoCreate = true: create draft PRs that add.openclaw/proposals/...mdproposal files to the repo
Connector Model
Built-in channels:
analyticsrevenuecatsentryfeedback
default command path:analyticscli feedback summary --format json
default cursor behavior: first run--last 30d, later runs--since <lastCollectedAt>unless the command already sets explicit time flags
Additional connectors:
- configure
sources.extra[] - each extra connector can use
mode=fileormode=command - preferred output is shared
signals[] - crash-style tools may use
issues[] - feedback-style tools may use
items[]
Feedback Rules
- Always include a stable
locationIdfor feedback collection points - Always include a human-readable
originNamefor where the feedback originated in the product - Prefer AnalyticsCLI feedback retrieval via
analyticscli feedback summary --format jsoninstead of maintaining a second feedback definition - The SDK should track lightweight feedback submission events without sending raw feedback text into analytics events
Feedback Source Memory
- The CLI should persist per-source cursor state, especially for the built-in
feedbacksource - Default behavior must avoid accidental historical re-fetches
- If
sources.feedback.cursorMode = "auto_since_last_fetch"and the command has no explicit--since,--until, or--last, the CLI should auto-append a bounded window - Re-fetching older history should always be a conscious action by changing the command or resetting cursor state
Startup Protocol
When the user says start, run, or kick off:
- Run the Dependency Refresh Protocol first. It must update this skill, the
analyticscli-cliskill when available, and the@analyticscli/cli@previewnpm package, then verifycommand -v analyticscli. - Prefer the CLI entrypoint:
openclaw setup --config openclaw.config.json
- Then run:
openclaw start --config openclaw.config.json
- If the standalone
openclawCLI is unavailable but this ClawHub skill is installed, bootstrap the bundled runtime once:bash skills/ai-product-manager/scripts/bootstrap-openclaw-workspace.sh- confirm
scripts/openclaw-growth-start.mjsnow exists node scripts/openclaw-growth-start.mjs --config data/openclaw-growth-engineer/config.json
- In this monorepo, use the workspace dev entrypoint when
openclawis not installed globally:pnpm --filter @analyticscli/openclaw-cli dev -- start
- Run portable checks first when setup is incomplete:
command -v analyticsclianalyticscli projects list- detect
project.githubRepofrom git remote when possible - verify readable GitHub repo access when available so analytics findings can be mapped to code
- verify GitHub issue/PR write scopes only if GitHub delivery is enabled
- If preflight fails, return only a concrete blocker checklist
- If preflight passes, continue with
openclaw run --config openclaw.config.json
Proposal Strategy
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 ideas
Output Rules
- max 3-5 proposals per pass
- each proposal must include measurable impact and file/module hypotheses
- each proposal must say what should change
- low-confidence findings must be marked explicitly
- when GitHub delivery is disabled, proposals should still be fully usable via the OpenClaw chat outbox
Required Secrets
GITHUB_TOKEN
strongly recommended with readable repo/code access for code-aware analysis
required with write scopes only when GitHub issue or pull-request delivery is enabledANALYTICSCLI_ACCESS_TOKEN
recommended for AnalyticsCLI command/API mode when no local CLI login existsREVENUECAT_API_KEY
recommended for RevenueCat command/API modeSENTRY_AUTH_TOKEN
recommended for Sentry command/API mode- optional connector-specific
secretEnvpersources.extra[]