@analyticscli/growth-engineer 0.1.0-preview.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +26 -0
- package/dist/config.d.ts +1663 -0
- package/dist/config.js +266 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1188 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/export-analytics-summary.d.mts +2 -0
- package/dist/runtime/export-analytics-summary.mjs +303 -0
- package/dist/runtime/export-analytics-summary.mjs.map +1 -0
- package/dist/runtime/export-asc-summary.d.mts +2 -0
- package/dist/runtime/export-asc-summary.mjs +376 -0
- package/dist/runtime/export-asc-summary.mjs.map +1 -0
- package/dist/runtime/export-revenuecat-summary.d.mts +2 -0
- package/dist/runtime/export-revenuecat-summary.mjs +176 -0
- package/dist/runtime/export-revenuecat-summary.mjs.map +1 -0
- package/dist/runtime/export-sentry-summary.d.mts +2 -0
- package/dist/runtime/export-sentry-summary.mjs +352 -0
- package/dist/runtime/export-sentry-summary.mjs.map +1 -0
- package/dist/runtime/openclaw-exporters-lib.d.mts +101 -0
- package/dist/runtime/openclaw-exporters-lib.mjs +1276 -0
- package/dist/runtime/openclaw-exporters-lib.mjs.map +1 -0
- package/dist/runtime/openclaw-feedback-api.d.mts +2 -0
- package/dist/runtime/openclaw-feedback-api.mjs +255 -0
- package/dist/runtime/openclaw-feedback-api.mjs.map +1 -0
- package/dist/runtime/openclaw-growth-charts.py +154 -0
- package/dist/runtime/openclaw-growth-engineer.d.mts +2 -0
- package/dist/runtime/openclaw-growth-engineer.mjs +1258 -0
- package/dist/runtime/openclaw-growth-engineer.mjs.map +1 -0
- package/dist/runtime/openclaw-growth-env.d.mts +9 -0
- package/dist/runtime/openclaw-growth-env.mjs +125 -0
- package/dist/runtime/openclaw-growth-env.mjs.map +1 -0
- package/dist/runtime/openclaw-growth-preflight.d.mts +2 -0
- package/dist/runtime/openclaw-growth-preflight.mjs +1111 -0
- package/dist/runtime/openclaw-growth-preflight.mjs.map +1 -0
- package/dist/runtime/openclaw-growth-runner.d.mts +2 -0
- package/dist/runtime/openclaw-growth-runner.mjs +1302 -0
- package/dist/runtime/openclaw-growth-runner.mjs.map +1 -0
- package/dist/runtime/openclaw-growth-shared.d.mts +33 -0
- package/dist/runtime/openclaw-growth-shared.mjs +208 -0
- package/dist/runtime/openclaw-growth-shared.mjs.map +1 -0
- package/dist/runtime/openclaw-growth-start.d.mts +2 -0
- package/dist/runtime/openclaw-growth-start.mjs +1575 -0
- package/dist/runtime/openclaw-growth-start.mjs.map +1 -0
- package/dist/runtime/openclaw-growth-status.d.mts +2 -0
- package/dist/runtime/openclaw-growth-status.mjs +387 -0
- package/dist/runtime/openclaw-growth-status.mjs.map +1 -0
- package/dist/runtime/openclaw-growth-wizard.d.mts +2 -0
- package/dist/runtime/openclaw-growth-wizard.mjs +3519 -0
- package/dist/runtime/openclaw-growth-wizard.mjs.map +1 -0
- package/dist/shell.d.ts +17 -0
- package/dist/shell.js +40 -0
- package/dist/shell.js.map +1 -0
- package/package.json +38 -0
- package/templates/analytics_summary.example.json +40 -0
- package/templates/config.example.json +197 -0
- package/templates/feedback_summary.example.json +37 -0
- package/templates/revenuecat_summary.example.json +25 -0
- package/templates/sentry_summary.example.json +23 -0
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 7,
|
|
3
|
+
"generatedAt": "2026-03-21T00:00:00.000Z",
|
|
4
|
+
"project": {
|
|
5
|
+
"githubRepo": "owner/repo",
|
|
6
|
+
"repoRoot": ".",
|
|
7
|
+
"outFile": "data/openclaw-growth-engineer/issues.generated.json",
|
|
8
|
+
"maxIssues": 4,
|
|
9
|
+
"titlePrefix": "[Growth]",
|
|
10
|
+
"labels": ["ai-growth", "autogenerated", "product"]
|
|
11
|
+
},
|
|
12
|
+
"sources": {
|
|
13
|
+
"analytics": {
|
|
14
|
+
"enabled": true,
|
|
15
|
+
"mode": "command",
|
|
16
|
+
"command": "node scripts/export-analytics-summary.mjs"
|
|
17
|
+
},
|
|
18
|
+
"revenuecat": {
|
|
19
|
+
"enabled": false,
|
|
20
|
+
"mode": "file",
|
|
21
|
+
"path": "data/openclaw-growth-engineer/revenuecat_summary.example.json"
|
|
22
|
+
},
|
|
23
|
+
"sentry": {
|
|
24
|
+
"enabled": false,
|
|
25
|
+
"mode": "command",
|
|
26
|
+
"command": "node scripts/export-sentry-summary.mjs"
|
|
27
|
+
},
|
|
28
|
+
"feedback": {
|
|
29
|
+
"enabled": true,
|
|
30
|
+
"mode": "command",
|
|
31
|
+
"command": "analyticscli feedback summary --format json",
|
|
32
|
+
"cursorMode": "auto_since_last_fetch",
|
|
33
|
+
"initialLookback": "30d"
|
|
34
|
+
},
|
|
35
|
+
"extra": [
|
|
36
|
+
{
|
|
37
|
+
"key": "glitchtip",
|
|
38
|
+
"label": "glitchtip",
|
|
39
|
+
"service": "glitchtip",
|
|
40
|
+
"enabled": false,
|
|
41
|
+
"mode": "file",
|
|
42
|
+
"path": "data/openclaw-growth-engineer/glitchtip_summary.json",
|
|
43
|
+
"secretEnv": "GLITCHTIP_API_TOKEN"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"key": "asc_cli",
|
|
47
|
+
"label": "asc-cli",
|
|
48
|
+
"service": "asc-cli",
|
|
49
|
+
"enabled": false,
|
|
50
|
+
"mode": "command",
|
|
51
|
+
"command": "node scripts/export-asc-summary.mjs",
|
|
52
|
+
"secretEnv": "ASC_KEY_ID"
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
"schedule": {
|
|
57
|
+
"intervalMinutes": 1440,
|
|
58
|
+
"connectorHealthCheckIntervalMinutes": 720,
|
|
59
|
+
"skipIfNoDataChange": true,
|
|
60
|
+
"skipIfIssueSetUnchanged": true,
|
|
61
|
+
"cadences": [
|
|
62
|
+
{
|
|
63
|
+
"key": "daily",
|
|
64
|
+
"title": "Daily production guardrail",
|
|
65
|
+
"intervalDays": 1,
|
|
66
|
+
"criticalOnly": true,
|
|
67
|
+
"focusAreas": ["crash", "conversion", "paywall"],
|
|
68
|
+
"sourcePriorities": ["sentry", "glitchtip", "analytics", "asc_cli", "revenuecat"],
|
|
69
|
+
"objective": "Only investigate critical production blockers and business anomalies: Sentry/GlitchTip production errors, crashes, very low users, conversion, purchases, or other urgent drops.",
|
|
70
|
+
"instructions": "Do exact root-cause analysis with connected production data, memory/state, release context, and recent code changes. Produce the fix or next debugging step; avoid generic growth ideas."
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"key": "weekly",
|
|
74
|
+
"title": "Weekly conversion, traffic, and RevenueCat review",
|
|
75
|
+
"intervalDays": 7,
|
|
76
|
+
"criticalOnly": false,
|
|
77
|
+
"focusAreas": ["conversion", "paywall", "onboarding", "marketing", "retention"],
|
|
78
|
+
"sourcePriorities": ["analytics", "revenuecat", "asc_cli", "feedback", "sentry"],
|
|
79
|
+
"objective": "Analyze total conversion, traffic quality, activation, retention, RevenueCat trials/subscriptions/revenue/churn, source mix, reviews, releases, and stability.",
|
|
80
|
+
"instructions": "Pick one to three high-confidence growth bets with evidence, expected KPI movement, likely code/store surfaces, and verification plan."
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"key": "monthly",
|
|
84
|
+
"title": "Monthly business and product review",
|
|
85
|
+
"intervalDays": 30,
|
|
86
|
+
"criticalOnly": false,
|
|
87
|
+
"focusAreas": ["conversion", "paywall", "retention", "marketing", "onboarding"],
|
|
88
|
+
"sourcePriorities": ["analytics", "revenuecat", "asc_cli", "feedback", "sentry"],
|
|
89
|
+
"objective": "Compare MRR, trial conversion, churn, acquisition quality, store conversion, retention, review themes, feature usage, and crash totals month-over-month.",
|
|
90
|
+
"instructions": "Decide what should be built, changed, or deleted next and explain why it should move revenue, activation, retention, or acquisition quality."
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"key": "quarterly",
|
|
94
|
+
"title": "Quarterly positioning, pricing, and roadmap review",
|
|
95
|
+
"intervalDays": 91,
|
|
96
|
+
"criticalOnly": false,
|
|
97
|
+
"focusAreas": ["marketing", "paywall", "retention", "conversion", "onboarding"],
|
|
98
|
+
"sourcePriorities": ["analytics", "revenuecat", "asc_cli", "feedback"],
|
|
99
|
+
"objective": "Revisit positioning, pricing/packaging, onboarding architecture, roadmap assumptions, tracking quality, and major funnel bets.",
|
|
100
|
+
"instructions": "Find structural constraints and durable opportunities. Tie recommendations to cohort behavior, monetization, reviews, channel quality, and shipped changes."
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"key": "six_months",
|
|
104
|
+
"title": "Six-month instrumentation and growth-system audit",
|
|
105
|
+
"intervalDays": 182,
|
|
106
|
+
"criticalOnly": false,
|
|
107
|
+
"focusAreas": ["retention", "conversion", "paywall", "marketing", "general"],
|
|
108
|
+
"sourcePriorities": ["analytics", "revenuecat", "asc_cli", "feedback", "sentry"],
|
|
109
|
+
"objective": "Audit connector coverage, SDK instrumentation, event taxonomy, data reliability, memory, growth loops, and whether strategy still matches the best users.",
|
|
110
|
+
"instructions": "Prioritize measurement fixes and system changes that make future analysis more trustworthy. Identify stale events, missing attribution, weak identity, and misleading dashboards."
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"key": "yearly",
|
|
114
|
+
"title": "Yearly evidence reset",
|
|
115
|
+
"intervalDays": 365,
|
|
116
|
+
"criticalOnly": false,
|
|
117
|
+
"focusAreas": ["marketing", "retention", "paywall", "conversion", "general"],
|
|
118
|
+
"sourcePriorities": ["analytics", "revenuecat", "asc_cli", "feedback", "sentry"],
|
|
119
|
+
"objective": "Reset strategy from evidence: market/channel fit, monetization model, retention ceiling, product scope, and whether to double down, reposition, rebuild, or sunset major surfaces/features.",
|
|
120
|
+
"instructions": "Use the full year of memory, releases, revenue, acquisition, reviews, code changes, and cohort behavior. Produce strategic experiments and stop-doing decisions."
|
|
121
|
+
}
|
|
122
|
+
]
|
|
123
|
+
},
|
|
124
|
+
"strategy": {
|
|
125
|
+
"proposalMode": "balanced"
|
|
126
|
+
},
|
|
127
|
+
"deliveries": {
|
|
128
|
+
"openclawChat": {
|
|
129
|
+
"enabled": true,
|
|
130
|
+
"markdownPath": ".openclaw/chat/latest.md",
|
|
131
|
+
"jsonPath": ".openclaw/chat/latest.json"
|
|
132
|
+
},
|
|
133
|
+
"github": {
|
|
134
|
+
"enabled": false,
|
|
135
|
+
"mode": "issue",
|
|
136
|
+
"autoCreate": false,
|
|
137
|
+
"draftPullRequests": true,
|
|
138
|
+
"proposalBranchPrefix": "openclaw/proposals"
|
|
139
|
+
},
|
|
140
|
+
"slack": {
|
|
141
|
+
"enabled": false,
|
|
142
|
+
"webhookEnv": "SLACK_WEBHOOK_URL"
|
|
143
|
+
},
|
|
144
|
+
"webhook": {
|
|
145
|
+
"enabled": false,
|
|
146
|
+
"urlEnv": "OPENCLAW_WEBHOOK_URL",
|
|
147
|
+
"method": "POST",
|
|
148
|
+
"headers": {}
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"charting": {
|
|
152
|
+
"enabled": false,
|
|
153
|
+
"command": null
|
|
154
|
+
},
|
|
155
|
+
"notifications": {
|
|
156
|
+
"connectorHealth": {
|
|
157
|
+
"enabled": true,
|
|
158
|
+
"channels": [
|
|
159
|
+
{
|
|
160
|
+
"type": "openclaw-chat",
|
|
161
|
+
"enabled": true,
|
|
162
|
+
"markdownPath": ".openclaw/chat/connector-health.md",
|
|
163
|
+
"jsonPath": ".openclaw/chat/connector-health.json"
|
|
164
|
+
}
|
|
165
|
+
]
|
|
166
|
+
},
|
|
167
|
+
"growthRun": {
|
|
168
|
+
"enabled": true,
|
|
169
|
+
"channels": [
|
|
170
|
+
{
|
|
171
|
+
"type": "openclaw-chat",
|
|
172
|
+
"enabled": true,
|
|
173
|
+
"markdownPath": ".openclaw/chat/growth-summary.md",
|
|
174
|
+
"jsonPath": ".openclaw/chat/growth-summary.json"
|
|
175
|
+
}
|
|
176
|
+
]
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
"security": {
|
|
180
|
+
"connectorSecrets": {
|
|
181
|
+
"mode": "openclaw-secret-refs",
|
|
182
|
+
"persisted": true,
|
|
183
|
+
"agentReadable": "runtime_resolves_secret_refs",
|
|
184
|
+
"secretsFile": "~/.config/openclaw-growth/secrets.env"
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
"secrets": {
|
|
188
|
+
"githubTokenEnv": "GITHUB_TOKEN",
|
|
189
|
+
"githubTokenRef": { "source": "env", "provider": "default", "id": "GITHUB_TOKEN" },
|
|
190
|
+
"analyticsTokenEnv": "ANALYTICSCLI_ACCESS_TOKEN",
|
|
191
|
+
"analyticsTokenRef": { "source": "env", "provider": "default", "id": "ANALYTICSCLI_ACCESS_TOKEN" },
|
|
192
|
+
"revenuecatTokenEnv": "REVENUECAT_API_KEY",
|
|
193
|
+
"revenuecatTokenRef": { "source": "env", "provider": "default", "id": "REVENUECAT_API_KEY" },
|
|
194
|
+
"sentryTokenEnv": "SENTRY_AUTH_TOKEN",
|
|
195
|
+
"sentryTokenRef": { "source": "env", "provider": "default", "id": "SENTRY_AUTH_TOKEN" }
|
|
196
|
+
}
|
|
197
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"window": "last_30d",
|
|
3
|
+
"items": [
|
|
4
|
+
{
|
|
5
|
+
"id": "fb_paywall_confusing",
|
|
6
|
+
"title": "Users say paywall pricing is confusing",
|
|
7
|
+
"area": "paywall",
|
|
8
|
+
"priority": "medium",
|
|
9
|
+
"count": 18,
|
|
10
|
+
"channel": "app_store_reviews",
|
|
11
|
+
"comment": "Multiple users mention they do not understand weekly vs yearly plan differences.",
|
|
12
|
+
"locations": [
|
|
13
|
+
{ "location_id": "paywall/onboarding_offer", "count": 11 },
|
|
14
|
+
{ "location_id": "paywall/settings_restore", "count": 7 }
|
|
15
|
+
],
|
|
16
|
+
"keywords": ["paywall", "pricing", "plans", "subscription"],
|
|
17
|
+
"suggested_actions": [
|
|
18
|
+
"Simplify plan copy and highlight annual savings",
|
|
19
|
+
"Add one sentence on what is included in premium"
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"id": "fb_onboarding_too_long",
|
|
24
|
+
"title": "Onboarding feels too long for first value",
|
|
25
|
+
"area": "onboarding",
|
|
26
|
+
"priority": "medium",
|
|
27
|
+
"count": 12,
|
|
28
|
+
"channel": "support_tickets",
|
|
29
|
+
"comment": "Users ask for faster start and less friction before first result.",
|
|
30
|
+
"locations": [
|
|
31
|
+
{ "location_id": "onboarding/profile_step", "count": 9 },
|
|
32
|
+
{ "location_id": "onboarding/permissions_gate", "count": 3 }
|
|
33
|
+
],
|
|
34
|
+
"keywords": ["onboarding", "friction", "first value"]
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"project": "ring-sizer",
|
|
3
|
+
"window": "last_30d",
|
|
4
|
+
"signals": [
|
|
5
|
+
{
|
|
6
|
+
"id": "trial_to_paid_weekly_drop",
|
|
7
|
+
"title": "Trial-to-paid conversion dropped on weekly package",
|
|
8
|
+
"area": "paywall",
|
|
9
|
+
"priority": "high",
|
|
10
|
+
"metric": "trial_to_paid_weekly",
|
|
11
|
+
"current_value": 0.08,
|
|
12
|
+
"baseline_value": 0.12,
|
|
13
|
+
"delta_percent": -33.3,
|
|
14
|
+
"evidence": [
|
|
15
|
+
"Strongest drop on iOS onboarding entry point",
|
|
16
|
+
"Cancellation spikes before trial ends"
|
|
17
|
+
],
|
|
18
|
+
"suggested_actions": [
|
|
19
|
+
"Clarify weekly package value and show annual savings side-by-side",
|
|
20
|
+
"Add post-trial reminder before renewal date"
|
|
21
|
+
],
|
|
22
|
+
"keywords": ["subscription", "weekly", "trial", "pricing", "paywall"]
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"project": "ring-sizer",
|
|
3
|
+
"window": "last_30d",
|
|
4
|
+
"issues": [
|
|
5
|
+
{
|
|
6
|
+
"id": "sentry_2145",
|
|
7
|
+
"title": "TypeError in purchase callback when closing paywall quickly",
|
|
8
|
+
"priority": "high",
|
|
9
|
+
"impact": "Crash blocks purchase completion",
|
|
10
|
+
"events": 286,
|
|
11
|
+
"users": 103,
|
|
12
|
+
"stack_keywords": ["paywall", "purchase", "callback", "close"],
|
|
13
|
+
"evidence": [
|
|
14
|
+
"Crash appears mostly in first session",
|
|
15
|
+
"Happens within 2-4 seconds after paywall is shown"
|
|
16
|
+
],
|
|
17
|
+
"suggested_actions": [
|
|
18
|
+
"Guard callback state transitions on unmounted paywall components",
|
|
19
|
+
"Add deterministic test for rapid close + purchase tap race condition"
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|