From Claude Setup
Runs a full QA pipeline: launches app-scout for project recon, then tests the app via browser interaction, produces a QA report, and generates Playwright E2E tests for regression.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-setup:qa [--fresh] [scope or feature to test — leave empty to test everything][--fresh] [scope or feature to test — leave empty to test everything]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are orchestrating the QA pipeline. Follow these steps strictly in order.
You are orchestrating the QA pipeline. Follow these steps strictly in order.
The test scope (optional — empty means test everything):
$ARGUMENTS
Run the following in Bash to determine the branch-scoped QA output directory:
RAW_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "")
if [ -z "$RAW_BRANCH" ] || [ "$RAW_BRANCH" = "HEAD" ]; then
SHORT_SHA=$(git rev-parse --short HEAD 2>/dev/null || echo "")
RAW_BRANCH=${SHORT_SHA:+detached-$SHORT_SHA}
fi
if [ -z "$RAW_BRANCH" ]; then
echo "Warning: not a git repo — using qa-output/ as QA output directory" >&2
QA_OUTPUT_DIR="qa-output"
else
SANITIZED=$(echo "$RAW_BRANCH" | tr '/' '-' | tr -cs 'A-Za-z0-9._-' '-' | sed 's/^-*//; s/-*$//')
[ -z "$SANITIZED" ] && SANITIZED="unknown-branch"
QA_OUTPUT_DIR="qa-output/$SANITIZED"
fi
Store QA_OUTPUT_DIR as a session variable — use it everywhere below.
Use Bash to run rm -rf "$QA_OUTPUT_DIR" to clear only this branch's QA artifacts from a previous run.
Parse flags: If $ARGUMENTS starts with --fresh, set FRESH=true and strip --fresh to get the clean scope. Otherwise FRESH=false. Store the cleaned scope as QA_SCOPE; use QA_SCOPE everywhere below instead of raw $ARGUMENTS.
Check whether to run app-scout:
find .claude/app-context.md -mmin -60 2>/dev/nullFRESH=false: Use it directly — skip launching app-scout. Proceed to Step 1.--fresh was passed): Launch the app-scout agent using the Task tool with:
subagent_type: "app-scout"Perform project recon. Write your findings to .claude/app-context.md.Wait for it to complete. If the agent fails or the file is not created, log a warning and proceed without it — this is a best-effort step.
Read .claude/app-context.md (from Step 0.5). Build the qa-agent prompt as follows (if .claude/app-context.md does not exist, omit the App Context section but always include QA_OUTPUT_DIR):
Test scope: $QA_SCOPE (if empty: test all major flows)
QA_OUTPUT_DIR=$QA_OUTPUT_DIR
Write all outputs (report, screenshots, etc.) under this branch-scoped directory.
## App Context (from pre-recon)
The following was pre-discovered about this project. Use the start command and
URL from this context. Re-check running status yourself.
<full content of .claude/app-context.md>
Launch the qa-agent using the Task tool with:
subagent_type: "qa-agent"$QA_OUTPUT_DIR expanded)Wait for it to complete.
Read $QA_OUTPUT_DIR/qa-report.md and summarize to the user:
## QA Complete
**Scope:** <what was tested>
**Results:** N passed · N failed · N warnings
**Critical issues:**
- [list from report, or "None found"]
**Outputs:**
- Full report: $QA_OUTPUT_DIR/qa-report.md
- E2E tests: <list files written>
- Run tests: playwright test
If $QA_OUTPUT_DIR/qa-report.md does not exist, report that the QA agent failed to complete and show any error output.
npx claudepluginhub nickmaglowsch/claude-setup --plugin claude-setupQA tests web apps, native macOS/Electron apps, CLI tools, REPLs via browser/Playwright, computer-use screenshots/clicks, or tmux modes. Delivers health scores, bug fixes, ship-readiness reports.