Skip to content
Agent Orchestration
Agent

primitives-and-tools

Sprout exposes capabilities to agents as LLM tools. There are two families: built-in primitives from the kernel and agent-specific workspace tools loaded from root/genome files.

From plugin
sprout
11336 skills36 agents

How it fires

How this agent gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.

Context preview

The summary Claude sees to decide when to auto-load this agent.

Sprout exposes capabilities to agents as LLM tools. There are two families: built-in primitives from the kernel and agent-specific workspace tools loaded from root/genome files.

Agent definition

primitives-and-tools.md

Primitives And Tools

Sprout exposes capabilities to agents as LLM tools. There are two families: built-in primitives from the kernel and agent-specific workspace tools loaded from root/genome files.

Built-In Primitives

Primitives are TypeScript implementations registered in a `PrimitiveRegistry`. Agents receive only the primitives listed in their `tools` frontmatter, except the delegate/wait/message agent tools generated for orchestrators.

Provider alignment happens before tools are sent to the model. For example, OpenAI uses `apply_patch` instead of `edit_file` where needed.

Source of truth:

  • `src/kernel/primitives.ts`
  • `src/agents/plan.ts:primitivesForAgent()`
  • `test/agents/plan.test.ts`

Memory Primitives

Read-only memory tools can be exposed broadly. Archivist-only mutation tools are registered only for the `archivist` agent and enforce write authorization.

Source of truth:

  • `src/genome/memory-tools.ts`
  • `src/genome/memory-write-authorization.ts`
  • `src/genome/memory-write-policy.ts`

Workspace Tools

Workspace tools are files with YAML frontmatter and a script body:

  • `name`
  • `description`
  • `interpreter`
  • optional `display_name`

Tools load from genome first and root second. Genome overrides root on name collision.

Source of truth:

  • `src/genome/genome.ts:saveAgentTool()` and `loadAgentToolsWithRoot()`
  • `src/kernel/tool-loading.ts`

Interpreters

Shell-style tools are piped to the selected interpreter and receive an `args` string as positional arguments. They should not be used for tools that need live Genome access.

`sprout-internal` tools are TypeScript modules imported in-process. They receive: `{ agentName, args, genome, env, projectDataDir, sessionId }`

Use `sprout-internal` for tools that need memory/genome access or structured arguments. Avoid stdin-dependent workflows for agents without shell execution.

Source of truth:

  • `src/kernel/tool-context.ts`
  • `src/kernel/tool-loading.ts`
  • `test/kernel/tool-loading.test.ts`

Tool Boundaries

Tool availability is part of the agent contract. If an agent cannot write files, run commands, or delegate, that boundary is intentional and should be routed through an appropriate specialist instead of bypassed.

Read more
Ships withsprout

A self-improving, multi-agent AI system that decomposes tasks and delegates to specialist agents. Sprout is an autonomous coding assistant built on a recursive agent architecture — where every action is a goal-directed delegation to a subagent.

Get the whole plugin

Other agents on sprout.