From user-testing-agent
Posts formatted user testing results to GitHub PR comments via gh CLI, with update logic, badges, issues, and screenshots. For CI/CD UX feedback on PRs.
How this skill is triggered — by the user, by Claude, or both
Slash command
/user-testing-agent:github-prThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Post user testing results as GitHub PR comments for CI/CD integration.
Post user testing results as GitHub PR comments for CI/CD integration.
gh CLI installed and authenticatedGITHUB_TOKEN is automatically availablepull-requests: write)--pr <number> Post results as comment on PR #<number>
<!-- user-test-results:[persona-id] -->
## User Test Results: [Persona Name]
**Status:** [badge] | **Tested:** [timestamp]
| Metric | Value |
|--------|-------|
| URL | `https://...` |
| Persona | [name] ([id]) |
| Viewport | [viewport] |
| Network | [network] |
| Duration | [duration]s |
### Summary
- Tasks: X/Y completed
- Critical Issues: N
- Major Issues: N
- Minor Issues: N
<details>
<summary>Issues Found (N)</summary>
#### Critical
...
#### Major
...
#### Minor
...
</details>
<details>
<summary>Screenshots</summary>
[Links to screenshots/trace if --record used]
</details>
---
*Tested with [user-testing-agent](https://github.com/ncklrs/claude-chrome-user-testing)*
| Status | Badge | When |
|---|---|---|
| Pass | PASS | All tasks completed, no critical issues |
| Fail | FAIL | Critical issues found or tasks failed |
| Issues | ISSUES | Tasks completed but major/minor issues exist |
gh pr comment $PR_NUMBER --body "$COMMENT_BODY"
Prevents comment spam on re-runs by updating existing comment:
# Marker includes persona ID to allow multiple persona comments
MARKER="<!-- user-test-results:$PERSONA_ID -->"
# Check for existing comment with this marker
EXISTING=$(gh pr view $PR_NUMBER --json comments \
--jq ".comments[] | select(.body | contains(\"$MARKER\")) | .databaseId" \
| head -1)
if [ -n "$EXISTING" ]; then
# Update existing comment
gh api repos/{owner}/{repo}/issues/comments/$EXISTING \
-X PATCH \
-f body="$COMMENT_BODY"
echo "Updated existing comment"
else
# Create new comment
gh pr comment $PR_NUMBER --body "$COMMENT_BODY"
echo "Created new comment"
fi
When running --personas with --pr:
name: User Testing
on:
pull_request:
types: [opened, synchronize]
jobs:
user-test:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- uses: actions/checkout@v4
- name: Deploy Preview
id: deploy
run: |
# Your preview deployment logic
echo "url=https://preview-${{ github.event.pull_request.number }}.example.com" >> $GITHUB_OUTPUT
- name: Install Claude Code
run: npm install -g @anthropic-ai/claude-code
- name: Run User Tests
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
claude --chrome "/user-test \
--url ${{ steps.deploy.outputs.url }} \
--persona genz-digital-native \
--quiet \
--pr ${{ github.event.pull_request.number }}"
- name: Run User Tests with Recording
run: |
claude --chrome "/user-test \
--url ${{ steps.deploy.outputs.url }} \
--persona boomer-tech-averse \
--quiet \
--record \
--pr ${{ github.event.pull_request.number }}"
- name: Upload Trace
uses: actions/upload-artifact@v4
with:
name: playwright-trace
path: "*.trace.zip"
- name: Run Multi-Persona Tests
run: |
claude --chrome "/user-test \
--url ${{ steps.deploy.outputs.url }} \
--personas 'boomer-tech-averse,genz-digital-native,screen-reader-user' \
--quiet \
--pr ${{ github.event.pull_request.number }}"
Error: gh CLI not installed
Skipping PR comment (results still output to stdout)
Error: gh CLI not authenticated
Run 'gh auth login' or ensure GITHUB_TOKEN is set
Skipping PR comment (results still output to stdout)
Error: PR #123 not found
Verify PR number and repository access
Skipping PR comment (results still output to stdout)
--quiet: Reduces noise, focuses on results--record: Provides trace files for debuggingnpx claudepluginhub ncklrs/claude-chrome-user-testing --plugin user-testing-agentResolves GitHub PR issues including review comments, CI failures via triage-dispatch workflow with code edits, replies, and verification.
Reviews pull requests across description, code changes, code scan, and unit tests using parallel subagents, producing a structured verdict report with optional line-level comments.
Orchestrates map-reduce PR reviews: splits changes into units, parallel sub-reviews, synthesizes findings, posts deduplicated comments. Supports CI/CD, visual diffs, confidence gating.