PluginBench
Skill
Pass
Audit score 90

fix-errors

warpdotdev/common-skills

Fix compilation errors, linting issues, and test failures in the warp Rust codebase.

What is fix-errors?

This skill resolves common development issues in the warp Rust project, including compilation errors, clippy warnings, formatting violations, WASM-specific errors, and test failures. Use it when you encounter build errors, linting failures, test failures, or need to run presubmit checks before opening a PR.

  • Run all presubmit checks (formatting, linting, tests) with a single command
  • Fix compilation errors like unused imports, type mismatches, and struct field changes
  • Resolve clippy linting warnings and formatting violations across the workspace
  • Debug and run specific tests by package name or test filter
  • Handle WASM-specific errors by gating filesystem operations behind feature flags
  • Run individual checks (cargo fmt, clippy, doc tests) for targeted debugging

How to install fix-errors

npx skills add https://github.com/warpdotdev/common-skills --skill fix-errors
Prerequisites
  • Rust toolchain installed
  • Access to the warp repository
  • cargo and cargo nextest available
  • Python 3 (for clang-format script)
Claude Code
Cursor
Windsurf
Cline

How to use fix-errors

  1. 1.Run the full presubmit check with ./script/presubmit to validate all checks at once
  2. 2.If presubmit fails, run individual checks (cargo fmt --check, cargo clippy, cargo nextest run) to identify the specific issue
  3. 3.For compilation errors, read the error message, identify the root cause, and apply the appropriate fix (remove unused imports, fix type mismatches, update struct fields, etc.)
  4. 4.For WASM errors, gate filesystem operations behind the local_fs feature flag or use #[cfg_attr] to conditionally allow dead code
  5. 5.Run cargo nextest run -p <package_name> to test specific packages or use -E 'test(<substring>)' to filter by test name
  6. 6.After fixing errors, run cargo fmt and cargo clippy again to ensure all issues are resolved before pushing

Use cases

Good for
  • Resolving compilation errors before committing code
  • Fixing clippy warnings and formatting issues to pass presubmit checks
  • Running specific test suites to verify changes in a particular package
  • Debugging WASM build errors by conditionally gating filesystem-dependent code
  • Interpreting and fixing test failures with filtered test execution
Who it's for
  • Rust developers working on the warp codebase
  • Contributors preparing pull requests
  • Developers building WASM targets
  • QA engineers running test suites

fix-errors FAQ

What should I do if multiple errors appear after running presubmit?

Fix one error type at a time. Read the full error message to understand the root cause, check if errors are related (fixing one may resolve others), and run cargo check frequently to verify fixes.

How do I fix WASM-specific errors?

WASM builds don't support filesystem operations. Gate code using filesystem APIs behind the local_fs feature flag using #[cfg(feature = "local_fs")] for tests or #[cfg_attr(not(feature = "local_fs"), allow(dead_code))] for types. Run cargo clippy --target wasm32-unknown-unknown --profile release-wasm-debug_assertions --no-deps to discover WASM errors.

How do I run tests for a specific package?

Use cargo nextest run -p <package_name> to run all tests in a package, or add -E 'test(<substring>)' to filter by test name. Use --nocapture to see output without capture.

What's the difference between cargo fmt --check and cargo fmt?

cargo fmt --check only reports formatting violations without modifying files. Use cargo fmt (without --check) to automatically fix formatting issues.

When should I run the full presubmit versus individual checks?

Run individual checks (cargo fmt, cargo clippy, cargo nextest run) when debugging specific issues. Always run the full ./script/presubmit before opening or updating a PR to ensure all checks pass.

Full instructions (SKILL.md)

Source of truth, from warpdotdev/common-skills.


name: fix-errors description: Fix compilation errors, linting issues, and test failures in the warp Rust codebase. Covers presubmit checks, WASM-specific errors, and running specific tests. Use when the user hits build errors, clippy or fmt failures, test failures, or needs to run or interpret presubmit before a PR.

fix-errors

Fix compilation errors, linting issues, and test failures in the warp Rust codebase.

Overview

This skill helps resolve common issues encountered during development, including:

  • Compilation errors (unused imports, type mismatches, etc.)
  • Linting failures (clippy warnings)
  • Formatting violations
  • WASM-specific errors
  • Test failures

