Automate OpenRouter API Key Distribution for External Recipe Contributors (#3198)
Co-authored-by: w. ian douglas <ian.douglas@iandouglas.com>
This commit is contained in:
@@ -0,0 +1,147 @@
|
||||
# 🍳 Contributing Recipes to Goose Cookbook
|
||||
|
||||
Thank you for your interest in contributing to the Goose Recipe Cookbook! This guide will walk you through the process of submitting your own recipe.
|
||||
|
||||
## 💰 Get Rewarded
|
||||
|
||||
**Approved recipe submissions receive $10 in OpenRouter LLM credits!** 🎉
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
1. [Fork this repository](https://github.com/block/goose/fork)
|
||||
2. Add your recipe file here: `documentation/src/pages/recipes/data/recipes/`
|
||||
3. Create a pull request
|
||||
4. Include your email, in the PR description for credits
|
||||
5. Get paid when approved & merged! 💸
|
||||
|
||||
## 📋 Step-by-Step Guide
|
||||
|
||||
### Step 1: Fork the Repository
|
||||
|
||||
Click the **"Fork"** button at the top of this repository to create your own copy.
|
||||
|
||||
### Step 2: Create Your Recipe File
|
||||
|
||||
1. **Navigate to**: `documentation/src/pages/recipes/data/recipes/`
|
||||
2. **Create a new file**: `your-recipe-name.yaml`
|
||||
3. **Important**: Choose a unique filename that describes your recipe
|
||||
|
||||
**Example**: For a web scraping recipe, create `web-scraper.yaml`
|
||||
|
||||
### Step 3: Write Your Recipe
|
||||
|
||||
Use this template structure:
|
||||
|
||||
```yaml
|
||||
# Required fields
|
||||
version: 1.0.0
|
||||
title: "Your Recipe Name" # Should match your filename
|
||||
description: "Brief description of what your recipe does"
|
||||
instructions: "Detailed instructions for what the recipe should accomplish"
|
||||
author:
|
||||
contact: "your-github-username"
|
||||
extensions:
|
||||
- type: builtin
|
||||
name: developer
|
||||
activities:
|
||||
- "Main activity 1"
|
||||
- "Main activity 2"
|
||||
- "Main activity 3"
|
||||
prompt: |
|
||||
Detailed prompt describing the task step by step.
|
||||
|
||||
Use {{ parameter_name }} to reference parameters.
|
||||
|
||||
Be specific and clear about what should be done.
|
||||
|
||||
# Optional fields
|
||||
parameters:
|
||||
- key: parameter_name
|
||||
input_type: string
|
||||
requirement: required
|
||||
description: "Description of this parameter"
|
||||
value: "default_value"
|
||||
- key: optional_param
|
||||
input_type: string
|
||||
requirement: optional
|
||||
description: "Description of optional parameter"
|
||||
default: "default_value"
|
||||
```
|
||||
|
||||
📚 **Need help with the format?** Check out the [Recipe Reference Guide](https://block.github.io/goose/docs/guides/recipes/recipe-reference) or [existing recipes](documentation/src/pages/recipes/data/recipes/) for examples.
|
||||
|
||||
### Step 4: Create a Pull Request
|
||||
|
||||
1. **Commit your changes** in your forked repository
|
||||
2. **Go to the original repository** and click "New Pull Request"
|
||||
3. **Fill out the PR template** - especially include your email for credits!
|
||||
|
||||
**Important**: Make sure to include your email in the PR description:
|
||||
|
||||
```markdown
|
||||
**Email**: your.email@example.com
|
||||
```
|
||||
|
||||
### Step 5: Wait for Review
|
||||
|
||||
Our team will:
|
||||
1. ✅ **Validate** your recipe automatically
|
||||
2. 👀 **Review** for quality and usefulness
|
||||
3. 🔒 **Security scan** (if approved for review)
|
||||
4. 🎉 **Merge** and send you $10 credits!
|
||||
|
||||
## ✅ Recipe Requirements
|
||||
|
||||
Your recipe should:
|
||||
|
||||
- [ ] **Work correctly** - Test it before submitting
|
||||
- [ ] **Be useful** - Solve a real problem or demonstrate a valuable workflow
|
||||
- [ ] **Follow the format** - Refer to the [Recipe Reference Guide](https://block.github.io/goose/docs/guides/recipes/recipe-reference)
|
||||
- [ ] **Have a unique filename** - No conflicts with existing recipe files
|
||||
|
||||
### 📝 **Naming Guidelines:**
|
||||
- **Filename**: Choose a descriptive, unique filename (e.g., `web-scraper.yaml`)
|
||||
- **Title**: Should match your filename (e.g., `"Web Scraper"`)
|
||||
|
||||
## 🔍 Recipe Validation
|
||||
|
||||
Your recipe will be automatically validated for:
|
||||
|
||||
- ✅ **Correct YAML syntax**
|
||||
- ✅ **Required fields present**
|
||||
- ✅ **Proper structure**
|
||||
- ✅ **Security compliance**
|
||||
|
||||
If validation fails, you'll get helpful feedback in the PR comments.
|
||||
|
||||
## 🎯 Recipe Ideas
|
||||
|
||||
Need inspiration? Consider recipes for:
|
||||
|
||||
- **Web scraping** workflows
|
||||
- **Data processing** pipelines
|
||||
- **API integration** tasks
|
||||
- **File management** automation
|
||||
- **Code generation** helpers
|
||||
- **Testing** and validation
|
||||
- **Deployment** processes
|
||||
|
||||
## 🆘 Need Help?
|
||||
|
||||
- 📖 **Browse existing recipes** for examples
|
||||
- 💬 **Ask questions** in your PR
|
||||
- 🐛 **Report issues** if something isn't working
|
||||
- 📚 **Check the docs** at [block.github.io/goose](https://block.github.io/goose/docs/guides/recipes/)
|
||||
|
||||
## 🤝 Community Guidelines
|
||||
|
||||
- Be respectful and helpful
|
||||
- Follow our code of conduct
|
||||
- Keep recipes focused and practical
|
||||
- Share knowledge and learn from others
|
||||
|
||||
---
|
||||
|
||||
**Ready to contribute?** [Fork the repo](https://github.com/block/goose/fork) and start creating!
|
||||
|
||||
*Questions? Ask in your PR or hop into [discord](https://discord.gg/block-opensource) - we're here to help!* 💙
|
||||
Reference in New Issue
Block a user