跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

Summon Extension

Load sources and delegate tasks to subagents

The Summon extension lets you load reusable task sources into goose's context and delegate work to subagents.

You can load different types of sources:

  • Recipes - Automated task definitions with prompts and parameters
  • Agents - Reusable agent definitions stored in agent directories
  • Subrecipes - Recipe-local tasks available from the current recipe

This is useful when you want goose to reuse a task definition, hand work to another agent, or run read-only research in parallel. Skills are loaded by the separate Skills platform extension.

This extension is available in v1.25.0+.

Configuration

goose Desktop

goose CLI

  1. Run the configure command:
goose configure
  1. Choose to Toggle Extensions
┌   goose-configure 
│
◇  What would you like to configure?
│  Toggle Extensions 
│
◆  Enable extensions: (use "space" to toggle and "enter" to submit)
// highlight-start    
│  ● summon
// highlight-end  
└  Extension settings updated successfully

Example Usage

In this example, we'll create a reusable recipe and use Summon to delegate it to a subagent.

Create a Recipe

.agents/recipes/release-notes.yaml
title: Release Notes
description: Draft release notes from recent git changes
instructions: |
  Review the recent git history and changed files.
  Write concise release notes with:
  - user-facing changes
  - fixes
  - migration notes, if any
prompt: Draft release notes for the current branch.

goose Prompt

Use summon to delegate the release-notes recipe for this branch.

goose Output

─── delegate | summon ───────────────────────────────────────
source: release-notes

The release-notes subagent reviewed the branch and drafted release notes:

## User-facing changes
- Added support for configuring project-specific extensions.
- Improved error messages when extension startup fails.

## Fixes
- Fixed stale extension state after disabling an extension.

Common Summon Commands

Ask goose to use Summon in natural language, or call the tools directly:

load()
load(source: "release-notes")
delegate(source: "release-notes")
delegate(instructions: "Review these docs and report stale links")

Calling load() with no arguments lists available sources. delegate waits for the subagent to finish and returns its result.