goose
goose Recipes: recipe.yaml Format, Parameters and goose run --recipe
How do I write and run a goose recipe?
A recipe is a YAML or JSON file with a title, a description, and instructions or a prompt. Run it with goose run --recipe recipe.yaml and pass values with --params key=value. goose finds recipes in the current folder, in GOOSE_RECIPE_PATH folders, or in a GitHub repo set by GOOSE_RECIPE_GITHUB_REPO.
Minimal recipe
recipe.yaml
version: "1.0.0" title: "Code Review Assistant" description: "Automated code review with best practices" instructions: "You are a code reviewer..." prompt: "Review the code in this repository" extensions: []
- Required: title, description, and at least one of instructions or prompt.
- prompt is required for headless runs.
- version defaults to 1.0.0.
- Optional: activities, extensions, parameters, response, retry, settings, sub_recipes.
- Use .yaml or .json. The CLI does not support .yml files.
Parameters
Parameter block
parameters:
- key: language
input_type: string
requirement: required
description: "Language to review"- Each parameter needs key, input_type, requirement and description.
- input_type: string (default), number, boolean, date, file or select. select also needs options.
- requirement: required, optional or user_prompt.
- optional parameters need a default. required and file parameters cannot have one.
Run a recipe
Shell
goose run --recipe recipe.yaml goose run --recipe ./recipes/my-recipe.yaml goose run --recipe recipe.yaml --interactive goose run --recipe recipe.yaml --params language=Python
For a recipe in your GitHub recipe repo, use its folder name, for example goose run --recipe code-review.
Where goose finds recipes
- The current folder.
- Folders listed in the GOOSE_RECIPE_PATH environment variable.
- A GitHub repo set with GOOSE_RECIPE_GITHUB_REPO in owner/repo format, used when a recipe is not found locally.
- Keep each recipe in its own folder as recipe.yaml or recipe.json.
Settings, response and sharing
- settings can set goose_provider, goose_model, temperature and max_turns.
- response.json_schema validates the final output.
- Make a share link with goose recipe deeplink <FILE> --param key1=value1.
Shell
goose recipe deeplink recipe.yaml --param language=Python
Get goose settings changes by email
When a setting, flag or permission rule in this guide changes, it goes in the weekly AgentAtlas update, checked against the vendor docs. One email a week.
Sources
More on goose
More goose guides
Other guides
Reviewed Oct 13, 2026. Settings change often; the linked vendor docs are the source of truth.