Use when fixing issues identified in beta tester feedback. Guides systematic root cause analysis, worktree-based fixes, regression testing, and release preparation. Invoke with structured beta reports or issue lists.
This skill automates the workflow for systematically fixing issues identified in beta tester feedback. It guides you through:
Core principle: Fix issues systematically with proper isolation, testing, and documentation.
Activate this skill when:
Example triggers:
Parse structured beta testing reports and extract actionable issues.
Supported formats:
.claude/releases/BETA-*-REPORT.md)Extract for each issue:
Output: Issue list with metadata
Example:
## Extracted Issues
### Issue #402: Telemetry prompt spam (P0)
- **Category**: Bug - Config persistence
- **Expected**: Prompt shows once, persists choice
- **Actual**: Prompt shows on every command
- **Repro**: Run `caro "list files"` twice
Classify each issue by severity using this framework:
P0 (Critical) - Blocks release:
P1 (High) - Significant impact:
P2 (Medium) - Minor impact:
Triage rules:
For each issue, perform systematic root cause analysis:
Step 1: Locate relevant code
# Search for error messages
grep -r "error message text" src/
# Find relevant modules
find src/ -name "*telemetry*" -o -name "*config*"
# Check recent changes
git log --oneline --since="2 weeks ago" -- src/main.rs
Step 2: Trace execution path
Step 3: Identify root cause category
Use these categories:
Empty Implementation (empty TODO branches)
Missing Config Persistence
Pattern Matching Issues
Output Format Awareness
Documentation Mismatch
Step 4: Document findings
Use the root cause template (see templates/root-cause-template.md).
Create an isolated environment for fixes:
# Create worktree
git worktree add .worktrees/fix-beta-X-p0-issues -b fix/beta-X-p0-issues
# Navigate to worktree
cd .worktrees/fix-beta-X-p0-issues
# Verify clean baseline
cargo test
Branch naming convention: fix/beta-X-p0-issues
Fix issues systematically with regression tests:
For each issue:
Write regression test first (TDD approach)
#[tokio::test]
async fn test_issue_402_telemetry_persistence() {
// Setup: Fresh config
let config_path = temp_config();
// Execute: Run command twice
run_command("list files", &config_path);
run_command("list files", &config_path);
// Assert: Config saved, first_run=false
let config = load_config(&config_path);
assert_eq!(config.telemetry.first_run, false);
}
Implement the fix
Verify fix works
# Run regression test
cargo test test_issue_402
# Run full test suite
cargo test
# Manual verification
caro "list files" # First run
caro "list files" # Should not show prompt
Commit atomically
git add src/main.rs tests/beta_regression.rs
git commit -m "fix(telemetry): Persist consent choice to config
Fixes: #402, #403
Root cause: Config was loaded but never saved after consent.
Added config_manager.save() call after updating first_run flag.
Regression test: test_issue_402_telemetry_persistence"
Fix priority: P0 first, then P1, then P2
Commit granularity: One logical fix per commit (may fix multiple related issues)
After all fixes are implemented:
1. Create comprehensive PR
Use this template:
## Summary
Fixes all X critical P0 issues from beta.Y testing.
**Fixes**: #402, #403, #404, #405, #406
## Issues Fixed
### Issue #402 & #403: [Title]
- ✅ FIXED: [What now works]
- Root cause: [Brief explanation]
- Fix: [What was changed]
[Repeat for each issue]
## Test Coverage
### Regression Tests
- ✅ test_issue_402_...
- ✅ test_issue_403_...
All X tests pass ✅
### Full Test Suite
- ✅ Y library tests pass
- ✅ No regressions
## Impact
**Before**: [Metrics/behavior]
**After**: [Metrics/behavior]
## Manual Verification
```bash
# Steps to manually verify fixes
**2. Bump version for next beta**
```bash
# Update Cargo.toml
version = "1.1.0-beta.X"
# Update CHANGELOG.md
## [1.1.0-beta.X] - YYYY-MM-DD
### Fixed
- Issue #402: [description]
- Issue #403: [description]
...
# Create git tag
git tag -a v1.1.0-beta.X -m "Release beta.X - Critical fixes"
# Push
git push origin fix/beta-Y-p0-issues
git push origin v1.1.0-beta.X
3. Create beta testing instructions
Update .claude/releases/BETA-TESTING-INSTRUCTIONS-vX.md:
Use templates/root-cause-template.md to document each issue's RCA.
Use templates/regression-test.md for test boilerplate.
Format:
{type}({scope}): {brief description}
{Detailed explanation of root cause and fix}
Fixes: #{issue_id}
{Additional context, testing notes, verification steps}
Types: fix, feat, docs, test, refactor Scopes: telemetry, config, backend, docs, safety
Based on real beta testing experience, watch for these patterns:
Symptom: Code path exists but does nothing Location: if/else with TODO comments Fix: Implement the missing logic
// BEFORE (broken)
if user_config.telemetry.first_run {
if prompt_consent() {
// TODO: Save config
}
}
// AFTER (fixed)
if user_config.telemetry.first_run {
let consent = prompt_consent();
user_config.telemetry.enabled = consent;
user_config.telemetry.first_run = false;
config_manager.save(&user_config)?;
}
Symptom: Wrong command generated, generic instead of specific Location: Static pattern matcher Fix: Move specific patterns before general patterns
// BEFORE (wrong order)
Pattern 1: "files modified" (3 keywords)
Pattern 46: "python files modified" (4 keywords)
// AFTER (correct order)
Pattern 1: "python files modified" (4 keywords - specific)
Pattern 2: "files modified" (3 keywords - general)
Symptom: User settings don't persist across runs Location: Config loading without saving Fix: Call save() after updating config
Symptom: Interactive prompts pollute JSON/YAML output Location: Prompts run unconditionally Fix: Skip interactive prompts when output format is machine-readable
// BEFORE (broken)
prompt_consent(); // Always runs
// AFTER (fixed)
let is_interactive = matches!(cli.output, None | Some(OutputFormat::Plain));
if is_interactive {
prompt_consent();
}
Symptom: Docs claim feature doesn't exist when it does Location: Beta testing instructions, README Fix: Update docs to match reality
User: Fix these P0 issues from beta.1 testing:
- Issue #402: Telemetry prompt spam
- Issue #403: Telemetry can't be disabled
- Issue #404: JSON output invalid
Claude: [Invokes beta-feedback-fixer skill]
I'll systematically fix these P0 issues. Let me start by parsing the issues...
### Extracted Issues
**Issue #402**: Telemetry consent prompt (P0 - Bug)
- Expected: Prompt once, persist choice
- Actual: Prompts every command
- Related: #403 (same root cause)
**Issue #404**: JSON output invalid (P0 - Output)
- Expected: Valid JSON
- Actual: Prompt text in JSON output
### Root Cause Analysis
Issue #402/#403:
- File: src/main.rs:627-636
- Root cause: Empty TODO branches - consent never saved
- Fix: Add config_manager.save() call
Issue #404:
- File: src/main.rs:620
- Root cause: Prompt runs before checking output format
- Fix: Skip prompt when --output json/yaml
### Creating Worktree
Creating .worktrees/fix-beta-1-p0-issues...
Running baseline tests...
All tests pass ✅
### Implementation
[Writes regression test for #402]
[Implements fix in src/main.rs]
[Runs tests]
[Commits]
[Fixes #404]
[Commits]
### PR & Release Preparation
Creating PR #407...
Updating version to 1.1.0-beta.2...
Creating beta.2 testing instructions...
✅ Done! PR ready for review.
references/issue-analysis.md - Detailed RCA techniquesreferences/fix-workflow.md - Step-by-step fix processreferences/release-preparation.md - Beta release procedurestemplates/root-cause-template.md - RCA documentation templatetemplates/regression-test.md - Test code templateSearch for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer