Goal
Leave with a practice loop: simulate, tighten a control lever, re-inspect — assisted by a coding agent that understands Skills files.
Project context for coding agents
Skills are files. A coding agent that can edit a repo can iterate on them. Point it at the companion’s AGENTS.md and .cursor/rules/rasa-skills.mdc.
Minimal instructions (also in the companion):
This project is a Rasa Skills agent. Skills live under skills/<name>/ as
skill.md files with optional tools.py, references/, memory.yml, responses.yml.
Before editing a skill, understand the control levers: tool_constraints,
requires, requires_confirmation, if: markers, ordered_block, utter.
Conditions are expressions with fully namespaced memory, for example
session.flight_status.booking_ref or session.project.authenticated.
Put skill-owned tools in skills/<name>/tools.py. Share via tools/ +
import_tools only when two or more skills need the same function.
After changing a skill, run make validate and make inspect.
Useful prompts:
- “Gate cancel_booking so it only appears once a booking is selected.”
- “This skill should ask before submitting — add requires_confirmation.”
- “Split change_booking so find_booking is a reusable @skill.”
Keep a human in the loop
Coding agents apply known levers well. They are not a substitute for talking to the agent afterward. Especially for constraints and prerequisites: those change what the LLM is allowed to do, so failures look different from a wording mistake.
The conversation flywheel
- Write a skill from your best guess
- Simulate conversations in Inspector (happy path, then break it)
- Deploy when ready — real traffic surfaces phrasing you did not invent
- Review transcripts; add a constraint or tighten instructions
- Re-simulate with cases informed by production
Each turn makes the next simulation more realistic.
Closing exercise
- Deliberately break a happy path (skip confirmation wording, change bag details mid-flow)
- Add one tighter constraint or confirmation utterance
make train && make inspect- Confirm the failure mode is gone
What you built
| Capability | Skill |
|---|---|
| Orientation | intro |
| FAQ | trip_faq |
| Itinerary | check_itinerary |
| Flight status | flight_status |
| Baggage report | report_baggage |
| Auth + change | authenticate, find_booking, change_booking |
| Handoff / close | human_handoff, goodbye |
| Voice | Deepgram ASR + TTS via Inspector |
Where to go next
- Companion repo: rasa-voice-agent-tutorial
- Showcase on this site: /showcase/
- Voice failure modes course: Why Voice AI Agents Fail
- Production channels beyond Inspector: see Rasa speech integration docs for your telephony stack
You now have the Skills progressive-control spectrum and a voice harness you can reuse in any domain.
