fix-errors
warpdotdev/common-skills
Fix Rust compilation errors, linting issues, and test failures in the warp codebase.
What is fix-errors?
This skill resolves common development issues in the warp Rust project, including compilation errors, clippy/formatting violations, WASM-specific errors, and test failures. Use it when you encounter build errors, linting failures, or need to run presubmit checks before a PR.
- Run targeted cargo fmt, clippy, and nextest commands to fix specific error types
- Diagnose and resolve WASM-specific errors (filesystem operations, dead code) with feature-gating
- Handle common Rust errors: unused imports, type mismatches, struct field changes, function signature updates, and enum variants
- Execute individual checks or the full presubmit workflow as needed
- Run filtered tests by package name or test substring to validate fixes
How to install fix-errors
npx skills add https://github.com/warpdotdev/common-skills --skill fix-errors- Rust toolchain installed with wasm32-unknown-unknown target
- Access to the warp repository with script/presubmit and script/run-clang-format.py available
- cargo nextest installed for running tests
How to use fix-errors
- 1.Read the full error message to identify the root cause and error type
- 2.Run the narrowest applicable check (cargo fmt --check, cargo clippy, or cargo nextest) to isolate the issue
- 3.Apply the fix based on the error type (remove unused imports, add use statements, update function calls, gate WASM code)
- 4.Run relevant cargo nextest tests to validate the fix
- 5.Run cargo fmt once after all code changes are complete
- 6.Do not rerun tests or clippy after formatting unless explicitly required
Use cases
- Fix unused import warnings and remove dead code identified by the compiler
- Resolve type mismatch errors by applying correct conversions (.as_str(), .to_string(), references)
- Gate filesystem-dependent code behind the local_fs feature flag for WASM builds
- Update struct initialization and pattern matching after struct field changes
- Run specific test suites to validate fixes without running the full presubmit
- Rust developers working on the warp codebase
- Contributors preparing code for PR submission
- Developers debugging WASM compilation issues
fix-errors FAQ
Run the full presubmit only when explicitly required by the user, task, or spec. For debugging specific issues, run individual checks (cargo fmt, cargo clippy, cargo nextest) to avoid expensive repeated validation.
WASM builds don't support filesystem operations. Gate filesystem code 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 to verify.
Use cargo nextest run -p <package_name> for a single package, cargo nextest run -E 'test(<substring>)' to filter by test name, or combine both: cargo nextest run -p <package> -E 'test(<substring>)'.
Run relevant cargo nextest tests to validate, then run cargo fmt once at the end. Do not rerun tests or clippy after formatting unless explicitly required or the fix materially changes behavior.
Common fixes include using .as_str() instead of .clone() for &str, using &value for references, and .to_string() when String is expected. Check the error message to understand the expected vs. actual type.
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
Fix the reported failure with the narrowest useful command. Do not turn a targeted repair into repeated full-workspace validation.
Full Presubmit
Run the full presubmit only when the user, task, or approved spec explicitly requires it:
./script/presubmit
This runs formatting checks, linting, and all tests. It is intentionally broader and more expensive than the default implementation workflow.
Individual Checks
Run checks separately when debugging specific issues:
Rust formatting:
cargo fmt -- --check
Clippy (full workspace):
cargo clippy --workspace --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&stris expected - Use
&valuewhen a reference is needed - Use
.to_string()whenStringis expected but&stris 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
boolparams: passtrueorfalsebased on context - For
Option<T>params: passNoneas default orSome(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_fsis 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 the smallest applicable
cargo checkwhen it helps resolve compiler errors; do not repeat broad checks without a relevant code change - For WASM errors, run WASM clippy to verify the fix
- For complex changes, run relevant tests after fixing
After fixing:
- Run the relevant
cargo nextesttests and fix the code until they pass - Run the applicable Clippy invocation and fix its findings; return to affected tests only when a fix materially changes behavior
- Run
./script/formatonce after all other code changes are complete - Do not rerun tests or Clippy after formatting, and do not add a full presubmit run, unless explicitly required
- If you only fixed a formatting failure and made no behavioral code change, rerun only the formatter
Related skills
More from warpdotdev/common-skills and the wider catalog.

implement-specs
Implement approved features while keeping PRODUCT.md and TECH.md synchronized with code in a single PR.

migrate-to-factory
Migrate existing skills and workflows into a Warp Factory configuration repository.

pr-walkthrough
Generate interactive D3 visualizations to orient reviewers to pull request changes across system, data flow, dependencies, and user actions.

readout
Generate polished, self-contained HTML readout documents from conversation findings or fresh research.

reproduce-bug-report
Launch cloud agents with computer use to reproduce UI bugs and capture visual evidence.

research
Delegate noisy investigation to subagents to keep your context clean and focused.