Run BDD scenarios and file the proof. Trigger: executing scenarios, test evidence, screenshots, QA results on a work item.
67
84%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
A scenario run that leaves nothing behind is a claim, not a result. This is how to run one so the outcome survives the session: what to capture, where to put it, and how to file it against the work item.
Read the Then. Whatever it asserts is what you must observe — that decides the tool, not habit.
The Then asserts | Run it as | Why |
|---|---|---|
| A status code, payload, or persisted record | HTTP call | A browser adds a rendering layer between you and the assertion, and every flake it brings is yours to debug |
| Something the user sees, reaches, or is told | Browser | The rendering is the behaviour |
| A log line, metric, or emitted event | Trigger it any way, assert on the log/metric | The UI may look fine while the side effect never fired |
Never assert on a fixed sleep. Wait for the condition — see condition-based-waiting.
One directory per run, referenced by path in every report:
.evidence/<run-id>/
report.md verdict per scenario + failure detail
<scenario-slug>.png the screenshot at the assertion
<scenario-slug>.http request and response for API scenarios
<scenario-slug>.log the log excerpt around a failureThe screenshot goes at the moment of the assertion, not at the end of the run. A green screen captured afterwards proves the app survived; it says nothing about the step that mattered. For a failure, capture before any cleanup or navigation — the state that failed is the evidence, and it is gone one click later.
Name files after the scenario, not screenshot-1. Six months from now the name is all anyone has.
Capture straight to a file and cite it by path. Do not pull screenshots back into the session to "check" them: an image costs thousands of tokens, a run carries one per scenario, and the request grows until the provider rejects it outright — HTTP 413, losing the whole run rather than one step.
Read an image back only to diagnose a specific failure, one at a time. The same goes for page dumps and log tails: capture the whole thing to the file, quote only the lines that carry the failure.
The evidence exists so a person can look at it. You do not have to.
Scope every query to the run window. A whole day of logs is not evidence, it is a haystack.
Local (Docker):
docker compose logs --since 5m --no-log-prefix <service>
docker logs --since 5m <container> # bare containerShared environment (Grafana MCP): query Loki over the run window, filtered to the service and to error level first. Widen only if that comes back empty. Check the error-rate and latency panels for the same window — a scenario that passed while the error rate tripled is a finding too.
If nothing is containerised and there is no aggregator, say where the logs actually are rather than reporting none.
Results belong on the ticket, not only in the chat. Use the ado skill.
Every run gets a comment on the parent work item: the verdict line per scenario, the run id, and where the evidence lives. Work item comments are HTML — a Markdown summary goes wrapped in <pre>...</pre> so the line breaks survive. The ado skill's templates reference has the rule.
ado wi comment <parent-id> --comment "<run summary>"Every failing scenario gets its own Bug, child of the same parent:
ado wi create-child --parent <parent-id> --type Bug --title "<scenario name> fails: <what happened>"One Bug per scenario, never one Bug listing five failures — they get fixed by different people at different times, and a shared ticket closes when the first one is done. The body carries: the scenario as written, expected versus actual, the evidence paths, and the log excerpt.
Do not file a Bug for a scenario that is blocked (the environment was down, a dependency was missing). That is not a defect in the change; report it as blocked and say what stopped it.
If work item creation is disabled for the project, put the same content in the report and say the Bugs were not filed.
PASS for a step you could not observe. That verdict is BLOCKED.YoizenSA/dev-ai-workflow
36f5af5
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.