skills/ folder. Everything else is
optional and added when a skill needs it.
The minimum
This is a complete, trainable agent:Everything a project can hold
Each optional file is added only when a skill needs it:What makes it a Mantle project
The engine is chosen by layout rather than by a config key. A project is Mantle when it has anintegrations.yml and at least one skills/*/skill.md.
That glob is one level deep, so a skill folder sits directly under skills/.
Agent root
A skill folder
The folder name is the skill id. A skill in
skills/card_replace/ is
@skill.card_replace in prose and session.card_replace.<entry> in memory,
whatever its frontmatter name: says.
Declared or discovered
The difference decides whether a tool is usable without any config:- A skill’s own tools are auto-discovered from
tools.pyandtools/*.pyin that folder. Nothing to declare. Within one skill, atools/*.pydefinition shadows a same-named one intools.py. - Shared tools in the agent-root
tools/folder must be named in the skill’simport_tools. A shared tool that is not declared is not attached to the skill. - MCP tools use
mcp/<server-id>:<tool-name>inimport_tools. Only listed tools are attached; see Import MCP tools. - On a name collision between skill-local and shared tools, the skill-local tool
wins. An MCP bare name that collides with either fails
rasa train.
What ships in the trained model
rasa train copies agent.yml, integrations.yml, memory.yml,
responses.yml, and the skills/, tools/, and references/ directories into
the model archive.
Two consequences worth knowing:
- The reference index is built at train time, so adding or editing a file under
any
references/folder needs a retrain before the agent can answer from it. - The model group named by
orchestrator.model_group, pluschannels:andmcp_servers:, are read from your project directory at runtime. Changing the models inside that group, a channel, or an MCP connection only needs a restart. Changing which grouporchestrator.model_groupnames needs a retrain.
Files the scaffold adds
rasa init --engine mantle also writes AGENTS.md, context for your coding
agent, and .env, holding your keys. Neither is read by the engine: .env
supplies environment variables referenced with ${VAR}, and AGENTS.md is
for your IDE.
It also writes .rasa/docs/mantle/, a local copy of this documentation for your
coding agent to search. The engine never reads it, and deleting it only means
your agent has to fetch the reference over the network instead. Restore it with
rasa tools init docs mantle.
See also
- Getting Started: scaffold a project and build the first skill
- skill.md: the contract for the one required file
- Authoring files: JSON Schema for the authoring files