Tests a single solution for a reported problem by executing a fix and verifying the outcome.

Install

mkdir -p .claude/skills/try-fix && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/5191" && unzip -o skill.zip -d .claude/skills/try-fix && rm skill.zip

Installs to .claude/skills/try-fix

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Attempts ONE alternative fix for a bug, tests it empirically, and reports results. ALWAYS explores a DIFFERENT approach from existing PR fixes. Use when CI or an agent needs to try independent fix alternatives. Invoke with problem description, test command, target files, and optional hints.
291 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Advanced

Key capabilities

  • →Execute single-shot, isolated bug fix attempts
  • →Run verification tests automatically after changes
  • →Document fix outcomes in reviewer-findings.json
  • →Perform inline expert self-review against constraints
  • →Compare proposed fixes against existing PR history

How it works

It runs a fixed 11-step sequence that modifies code, executes verification, and performs self-correction based on strict file-system gates.

Inputs & outputs

You give it
Problem description, test command, and target files
You get back
A single code diff, verification result, and self-review report.

When to use try-fix

  • →Try an alternative fix for a failing unit test
  • →Debug build issue with a new approach
  • →Apply and test a bug fix independently

About this skill

Try Fix Skill

Attempts ONE fix for a given problem. Receives all context upfront, tries a single approach, tests it, and reports what happened.

Activation Guard

🚨 This skill is ONLY for proposing and testing code fixes. Do NOT activate for:

  • Code review requests ("review this PR", "check code quality")
  • PR summaries or descriptions ("what does this PR do?")
  • Test-only requests ("run tests", "check CI status")
  • General questions about code or architecture

If the prompt does not include a problem to fix and a test command to verify, this skill should not run.

Core Principles

  1. Always run once activated - Never question whether to run. The invoker decides WHEN, you decide WHAT alternative to try
  2. Single-shot - Each invocation = ONE fix idea, tested, reported
  3. Alternative-focused - Always propose something DIFFERENT from existing fixes (review PR changes first)
  4. Empirical - Actually implement and test, don't just theorize
  5. Context-driven - Work with what's provided and git history; don't search external sources
  6. Script-only restoration - The ONLY permitted cleanup command is pwsh .github/scripts/EstablishBrokenBaseline.ps1 -Restore. Never use git checkout, git clean, git restore, git reset, or git stash to revert or clean changes, including after artifacts have been captured.
  7. Baseline-file boundary - After Step 2, modify ONLY files listed in .github/.baseline-state.json under RevertedFiles. The restore script tracks only those original fix files; editing any other tracked file makes restoration incomplete. If the state file is absent, or its NewFiles array is non-empty, report Blocked before editing: added production files are not safely restorable. If the approach requires another tracked file, report Blocked instead of editing it.
  8. Preserve pre-existing untracked paths - Never modify or delete an untracked file or directory that existed before the attempt. Evaluators may inject the loaded skill as an untracked directory such as try-fix/; leave it exactly as found even when git status --short lists it. It is harness-owned input, not attempt-created drift. The restore script is the only cleanup step; do not use rm, Remove-Item, or another filesystem command to make the worktree appear clean.
  9. Wait for command completion - If a shell tool reports that a command is still running and returns a shellId, call read_bash with that exact shellId and wait for the completed result. Never proceed, report, or end the session while baseline, test, artifact, self-review, or restore work is still running.
  10. Contain attempt artifacts - Create every log, snapshot, state marker, and scratch file under $OUTPUT_DIR. Never persist $OUTPUT_DIR or other shell state in .github/, the repository root, or another workspace path. Shell variables do not persist between tool calls, so redeclare the same literal $OUTPUT_DIR at the start of each later shell command instead of writing a repository marker file.

Every invocation runs all 11 Workflow steps below. Step 6 (Expert Self-Review) is performed inline against .github/agents/maui-expert-reviewer.md — do NOT spawn the @maui-expert-reviewer sub-agent. Step 7.5 refreshes the self-review if the test loop modified code so the recorded findings reflect the final diff. Step 8 enforces this via a file-existence gate on reviewer-findings.json. Before returning the final report, verify that Step 9 ran with the exact script-only restore command above; if it did not, run it before responding.

⚠️ CRITICAL: Sequential Execution Only

🚨 Try-fix runs MUST be executed ONE AT A TIME - NEVER in parallel.

Why: Each try-fix run:

  • Modifies the same target source files
  • Uses the same device/emulator for testing
  • Runs EstablishBrokenBaseline.ps1 which reverts files to a known state

If run in parallel:

  • Multiple agents will overwrite each other's code changes
  • Device tests will interfere with each other
  • Baseline script will conflict, causing unpredictable file states
  • Results will be corrupted and unreliable

Correct pattern: Run attempt-1, wait for completion, then run attempt-2, etc.

Inputs

All inputs are provided by the invoker (CI, agent, or user).

InputRequiredDescription
ProblemYesDescription of the bug/issue to fix
Test commandYesRepository-specific script to build and test. Use BuildAndRunHostApp.ps1 for UI tests, Run-DeviceTests.ps1 for device tests, or dotnet test for unit tests. The correct command is determined by the test type detected in the PR. ALWAYS use the appropriate script - NEVER manually build/compile.
Target filesYesFiles to investigate; any file absent from the baseline state's RevertedFiles is read-only
PlatformYesTarget platform (android, ios, windows, maccatalyst)
HintsOptionalSuggested approaches, prior attempts, or areas to focus on
BaselineOptionalGit ref or instructions for establishing broken state (default: current state)

