dimos run demo-skill (dimos/agents/skills/demo_skill.py): one skill container, McpServer, McpClient, nothing else. We build the same shape.
1. Write the skill container
A skill container is an ordinaryModule whose methods are decorated with @skill:
- The docstring is the tool schema. The LLM decides when to call
greetbased only on this text. - Parameters are JSON-serializable primitives; the return value is a
strthe LLM reads. - Return what happened, not “ok”. The agent plans its next step from your return value.
2. Compose a blueprint
Wire the container together with the two MCP modules:3. Run it and verify the tool exists - no LLM yet
greet tool should be in the list with the docstring as its description. Now call it directly:
Hello, Ada!, the entire skill surface works: module deployed, RPC wired, MCP schema generated, tool callable. No model was involved. Debug at this layer - any problem here is a real bug, cheaply reproducible, with no LLM noise on top.
4. Now add the LLM
greet tool, calls it with name="Ada", excited=true, reads the return value, and replies.
If the agent does not pick your skill, the fix is almost always the docstring or the system prompt, not the code. Make the docstring say when to use the skill, and if you run a robot stack with a custom prompt, mention the new capability there: McpClient.blueprint(system_prompt=...).
5. Register it (optional)
To run your stack asdimos run my-agent instead of python my_blueprint.py:
- In the dimos repo: add a module-level blueprint variable and regenerate the registry:
pytest dimos/robot/test_all_blueprints_generation.py - In your own package: declare an entry point in the
dimos.blueprintsgroup - see Blueprints.
The checklist, generalized
This is the full path for any physical agent, in order. Each step is verifiable on its own:- Working non-agent robot stack first (
dimos run <robot>behaves). - Robot actions behind modules with RPC and
Specs. - Skills wrapping those actions: docstring, simple types, informative string returns.
- Skill container in the blueprint.
McpServer+McpClientwith a system prompt matched to the real skill set.- Prove with
dimos mcp list-toolsandmcp call- no LLM. - Then
agent-sendand the web chat. - Register the blueprint.
