documentation/docs/guides/recipes/storing-recipes.md
import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import { PanelLeft, ChefHat } from 'lucide-react';
This guide covers storing, organizing, and finding goose recipes when you need to access them again later.
:::info Desktop UI vs CLI
Before saving recipes, it's important to understand where they can be stored and how this affects their availability.
| Type | Location | Availability | Best For |
|---|---|---|---|
| Global | ~/.config/goose/recipes/ | All projects and sessions | Personal workflows, general-purpose recipes |
| Local | YOUR_WORKING_DIRECTORY/.goose/recipes/ | Only when working in that project | Project-specific workflows, team recipes |
Choose Global Storage When:
Choose Local Storage When:
Save New Recipe:
Save Recipe to save it to your Recipe LibrarySave Modified Recipe:
If you're already using a recipe and want to save a modified version:
Save Recipe:::info When you modify and save a recipe with a new name, a new recipe and new link are generated. You can still run the original recipe from the recipe library, or using the original link. If you edit a recipe without changing its name, the version in the recipe library is updated, but you can still run the original recipe via link. :::
</TabItem> <TabItem value="cli" label="goose CLI">When you [create a recipe](/docs/guides/recipes/recipe-reference), it gets saved to:
* Your working directory by default: `./recipe.yaml`
* Any path you specify: `/recipe /path/to/my-recipe.yaml`
* Local project recipes: `/recipe .goose/recipes/my-recipe.yaml`
:::note
The CLI saves recipes as `.yaml` files. While the CLI can run recipes in `.json` format, it does not provide an option to save recipes as JSON.
:::
1. Click the <PanelLeft className="inline" size={16} /> button in the top-left to open the sidebar
2. Click `Recipes` in the sidebar
3. Click `Import Recipe`
4. Choose your import method:
- To import via a link: Under `Recipe Deeplink`, paste in the [recipe link](/docs/guides/recipes/session-recipes#share-via-recipe-link)
- To import via a file: Under `Recipe File`, click `Choose File`, select a recipe file, and click `Open`
5. Click `Import Recipe` to save a copy of the recipe to your Recipe Library
:::warning Recipe File Format
goose Desktop accepts .yaml, .yml, and .json files, but the CLI only supports .yaml and .json. For full compatibility across both interfaces, avoid .yml extensions.
All recipe formats follow the same schema structure. :::
</TabItem> <TabItem value="cli" label="goose CLI"> Recipe import is only available in goose Desktop. </TabItem> </Tabs>Access Recipe Library:
Recipes to view your Recipe Library:::info Desktop vs CLI Recipe Discovery The Desktop Recipe Library displays all recipes you've explicitly saved or imported. It doesn't automatically discover recipe files from your filesystem like the CLI does. :::
</TabItem> <TabItem value="cli" label="goose CLI">Use the goose recipe list command to find all available recipes from multiple sources:
Basic Usage
# List all available recipes
goose recipe list
# Show detailed information including titles and full paths
goose recipe list --verbose
# Output in JSON format for automation
goose recipe list --format json
Recipe Discovery Process
goose searches for recipes in the following locations (in order):
. (looks for *.yaml and *.json files)GOOSE_RECIPE_PATH environment variable~/.config/goose/recipes/ (or equivalent on your OS)./.goose/recipes/GOOSE_RECIPE_GITHUB_REPO environment variable is configuredExample Output
Default text format:
$ goose recipe list
Available recipes:
goose-self-test - A comprehensive meta-testing recipe - local: ./goose-self-test.yaml
hello-world - A sample recipe demonstrating basic usage - local: ~/.config/goose/recipes/hello-world.yaml
job-finder - Find software engineering positions - local: ~/.config/goose/recipes/job-finder.yaml
Verbose mode:
$ goose recipe list --verbose
Available recipes:
goose-self-test - A comprehensive meta-testing recipe - local: ./goose-self-test.yaml
Title: goose Self-Testing Integration Suite
Path: ./goose-self-test.yaml
hello-world - A sample recipe demonstrating basic usage - local: ~/.config/goose/recipes/hello-world.yaml
Title: Hello World Recipe
Path: /Users/username/.config/goose/recipes/hello-world.yaml
JSON format for automation:
[
{
"name": "goose-self-test",
"source": "Local",
"path": "./goose-self-test.yaml",
"title": "goose Self-Testing Integration Suite",
"description": "A comprehensive meta-testing recipe"
},
{
"name": "hello-world",
"source": "GitHub",
"path": "recipes/hello-world.yaml",
"title": "Hello World Recipe",
"description": "A sample recipe demonstrating basic usage"
}
]
Configuring Recipe Sources
Add custom recipe directories:
export GOOSE_RECIPE_PATH="/path/to/my/recipes:/path/to/team/recipes"
goose recipe list
Configure GitHub recipe repository:
export GOOSE_RECIPE_GITHUB_REPO="myorg/goose-recipes"
goose recipe list
See the Environment Variables Guide for more configuration options.
Manual Directory Browsing (Advanced)
If you need to browse recipe directories manually:
# List recipes in default global location
ls ~/.config/goose/recipes/
# List recipes in current project
ls .goose/recipes/
# Search for all recipe files
find . -name "*.yaml" -path "*/recipes/*" -o -name "*.json" -path "*/recipes/*"
:::tip
The goose recipe list command is the recommended way to find recipes as it automatically searches all configured sources and provides consistent formatting.
:::
RecipesUse to run it immediatelyPreview to see the recipe details first, then click Load Recipe to run itOnce you've located your recipe file, run the recipe or open it in goose Desktop.
:::tip Format Compatibility The CLI can run recipes saved from goose Desktop without any conversion. Both CLI-created and Desktop-saved recipes work with all recipe commands. :::
</TabItem> </Tabs>