Shareable Recipes
Sometimes you finish a task in Goose and realize, "Hey, this setup could be useful again." Maybe you have curated a great combination of tools, defined a clear goal, and want to preserve that flow. Or maybe you're trying to help someone else replicate what you just did without walking them through it step by step.
You can turn your current Goose session into a reusable recipe that includes the tools, goals, and setup you're using right now and package it into a new Agent that others (or future you) can launch with a single click.
Create Recipe
- Goose Desktop
- Goose CLI
- Recipe Generator
Create a recipe from the current session or from a template.
- Current Session
- Template
- While in the session you want to save as a recipe, click the button at the bottom of the app
- Click
Create a recipe from this session
- A dialog opens with automatically generated instructions and activities:
- Provide a title and description for the recipe
- Review the instructions and edit them as needed
- Provide an optional initial prompt to display in the chat box
- Add or remove optional activities to display as buttons
- When you're finished, you can:
- Copy the recipe link to share the recipe with others or open it from the link
- Click
Save Recipe
to save the recipe locally - Click
Create Schedule
to schedule the recipe
- Click the button in the top-left to open the sidebar
- Click the
Recipes
button in the sidebar - Click
Create Recipe
- A dialog opens with placeholder content:
- Provide a title and description for the recipe
- Edit the instructions as needed
- Provide an optional initial prompt to display in the chat box
- Add or remove optional activities to display as buttons
- Provide a recipe name
- Choose to save the recipe with global or directory availability
- Click
Create Recipe
You cannot create a recipe from an existing recipe session, but you can view or edit the recipe.
Recipe files can be either JSON (.json) or YAML (.yaml) files. While in a session, run this command to generate a recipe.yaml file in your current directory:
/recipe
If you want to specify a different name, you can provide it as an argument:
/recipe my-custom-recipe.yaml
recipe file structure
# Required fields
version: 1.0.0
title: $title
description: $description
instructions: $instructions # Define the model's behavior
# Optional fields
prompt: $prompt # Initial message to start with
extensions: # Tools the recipe needs
- $extensions
activities: # Example prompts to display in the Desktop app
- $activities
settings: # Additional settings
goose_provider: $provider # Provider to use for this recipe
goose_model: $model # Specific model to use for this recipe
temperature: $temperature # Model temperature setting for this recipe (0.0 to 1.0)
For detailed descriptions and example configurations of all recipe fields, see the Recipe Reference Guide.
You cannot create a recipe from an existing recipe session - the /recipe
command will not work.
You should validate your recipe to verify that it's complete and properly formatted.
Optional Parameters
You may add parameters to a recipe, which will require users to fill in data when running the recipe. Parameters can be added to any part of the recipe (instructions, prompt, activities, etc).
To use parameters:
- Add template variables using
{{ variable_name }}
syntax in your recipe content - Define each parameter in the
parameters
section of your YAML file
Example recipe with parameters
version: 1.0.0
title: "{{ project_name }} Code Review" # Wrap the value in quotes if it starts with template syntax to avoid YAML parsing errors
description: Automated code review for {{ project_name }} with {{ language }} focus
instructions: You are a code reviewer specialized in {{ language }} development.
prompt: |
Apply the following standards:
- Complexity threshold: {{ complexity_threshold }}
- Required test coverage: {{ test_coverage }}%
- Style guide: {{ style_guide }}
activities:
- "Review {{ language }} code for complexity"
- "Check test coverage against {{ test_coverage }}% requirement"
- "Verify {{ style_guide }} compliance"
settings:
goose_provider: "anthropic"
goose_model: "claude-3-7-sonnet-latest"
temperature: 0.7
parameters:
- key: project_name
input_type: string
requirement: required # could be required, optional or user_prompt
description: name of the project
- key: language
input_type: string
requirement: required
description: language of the code
- key: complexity_threshold
input_type: number
requirement: optional
default: 20 # default is required for optional parameters
description: a threshold that defines the maximum allowed complexity
- key: test_coverage
input_type: number
requirement: optional
default: 80
description: the minimum test coverage threshold in percentage
- key: style_guide
input_type: string
description: style guide name
requirement: user_prompt
# If style_guide param value is not specified in the command, user will be prompted to provide a value, even in non-interactive mode
See the Recipe Reference Guide for more information about recipe fields.
Use the online Recipe Generator tool to create a recipe. First choose your preferred format:
- URL Format: Generates a shareable link that opens a session in the Goose Desktop app
- YAML Format: Generates YAML content that you can save to file and then run in the Goose CLI app
Then fill out the recipe form by providing:
- A title for the recipe
- A description
- A set of instructions for the recipe.
- An optional initial prompt:
- In the Desktop app, the prompt displays in the chat box.
- In the CLI app, the prompt provides the initial message to run. Note that a prompt is required to run the recipe in headless (non-interactive) mode.
- A set of optional activities to display in the Desktop app.
- YAML format only: Optional author contact information and extensions the recipe uses.
Edit Recipe
- Goose Desktop
- Goose CLI
- While in the session that's using the recipe, click the button at the bottom of the app
- Click
View recipe
- Edit any of the following:
- Title
- Description
- Instructions
- Initial prompt
- Activities
- When you're finished, you can:
- Copy the recipe link to share the recipe with others or open it from the link
- Click
Save Recipe
to save the recipe locally - Click
Create Schedule
to schedule the recipe
Once the recipe file is created, you can open it with your preferred text editor and modify the value of any field.
Use Recipe
- Goose Desktop
- Goose CLI
-
Open the recipe using a direct link or manual URL entry, or from your Recipe library:
Direct Link:
- Click a recipe link shared with you
Manual URL Entry:
- Paste a recipe link into your browser's address bar
- Press
Enter
and click theOpen Goose.app
prompt
Recipe Library:
- Click the button in the top-left to open the sidebar
- Click
Recipes
in the sidebar - Find your recipe in the Recipe Library
- Click
Use
next to the recipe you want to open
-
If the recipe contains parameters, enter your values in the
Recipe Parameters
dialog and clickStart Recipe
.Parameters are dynamic values used in the recipe:
- Required parameters are marked with red asterisks (*)
- Optional parameters show default values that can be changed
-
To run the recipe, click an activity bubble or send the prompt.
You can enter parameter values to use in a recipe, but you cannot add parameters to a recipe in Goose Desktop. Parameters can only be defined in recipes created via the CLI.
- Each person gets their own private session
- No data is shared between users
- Your session won't affect the original recipe creator's session
Using a recipe with the Goose CLI might involve the following tasks:
Configure Recipe Location
Recipes can be stored locally on your device or in a GitHub repository. Configure your recipe repository using either the goose configure
command or config file.
- Each recipe should be in its own directory
- Directory name matches the recipe name you use in commands
- Recipe file can be either recipe.yaml or recipe.json
- Using goose configure
- Using config file
Run the configure command:
goose configure
You'll see the following prompts:
┌ goose-configure
│
◆ What would you like to configure?
│ ○ Configure Providers
│ ○ Add Extension
│ ○ Toggle Extensions
│ ○ Remove Extension
│ ● Goose Settings (Set the Goose Mode, Tool Output, Tool Permissions, Experiment, Goose recipe github repo and more)
│
◇ What would you like to configure?
│ Goose Settings
│
◆ What setting would you like to configure?
│ ○ Goose Mode
│ ○ Tool Permission
│ ○ Tool Output
│ ○ Toggle Experiment
│ ● Goose recipe github repo (Goose will pull recipes from this repo if not found locally.)
└
┌ goose-configure
│
◇ What would you like to configure?
│ Goose Settings
│
◇ What setting would you like to configure?
│ Goose recipe github repo
│
◆ Enter your Goose Recipe GitHub repo (owner/repo): eg: my_org/goose-recipes
│ squareup/goose-recipes (default)
└
Add to your config file:
GOOSE_RECIPE_GITHUB_REPO: "owner/repo"
Run a Recipe
- Local Recipe
- GitHub Recipe
Basic Usage - Run once and exit (see run options and recipe commands for more):
# Using recipe file in current directory
goose run --recipe recipe.yaml
# Using full path
goose run --recipe ./recipes/my-recipe.yaml
Preview Recipe - Use the explain
command to view details before running:
Interactive Mode - Start an interactive session:
goose run --recipe recipe.yaml --interactive
The interactive mode will prompt for required values:
◆ Enter value for required parameter 'language':
│ Python
│
◆ Enter value for required parameter 'style_guide':
│ PEP8
With Parameters - Supply parameter values when running recipes. See the run
command documentation for detailed examples and options.
Basic example:
goose run --recipe recipe.yaml --params language=Python
Once you've configured your GitHub repository, you can run recipes by name:
Basic Usage - Run recipes from your configured repo using the recipe name that matches its directory (see run options and recipe commands for more):
goose run --recipe recipe-name
For example, if your repository structure is:
my-repo/
├── code-review/
│ └── recipe.yaml
└── setup-project/
└── recipe.yaml
You would run the following command to run the code review recipe:
goose run --recipe code-review
Preview Recipe - Use the explain
command to view details before running:
Interactive Mode - With parameter prompts:
goose run --recipe code-review --interactive
The interactive mode will prompt for required values:
◆ Enter value for required parameter 'project_name':
│ MyProject
│
◆ Enter value for required parameter 'language':
│ Python
With Parameters - Supply parameter values when running recipes. See the run
command documentation for detailed examples and options.
- Each person gets their own private session
- No data is shared between users
- Your session won't affect the original recipe creator's session
Validate Recipe
- Goose Desktop
- Goose CLI
Recipe validation is only available through the CLI.
Validate your recipe file to ensure it's properly configured. Validation verifies that:
- All required fields are present
- Parameters are properly formatted
- Referenced extensions exist and are valid
- The YAML/JSON syntax is correct
goose recipe validate recipe.yaml
If you want to validate a recipe you just created, you need to exit the session before running the validate
subcommand.
Recipe validation can be useful for:
- Troubleshooting recipes that aren't working as expected
- Verifying recipes after manual edits
- Automated testing in CI/CD pipelines
Share Recipe
- Goose Desktop
- Goose CLI
Share your recipe with Desktop users by copying the recipe URL from the recipe creation dialog. When someone clicks the URL, it will open Goose Desktop with your recipe configuration.
To copy the recipe URL:
- Open the recipe
- Click the button at the bottom of the app
- Click
View recipe
- Scroll down and copy the link
Share your recipe with CLI users by directly sending them the recipe file or converting it to a shareable deep link for Desktop users:
goose recipe deeplink recipe.yaml
Schedule Recipe
- Goose Desktop
- Goose CLI
Automate Goose recipes by running them on a schedule.
- Click the button in the top-left to open the sidebar
- Click
Scheduler
- Click
Create Schedule
- In the dialog that appears:
- Provide a name for the schedule
- Select the source of your recipe. This can be either a
yaml
file or link generated by Goose Desktop. - Select whether you want your recipe to run in the background or foreground execution mode. Recipes run in the background don't open a window, but the session results are saved. Recipes run in the foreground will open a window if the Goose Desktop app is running. Otherwise, the recipe runs in the background.
- Choose the frequency and time to run your recipe. Your selected frequency (e.g. every 20 minutes, weekly at 10 AM on Friday) is converted into a cron expression used by Goose.
- Click
Create Schedule
Your new scheduled recipe is listed in the Scheduler
page. Click on the schedule to view details, see when it was last run, and perform actions with the scheduled recipe:
Run Schedule Now
to trigger the recipe manuallyEdit Schedule
to change the scheduled frequencyPause Schedule
to stop the recipe from running automatically.
At the bottom of the Schedule Details
page you can view the list of sessions created by the scheduled recipe and open or restore each session.
Automate Goose recipes by scheduling them to run with a cron expression.
# Add a new scheduled recipe which runs every day at 9 AM
goose schedule add --id daily-report --cron "0 0 9 * * *" --recipe-source ./recipes/daily-report.yaml
You can use either a 5, 6, or 7-digit cron expression for full scheduling precision, following the format "seconds minutes hours day-of-month month day-of-week year".
See the schedule
command documentation for detailed examples and options.
When scheduling Goose recipes with the CLI, you can use Goose's built-in cron scheduler (default), or the Temporal scheduler (requires the Temporal CLI). Switch from the default legacy scheduler by setting the GOOSE_SCHEDULER_TYPE
environment variable:
export GOOSE_SCHEDULER_TYPE=temporal
Use Temporal scheduling if you want an advanced workflow engine with monitoring features. The scheduling engines do not share schedules, so schedules created with the legacy Goose scheduler cannot be run with the Temporal scheduler, and vice-versa.
Core Components
A recipe needs these core components:
-
Instructions: Define the agent's behavior and capabilities
- Acts as the agent's mission statement
- Makes the agent ready for any relevant task
- Required if no prompt is provided
-
Prompt (Optional): Starts the conversation automatically
- Without a prompt, the agent waits for user input
- Useful for specific, immediate tasks
- Required if no instructions are provided
-
Activities: Example tasks that appear as clickable bubbles
- Help users understand what the recipe can do
- Make it easy to get started
What's Included
A recipe captures:
- AI instructions (goal/purpose)
- Suggested activities (examples for the user to click)
- Enabled extensions and their configurations
- Project folder or file context
- Initial setup (but not full conversation history)
- The model and provider to use when running the recipe (optional)
To protect your privacy and system integrity, Goose excludes:
- Global and local memory
- API keys and personal credentials
- System-level Goose settings
This means others may need to supply their own credentials or memory context if the recipe depends on those elements.
Learn More
Check out the Goose Recipes guide for more docs, tools, and resources to help you master Goose recipes.