Skip to content

docs: add QA Changes use case and SDK workflow guide#431

Draft
xingyaoww wants to merge 2 commits intomainfrom
feat/qa-changes-docs
Draft

docs: add QA Changes use case and SDK workflow guide#431
xingyaoww wants to merge 2 commits intomainfrom
feat/qa-changes-docs

Conversation

@xingyaoww
Copy link
Copy Markdown
Contributor

Summary

Add documentation for the new QA Changes plugin (OpenHands/extensions#135).

Changes

Use Case Page (openhands/usage/use-cases/qa-changes.mdx)

  • Overview of automated QA validation
  • Comparison table: Code Review vs QA Validation
  • Quick Start guide with workflow YAML
  • Composite Action inputs reference
  • Customization guide (custom QA skills, trigger customization)
  • Security considerations
  • Troubleshooting accordion

SDK Workflow Guide (sdk/guides/github-workflows/qa-changes.mdx)

  • Quick Start and Features
  • How QA differs from Code Review (comparison table)
  • Security warning about code execution
  • Custom QA skill example
  • Reference workflow with expandable YAML
  • Action inputs reference
  • Related files links

Navigation (docs.json)

  • Added qa-changes to Use Cases (after code-review)
  • Added qa-changes to SDK GitHub Workflows (after pr-review)

Related

This PR was created by an AI assistant (OpenHands).

Add documentation for the new QA Changes plugin:

- openhands/usage/use-cases/qa-changes.mdx: Use case page with overview,
  quick start, customization, and troubleshooting
- sdk/guides/github-workflows/qa-changes.mdx: SDK guide with reference
  workflow, action inputs, and skill customization
- docs.json: Add both pages to navigation

Co-authored-by: openhands <openhands@all-hands.dev>
@xingyaoww xingyaoww requested review from enyst and mamoodi as code owners April 2, 2026 18:05
@mintlify
Copy link
Copy Markdown

mintlify bot commented Apr 2, 2026

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
all-hands-ai 🟢 Ready View Preview Apr 2, 2026, 6:06 PM

Copy link
Copy Markdown
Contributor

@all-hands-bot all-hands-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Needs improvement - Security vulnerability and broken auto-sync infrastructure. Core content is solid, but the Quick Start workflow is missing critical security controls.

Comment on lines +82 to +86
if: |
(github.event.action == 'opened' && github.event.pull_request.draft == false) ||
github.event.action == 'ready_for_review' ||
github.event.label.name == 'qa-this' ||
github.event.requested_reviewer.login == 'openhands-agent'
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Critical - Security: This workflow is missing author association checks, directly contradicting your security warning at line 197.

The actual source workflow (verified in extensions PR #135) includes:

if: |
  (github.event.action == 'opened' && github.event.pull_request.draft == false && github.event.pull_request.author_association != 'FIRST_TIME_CONTRIBUTOR' && github.event.pull_request.author_association != 'NONE') ||
  (github.event.action == 'ready_for_review' && github.event.pull_request.author_association != 'FIRST_TIME_CONTRIBUTOR' && github.event.pull_request.author_association != 'NONE') ||
  github.event.label.name == 'qa-this' ||
  github.event.requested_reviewer.login == 'openhands-agent'

Without these checks, first-time contributors can automatically trigger code execution, which you explicitly warn against. This is a real security issue, not theoretical.

Comment on lines +82 to +86
if: |
(github.event.action == 'opened' && github.event.pull_request.draft == false) ||
github.event.action == 'ready_for_review' ||
github.event.label.name == 'qa-this' ||
github.event.requested_reviewer.login == 'openhands-agent'
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Critical - Concurrency: Missing concurrency block from the source workflow.

The actual workflow includes:

concurrency:
  group: qa-changes-${{ github.event.pull_request.number }}
  cancel-in-progress: true

Without this, multiple triggers (e.g., label + reviewer request) will spawn concurrent QA runs that interfere with each other and waste compute.

github.event.action == 'ready_for_review' ||
github.event.label.name == 'qa-this' ||
github.event.requested_reviewer.login == 'openhands-agent'
runs-on: ubuntu-latest
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Suggestion: Use ubuntu-24.04 to match the source workflow instead of ubuntu-latest. Pinning the Ubuntu version ensures consistent behavior and avoids surprises when GitHub changes what "latest" means.

Comment on lines +18 to +21
```bash
# 1. Copy workflow to your repository
cp plugins/qa-changes/workflows/qa-changes-by-openhands.yml \
.github/workflows/qa-changes-by-openhands.yml
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 Important - Broken Instructions: This assumes users already have the extensions repo cloned, but that's never explained.

Either:

  1. Change this to reference the GitHub URL directly (recommended):
    curl -o .github/workflows/qa-changes-by-openhands.yml \
      https://raw.githubusercontent.com/OpenHands/extensions/main/plugins/qa-changes/workflows/qa-changes-by-openhands.yml
  2. Add a step to clone the extensions repo first

The former is simpler and matches how users actually consume GitHub Actions workflows.

This example is available on GitHub: [plugins/qa-changes/workflows/](https://github.com/OpenHands/extensions/tree/main/plugins/qa-changes/workflows)
</Note>

```yaml icon="yaml" expandable plugins/qa-changes/workflows/qa-changes-by-openhands.yml
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 Important - Broken Auto-Sync: This uses the code block sync format (plugins/qa-changes/workflows/qa-changes-by-openhands.yml), but your sync infrastructure only works with the agent-sdk repo.

I verified .github/workflows/sync-docs-code-blocks.yml only checks out OpenHands/software-agent-sdk, not OpenHands/extensions. This means:

  1. The workflow YAML won't auto-sync when the extensions repo changes
  2. It will drift over time and become incorrect
  3. Users will copy broken workflows

Fix: Either extend the sync script to support multiple source repos, or remove the file reference and treat this as a manual code block (less ideal, but honest about the maintenance burden).

- CI-aware: check CI first, only run tests CI doesn't cover
- High-bar exercise: browsers, CLI, HTTP requests
- Graceful failure: give up and suggest AGENTS.md guidance
- PARTIAL verdict for incomplete verification

Co-authored-by: openhands <openhands@all-hands.dev>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants