Use when fixing issues identified in beta tester feedback. Guides systematic root cause analysis, worktree-based fixes, regression testing, and release preparation...
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 template