Skip to content
cccskills
FreePublished on GitHub

replay-qa

Replay scripted MCP tool calls against an isolated DevSpace server, then inspect rendered cards and captured evidence in a local MCP Apps host. Use it to check UI and tool behavior, reproduce issues, or compare a base revision with a pull request.

OriginalShow the original description

Replay scripted MCP tool calls against an isolated DevSpace server and inspect the rendered cards in a real MCP Apps host with agent-browser. Use to verify a change, reproduce an issue, review a PR's UI or tool behavior, or QA any checkout without manual testing.

Waishnav/devspace5,308 stars(GitHub 5,308 + cccskills 0)

Run score Not tested

See how to install

Good for

  • Checking whether a change renders MCP cards
  • Reproducing a reported UI or tool issue
  • Reviewing a pull request against a base revision
  • Running a saved QA scenario on another checkout

Files included (1)

  • SKILL.md4.4 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Replay QA

pnpm qa replays scenario tool calls against a fresh DevSpace server, renders every card in a local MCP Apps host, and captures evidence with agent-browser.

Each run is isolated: its own HOME, config, SQLite state, worktree root, allowed root, and Git fixture under .devspace-dev/qa/runs/<timestamp>/<scenario>/. Ports are allocated dynamically, so runs never replace an existing process.

Run

pnpm qa --list                       # scenarios and descriptions
pnpm qa                              # every scenario
pnpm qa codex-edit-review            # one scenario
pnpm qa --theme dark codex-edit-review
pnpm qa --bare-host codex-edit-review   # host sends a theme but no style variables
pnpm qa --checkout ../other-worktree    # QA another checkout with this harness
pnpm qa --no-build ...                  # skip `pnpm build:app` in the target checkout

The exit code is non-zero when a step fails its expectations, a card does not initialize or render, or the page reports errors.

Each run directory contains:

  • report.md: pass/fail per step, card state and height, failures, and screenshot paths. Read this first.
  • transcript.json: the tool list, every request and response, UI resources, and calls the cards made back to the server.
  • server.log: the DevSpace server's JSON log.
  • artifacts/: a full-page screenshot, one screenshot per card, an accessibility snapshot, the browser console, and errors.json.

Look at the screenshots before reporting UI behavior. A passing report means that cards rendered, not that they look right.

Interact with cards

pnpm qa --serve --no-browser codex-edit-review   # prints the host URL and keeps running
export AGENT_BROWSER_SESSION=devspace-qa
agent-browser open "<host url>"
agent-browser wait --fn "window.__devspaceQa?.settled === true"
agent-browser snapshot -i       # card iframes appear inline with their buttons
agent-browser click @e12        # e.g. expand a file in the show_changes card
agent-browser screenshot "#step-3" /tmp/after.png
agent-browser close

Stop the serve process when finished. Card-initiated tool calls go through the host's same-origin /api/call, and are appended to transcript.json and shown under the card.

Write a scenario

Add scripts/qa/scenarios/<name>.json:

{
  "description": "What this proves.",
  "config": { "tools": { "mode": "claude" } },
  "host": { "clientName": "ChatGPT", "userAgent": "openai-mcp/1.0.0" },
  "fixture": {
    "files": { "README.md": "committed\n" },
    "dirty": { "README.md": "uncommitted\n" }
  },
  "steps": [
    { "tool": "open_workspace", "arguments": { "path": "{{fixture}}" } },
    {
      "tool": "exec_command",
      "arguments": { "workspace_id": "{{workspace_id}}", "cmd": "git status --short" },
      "expect": { "text": ["README.md"] }
    }
  ]
}
  • config is deep-merged into the generated config.jsonc, and env adds server environment variables.
  • host sets the OAuth client_name and the HTTP User-Agent the simulated host presents.
  • {{workspace_id}} is the most recent workspace returned by a step.
  • Make each fixture change through tool calls whenever possible, so the scenario exercises the real path.

Comparing base and PR

Create a worktree for each revision, then run the same scenario with --checkout pointing at each one. Report reproduces on base, fixed on PR, or not reproduced. Do not infer this from the diff.

Limits

The local host follows the MCP Apps protocol: a separate sandbox origin, CSP taken from resource metadata, host context, and server tools. It is still not ChatGPT or Claude. Use the real host when a claim depends on host-specific behavior such as window.openai globals, connector caching, OAuth reconnects, or display modes the local host does not implement.

Attach evidence to a pull request

scripts/qa/publish-evidence.sh <pr-number> <run-dir>/artifacts/page.png <run-dir>/artifacts/step-3-show_changes.png

This pushes the images to the orphan branch qa-evidence/pr-<number> and prints Markdown image links. Paste them into the PR body or a comment with the scenario names and the pass/fail lines from report.md.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

setup-qa

FreeSummary

Prepare an isolated local environment for manually testing DevSpace changes. Copy existing settings and state into the current checkout, build interface assets, start the development server, and refresh the test snapshot when needed.

  • Setting up a worktree for local manual testing
  • Checking ChatGPT app, widget, CSS, or icon changes
  • Refreshing the local QA snapshot from normal DevSpace state
Waishnav/devspace5.3KUpdated Oct 30, 2026

subagents

FreeSummary

Delegate a focused coding, research, review, or verification task to a separate DevSpace agent. Choose an available worker, provide a self-contained brief, inspect or wait for results, and continue related work with the same agent.

  • Requesting an independent correctness or security review
  • Investigating a bounded part of a codebase
  • Delegating an isolated change with clear acceptance criteria
Waishnav/devspace5.3KUpdated Oct 30, 2026

workflows

FreeSummary

Run a saved multi-agent workflow from a project name or script, then wait for completion or inspect its calls, events, and status. Workflows support repeatable plans, can resume from saved call history, and are read-only by default unless write mode is enabled.

  • Running a repeatable multi-agent project plan
  • Checking a workflow's current status and call history
  • Resuming an interrupted workflow
Waishnav/devspace5.3KUpdated Oct 30, 2026

See all skills by Waishnav

Report a problem with this skill