You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: improve CLI UX with enhanced post-scaffold guidance and clearer prompts
Addresses DOC-10676, DOC-10677, and DOC-10679 by improving the CLI user experience
with clearer messaging, better explanations, and actionable next steps.
Changes:
- Add comprehensive post-scaffold checklist with visual separators and example prompts
- Clarify upload preset setup with explanation of what it is and how to configure it
- Enhance AI context files section with usage instructions and example prompts
- Add proper singular/plural handling for "file" vs "files" based on actual count
- Make action items more specific and aligned with documentation
- Remove confusing/irrelevant messaging
The CLI now provides clear, actionable guidance at each step to help users
get started quickly and understand how to leverage AI assistants effectively.
Made-with: Cursor
Copy file name to clipboardExpand all lines: cli.js
+58-14Lines changed: 58 additions & 14 deletions
Original file line number
Diff line number
Diff line change
@@ -178,8 +178,9 @@ async function main() {
178
178
name: 'hasUploadPreset',
179
179
message:
180
180
'Do you have an unsigned upload preset?\n'+
181
-
chalk.gray(' → You’ll need one if you want to upload new images to Cloudinary,\n but not if you only want to transform or deliver existing images.')+'\n'+
182
-
chalk.gray(' → Create one here: https://console.cloudinary.com/app/settings/upload/presets')+'\n',
181
+
chalk.gray(' → An unsigned upload preset allows users to upload files directly from your app.')+'\n'+
182
+
chalk.gray(' → Create one here: https://console.cloudinary.com/app/settings/upload/presets')+'\n'+
183
+
chalk.gray(' (Set signing mode to "Unsigned" when creating)\n'),
183
184
default: false,
184
185
},
185
186
{
@@ -362,19 +363,30 @@ async function main() {
362
363
console.log(chalk.green('✅ Project created successfully!\n'));
363
364
364
365
if(aiTools&&aiTools.length>0){
365
-
console.log(chalk.cyan('📋 AI assistant files created:'));
console.log(chalk.gray(`\n ${fileCount===1 ? 'This file teaches' : 'These files teach'} your AI assistant about Cloudinary patterns and best practices.`));
382
+
console.log(chalk.gray(`\n 💡 How to use ${fileCount===1 ? 'this file' : 'these files'}:`));
383
+
console.log(chalk.gray(' • Simply open your project in your AI assistant - the configuration is already loaded'));
384
+
console.log(chalk.gray(' • Ask your AI to help build Cloudinary features, and it will follow these patterns'));
385
+
console.log(chalk.gray(' • Example prompts: "Add image upload", "Create a transformation gallery"\n'));
373
386
}
374
387
375
388
if(!answers.hasUploadPreset){
376
389
console.log(chalk.yellow('\n📝 Note: Upload preset not configured'));
377
-
console.log(chalk.gray(' • Transformations will work with sample images'));
378
390
console.log(chalk.gray(' • Uploads require an unsigned upload preset'));
379
391
console.log(chalk.cyan('\n To enable uploads:'));
380
392
console.log(chalk.cyan(' 1. Go to https://console.cloudinary.com/app/settings/upload/presets'));
@@ -397,12 +409,33 @@ async function main() {
397
409
398
410
if(startDev){
399
411
console.log(chalk.blue('🚀 Starting development server...\n'));
412
+
console.log(chalk.cyan.bold('━'.repeat(60)));
413
+
console.log(chalk.cyan.bold('🎉 Your Cloudinary React app is now running!\n'));
414
+
console.log(chalk.white('Next steps:'));
415
+
console.log(chalk.gray(' 1. Open your browser and navigate to the URL shown below'));
416
+
console.log(chalk.gray(' 2. Check out the generated AI context files for helpful prompts'));
417
+
console.log(chalk.gray(' 3. Start building! Try asking your AI assistant:'));
418
+
console.log(chalk.green(' → "Add an image upload feature"'));
419
+
console.log(chalk.green(' → "Create a gallery with transformations"'));
0 commit comments