runlisted
Install: claude install-skill elwizard33/qa-my-app
# /qa-my-app:run — Execute one task
## Project context
- Task id: `$ARGUMENTS`
- Task file: !`ls QA-tests/tasks/$ARGUMENTS*.md 2>/dev/null | head -1`
- Catalog present: !`test -f QA-tests/catalog.json && echo YES || echo NO`
## Runtime settings
| Setting | Value |
|---|---|
| Dev URL | `${user_config.dev_url}` |
| Browser channel | `${user_config.browser_channel}` |
| Headless | `${user_config.browser_headless}` |
| Settle ms | `${user_config.settle_ms}` |
| Auth mode | `${user_config.auth_mode}` |
## Instructions
Locate the task file matching `$ARGUMENTS`. If none found, list available task ids and stop.
### Phase 1 — Prepare run directory
1. Generate `runId` as a UTC ISO-8601 timestamp with `:` replaced by `-` (example: `2026-05-28T14-22-11Z`).
2. Resolve `runDir = QA-tests/results/runs/<runId>/<taskId>` and create it (`mkdir -p`).
3. Write `QA-tests/results/runs/<runId>/run.json`:
```json
{
"runId": "<runId>",
"startedAt": "<ISO-8601>",
"filter": "$ARGUMENTS",
"settingsSnapshot": { ...effective user_config values... },
"tasks": [{ "taskId": "<id>", "taskFile": "<path>", "route": "<route>" }]
}
```
### Phase 2 — Dispatch the runner
**Resolve per-role credentials first.** When `auth_mode` is `per-role`, load the credential map (secrets interpolated from env vars):
```bash
node "${CLAUDE_PLUGIN_ROOT}/scripts/auth-resolve.mjs" --json
```
Use the returned `roles` object as `credentialsByRole`. If the file is absent (`present: false`)