Outputs

Results reported back to the invoker:

FieldDescription
approachWhat fix was attempted (brief description)
files_changedWhich files were modified
resultPass, Fail, or Blocked
analysisWhy it worked, or why it failed and what was learned
diffThe actual code changes made (for review)
findings_countNumber of self-review findings recorded (0 = clean self-review)

Output Structure (MANDATORY)

FIRST STEP: Create output directory before doing anything else.

# Set issue/PR number explicitly (from branch name, PR context, or manual input)
$IssueNumber = "<ISSUE_OR_PR_NUMBER>"  # Replace with actual number

# Find next attempt number
$tryFixDir = "CustomAgentLogsTmp/PRState/$IssueNumber/PRAgent/try-fix"
$existingAttempts = (Get-ChildItem "$tryFixDir/attempt-*" -Directory -ErrorAction SilentlyContinue).Count
$attemptNum = $existingAttempts + 1

# Create output directory
$OUTPUT_DIR = "$tryFixDir/attempt-$attemptNum"
New-Item -ItemType Directory -Path $OUTPUT_DIR -Force | Out-Null

Write-Host "Output directory: $OUTPUT_DIR"

Keep this path from the command output and redeclare it in each subsequent shell invocation, for example:

$OUTPUT_DIR = "CustomAgentLogsTmp/PRState/<ISSUE_OR_PR_NUMBER>/PRAgent/try-fix/attempt-1"

Do not create .github/.try-fix-output-dir, .try-fix-output-dir, or any equivalent repository marker. The only attempt artifacts belong under $OUTPUT_DIR.

Required files to create in $OUTPUT_DIR:

FileWhen to CreateContent
baseline.logAfter Step 2 (Baseline)Output from EstablishBrokenBaseline.ps1 proving baseline was established
approach.mdAfter Step 4 (Design)What fix you're attempting and why it's different from existing fixes
reviewer-findings.jsonAfter Step 6 (Self-Review), refreshed by Step 7.5JSON array of self-review findings — [] when clean. MUST reflect the final diff.
reviewer-findings.diffAfter Step 6 (Self-Review), refreshed by Step 7.5Snapshot of git diff at the time the self-review was written. Step 7.5 compares this to the post-test-loop diff to detect drift.
result.txtAfter Step 7 (Test)Single word: Pass, Fail, or Blocked
fix.diffAfter Step 7 (Test)Output of git diff showing your changes
test-output.logAfter Step 7 (Test)Full output from test command
analysis.mdAfter Step 8 (Capture)Why it worked/failed, insights learned, and a one-line self-review summary

Example approach.md:

## Approach: Geometric Off-Screen Check

Skip RequestApplyInsets for views completely off-screen using simple bounds check:
`viewLeft >= screenWidth || viewRight <= 0 || viewTop >= screenHeight || viewBottom <= 0`

**Different from existing fix:** Current fix uses HashSet tracking. This approach uses pure geometry with no state.

Example result.txt:

Pass

Completion Criteria

The skill is complete when:

  • Problem understood from provided context
  • ONE fix approach designed and implemented
  • Fix tested with provided test command (iterated up to 3 times if errors/failures)
  • Either: Tests PASS ✅, or exhausted attempts and documented why approach won't work ❌
  • Expert self-review performed inline (Step 6) and reviewer-findings.json written — [] if clean. Refreshed by Step 7.5 if the test loop modified code, so the saved findings reflect the final diff.
  • Analysis provided (success explanation or failure reasoning with evidence)
  • Artifacts saved to output directory (verified by Step 8 file-existence gate)
  • Baseline target files restored with no attempt-created changes; pre-existing untracked harness inputs remain untouched
  • Results reported to invoker (including findings_count)

🚨 CRITICAL: What counts as "Pass" vs "Fail"

ScenarioResultExplanation
Test command runs, tests pass✅ PassActual validation
Test command runs, tests fail❌ FailFix didn't work
Code compiles but no device available⚠️ BlockedDevice/emulator unavailable - report with explanation
Code compiles but test command errors❌ FailInfrastructure issue is still a failure
Code doesn't compile❌ FailFix is broken

NEVER claim "Pass" based on:

  • ❌ "Code compiles successfully" alone
  • ❌ "Code review validates the logic"
  • ❌ "The approach is sound"
  • ❌ "Device was unavailable but fix looks correct"

Pass REQUIRES: The test command executed AND reported test success.

If device/emulator is unavailable: Report `result


Content truncated.

When not to use it

  • →For general code review or quality checks
  • →For running tests without attempting a fix
  • →For parallel execution on the same codebase

Prerequisites

PowerShellgit.NET MAUI environment

Limitations

  • →Prohibits parallel execution to prevent resource conflicts
  • →Does not perform deep architectural refactoring
  • →Requires explicit test commands to function

How it compares

It forces empirical testing of a single specific hypothesis rather than generalized debugging or conversational theorizing.

Compared to similar skills

try-fix side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
try-fix (this skill)14moReviewAdvanced
csharp-pro95moNo flagsIntermediate
performance-benchmark36moNo flagsIntermediate
component-development16moReviewIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry