Quality Engineer Manager skill for orchestrating release validation, beta testing coordination, feedback analysis, and release sign-off decisions
This skill encapsulates the Quality Engineering Manager role, responsible for:
Key Principle: Every release goes through systematic validation before being approved for users.
Activate this skill when the user:
Example Triggers:
When a release is triggered, systematically validate:
Monitor Publish Workflow
gh run list --workflow=publish.yml --limit 1
gh run watch <run-id>
Monitor Release Workflow
gh run list --workflow=release.yml --limit 1
gh run watch <run-id>
Identify Failures
gh run view <run-id> --log-failedRoot Cause Analysis
git log --oneline -10Fix & Re-trigger
git tag -f -a vX.Y.Z -m "Release vX.Y.Z" && git push -f origin vX.Y.ZVerify Artifacts
# Verify crates.io publication
curl -s https://crates.io/api/v1/crates/caro/X.Y.Z | jq -r '.version.num'
# Verify GitHub release assets
gh release view vX.Y.Z --json assets -q '.assets[] | .name'
After release artifacts are available:
Dispatch Beta Testers
unbiased-beta-tester skill with different profilesCollect Feedback
Analyze Results
For releases with model bundles, use the systematic bundle validation command:
# Minimal validation (3 profiles, 2 bundles)
/qa-bundle-validation version=vX.Y.Z profiles=minimal bundles=sample
# Standard validation (5 original profiles)
/qa-bundle-validation version=vX.Y.Z profiles=original bundles=all
# Comprehensive validation (all 10 profiles)
/qa-bundle-validation version=vX.Y.Z profiles=all bundles=all
When to Use Bundle Validation:
Bundle Validation Process:
Output:
See .claude/commands/qa-bundle-validation.md for complete workflow details.
For each identified issue:
Triage Decision
Create Development Tasks
Dispatch Work
CRITICAL: Document learnings to prevent regressions.
Update Known Issues Database
references/known-issues.md templateUpdate Beta Tester Profiles
Update CI/CD Documentation
Final decision matrix:
| Condition | Decision | Action |
|---|---|---|
| No P0/P1 issues, all critical paths working | ā SHIP IT | Announce release, close milestone |
| P0 issue found, quick fix available | š§ HOTFIX | Trigger hotfix workflow, re-test |
| P0 issue found, complex fix needed | ā ABORT | Revert tag, create fix milestone |
| Multiple P1 issues | ā ļø CONDITIONAL | Assess workarounds, user impact |
Sign-Off Checklist:
IMPORTANT: Model bundling runs AFTER release sign-off, as a separate workflow.
Only trigger model bundling when:
The bundle.yml workflow creates 10 bundles (5 platforms Ć 2 models):
Trigger Command:
# From GitHub UI (recommended until workflow is indexed):
# https://github.com/wildcard/caro/actions/workflows/bundle.yml
# Click "Run workflow", enter version (e.g., v1.0.4)
# Or via CLI (after workflow is indexed):
gh workflow run bundle.yml -f version=v1.0.4 -f skip_verification=false
What the Workflow Does:
hf CLIExpected Artifacts:
caro-VERSION-PLATFORM-with-MODEL.tar.gz
caro-VERSION-PLATFORM-with-MODEL.tar.gz.sha256
Bundling Validation Checklist:
If Bundling Fails:
When debugging CI/CD failures, consult these common patterns from known issues:
Issue #7: Heredoc Syntax Incompatibility
run: | blocks conflict with shell heredoc (<<EOF) syntaxprintf '%s\n' instead of heredocs for multi-line file creation<<EOF, <<'EOF', <<-EOF) in GitHub Actions run: | blocks# Bad - causes YAML parse error
- run: |
cat <<EOF > file.txt
Line 1: content
EOF
# Good - use printf instead
- run: |
printf '%s\n' \
"Line 1: content" \
> file.txt
Issue #8: Alpine Containers Lack Tools
gh: command not found or curl: not found- name: Install dependencies
run: |
apk add --no-cache curl tar gzip bash
# Install gh CLI for Alpine
curl -fsSL https://github.com/cli/cli/releases/download/v2.63.2/gh_2.63.2_linux_amd64.tar.gz -o gh.tar.gz
tar -xzf gh.tar.gz
mv gh_2.63.2_linux_amd64/bin/gh /usr/local/bin/
Issue #9: GitHub Permissions Too Restrictive
HTTP 403: Resource not accessible by integrationcontents: write permission at workflow levelname: Bundle Models
on:
workflow_dispatch:
# ...
permissions:
contents: write # Required for gh release upload
jobs:
bundle:
runs-on: ubuntu-latest
# ...
# View failed workflow logs
gh run list --workflow=<workflow-name> --limit 1
gh run view <run-id> --log-failed
# Re-run failed jobs only
gh run rerun <run-id> --failed
# Validate workflow YAML syntax locally
python3 -c "import yaml; yaml.safe_load(open('.github/workflows/bundle.yml'))"
# Check release assets
gh release view vX.Y.Z --json assets -q '.assets[] | .name'
# Verify crates.io publication
curl -s https://crates.io/api/v1/crates/caro/X.Y.Z | jq -r '.version.num'
Before debugging any CI/CD failure:
references/known-issues.md for similar symptomsCI/CD Failure Detected
|
āā> YAML syntax error? ā See Issue #7 (heredoc)
āā> Tool not found? ā See Issue #8 (Alpine containers)
āā> Permission denied? ā See Issue #9 (GITHUB_TOKEN)
āā> Test failure? ā See known-issues.md for test-specific issues
āā> Unknown? ā Check workflow logs, consult known-issues.md
Here's what we did to successfully release v1.0.4:
Symptom: cargo fmt check failed in publish workflow
Root Cause: Code not formatted with rustfmt
Fix: cargo fmt --all && git commit
Prevention: Pre-commit hook for rustfmt
Symptom: clippy --deny warnings failed
Issues Found:
- Unused import (Context in doctor.rs)
- .last() should be .next_back() for DoubleEndedIterator
- match should use matches! macro
- Unnecessary u64 cast
Fix: Applied all clippy suggestions
Prevention: Run clippy in development, add to pre-push hook
Symptom: Fields in ValidationResult struct never read
Root Cause: Debug/troubleshooting fields in test struct
Fix: Added #[allow(dead_code)] to unused fields
Prevention: Use #[allow(dead_code)] for intentional debug fields
Symptom: Test failed expecting Bash but got Zsh
Root Cause: Test logic didn't mirror actual detection logic
Fix: Updated test to mirror exact ShellType::detect() logic
Prevention: Ensure tests mirror implementation, not assumptions
Symptom: Python pip install failed on macOS, HF auth on Linux
Root Cause: CI environment Python version mismatch, missing HF token
Impact: Model bundles not created (but not critical - users can download)
Decision: Ship anyway - users download models automatically on first use
Future Fix: Add HF token to GitHub secrets, use system Python
ā
SHIP v1.0.4
Rationale:
- All critical binaries published
- Package on crates.io verified
- Model bundling failure is non-critical (workaround exists)
- No P0/P1 issues blocking primary use cases
The QE Manager dispatches beta testers like this:
# Invoke beta tester skill with specific profile
/unbiased-beta-tester profile=terminal-novice os=macos test=first-run
Then collect results and analyze:
references/known-issues.md - Historical issues and resolutionsreferences/release-runbook.md - Step-by-step release processreferences/hotfix-workflow.md - Emergency fix proceduresreferences/beta-testing-playbook.md - Testing scenariosUser: "Test the v1.0.4 release and sign off if ready"
QE Manager Response:
# Quality Engineering Sign-Off: v1.0.4
## Phase 1: CI/CD Validation
Checking publish workflow...
ā
Published to crates.io (verified: 1.0.4)
Checking release workflow...
ā
All platform binaries uploaded:
- Linux (amd64, arm64)
- macOS (Intel, Silicon)
- Windows (amd64)
ā ļø Model bundling partially failed (non-critical)
## Phase 2: Beta Testing
Dispatching beta testers with 3 profiles...
[Runs beta tester skill for each profile]
Results:
- Terminal Novice (macOS): ā
Success
- Power User (Linux): ā
Success
- Corporate Locked-Down: ā ļø Proxy issues (P2)
## Phase 3: Issue Analysis
P0 Issues: None
P1 Issues: None
P2 Issues: 1 (proxy configuration documentation)
P3 Issues: 2 (polish items)
## Phase 4: Sign-Off Decision
ā
**APPROVED FOR RELEASE**
Rationale:
- All critical paths validated
- No blockers for primary use cases
- P2 issue has workaround (manual proxy config)
- Documentation improvements can follow in v1.0.5
Next Steps:
- Update known issues with proxy configuration guidance
- Schedule P2/P3 fixes for v1.0.5 milestone
User: "Beta testing found a crash on Windows"
QE Manager Response:
# Hotfix Assessment: Windows Crash
## Severity: P0 (Critical)
- Affects: All Windows users
- Impact: Application crashes on startup
- Workaround: None
## Root Cause Analysis
[Investigates using logs, reproduces locally]
Identified: Missing DLL dependency in Windows build
## Hotfix Decision: ā
REQUIRED
Creating hotfix plan:
1. Create hotfix branch from v1.0.4 tag
2. Add Windows DLL to release artifacts
3. Test on Windows environments
4. Release as v1.0.5 within 24h
## Development Dispatch
Creating GitHub issue #XXX: [HOTFIX] Windows crash - missing DLL
Assigning to: Immediate action required
Milestone: v1.0.5 (hotfix)
[Proceeds to coordinate hotfix implementation]
The QE Manager's job is to protect users from broken releases while enabling fast iteration.