ask-matt
無料Ask which skill or flow fits your situation. A router over the skills in this repo.
日本語の概要は準備中です。原文の説明を表示しています。
Write or edit tests for a voice agent that can run on the Egma platform.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Use npx skills update write-voice-agent-tests to update the project/global version of this skill installed on the developer's machine.
An Egma Test describes one situation that a voice agent should handle and the expected behaviors that should hold during that situation. Tests are grouped inside Suites. Each Test runs once for every Persona named in it.
A Suite and its Tests do not store the Agent or Connection they run against. The Agent and Connection are selected later when starting a Run.
Currently, Egma supports these voice agents platforms - retell, livekit-agents (python/ js) framework & pipecat (python).
We need to do three things to create good tests:
egma/config.yaml exists.egma init. This initializes the repository and pulls its current Egma state.egma pull before deciding whether a Suite needs to be created.egma/tests/ is one Suite. Its suite.yaml file holds the Suite ID and display name.egma suite create appointment-booking --name "Appointment booking"This is one of the most crucial step. Here you should read the voice agent’s prompt, tools, the overall harness that makes this voice agent behave the way it does (example multiple subagents, context strategies, etc) and any crucial metadata the voice agent should have before a production session startup path before writing Tests such as organisation name, tenant ID, locale, or agent configuration.
Important concepts to know before writing them:
A. One Test is one situation
B. Each scenario has one or more personas
egma persona list find the available persona names/ their IDs. If several personas could be appropriate, choose one or two most appropriate by default.C. Expected behaviors
D. Mock tools
answer for a successful resulterror for a failed/erronous resultawait simulation(worker, runner_args) from egma.pipecat answers mock tools; see the Pipecat Python SDK guide. Mock any tool the bot's LLM can call, whether it was registered with register_function or given in the LLM context.pipecat.flows). Egma does not mock Flows functions, and a simulation whose test mocks one fails when the flow first offers that function. Unmocked Flows functions run for real and are recorded, so write behaviors about them instead.E. Session initiation data
## Env section of each test to supply curated data that makes the most sense for that test.retell_dynamic_variables in the env section to supply any inbound webhook and dynamic variables data used by the agent. Egma passes it as is to the retell agent as its dynamic variables.job_dispatch_metadata in the env section. for values the LiveKit agent reads from ctx.job.metadata. Make sure the code of the livekit agent is able to read the needed data from ctx.job.metadata. If the agent must detect whether its running in an Egma simulation, you can add a check when ctx.room.name starts with egma-sim-.pipecat_body_params in the env section for values the bot reads from runner_args.body (for example runner_args.body.get("tenant")). It is a JSON object and its values can be any JSON (not only strings). Egma merges it into the body of the start request it sends for each simulation, the same body a production client sends, so the bot reads it exactly as in production.
egma inside pipecat_body_params is reserved: Egma adds its own egma key to every start request, and a test that holds one is refused on egma push. Name the key something else.egma key to detect a simulation in the bot; the egma SDK handles it.You can now actually start writing the tests. A test can be created by simply creating a new md file in a suite directory. Once all tests are created, push them to the platform using egma push.
A test file should look like this:
---
format: 5
name: booking-happy-path
description: The caller wants to book an available appointment.
personas:
- name: Everyday person
---
## Scenario
Call the recepionist to book an appointment at medspa "ABC" but ask for a specific provider "XYZ" and be flexible around dates but you don't know which treatment is right for your skin and so first you'd like to discuss some options but you're someone who's not very decisive.
## Expected behaviors
1. The agent walks the patient through avaialble options. It calls get_available_treatments tool before quoting any treatments and does not hallucinate anything that wasn't provided by the tool call.
2. The agent calls check_providers tool before suggesting a provider.
3. The agent calls the check_availability tool to get the appointment slots. it passes the right provider_id which the patient selected and offer slots in the default 7 day window.
## Mock tools
### check_availability
```json
{
"answer": {
"slots": [
"Wednesday 15:00",
"Wednesday 16:30"
]
}
}
```
## Env
```json
{
"retell_dynamic_variables": {
"clinic_name": "Youth Medspa, Walnut Creek branch",
"assistant_name": "Emily"
},
"job_dispatch_metadata": {
"clinic_name": "Youth Medspa, Walnut Creek branch",
"assistant_name": "Emily"
},
"pipecat_body_params": {
"clinic_name": "Youth Medspa, Walnut Creek branch",
"assistant_name": "Emily"
}
}
```
The above example shows retell_dynamic_variables, job_dispatch_metadata & pipecat_body_params only for reference. In reality, you should only supply the field corresponding to the platform the agent is built on.
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Ask which skill or flow fits your situation. A router over the skills in this repo.
日本語の概要は準備中です。原文の説明を表示しています。
Re-explain the previous assistant message in a much simpler way — for when the reply made you go 'bro what'. Use /bro to get a plain-language version of the last answer.
日本語の概要は準備中です。原文の説明を表示しています。
Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes — Standards (does the code follow this repo's documented coding standards?) and Spec (does the code match what the originating issue/spec asked for?). Runs both reviews in parallel sub-agents and reports them side by side. Use when the user wants to review a branch, a PR, work-in-progress changes, or asks to "review since X".
日本語の概要は準備中です。原文の説明を表示しています。
Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.
日本語の概要は準備中です。原文の説明を表示しています。
Drive one ticketed effort through parallel implementation, independent review, serial integration, and one open pull request.
日本語の概要は準備中です。原文の説明を表示しています。
Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.
日本語の概要は準備中です。原文の説明を表示しています。