Before opening or updating a pull request, all presubmit checks must pass.

Presubmit Checks

Run all presubmit checks at once:

./script/presubmit

This runs formatting, linting, and all tests. If it passes, you're ready to open a PR.

Individual Checks

Run checks separately when debugging specific issues:

Rust formatting:

cargo fmt -- --check

Clippy (full workspace):

cargo clippy --workspace --exclude warp_completer --all-targets --all-features --tests -- -D warnings
cargo clippy -p warp_completer --all-targets --tests -- -D warnings

WASM Clippy:

cargo clippy --target wasm32-unknown-unknown --profile release-wasm-debug_assertions --no-deps

Objective-C/C/C++ formatting:

./script/run-clang-format.py -r --extensions 'c,h,cpp,m' ./crates/warpui/src/ ./app/src/

All tests:

cargo nextest run --no-fail-fast --workspace --exclude command-signatures-v2
cargo nextest run -p warp_completer --features v2

Doc tests:

cargo test --doc

Running Specific Tests

Single package:

cargo nextest run -p <package_name>

Filter by test name:

cargo nextest run -E 'test(<substring>)'

Specific package with filter:

cargo nextest run -p <package_name> -E 'test(<substring>)'

With output (no capture):

cargo nextest run -p <package> --nocapture

Common Error Types

Unused Imports

Remove unused use statements identified by the compiler.

Unused Constants

Remove constants that are defined but never used.

Unknown Imports

Add the correct use statement for undefined types. Search the codebase to find the correct module path.

Type Mismatches

Update function calls to pass arguments of the correct type. Common fixes:

  • Use .as_str() instead of .clone() when a &str is expected
  • Use &value when a reference is needed
  • Use .to_string() when String is expected but &str is provided

Struct Field Changes

When a struct adds/removes fields, update all places where it's constructed or destructured:

  • Struct initialization
  • Pattern matching (match, if let)
  • Destructuring assignments

Function Signature Changes

When a function adds a new parameter, update all call sites to provide the new argument:

  • For bool params: pass true or false based on context
  • For Option<T> params: pass None as default or Some(value) if needed

Enum Variant Changes

When adding a new enum variant, update exhaustive match statements:

  • Add a new match arm with appropriate handling
  • Mirror the implementation pattern of similar variants

Incorrect Trait Implementation

Fix trait implementations that return the wrong type or don't satisfy trait bounds.

WASM-Specific Errors

WASM builds (wasm32-unknown-unknown target) don't support filesystem operations. Code that uses filesystem APIs must be gated behind the local_fs feature flag.

Common WASM errors:

  • Dead code warnings for code only used in non-WASM builds
  • Unused code that's only relevant when local_fs is available
  • Tests that require filesystem access

Fixes:

Gate tests behind local_fs:

#[test]
#[cfg(feature = "local_fs")]
fn test_find_git_repo_with_worktree() {
    // Test that uses filesystem operations
}

Conditionally allow dead code for types only used when local_fs is enabled:

#[cfg_attr(not(feature = "local_fs"), allow(dead_code))]
#[derive(Clone, EnumDiscriminants, Serialize)]
pub enum ExampleType {
    // Variants only used when local_fs is enabled
    Variant1,
    Variant2,
    Variant3,
}

WASM errors are discovered by running:

cargo clippy --target wasm32-unknown-unknown --profile release-wasm-debug_assertions --no-deps

Best Practices

Before fixing:

  • Read the full error message to understand the root cause
  • Check if multiple errors are related (fixing one may resolve others)
  • For trait/type errors, verify you understand the expected vs actual types
  • For WASM errors, check if code needs to be gated behind local_fs

When fixing:

  • Fix one error type at a time when there are multiple issues
  • Run cargo check frequently to verify fixes
  • For WASM errors, run WASM clippy to verify the fix
  • For complex changes, run relevant tests after fixing

After fixing:

  • Always run cargo fmt and cargo clippy before pushing
  • Run the full presubmit script before opening or updating a PR. Use the create-pr skill for more detailed instructions
  • Verify tests pass in the areas you modified