Skip to main content
Every agent ships six skills the engine runs itself, plus a few responses that are not tied to one skill. The model does not pick these skills from the normal menu. You hear them as the greeting policy, the wrap-up, the resume offer, a satisfaction question, a decline, or a silence check-in. Two ways to change them:
  • Replace the wording. Declare the same response name in your project responses.yml. See Where the file lives.
  • Replace the skill. Add skills/<skill id>/ with the same id. The project skill replaces the bundled one. Keep routing.engine_managed: true. Omitting the key keeps the bundled value. Setting it to false also offers the skill on the normal menu; the engine still treats that skill id as the lifecycle skill. Training rejects false on default_unsupported_request_handler.
Each section shows the files that ship with the skill. Skill responses ship with rephrase: true, so the model may paraphrase them. The packaged responses in Other packaged responses do not, except utter_hangup_goodbye.

Session start

default_session_start runs at the start of a session and does not speak. It has no bundled greeting to override. To make the agent speak first, replace this skill and have the channel send /session_start. To let the user speak first, leave the bundled skill as it is. See Start a conversation.
skills/default_session_start/skill.md
This skill has no memory.yml and no responses.yml.

Completed

default_completed runs when a skill you wrote finishes or is cancelled and nothing else is left on the stack. It does not run after another default skill. It asks whether the user wants more help. If they do, the agent asks what they need and can activate that skill. If they do not, this skill links to Customer satisfaction.
skills/default_completed/skill.md
skills/default_completed/memory.yml
skills/default_completed/responses.yml

Continue interrupted

default_continue_interrupted runs after a digression, when a paused task can be resumed. It asks whether to continue. If the user agrees, the paused skill continues from the same step. Otherwise it is dropped. See Interruptions. When this skill activates, the engine writes interrupted_task_name with a readable label for the paused skill (its name, or its name plus description). If that label cannot be stored, the prompt uses “your previous request”. Keep interrupted_task_name in memory.yml if you replace this skill.
skills/default_continue_interrupted/skill.md
skills/default_continue_interrupted/memory.yml
skills/default_continue_interrupted/responses.yml

Customer satisfaction

default_customer_satisfaction collects a score and thanks the user. Completed links here when the user does not want more help. It is not chosen by ordinary routing. conversation.before_end in agent.yml is a separate list of skill ids rendered into the routing prompt. An example there uses this skill’s id. That list is not what starts the bundled skill.
skills/default_customer_satisfaction/skill.md
skills/default_customer_satisfaction/memory.yml
skills/default_customer_satisfaction/responses.yml

Unsupported request

default_unsupported_request_handler runs when the model calls cannot_help. Routing never activates it. The engine sets request_type to in_domain_out_of_scope or out_of_domain_out_of_scope. Both are requests the agent will not handle. The value picks the message.
skills/default_unsupported_request_handler/skill.md
skills/default_unsupported_request_handler/memory.yml
skills/default_unsupported_request_handler/responses.yml

Silence timeout

default_silence_timeout runs when the user has been silent for the configured timeout. Voice runs the main block three times, then on the next timeout runs the hangup block: goodbye, then hang up. Any user speech resets that counter. The retry count is not configurable. See conversation.
skills/default_silence_timeout/skill.md
skills/default_silence_timeout/responses.yml
This skill has no memory.yml.

Other packaged responses

These names live in the packaged defaults, not in one of the skills above. Override them the same way: declare the name in your own responses.yml. rephrase on the three turn-error names is ignored. utter_hangup_goodbye honours rephrase when you set it.