vibefast-cli 0.2.1 → 0.2.3
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/CHANGELOG.md +7 -0
- package/DOCS-CLEANUP-SUMMARY.md +140 -0
- package/DOCS.md +141 -0
- package/ERROR-MESSAGE-CLEANUP.md +64 -0
- package/IMPLEMENTATION-COMPLETE.md +6 -5
- package/MANUAL-STEPS-GUIDE.md +385 -0
- package/MANUAL-STEPS-USER-FLOW.md +231 -0
- package/PLAN-VS-IMPLEMENTATION.md +248 -0
- package/PUBLISHED-0.2.2.md +65 -0
- package/README.md +24 -2
- package/START-HERE.md +115 -0
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +0 -2
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/devices.d.ts.map +1 -1
- package/dist/commands/devices.js +1 -3
- package/dist/commands/devices.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +1 -3
- package/dist/commands/list.js.map +1 -1
- package/dist/core/http.d.ts.map +1 -1
- package/dist/core/http.js +61 -33
- package/dist/core/http.js.map +1 -1
- package/docs/next-steps.md +12 -0
- package/package.json +10 -1
- package/recipes/audio-recorder@latest.zip +0 -0
- package/recipes/charts/apps/native/src/app/charts/index.tsx +3 -0
- package/recipes/charts/apps/native/src/features/charts/app/preview.tsx +3 -0
- package/recipes/charts/apps/native/src/features/charts/components/area-chart.tsx +3 -0
- package/recipes/charts/apps/native/src/features/charts/components/bar-chart.tsx +3 -0
- package/recipes/charts/apps/native/src/features/charts/components/candlestick-chart.tsx +3 -0
- package/recipes/charts/apps/native/src/features/charts/components/chart-card.tsx +3 -0
- package/recipes/charts/apps/native/src/features/charts/components/column-chart.tsx +3 -0
- package/recipes/charts/apps/native/src/features/charts/components/doughnut-chart.tsx +3 -0
- package/recipes/charts/apps/native/src/features/charts/components/index.ts +3 -0
- package/recipes/charts/apps/native/src/features/charts/components/line-chart.tsx +3 -0
- package/recipes/charts/apps/native/src/features/charts/components/radar-chart.tsx +3 -0
- package/recipes/charts/apps/native/src/features/charts/components/radial-bar-chart.tsx +3 -0
- package/recipes/charts/apps/native/src/features/charts/components/stacked-area-chart.tsx +3 -0
- package/recipes/charts/apps/native/src/features/charts/components/stacked-bar-chart.tsx +3 -0
- package/recipes/charts/apps/native/src/features/charts/data/mock-data.ts +3 -0
- package/recipes/charts/apps/native/src/features/charts/types/index.ts +3 -0
- package/recipes/charts/recipe.json +7 -1
- package/recipes/charts@latest.zip +0 -0
- package/recipes/chatbot/apps/native/src/app/chatbot/index.tsx +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/app/index.tsx +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/components/chat-header-buttons.tsx +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/components/chat-input-bar.tsx +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/components/chat-markdown.tsx +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/components/chat-message-bubble.tsx +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/components/chat-settings-modal.tsx +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/components/image-preview-list.tsx +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/components/markdown/code-block.tsx +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/components/markdown/index.ts +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/components/markdown/table-renderer.tsx +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/components/message-error-boundary.tsx +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/components/message-list.tsx +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/components/model-selector.tsx +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/components/report-content-modal.tsx +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/components/suggested-messages.tsx +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/constants/models.ts +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/constants/report-reasons.ts +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/hooks/use-attachment-cache.ts +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/hooks/use-chat-config.ts +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/hooks/use-chat-handlers.ts +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/hooks/use-chatbot-settings.ts +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/hooks/use-conversation.ts +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/hooks/use-image-picker.ts +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/hooks/use-keyboard-coordinator.ts +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/hooks/use-smart-scroll-manager.ts +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/models/index.ts +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/models/models.ts +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/models/providers.ts +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/models/types.ts +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/services/file-uploader.ts +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/services/message-handler-service.ts +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/types/index.ts +1 -0
- package/recipes/chatbot/apps/native/src/features/chatbot/utils/chat-telemetry.ts +1 -0
- package/recipes/chatbot/packages/backend/convex/chatbot/index.ts +30 -0
- package/recipes/chatbot/recipe.json +16 -1
- package/recipes/chatbot@latest.zip +0 -0
- package/recipes/image-generator@latest.zip +0 -0
- package/recipes/quiz@latest.zip +0 -0
- package/recipes/tracker-app@latest.zip +0 -0
- package/recipes/voice-bot@latest.zip +0 -0
- package/scripts/create-recipes.mjs +33 -1
- package/src/commands/add.ts +0 -2
- package/src/commands/devices.ts +1 -3
- package/src/commands/list.ts +1 -3
- package/src/core/http.ts +62 -36
- package/MONITORING-AND-ANNOUNCEMENT-GUIDE.md +0 -669
- package/PRE-PUBLISH-CHECKLIST.md +0 -558
- package/PUBLISHED-SUCCESS.md +0 -282
- package/READY-TO-PUBLISH.md +0 -419
- package/RECIPES-READY.md +0 -172
- package/cloudflare-worker/mini-native@latest.zip +0 -0
- package/cloudflare-worker/test-recipe/apps/native/src/app/mini/index.tsx +0 -15
- package/cloudflare-worker/test-recipe/recipe.json +0 -16
- package/text.md +0 -27
- /package/{AUTO-DETECT-DEPS.md → docs/archive/AUTO-DETECT-DEPS.md} +0 -0
- /package/{FINAL-PACKAGE-STRATEGY.md → docs/archive/FINAL-PACKAGE-STRATEGY.md} +0 -0
- /package/{FINAL-SIMPLE-PLAN.md → docs/archive/FINAL-SIMPLE-PLAN.md} +0 -0
- /package/{FINAL-STATUS.md → docs/archive/FINAL-STATUS.md} +0 -0
- /package/{FLOW-DIAGRAM.md → docs/archive/FLOW-DIAGRAM.md} +0 -0
- /package/{GOTCHAS-AND-RISKS.md → docs/archive/GOTCHAS-AND-RISKS.md} +0 -0
- /package/{IMPLEMENTATION-PLAN.md → docs/archive/IMPLEMENTATION-PLAN.md} +0 -0
- /package/{PLAN.md → docs/archive/PLAN.md} +0 -0
- /package/{PRODUCTION-READINESS.md → docs/archive/PRODUCTION-READINESS.md} +0 -0
- /package/{PRODUCTION-TEST-RESULTS.md → docs/archive/PRODUCTION-TEST-RESULTS.md} +0 -0
- /package/{SIMPLIFIED-PLAN.md → docs/archive/SIMPLIFIED-PLAN.md} +0 -0
- /package/{STATUS.md → docs/archive/STATUS.md} +0 -0
- /package/{SUCCESS.md → docs/archive/SUCCESS.md} +0 -0
- /package/{TEST-SUMMARY.md → docs/archive/TEST-SUMMARY.md} +0 -0
- /package/{TESTING-CHECKLIST.md → docs/archive/TESTING-CHECKLIST.md} +0 -0
- /package/{USER-MODIFICATIONS.md → docs/archive/USER-MODIFICATIONS.md} +0 -0
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
# Manual Steps Guide
|
|
2
|
+
|
|
3
|
+
## What Are Manual Steps?
|
|
4
|
+
|
|
5
|
+
Manual steps are instructions shown to users when a feature requires **external service configuration** that can't be automated. This is for features that need:
|
|
6
|
+
|
|
7
|
+
- API keys from third-party services
|
|
8
|
+
- Account creation on external platforms
|
|
9
|
+
- Environment variables
|
|
10
|
+
- Manual code modifications
|
|
11
|
+
|
|
12
|
+
## When to Use Manual Steps
|
|
13
|
+
|
|
14
|
+
### ✅ Use Manual Steps For:
|
|
15
|
+
|
|
16
|
+
1. **Third-Party Services**
|
|
17
|
+
- Sentry (error tracking)
|
|
18
|
+
- PostHog (analytics)
|
|
19
|
+
- Stripe (payments)
|
|
20
|
+
- OpenAI (AI APIs)
|
|
21
|
+
- Firebase (backend services)
|
|
22
|
+
- Supabase (database)
|
|
23
|
+
|
|
24
|
+
2. **API Keys & Secrets**
|
|
25
|
+
- Any feature requiring API keys
|
|
26
|
+
- OAuth credentials
|
|
27
|
+
- Webhook URLs
|
|
28
|
+
- Service tokens
|
|
29
|
+
|
|
30
|
+
3. **External Accounts**
|
|
31
|
+
- Features requiring user to sign up elsewhere
|
|
32
|
+
- Services with manual approval process
|
|
33
|
+
|
|
34
|
+
### ❌ Don't Use Manual Steps For:
|
|
35
|
+
|
|
36
|
+
1. **Pure UI Components**
|
|
37
|
+
- Charts, graphs, visualizations
|
|
38
|
+
- UI widgets, buttons, forms
|
|
39
|
+
- Navigation components
|
|
40
|
+
- Layout components
|
|
41
|
+
|
|
42
|
+
2. **Self-Contained Features**
|
|
43
|
+
- Quiz app (no external service)
|
|
44
|
+
- Tracker app (local storage)
|
|
45
|
+
- Audio recorder (device only)
|
|
46
|
+
|
|
47
|
+
## How to Add Manual Steps
|
|
48
|
+
|
|
49
|
+
### Recipe Format
|
|
50
|
+
|
|
51
|
+
```json
|
|
52
|
+
{
|
|
53
|
+
"name": "sentry",
|
|
54
|
+
"version": "1.0.0",
|
|
55
|
+
"description": "Error tracking with Sentry",
|
|
56
|
+
"target": "native",
|
|
57
|
+
|
|
58
|
+
"copy": [
|
|
59
|
+
{
|
|
60
|
+
"from": "apps/native/src/features/sentry",
|
|
61
|
+
"to": "apps/native/src/features/sentry"
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
|
|
65
|
+
"dependencies": {
|
|
66
|
+
"expo": ["@sentry/react-native"]
|
|
67
|
+
},
|
|
68
|
+
|
|
69
|
+
"env": [
|
|
70
|
+
{
|
|
71
|
+
"key": "SENTRY_DSN",
|
|
72
|
+
"description": "Your Sentry DSN for error tracking",
|
|
73
|
+
"example": "https://abc123@o123.ingest.sentry.io/456",
|
|
74
|
+
"link": "https://sentry.io/settings/projects/"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"key": "SENTRY_ORG",
|
|
78
|
+
"description": "Your Sentry organization slug",
|
|
79
|
+
"example": "my-company",
|
|
80
|
+
"link": "https://sentry.io/settings/"
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
|
|
84
|
+
"manualSteps": [
|
|
85
|
+
{
|
|
86
|
+
"title": "Create Sentry Account",
|
|
87
|
+
"description": "Sign up at sentry.io and create a new project for your app",
|
|
88
|
+
"link": "https://sentry.io/signup/"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"title": "Get Your DSN",
|
|
92
|
+
"description": "Copy your DSN from Project Settings > Client Keys (DSN)",
|
|
93
|
+
"link": "https://sentry.io/settings/"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"title": "Add Environment Variables",
|
|
97
|
+
"description": "Add SENTRY_DSN and SENTRY_ORG to your .env file",
|
|
98
|
+
"file": ".env",
|
|
99
|
+
"content": "SENTRY_DSN=your-dsn-here\nSENTRY_ORG=your-org-slug"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"title": "Initialize Sentry",
|
|
103
|
+
"description": "Import and initialize Sentry in your app entry point",
|
|
104
|
+
"file": "apps/native/src/app/_layout.tsx",
|
|
105
|
+
"content": "import { initSentry } from '@/features/sentry';\ninitSentry();"
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
|
|
109
|
+
"postInstall": {
|
|
110
|
+
"message": "Sentry is installed! Complete the manual steps to start tracking errors."
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Field Descriptions
|
|
116
|
+
|
|
117
|
+
#### `env` Array
|
|
118
|
+
Each environment variable needs:
|
|
119
|
+
- `key` (required): The env var name (e.g., "SENTRY_DSN")
|
|
120
|
+
- `description` (required): What this variable is for
|
|
121
|
+
- `example` (required): Example value to show format
|
|
122
|
+
- `link` (optional): URL where to get this value
|
|
123
|
+
|
|
124
|
+
#### `manualSteps` Array
|
|
125
|
+
Each step needs:
|
|
126
|
+
- `title` (required): Short step title
|
|
127
|
+
- `description` (required): Detailed instructions
|
|
128
|
+
- `link` (optional): URL for more info or to perform action
|
|
129
|
+
- `file` (optional): File to modify
|
|
130
|
+
- `content` (optional): Code/text to add to the file
|
|
131
|
+
|
|
132
|
+
## User Experience
|
|
133
|
+
|
|
134
|
+
### During Installation
|
|
135
|
+
|
|
136
|
+
When a user runs `vf add sentry`, they see:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
✓ sentry installed successfully!
|
|
140
|
+
ℹ Files added: 5
|
|
141
|
+
|
|
142
|
+
⚠ This feature requires additional packages
|
|
143
|
+
|
|
144
|
+
📦 Required packages:
|
|
145
|
+
• @sentry/react-native
|
|
146
|
+
|
|
147
|
+
Install with:
|
|
148
|
+
npx expo install @sentry/react-native
|
|
149
|
+
|
|
150
|
+
💡 Expo will automatically pick compatible versions
|
|
151
|
+
|
|
152
|
+
⚠ MANUAL STEPS REQUIRED:
|
|
153
|
+
|
|
154
|
+
This feature requires some manual configuration:
|
|
155
|
+
|
|
156
|
+
Step 1: Create Sentry Account
|
|
157
|
+
Sign up at sentry.io and create a new project for your app
|
|
158
|
+
🔗 https://sentry.io/signup/
|
|
159
|
+
|
|
160
|
+
Step 2: Get Your DSN
|
|
161
|
+
Copy your DSN from Project Settings > Client Keys (DSN)
|
|
162
|
+
🔗 https://sentry.io/settings/
|
|
163
|
+
|
|
164
|
+
Step 3: Add Environment Variables
|
|
165
|
+
Add SENTRY_DSN and SENTRY_ORG to your .env file
|
|
166
|
+
📝 File: .env
|
|
167
|
+
Add: SENTRY_DSN=your-dsn-here
|
|
168
|
+
SENTRY_ORG=your-org-slug
|
|
169
|
+
|
|
170
|
+
Step 4: Initialize Sentry
|
|
171
|
+
Import and initialize Sentry in your app entry point
|
|
172
|
+
📝 File: apps/native/src/app/_layout.tsx
|
|
173
|
+
Add: import { initSentry } from '@/features/sentry';
|
|
174
|
+
initSentry();
|
|
175
|
+
|
|
176
|
+
⚠ REQUIRED ENVIRONMENT VARIABLES:
|
|
177
|
+
|
|
178
|
+
SENTRY_DSN
|
|
179
|
+
Your Sentry DSN for error tracking
|
|
180
|
+
Example: https://abc123@o123.ingest.sentry.io/456
|
|
181
|
+
Get it: https://sentry.io/settings/projects/
|
|
182
|
+
|
|
183
|
+
SENTRY_ORG
|
|
184
|
+
Your Sentry organization slug
|
|
185
|
+
Example: my-company
|
|
186
|
+
Get it: https://sentry.io/settings/
|
|
187
|
+
|
|
188
|
+
Add these to your .env file
|
|
189
|
+
|
|
190
|
+
💡 Run 'vf checklist sentry' to see these steps again
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Later Reference
|
|
194
|
+
|
|
195
|
+
User can run `vf checklist sentry` anytime to see the steps again:
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
$ vf checklist sentry
|
|
199
|
+
|
|
200
|
+
Manual setup steps for sentry:
|
|
201
|
+
|
|
202
|
+
Step 1: Create Sentry Account
|
|
203
|
+
Sign up at sentry.io and create a new project for your app
|
|
204
|
+
🔗 https://sentry.io/signup/
|
|
205
|
+
|
|
206
|
+
Step 2: Get Your DSN
|
|
207
|
+
Copy your DSN from Project Settings > Client Keys (DSN)
|
|
208
|
+
🔗 https://sentry.io/settings/
|
|
209
|
+
|
|
210
|
+
...
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Status Command
|
|
214
|
+
|
|
215
|
+
The status command shows which features have pending manual steps:
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
$ vf status
|
|
219
|
+
|
|
220
|
+
Installed features:
|
|
221
|
+
|
|
222
|
+
✓ charts (v1.0.0) - native
|
|
223
|
+
Files: 17
|
|
224
|
+
Installed: 11/14/2024
|
|
225
|
+
|
|
226
|
+
✓ sentry (v1.2.0) - native
|
|
227
|
+
Files: 5
|
|
228
|
+
Installed: 11/14/2024
|
|
229
|
+
⚠ Has manual setup steps (run: vf checklist sentry)
|
|
230
|
+
|
|
231
|
+
Total: 2 feature(s) installed
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## Real-World Examples
|
|
235
|
+
|
|
236
|
+
### Example 1: PostHog Analytics
|
|
237
|
+
|
|
238
|
+
```json
|
|
239
|
+
{
|
|
240
|
+
"name": "posthog",
|
|
241
|
+
"env": [
|
|
242
|
+
{
|
|
243
|
+
"key": "POSTHOG_API_KEY",
|
|
244
|
+
"description": "Your PostHog project API key",
|
|
245
|
+
"example": "phc_abc123xyz",
|
|
246
|
+
"link": "https://app.posthog.com/project/settings"
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"key": "POSTHOG_HOST",
|
|
250
|
+
"description": "PostHog instance URL",
|
|
251
|
+
"example": "https://app.posthog.com",
|
|
252
|
+
"link": "https://posthog.com/docs/getting-started/cloud"
|
|
253
|
+
}
|
|
254
|
+
],
|
|
255
|
+
"manualSteps": [
|
|
256
|
+
{
|
|
257
|
+
"title": "Create PostHog Account",
|
|
258
|
+
"description": "Sign up at posthog.com and create a project",
|
|
259
|
+
"link": "https://app.posthog.com/signup"
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"title": "Get API Key",
|
|
263
|
+
"description": "Copy your Project API Key from Settings",
|
|
264
|
+
"link": "https://app.posthog.com/project/settings"
|
|
265
|
+
}
|
|
266
|
+
]
|
|
267
|
+
}
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### Example 2: Stripe Payments
|
|
271
|
+
|
|
272
|
+
```json
|
|
273
|
+
{
|
|
274
|
+
"name": "stripe-checkout",
|
|
275
|
+
"env": [
|
|
276
|
+
{
|
|
277
|
+
"key": "STRIPE_PUBLISHABLE_KEY",
|
|
278
|
+
"description": "Your Stripe publishable key (starts with pk_)",
|
|
279
|
+
"example": "pk_test_abc123",
|
|
280
|
+
"link": "https://dashboard.stripe.com/apikeys"
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"key": "STRIPE_SECRET_KEY",
|
|
284
|
+
"description": "Your Stripe secret key (starts with sk_) - KEEP SECRET!",
|
|
285
|
+
"example": "sk_test_xyz789",
|
|
286
|
+
"link": "https://dashboard.stripe.com/apikeys"
|
|
287
|
+
}
|
|
288
|
+
],
|
|
289
|
+
"manualSteps": [
|
|
290
|
+
{
|
|
291
|
+
"title": "Create Stripe Account",
|
|
292
|
+
"description": "Sign up at stripe.com and complete account setup",
|
|
293
|
+
"link": "https://dashboard.stripe.com/register"
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
"title": "Get API Keys",
|
|
297
|
+
"description": "Get your test keys from the Stripe Dashboard",
|
|
298
|
+
"link": "https://dashboard.stripe.com/apikeys"
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
"title": "Configure Webhooks",
|
|
302
|
+
"description": "Set up webhook endpoint for payment events",
|
|
303
|
+
"link": "https://dashboard.stripe.com/webhooks"
|
|
304
|
+
}
|
|
305
|
+
]
|
|
306
|
+
}
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### Example 3: OpenAI Integration
|
|
310
|
+
|
|
311
|
+
```json
|
|
312
|
+
{
|
|
313
|
+
"name": "ai-chat",
|
|
314
|
+
"env": [
|
|
315
|
+
{
|
|
316
|
+
"key": "OPENAI_API_KEY",
|
|
317
|
+
"description": "Your OpenAI API key",
|
|
318
|
+
"example": "sk-proj-abc123xyz",
|
|
319
|
+
"link": "https://platform.openai.com/api-keys"
|
|
320
|
+
}
|
|
321
|
+
],
|
|
322
|
+
"manualSteps": [
|
|
323
|
+
{
|
|
324
|
+
"title": "Create OpenAI Account",
|
|
325
|
+
"description": "Sign up at platform.openai.com",
|
|
326
|
+
"link": "https://platform.openai.com/signup"
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
"title": "Add Payment Method",
|
|
330
|
+
"description": "Add a payment method to enable API access",
|
|
331
|
+
"link": "https://platform.openai.com/account/billing"
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
"title": "Generate API Key",
|
|
335
|
+
"description": "Create a new API key from your account settings",
|
|
336
|
+
"link": "https://platform.openai.com/api-keys"
|
|
337
|
+
}
|
|
338
|
+
]
|
|
339
|
+
}
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
## Best Practices
|
|
343
|
+
|
|
344
|
+
### 1. Be Specific
|
|
345
|
+
❌ Bad: "Get your API key"
|
|
346
|
+
✅ Good: "Copy your Project API Key from Settings > API Keys"
|
|
347
|
+
|
|
348
|
+
### 2. Include Links
|
|
349
|
+
Always provide direct links to:
|
|
350
|
+
- Sign up pages
|
|
351
|
+
- Settings pages
|
|
352
|
+
- Documentation
|
|
353
|
+
- API key pages
|
|
354
|
+
|
|
355
|
+
### 3. Show Examples
|
|
356
|
+
Always include example values so users know the format:
|
|
357
|
+
```json
|
|
358
|
+
{
|
|
359
|
+
"example": "https://abc123@o123.ingest.sentry.io/456"
|
|
360
|
+
}
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
### 4. Order Steps Logically
|
|
364
|
+
1. Create account
|
|
365
|
+
2. Get credentials
|
|
366
|
+
3. Add to .env
|
|
367
|
+
4. Initialize in code
|
|
368
|
+
|
|
369
|
+
### 5. Warn About Secrets
|
|
370
|
+
For sensitive keys, add warnings:
|
|
371
|
+
```json
|
|
372
|
+
{
|
|
373
|
+
"description": "Your Stripe secret key (starts with sk_) - KEEP SECRET! Never commit to Git!"
|
|
374
|
+
}
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
## Summary
|
|
378
|
+
|
|
379
|
+
- **Use manual steps** for features requiring external services, API keys, or accounts
|
|
380
|
+
- **Don't use** for pure UI components or self-contained features
|
|
381
|
+
- **Be specific** with instructions and always include links
|
|
382
|
+
- **Show examples** so users know what format to expect
|
|
383
|
+
- Users can run `vf checklist <feature>` anytime to see steps again
|
|
384
|
+
|
|
385
|
+
Your current features (charts, chatbot, quiz, etc.) don't need manual steps because they're self-contained UI components!
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
# How Users Access Manual Steps
|
|
2
|
+
|
|
3
|
+
## The User Journey
|
|
4
|
+
|
|
5
|
+
### Step 1: User Installs a Feature
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
$ vf add sentry
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### Step 2: CLI Shows Manual Steps Automatically
|
|
12
|
+
|
|
13
|
+
After installation completes, the CLI **automatically displays** manual steps:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
✓ sentry installed successfully!
|
|
17
|
+
ℹ Files added: 5
|
|
18
|
+
|
|
19
|
+
⚠ This feature requires additional packages
|
|
20
|
+
|
|
21
|
+
📦 Required packages:
|
|
22
|
+
• @sentry/react-native
|
|
23
|
+
|
|
24
|
+
Install with:
|
|
25
|
+
npx expo install @sentry/react-native
|
|
26
|
+
|
|
27
|
+
💡 Expo will automatically pick compatible versions
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
⚠ MANUAL STEPS REQUIRED:
|
|
31
|
+
|
|
32
|
+
This feature requires some manual configuration:
|
|
33
|
+
|
|
34
|
+
Step 1: Create Sentry Account
|
|
35
|
+
Sign up at sentry.io and create a new project for your app
|
|
36
|
+
🔗 https://sentry.io/signup/
|
|
37
|
+
|
|
38
|
+
Step 2: Get Your DSN
|
|
39
|
+
Copy your DSN from Project Settings > Client Keys (DSN)
|
|
40
|
+
🔗 https://sentry.io/settings/
|
|
41
|
+
|
|
42
|
+
Step 3: Add Environment Variables
|
|
43
|
+
Add SENTRY_DSN to your .env file
|
|
44
|
+
📝 File: .env
|
|
45
|
+
Add: SENTRY_DSN=your-dsn-here
|
|
46
|
+
|
|
47
|
+
⚠ REQUIRED ENVIRONMENT VARIABLES:
|
|
48
|
+
|
|
49
|
+
SENTRY_DSN
|
|
50
|
+
Your Sentry DSN for error tracking
|
|
51
|
+
Example: https://abc123@o123.ingest.sentry.io/456
|
|
52
|
+
Get it: https://sentry.io/settings/projects/
|
|
53
|
+
|
|
54
|
+
Add these to your .env file
|
|
55
|
+
|
|
56
|
+
💡 Run 'vf checklist sentry' to see these steps again
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Key Point:** Users see manual steps **immediately** after installation. They don't need to look for them!
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
### Step 3: User Forgets Steps (Later)
|
|
64
|
+
|
|
65
|
+
A week later, user wants to see the steps again:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
$ vf checklist sentry
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Output:
|
|
72
|
+
```bash
|
|
73
|
+
Manual setup steps for sentry:
|
|
74
|
+
|
|
75
|
+
Step 1: Create Sentry Account
|
|
76
|
+
Sign up at sentry.io and create a new project for your app
|
|
77
|
+
🔗 https://sentry.io/signup/
|
|
78
|
+
|
|
79
|
+
Step 2: Get Your DSN
|
|
80
|
+
Copy your DSN from Project Settings > Client Keys (DSN)
|
|
81
|
+
🔗 https://sentry.io/settings/
|
|
82
|
+
|
|
83
|
+
Step 3: Add Environment Variables
|
|
84
|
+
Add SENTRY_DSN to your .env file
|
|
85
|
+
📝 File: .env
|
|
86
|
+
Add: SENTRY_DSN=your-dsn-here
|
|
87
|
+
|
|
88
|
+
⚠ REQUIRED ENVIRONMENT VARIABLES:
|
|
89
|
+
|
|
90
|
+
SENTRY_DSN
|
|
91
|
+
Your Sentry DSN for error tracking
|
|
92
|
+
Example: https://abc123@o123.ingest.sentry.io/456
|
|
93
|
+
Get it: https://sentry.io/settings/projects/
|
|
94
|
+
|
|
95
|
+
Add these to your .env file
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
### Step 4: User Checks Status
|
|
101
|
+
|
|
102
|
+
User can see which features have pending manual steps:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
$ vf status
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Output:
|
|
109
|
+
```bash
|
|
110
|
+
Installed features:
|
|
111
|
+
|
|
112
|
+
✓ charts (v1.0.0) - native
|
|
113
|
+
Files: 17
|
|
114
|
+
Installed: 11/14/2024
|
|
115
|
+
|
|
116
|
+
✓ sentry (v1.2.0) - native
|
|
117
|
+
Files: 5
|
|
118
|
+
Installed: 11/14/2024
|
|
119
|
+
⚠ Has manual setup steps (run: vf checklist sentry)
|
|
120
|
+
|
|
121
|
+
Total: 2 feature(s) installed
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
The warning `⚠ Has manual setup steps` reminds them!
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Discovery Methods
|
|
129
|
+
|
|
130
|
+
Users can discover manual steps through **3 ways**:
|
|
131
|
+
|
|
132
|
+
### 1. Automatic Display (Primary)
|
|
133
|
+
✅ **Shown immediately after `vf add`**
|
|
134
|
+
- User can't miss it
|
|
135
|
+
- Displayed in a clear, formatted way
|
|
136
|
+
- Includes helpful links
|
|
137
|
+
|
|
138
|
+
### 2. Checklist Command (Reference)
|
|
139
|
+
✅ **Run `vf checklist <feature>` anytime**
|
|
140
|
+
- See steps again later
|
|
141
|
+
- No need to reinstall
|
|
142
|
+
- Stored in journal
|
|
143
|
+
|
|
144
|
+
### 3. Status Command (Discovery)
|
|
145
|
+
✅ **Run `vf status` to see which features need setup**
|
|
146
|
+
- Shows warning indicator
|
|
147
|
+
- Tells user to run checklist command
|
|
148
|
+
- Quick overview
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Example: Complete User Flow
|
|
153
|
+
|
|
154
|
+
### Scenario: User installs Sentry
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
# 1. Install feature
|
|
158
|
+
$ vf add sentry
|
|
159
|
+
|
|
160
|
+
# Output shows manual steps immediately
|
|
161
|
+
⚠ MANUAL STEPS REQUIRED:
|
|
162
|
+
Step 1: Create Sentry Account...
|
|
163
|
+
💡 Run 'vf checklist sentry' to see these steps again
|
|
164
|
+
|
|
165
|
+
# 2. User follows steps, creates account, gets DSN
|
|
166
|
+
|
|
167
|
+
# 3. User adds to .env
|
|
168
|
+
$ echo "SENTRY_DSN=https://abc@xyz.ingest.sentry.io/123" >> .env
|
|
169
|
+
|
|
170
|
+
# 4. Week later, user forgets DSN format
|
|
171
|
+
$ vf checklist sentry
|
|
172
|
+
|
|
173
|
+
# Shows steps again with example format
|
|
174
|
+
Example: https://abc123@o123.ingest.sentry.io/456
|
|
175
|
+
|
|
176
|
+
# 5. User checks all installed features
|
|
177
|
+
$ vf status
|
|
178
|
+
|
|
179
|
+
Installed features:
|
|
180
|
+
✓ sentry (v1.2.0) - native
|
|
181
|
+
⚠ Has manual setup steps (run: vf checklist sentry)
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## For Features WITHOUT Manual Steps
|
|
187
|
+
|
|
188
|
+
Most features (charts, chatbot, quiz) don't need manual steps:
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
$ vf add charts
|
|
192
|
+
|
|
193
|
+
✓ charts installed successfully!
|
|
194
|
+
ℹ Files added: 17
|
|
195
|
+
|
|
196
|
+
⚠ This feature requires additional packages
|
|
197
|
+
|
|
198
|
+
📦 Required packages:
|
|
199
|
+
• @shopify/react-native-skia
|
|
200
|
+
• react-native-svg
|
|
201
|
+
|
|
202
|
+
Install with:
|
|
203
|
+
npx expo install @shopify/react-native-skia react-native-svg
|
|
204
|
+
|
|
205
|
+
# No manual steps shown - just install packages and you're done!
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Summary
|
|
211
|
+
|
|
212
|
+
**Users access manual steps through:**
|
|
213
|
+
|
|
214
|
+
1. **Automatic display** - Shown right after `vf add` (can't miss it!)
|
|
215
|
+
2. **`vf checklist <feature>`** - See steps again anytime
|
|
216
|
+
3. **`vf status`** - Reminder that steps exist
|
|
217
|
+
|
|
218
|
+
**No searching required!** The CLI guides users through the entire process.
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## For Recipe Creators
|
|
223
|
+
|
|
224
|
+
When you create a recipe with manual steps:
|
|
225
|
+
|
|
226
|
+
1. Add `manualSteps` and `env` to recipe.json
|
|
227
|
+
2. CLI automatically shows them after installation
|
|
228
|
+
3. CLI stores them in journal for later reference
|
|
229
|
+
4. Users can access them anytime with `vf checklist`
|
|
230
|
+
|
|
231
|
+
See [MANUAL-STEPS-GUIDE.md](MANUAL-STEPS-GUIDE.md) for details on creating recipes with manual steps.
|