From 3735448030a81f53f1d1ce7b42b6b7a849cb3163 Mon Sep 17 00:00:00 2001 From: Gordon Mickel Date: Fri, 19 Jul 2024 09:55:09 +0200 Subject: [PATCH] feat: question creator prompt --- README.md | 30 +++++++++++ bun.lockb | Bin 220789 -> 232367 bytes package.json | 9 ++-- question-prompt.cjs | 121 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 157 insertions(+), 3 deletions(-) create mode 100644 question-prompt.cjs diff --git a/README.md b/README.md index 23392f0..ab405ab 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ Welcome to CodeQuest, the quiz game that's more addictive than trying to fix a b - 🎊 **Confetti**: Celebrate your achievements with a rainbow of confetti! - 🏆 **Score Sharing**: Brag about your big brain energy on social media - 📱 **Responsive Design**: Looks great on everything from your smartwatch to your smart fridge +- 🧙‍♂️ **Question Generation**: Generate question creation prompts to use with your favorite LLM! ## 🎭 Question Features (The Real Stars of the Show) @@ -29,6 +30,35 @@ Welcome to CodeQuest, the quiz game that's more addictive than trying to fix a b Check out `example-question.md` for a comprehensive example of all these features in action! +## 🧙‍♂️ Question Generation (Let AI Do the Heavy Lifting) + +Too busy debugging to craft questions? Fear not! We've conjured up a magical script to help you generate question prompts faster than you can say "Stack Overflow": + +1. Wave your wand (or just type in your terminal): + ``` + bun run question-prompt + ``` + +2. Answer the mystical prompt asking how many questions you desire (choose wisely, young wizard!) + +3. Behold as a perfectly crafted prompt materializes before your eyes! + +4. Feed this prompt to your favorite AI familiar (we recommend Claude 3.5 Sonnet or GPT-4o for best results) and watch in awe as it conjures up quiz questions that would make even Merlin jealous. + +5. Copy the AI-generated questions into new `.md` files in your `src/questions/` directory, and voilà! Your quiz just got a whole lot smarter. + +Want to save your prompt for later? Use the `-o` flag: +``` +bun run question-prompt -o prompt.md +``` + +Need a helping hand? Just ask: +``` +bun run question-prompt -h +``` + +Remember, with great power comes great responsibility. Use this feature wisely, and may your questions be ever engaging and your quizzes eternally awesome! 🧙‍♂️✨ + ## 🚀 Quick Start Guide (No Rocket Science Degree Required) 1. Clone this repo: diff --git a/bun.lockb b/bun.lockb index 9decafb6455cbcd3fe163d30caa8c5a98d4a3b06..6665b14f40dda8604373d760f2ed81059a00d6bd 100755 GIT binary patch delta 44858 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