一键导入
qa-accelerated
Validate all LLM-accelerated GitHub issues through systematic QA testing via Circuit Electron.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Validate all LLM-accelerated GitHub issues through systematic QA testing via Circuit Electron.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | qa-accelerated |
| description | Validate all LLM-accelerated GitHub issues through systematic QA testing via Circuit Electron. |
Validates all issues with accelerated labels through systematic QA testing. This skill complements automated issue implementation by providing rigorous validation before human review.
/qa-accelerated
CRITICAL: This skill never auto-approves or auto-merges PRs. All merges require human approval.
1. Discovery → Find all accelerated issues
2. Planning → Create testing order (dependencies, complexity)
3. Per-Issue → For each issue:
a. Find branch/PR state
b. Checkout branch locally
c. Build and test via Circuit Electron
d. Create/update PR with findings
4. Summary → Report overall status
Find all accelerated issues using GitHub CLI:
# Find issues with any accelerated label
gh issue list --label "accelerated" --json number,title,labels,state --state all
gh issue list --label "accelerated:in-progress" --json number,title,labels,state
gh issue list --label "accelerated:pr-open" --json number,title,labels,state
Combine results and deduplicate by issue number.
For each issue, determine:
accelerated, accelerated:in-progress, accelerated:pr-open)# Find PRs referencing an issue
gh pr list --search "#{issue_number}" --json number,title,headRefName,state
# Find branches matching pattern (convention: {type}/{issue-number}-*)
git fetch origin
git branch -r | grep -E "origin/(feat|fix|refactor|spike|chore)/${issue_number}-"
If no accelerated issues are found, report this and exit.
Create an ordered test plan considering:
PR state priority:
accelerated:pr-open first (PR exists, needs validation)accelerated:in-progress next (work done, may need PR)accelerated last (may not have work yet)Dependency ordering: If issue A depends on issue B, test B first
Skip issues without branches: If no branch exists, note as "No work found"
Present plan to user using AskUserQuestion:
## QA Test Plan for Accelerated Issues
| Order | Issue | Title | State | PR | Branch |
|-------|-------|-------|-------|-----|--------|
| 1 | #38 | Copy-to-clipboard | pr-open | #42 | feat/38-copy |
| 2 | #93 | Suggestion feedback | in-progress | - | feat/93-feedback |
| 3 | #101 | Theme persistence | accelerated | - | (no branch) |
Proceed with this order?
Wait for user confirmation before proceeding.
For each issue in the plan (skip those without branches):
# Check for existing PR
gh pr list --search "#{issue}" --json number,headRefName,state --jq '.[0]'
# If no PR, look for branch
git branch -r | grep -E "origin/(feat|fix|refactor|spike|chore)/${issue}-" | head -1 | sed 's|origin/||' | tr -d ' '
# Kill stale processes first
pkill -f "Electron.app" 2>/dev/null || true
pkill -f "electron-vite" 2>/dev/null || true
# Reap leaked Circuit servers (safe: dead-client orphans only). Runs each issue,
# so a long batch can't accumulate them. See CLAUDE.md › Orphaned Circuit Server Cleanup.
node scripts/reap-circuit.mjs 2>/dev/null || true
# Fetch and checkout
git fetch origin
git checkout <branch>
# Build
npm run build
If build fails:
git checkout mainLoad Circuit Electron tools:
ToolSearch: select:mcp__circuit-electron__app_launch
Launch in development mode:
mcp__circuit-electron__app_launch (
app: "/Users/angelmarino/Code/prose",
mode: "development",
startScript: "dev",
includeSnapshots: false
)
Save the returned sessionId for subsequent commands.
Before testing, read the issue body to understand what to test:
gh issue view <issue_number> --json body,title
For UI features:
evaluate to test interactionsFor bug fixes:
For settings/persistence:
mcp__circuit-electron__closeTake screenshot:
mcp__circuit-electron__screenshot (sessionId: <id>)
Click element by aria-label:
mcp__circuit-electron__evaluate (sessionId: <id>, script: `
const btn = document.querySelector('[aria-label="Button Name"]');
btn?.click();
'clicked'
`)
Get editor content:
mcp__circuit-electron__evaluate (sessionId: <id>, script: `
document.querySelector('.ProseMirror')?.innerText
`)
Open settings (Cmd+,):
mcp__circuit-electron__evaluate (sessionId: <id>, script: `
document.dispatchEvent(new KeyboardEvent('keydown', { key: ',', metaKey: true, bubbles: true }));
'triggered'
`)
Verify dialog content:
mcp__circuit-electron__evaluate (sessionId: <id>, script: `
document.querySelector('[role="dialog"]')?.innerText || 'no dialog'
`)
For each test, record one of:
mcp__circuit-electron__close (sessionId: <id>)
git checkout main
Based on test results and PR state:
Comment on existing PR with test results:
gh pr comment <pr_number> --body "$(cat <<'EOF'
## Automated QA Results
**Issue**: #<issue_number>
**Branch**: `<branch>`
**Tested**: <timestamp>
### Results
| Test | Status | Notes |
|------|--------|-------|
| Build | ✅ | Compiles without errors |
| Launch | ✅ | App starts successfully |
| <Acceptance Criteria 1> | ✅/❌ | <details> |
### Gaps Discovered
- [ ] <Gap 1>
- [ ] <Gap 2>
### Investigation Entry Points
- `<file>:<line>` - <reason>
### Recommendation
✅ **Ready for Review** — All criteria met.
*or*
⚠️ **Needs Work** — Criteria partially met. See gaps above.
*or*
🔴 **Blocked** — Build/test failures. See details above.
EOF
)"
Create PR and comment with passing results:
# Create PR
gh pr create \
--title "<type>(<scope>): <description> (#<issue>)" \
--body "$(cat <<'EOF'
## Summary
<Brief description of changes>
Closes #<issue_number>
## Test Plan
- [x] Automated QA passed (see comment below)
EOF
)"
# Update label
gh issue edit <issue_number> --remove-label "accelerated:in-progress" --add-label "accelerated:pr-open"
Then comment with passing results:
gh pr comment <pr_number> --body "$(cat <<'EOF'
## Automated QA Results - PASSING
**Issue**: #<issue_number>
**Branch**: `<branch>`
**Tested**: <timestamp>
### All Tests Passed ✅
| Test | Status |
|------|--------|
| Build | ✅ |
| Launch | ✅ |
| <Acceptance Criteria 1> | ✅ |
### Ready for Human Review
This PR was created by an automated agent and has passed initial QA.
A human reviewer should verify before merging.
EOF
)"
Create draft PR and comment with gaps:
# Create draft PR
gh pr create \
--title "<type>(<scope>): <description> (#<issue>)" \
--body "$(cat <<'EOF'
## Summary
<Brief description of changes>
Closes #<issue_number>
## Status
⚠️ **Draft** — QA found issues that need addressing.
EOF
)" \
--draft
# Update label
gh issue edit <issue_number> --remove-label "accelerated:in-progress" --add-label "accelerated:pr-open"
Then comment with gaps:
gh pr comment <pr_number> --body "$(cat <<'EOF'
## Automated QA Results - NEEDS WORK
**Issue**: #<issue_number>
**Branch**: `<branch>`
**Tested**: <timestamp>
### Test Results
| Test | Status | Notes |
|------|--------|-------|
| Build | ✅ | |
| Launch | ✅ | |
| <Criteria 1> | ❌ | <what failed> |
### Gaps Discovered
1. **<Gap Title>**
- Expected: <expected behavior>
- Actual: <observed behavior>
- Severity: High/Medium/Low
### Investigation Entry Points
For each gap, potential files to examine:
- `<file>:<line>` - <reason this is relevant>
### Recommendation
🔴 **Draft PR** — Implementation incomplete. Gaps must be addressed before review.
EOF
)"
If build failed, still create issue comment (not PR):
gh issue comment <issue_number> --body "$(cat <<'EOF'
## Automated QA Results - BUILD FAILED
**Branch**: `<branch>`
**Tested**: <timestamp>
### Build Error
```
The implementation on this branch does not build. This needs to be fixed before QA can proceed. EOF )"
## Phase 5: Summary Report
After all issues tested, provide summary to user:
```markdown
## QA Summary for Accelerated Issues
**Tested**: <date>
**Issues**: <total>
### Results
| Issue | Title | Result | PR | Action Taken |
|-------|-------|--------|-----|--------------|
| #38 | Copy buttons | ✅ PASS | #42 | Commented |
| #93 | Feedback | ⚠️ PARTIAL | #45 (draft) | Created draft PR |
| #101 | Theme | ❌ BLOCKED | - | No branch found |
### Statistics
- Passed: <n>
- Partial: <n>
- Failed: <n>
- Blocked: <n>
- Skipped (no branch): <n>
### Human Review Needed
All PRs require human review before merge:
- [ ] PR #42 - Ready for review
- [ ] PR #45 - Needs work (see gaps)
**Reminder**: This skill never auto-merges. All PRs require human approval.
If gh issue list --label "accelerated" returns nothing, check:
--state all to include closed)If no branch matches the pattern:
includeSnapshots: falseevaluate to dispatch KeyboardEventsevaluate to click via JavaScript# Clean and retry
rm -rf out dist node_modules/.cache
npm install
npm run build
# Check authentication
gh auth status
# Ensure correct repo context
gh repo view
Human-in-the-loop QA loop for verifying a large feature or refactor against the locally-running app before merge/release. Use when automated tests (e2e, web-e2e) don't cover the behavioral/UX surface and you need a structured, interactive "you drive / I observe" verification pass with in-session bug fixes. Complements qa-pr (automated, Circuit) and qa-web (Playwright).
Automated QA testing for Prose PRs using Circuit Electron. Use when testing pull requests before merge.
Implement one solo-ist/prose GitHub issue end-to-end and open a PR ready for review. Use when an Oz child agent is assigned exactly one issue to fix or build in this repo.
Reference and checklist for building and maintaining CI/CD workflows, inter-workflow communication, dispatch scripts, and cloud agent infrastructure. Use when modifying any workflow YAML, dispatch script, or sentinel-based communication.
Merge scorer and PE signals to route PRs. Applies routing matrix (hitl-light / hitl-full) based on score thresholds and risk levels.
Principal Engineer architectural risk analysis for PRs. Assesses blast radius, hidden coupling, and privilege boundary concerns. Outputs LOW-CRITICAL risk rating.