Point your agent at the change.
The skill guides your agent through the diff and your app’s existing routes, authentication, fixtures, and data.
THE CHANGE IS THE STORY
Ask your agent to demo the change.
It writes the scenario, checks the outcome, and records the story.
An agent skill. A Playwright library. A repeatable first take.
A release checklist.
One task to ship.
WORKSPACE / RELEASE
Good work deserves a good handoff.
An illustration of the workflow, not a recorded run.Run the real, self-contained demo
LESS “HERE’S WHAT I CHANGED.”
A diff explains the implementation. A demo shows what the change feels like to use.
The skill guides your agent through the diff and your app’s existing routes, authentication, fixtures, and data.
Your agent writes a Playwright scenario with meaningful assertions, then runs it without presentation delays to check the outcome.
The agent records with readable pacing and reports the video, trace, and any limitations. The scenario stays with your app for the next change.
STANDARD LOCATORS. BETTER PRESENTATION.
Presentation delays set the pace. Playwright’s actionability checks and your assertions establish that the app is ready.
Explore the presentation APISet pace: 0 for verification.
Keep the pacing for the recording.
import { test, expect } from "@smeltery/showrunner";
test("save a display name", async ({ page, demo }) => {
await page.goto("/settings/profile");
await demo.caption("Make it yours.");
await demo.fill(
page.getByRole("textbox", { name: "Display name" }),
"River"
);
await demo.click(page.getByRole("button", { name: "Save" }));
await expect(page.getByRole("status"))
.toHaveText("Profile saved");
});Adapt the route and accessible names to your application.
YOUR NEXT PR HAS A STORY.
Give your agent the skill and a change to demonstrate. Keep the scenario with your code.
Set up the agent skillPublic package on GitHub Packages · Release downloads and local builds