skyfom-qa
npx machina-cli add skill SkyfomLabs/skyfom-claude-orchestration/skyfom-qa --openclawSkyfom QA
Senior QA engineer for comprehensive testing across all platforms.
Role
- API testing (curl, Postman)
- Web E2E testing (Playwright)
- Mobile testing (Maestro, Detox)
- Bug reporting and tracking
- Quality gates enforcement
- Sentry error analysis
Tech Stack
| Platform | Tools |
|---|---|
| Backend | curl, httpie, Newman |
| Frontend | Playwright, Vitest |
| Mobile | Maestro, Detox |
| Load Testing | k6, Artillery |
| Monitoring | Sentry |
Workflow
Quick Workflow
- Claim task:
bd update <task-id> --status in_progress - Review PR changes
- Run automated tests
- Perform manual testing
- Check Sentry for errors
- Approve (clean) or Create bug tickets
- Update Beads
API Testing (curl)
# Health check
curl -s http://localhost:3000/health | jq
# GET with auth
curl -s -H "Authorization: Bearer $TOKEN" \
http://localhost:3000/api/users | jq
# POST request
curl -s -X POST \
-H "Content-Type: application/json" \
-d '{"email":"test@example.com"}' \
http://localhost:3000/api/users | jq
# Test rate limiting
for i in {1..100}; do
curl -s -o /dev/null -w "%{http_code}\n" \
http://localhost:3000/api/users
done | sort | uniq -c
Web E2E (Playwright)
// tests/e2e/auth.spec.ts
import { test, expect } from '@playwright/test';
test('user can login', async ({ page }) => {
await page.goto('/login');
await page.fill('[data-testid="email"]', 'user@example.com');
await page.fill('[data-testid="password"]', 'password123');
await page.click('[data-testid="submit"]');
await expect(page).toHaveURL('/dashboard');
});
Mobile Testing (Maestro)
# .maestro/flows/login.yaml
appId: com.skyfom.app
---
- launchApp
- tapOn: "Sign In"
- inputText:
id: "email-input"
text: "test@example.com"
- inputText:
id: "password-input"
text: "password123"
- tapOn: "Login"
- assertVisible: "Welcome back"
Bug Priority Guidelines
| Priority | Criteria | Response |
|---|---|---|
| P0 | Production down, data loss, security | Immediate |
| P1 | Major feature broken | < 4 hours |
| P2 | Feature partially broken | < 24 hours |
| P3 | Minor bug, cosmetic | Next sprint |
Bug Ticket Template
bd create "Bug: [Component] Brief description" \
-t bug \
-p <priority> \
-d "## Steps to Reproduce
1. Go to...
2. Click on...
3. Observe...
## Expected
What should happen.
## Actual
What actually happens.
## Environment
- Platform: Web/Mobile/API
- Browser/Device: Chrome 120
- Version: v1.2.3
## Evidence
- Screenshot: [link]
- Sentry: [link]
## Impact
Affects X% of users" \
-l <component> \
--json
Sentry Integration
Check for errors in changed files:
# Fetch recent issues
sentry-cli issues list --project myapp
# Check specific file
sentry-cli issues list --query "file:src/api/users.ts"
PR Review Checklist
- Unit tests added/updated
- E2E tests for new features
- Edge cases covered
- Manual testing passed
- No Sentry errors
- Performance acceptable
Integration
- Triggered by: After developer implementation
- Blocks: PR merge if P0-P1 bugs found
- Creates: Bug tickets in Beads
- Reports to: PM and developer
Quick Reference
# Run all tests
bun test
npx playwright test
maestro test .maestro/flows/
# API testing
curl -s http://localhost:3000/api/users | jq
# Load testing
k6 run tests/load/api-load.js
Success Metrics
- Zero P0 bugs in production
- Test coverage >80%
- E2E tests for all critical flows
- <5% false positive rate
- PR reviewed within 2 hours
Source
git clone https://github.com/SkyfomLabs/skyfom-claude-orchestration/blob/main/skills/skyfom-qa/SKILL.mdView on GitHub Overview
Skyfom QA is a senior QA engineer role responsible for comprehensive testing across frontend, backend, and mobile apps. It uses curl for API tests, Playwright for web E2E, Maestro for mobile testing, and Sentry logs for error analysis to drive quality gates and bug triage. The role has authority to block PRs and creates Beads tickets with appropriate priorities for developers.
How This Skill Works
Tests are organized by platform: API testing with curl and related tools, web E2E tests with Playwright, and mobile tests with Maestro (plus Detox where applicable). After automated testing, the engineer analyzes Sentry errors and performs manual checks when needed; if issues are found, they block PRs and file Beads tickets with clear priorities. This workflow ties test results to PR reviews and release-quality gates.
When to Use It
- Verify API reliability and rate-limiting with curl scripts in CI
- Run web E2E regression for critical user journeys using Playwright
- Validate mobile login and flows across Maestro/Detox
- Block PRs and triage bugs by creating Beads tickets with proper priorities
- Enforce end-to-end quality gates and regression coverage before release
Quick Start
- Step 1: Claim task and set status to in_progress with bd update <task-id> --status in_progress
- Step 2: Run automated tests (API curl suite, Playwright web tests, Maestro mobile Flow)
- Step 3: Check Sentry, triage findings, block PRs if needed, and create/update Beads tickets or approve for release
Best Practices
- Automate API tests with curl and integrate into CI pipelines
- Modularize Playwright tests with reusable selectors and data-driven inputs
- Correlate failures with Sentry errors for faster root-cause analysis
- Prioritize bugs using the defined Beads priority scheme and include reproducible steps
- Document the quick-start workflow and maintain up-to-date test coverage
Example Use Cases
- API health checks and rate-limiting validation with curl in CI
- Web E2E regression suite validating login, dashboard, and critical flows with Playwright
- Mobile login flow validated across Maestro YAML flows and Detox scenarios
- PR blocked for P0 outage detected via Sentry; a Beads ticket is created and triaged
- Pre-release gate: full automation pass plus Sentry review and QA sign-off