بنقرة واحدة
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 المهني
Validate all LLM-accelerated GitHub issues through systematic QA testing via Circuit Electron.
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.
| 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
# 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