Skip to main content
The reference workflow is available here!
Automatically validate pull request changes by running the code — setting up the environment, exercising changed behavior, and posting a structured QA report. Validations can be triggered in two ways:
  • Adding the qa-this label to the PR
  • Requesting openhands-agent as a reviewer
The reference workflow also triggers automatically on PR open and ready-for-review events for trusted contributors. FIRST_TIME_CONTRIBUTOR and NONE author associations are excluded for security, since the QA agent executes code from the PR.

Quick Start

Features

  • Runs the Code — Goes beyond reading diffs to actually execute the software
  • Four-Phase Methodology — Understand → Setup → Exercise → Report
  • Structured Reports — Posts QA reports with evidence, commands, outputs, and a clear verdict
  • Smart Retries — Tries multiple approaches before giving up, then reports honestly
  • Customizable — Add project-specific QA guidelines via skills or AGENTS.md

How It Differs from PR Review

Security

  • The workflow uses pull_request (not pull_request_target) since the QA agent executes code
  • Fork PRs are automatically skipped with a clear notice (no access to repository secrets)
  • FIRST_TIME_CONTRIBUTOR and NONE author associations are excluded from automatic triggers
  • Maintainers can trigger QA for any PR using the qa-this label

Customizing QA Behavior

Instead of forking the agent script, you can customize QA behavior by adding a skill file to your repository. This is the recommended approach for customization.

How It Works

The QA agent uses skills from the OpenHands/extensions repository by default. You can add project-specific guidelines alongside the default skill by creating a custom skill file.
Skill paths: Place skills in .agents/skills/ (recommended). The legacy path .openhands/skills/ is also supported. See Skill Loading Precedence for details.

Example: Custom QA Skill

Create .agents/skills/qa-guide.md in your repository:
Note: These rules supplement the default qa-changes skill, not replace it.
How skill merging works: Using a unique name like qa-guide allows BOTH your custom skill AND the default qa-changes skill to be triggered by /qa-changes. When triggered, skill content is concatenated into the agent’s context. There is no smart merging — if guidelines conflict, the agent sees both and must reconcile them.If your skill has name: qa-changes (matching the default skill’s name), it will completely override the default skill instead of supplementing it.

Benefits of Custom Skills

  1. No forking required: Keep using the official plugin while customizing behavior
  2. Version controlled: Your QA guidelines live in your repository
  3. Easy updates: Plugin updates don’t overwrite your customizations
  4. Team alignment: Everyone uses the same QA standards
  5. Composable: Add project-specific rules alongside default methodology

Reference Workflow

The QA Changes plugin is available in the extensions repository: OpenHands/extensions/plugins/qa-changes

Action Inputs

Use extensions-version to pin to a specific version tag (e.g., v1.0.0) for production stability, or use main to always get the latest features.