Skip to Content
Configuration.skilled_crew.yaml

.skilled_crew.yaml

The top-level configuration file. Everything else — agents, skills, commands, MCP servers, the script runtime — is referenced from here. Schema defined by SkilledCrewYamlConfigZod in src/config/skilled_crew_yaml/skilled_crew_yaml_zod.ts.

All paths inside the YAML are resolved relative to the .skilled_crew.yaml file itself.

Full shape

version: "1.0" # Schema version id: "my_skillet" # Stable identifier (sessions, cache, cost) commands: # Optional. User-defined slash commands. - name: french filePath: ../dot_claude/commands/french.command.md entryPointAgent: null # Optional. Required when >1 agent. agents: # Map of agent name → definition. my_agent: instructionsPath: ../my_bot/AGENTS.md mcp_servers: - filePath: ../dot_claude/mcp_servers/datetime_mcp.json skills: - name: my-skill folderPath: ../my_bot/skills/my-skill script_runtime: # Where skill scripts run. kind: local # "local" | "container" dockerfile: null # Required if kind = "container"

Top-level keys

KeyTypeDefaultPurpose
versionstring"1.0"Schema version. Bumped on breaking changes.
idstring"skillet-id-unspecified"Used in session paths, cache keys, and cost-tracking buckets. Make it unique per skillet so the cost tracker can roll up calls by skillet.
commandsarray[]Slash commands available during chat. Each entry has name (what the user types after /) and filePath (path to a .command.md file).
entryPointAgentstring | nullnullWhich agent receives user input first. Required when agents has more than one entry. Ignored when there’s exactly one agent.
agentsmap{}Map of agent name → agent definition. See below.
script_runtimeobject{ kind: 'local', dockerfile: null }Where skill scripts execute. See below.

agents.<name>

Each entry under agents defines one agent. The map key is the agent name (used by entryPointAgent and in handoffs).

KeyTypeDefaultPurpose
instructionsPathstring | nullnullPath to the AGENTS.md instructions file. If null, the agent runs with only its skills.
codeWorkerPathstring | nullnullPath to a deterministic code-worker module (.ts/.js). When set, job-lane work routed to this agent runs the module’s exported entry function as plain code — no LLM agent is created. Mutually exclusive with instructionsPath / skills; used for fully deterministic steps such as an approval gate.
mcp_serversarray[]MCP servers exposed as tools to this agent. Each entry has a filePath to a JSON config.
skillsarray[]Skills available to this agent. Each becomes a callable sub-agent. Each entry has a name (must match the skill folder name and the name: in SKILL.md) and a folderPath.

script_runtime

KeyTypeDefaultPurpose
kind"local" | "container""local"local: spawn skill scripts as child processes on the host. container: run them inside a Docker container built from dockerfile. See Container runtime.
dockerfilestring | nullnullPath to a Dockerfile, relative to the .skilled_crew.yaml. Required when kind: container, ignored otherwise.

Validation

The runtime parses your YAML with this Zod schema and rejects anything off-spec — extra keys included (the schema is strict()). The same Zod schema is exported as a JSON Schema for VSCode so editing your .skilled_crew.yaml gets autocomplete and inline validation.

Two real examples

Minimal — one agent, one set of skills, default everything else:

version: "1.0" id: "todo_list" agents: todo_list_agent: instructionsPath: ../dotclaude_todo_list/AGENTS.md skills: - { name: create-task, folderPath: ../dotclaude_todo_list/skills/create-task } - { name: list-tasks, folderPath: ../dotclaude_todo_list/skills/list-tasks } - { name: complete-task, folderPath: ../dotclaude_todo_list/skills/complete-task } - { name: delete-task, folderPath: ../dotclaude_todo_list/skills/delete-task }

With commands and an MCP server:

version: "1.0" id: "bluesky_social_manager" commands: - { name: french, filePath: ../dot_claude/commands/french.command.md } - { name: caveman, filePath: ../dot_claude/commands/caveman.command.md } agents: bluesky_agent: instructionsPath: ../dotclaude_bluesky/AGENTS.md mcp_servers: - { filePath: ../dot_claude/mcp_servers/datetime_mcp.json } skills: - { name: bluesky, folderPath: ../dotclaude_bluesky/skills/bluesky } - { name: hackernews, folderPath: ../dotclaude_bluesky/skills/hackernews } - { name: notion-api, folderPath: ../dotclaude_bluesky/skills/notion-api }

More samples in packages/_skillet_agent/data/skillets/.

Last updated on