К основному содержанию
скилл CX Codex

dart-fix-runtime-errors — скилл для Claude Code: исправление ошибок

Скилл автоматически ловит ошибки времени выполнения в Dart-коде, находит проблемную строку через LSP и стек-трейс, применяет исправление и проверяет результат через hot reload.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add dart-lang/skills --skill dart-fix-runtime-errors -a claude-code
Открыть на GitHub

Что делает dart-fix-runtime-errors

Скилл работает с тремя источниками информации: получает активный стек-трейс через get_runtime_errors, использует LSP для навигации по коду и применяет фиксы с последующей проверкой через hot reload. Это избавляет от ручного поиска — агент видит точное место сбоя и контекст ошибки.

Внутри скилла заложена логика для трёх основных типов проблем: ошибки типизации (например, присвоение List<dynamic> переменной типа List<int>), нарушения null safety (доступ к свойствам nullable переменных без проверки) и неправильные переопределения методов (нарушение контравариантности параметров). Для каждого случая скилл предлагает конкретное исправление: явное указание типа, использование ?. или ??, добавление late или covariant.

Процесс циклический: запуск анализатора, применение автоматических фиксов через dart fix, ручное разрешение оставшихся ошибок и финальная проверка через dart analyze и dart test. Если тест падает с TypeError, скилл подсказывает, что это неверный явный каст или обращение к неинициализированной late переменной.

Какие задачи решает

  • Исправить ошибки типизации в Dart коде за один проход
  • Найти и устранить нарушения null safety без пересмотра всего проекта
  • Применить правильные сигнатуры методов при переопределении в подклассах
  • Автоматизировать применение ликсов через dart fix и проверить результат

Примеры запросов агенту

  • Помоги мне исправить ошибки Dart в проекте, используя dart-fix-runtime-errors
  • Запусти анализатор, найди runtime errors и примени фиксы через hot reload
  • Проверь коллекции на type mismatch и добавь явную типизацию где нужно

Как установить dart-fix-runtime-errors

1Через Skills CLI (Vercel)

npx skills add dart-lang/skills --skill dart-fix-runtime-errors -a claude-code

2Вручную: положить файлы

~/.claude/skills/dart-fix-runtime-errors/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/dart-fix-runtime-errors/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о dart-fix-runtime-errors

Как установить dart-fix-runtime-errors в Claude Code?

Выполните npx skills add dart-lang/skills --skill dart-fix-runtime-errors -a claude-code, затем обратитесь к файлу ~/.claude/skills/dart-fix-runtime-errors/SKILL.md для деталей конфигурации.

Что делает dart-fix-runtime-errors?

Скилл захватывает активные ошибки времени выполнения в Dart, находит проблемную строку через LSP и стек-трейс, применяет исправление, а затем проверяет результат через hot reload без перезагрузки приложения.

Какие типы ошибок исправляет этот скилл?

Скилл ориентирован на ошибки типизации (неверные присвоения коллекциям), нарушения null safety (доступ к nullable переменным без проверки), неправильные переопределения методов и проблемы с инициализацией через late. Для каждого добавляет явные типы, ?., ??, covariant или отложенную инициализацию.

Исходный текст

SKILL.md · BSD-3-Clause
---
name: dart-fix-runtime-errors
description: Uses get_runtime_errors and lsp to fetch an active stack trace, locate the failing line, apply a fix, and verify resolution via hot_reload.
metadata:
  model: models/gemini-3.1-pro-preview
  last_modified: Fri, 24 Apr 2026 15:13:22 GMT
---
# Resolving Dart Static Analysis Errors

## Contents
- [Core Concepts & Guidelines](#core-concepts--guidelines)
  - [Type System & Soundness](#type-system--soundness)
  - [Null Safety](#null-safety)
  - [Error Handling](#error-handling)
- [Workflows](#workflows)
  - [Workflow: Static Analysis Resolution](#workflow-static-analysis-resolution)
- [Examples](#examples)

## Core Concepts & Guidelines

### Type System & Soundness
Enforce Dart's sound type system to prevent runtime invalid states.

*   **Method Overrides:** Maintain sound return types (covariant) and parameter types (contravariant). Never tighten a parameter type in a subclass unless explicitly marked with the `covariant` keyword.
*   **Generics & Collections:** Add explicit type annotations to generic classes (e.g., `List<T>`, `Map<K, V>`). Never assign a `List<dynamic>` to a typed list (e.g., `List<Cat>`).
*   **Downcasting:** Avoid implicit downcasts from `dynamic`. Use explicit casts (e.g., `as List<Cat>`) when necessary, but ensure the underlying runtime type matches to prevent `TypeError` exceptions.
*   **Strict Casts:** Enable `strict-casts: true` in `analysis_options.yaml` under `analyzer: language:` to force explicit casting and catch implicit downcast errors at compile time.

### Null Safety
Eliminate static errors related to null safety by correctly managing variable initialization and nullability.

*   **Modifiers:** Apply `?` for nullable types, `!` for null assertions, and `required` for named parameters that cannot be null.
*   **Late Initialization:** Use the `late` keyword for non-nullable variables guaranteed to be initialized before use. Apply this specifically to top-level or instance variables where Dart's control flow analysis cannot definitively prove initialization.
*   **Wildcards:** Use the `_` wildcard variable (Dart 3.7+) for non-binding local variables or parameters to avoid unused variable warnings.

### Error Handling
Distinguish between recoverable exceptions and unrecoverable errors.

*   **Catching:** Catch `Exception` subtypes for recoverable failures.
*   **Errors:** Never explicitly catch `Error` or its subtypes (e.g., `TypeError`, `ArgumentError`). Errors indicate programming bugs that must be fixed, not caught. Enforce this by enabling the `avoid_catching_errors` linter rule.
*   **Rethrowing:** Use `rethrow` inside a `catch` block to propagate an exception while preserving its original stack trace.

## Workflows

### Workflow: Static Analysis Resolution

Use this sequential workflow to identify, fix, and verify static analysis errors in a Dart project. Copy the checklist to track your progress.

**Task Progress:**
- [ ] 1. Run static analyzer.
- [ ] 2. Apply automated fixes.
- [ ] 3. Resolve remaining errors manually.
- [ ] 4. Verify fixes (Feedback Loop).

**1. Run static analyzer**
Execute the Dart analyzer to identify all static errors in the target directory or file.
```bash
dart analyze . --fatal-infos
```

**2. Apply automated fixes**
Use the `dart fix` tool to automatically resolve standard linting and analysis issues.
```bash
# Preview changes
dart fix --dry-run
# Apply changes
dart fix --apply
```

**3. Resolve remaining errors manually**
Review the remaining analyzer output and apply conditional logic based on the error type:

*   **If the error is a Null Safety issue (e.g., "Property cannot be accessed on a nullable receiver"):**
    *   Verify if the variable can logically be null.
    *   If yes, use optional chaining (`?.`) or provide a fallback (`??`).
    *   If no, and initialization is guaranteed elsewhere, mark the declaration with `late`.
*   **If the error is a Type Mismatch (e.g., "The argument type 'List<dynamic>' can't be assigned..."):**
    *   Trace the variable's initialization.
    *   Add explicit generic type annotations to the instantiation (e.g., `<int>[]` instead of `[]`).
*   **If the error is an Invalid Override (e.g., "The parameter type doesn't match the overridden method"):**
    *   Widen the parameter type to match the superclass, OR
    *   Add the `covariant` keyword to the parameter if tightening the type is intentionally required by the domain logic.

**4. Verify fixes (Feedback Loop)**
Run the validator. Review errors. Fix.
```bash
dart analyze .
dart test
```
*   **If `dart analyze` reports errors:** Return to Step 3.
*   **If `dart test` fails with a `TypeError`:** You have introduced an invalid explicit cast (`as T`) or accessed an uninitialized `late` variable. Locate the runtime failure and correct the type hierarchy or initialization order.

## Examples

### Example: Fixing Dynamic List Assignments
**Input (Fails Static Analysis):**
```dart
void printInts(List<int> a) => print(a);

void main() {
  final list = []; // Inferred as List<dynamic>
  list.add(1);
  list.add(2);
  printInts(list); // Error: List<dynamic> can't be assigned to List<int>
}
```

**Output (Passes Static Analysis):**
```dart
void printInts(List<int> a) => print(a);

void main() {
  final list = <int>[]; // Explicitly typed
  list.add(1);
  list.add(2);
  printInts(list);
}
```

### Example: Fixing Method Overrides (Contravariance)
**Input (Fails Static Analysis):**
```dart
class Animal {
  void chase(Animal a) {}
}

class Cat extends Animal {
  @override
  void chase(Mouse a) {} // Error: Tightening parameter type
}
```

**Output (Passes Static Analysis):**
```dart
class Animal {
  void chase(Animal a) {}
}

class Cat extends Animal {
  @override
  void chase(covariant Mouse a) {} // Explicitly marked covariant
}
```

### Example: Fixing Null Safety with `late`
**Input (Fails Static Analysis):**
```dart
class Thermometer {
  String temperature; // Error: Non-nullable instance field must be initialized

  void read() {
    temperature = '20C';
  }
}
```

**Output (Passes Static Analysis):**
```dart
class Thermometer {
  late String temperature; // Defers initialization check to runtime

  void read() {
    temperature = '20C';
  }
}
```

© dart-lang · BSD-3-Clause · dart-lang/skills

Похожие скиллы

Все скиллы по теме «Языки программирования» →
flutter-dart-code-review affaan-m Чек-лист для ревью Flutter/Dart кода: виджеты, управление состоянием, идиомы Dart, производительность и безопасность. Не зависит от выбранной библиотеки. CX Codex +1 4 800установок dart-best-practices kevmoo Скилл задаёт правила оформления кода на Dart при генерации и ревью. Помогает форматировать многострочные блоки и соблюдать лимит длины строки в 80 знаков. CX Codex +1 832установок dart-test-fundamentals kevmoo Скилл для работы с package:test: структура тестов, group, жизненный цикл и настройка dart_test.yaml. CX Codex +1 450установок dart-use-primary-constructors flutter Скилл учит агента переводить классы Dart на первичные конструкторы и синтаксис Dart 3.13+. Он пригодится при рефакторинге моделей данных и сокращении шаблонного кода. CX Codex +1 14 200установок dart-flutter-patterns affaan-m Набор готовых паттернов для Dart и Flutter: null safety, состояние, навигация, сеть. Пригодится, когда пишете или ревьюите код на Flutter. CX Codex +1 4 700установок

Из того же набора9

dart-add-unit-test Пишет unit-тесты на Dart и Flutter через package:test: раскладывает файлы по test/, добавляет моки и гоняет прогон до зелёного. CX Codex +1 19 200установок dart-run-static-analysis Запускает dart analyze для поиска ошибок и dart fix --apply для автоисправления предупреждений линтера. Помогает проверять качество кода на Dart перед коммитами. CX Codex +1 19 000установок dart-use-pattern-matching Скилл задаёт агенту правила работы с паттернами Dart 3: switch-выражения, деструктуризация JSON, sealed-классы, сегменты пути. CX Codex +1 18 700установок dart-resolve-package-conflicts Скилл для решения конфликтов версий пакетов в Dart-проектах, когда pub get не может найти совместимые версии. Помогает разобраться с lockfile и обновить зависимости без полного пересчёта. CX Codex +1 18 600установок dart-collect-coverage Настраивает сбор тестового покрытия в проектах на Dart и Flutter через пакет coverage и генерирует отчёт в формате LCOV. Помогает отслеживать метрики тестов. CX Codex +1 18 400установок dart-generate-test-mocks Скилл для юнит-тестов на Dart: агент выносит внешние зависимости в конструктор, генерирует моки через mockito и build_runner, потом пишет тесты. CX Codex +1 18 300установок dart-build-cli-app Скилл для разработки command-line приложений на Dart. Даёт паттерны архитектуры, структуру точки входа, коды выхода, маршрутизацию потоков и запуск подпроцессов. CX Codex +1 18 000установок dart-migrate-to-checks-package Переводит тесты Dart с устаревшего пакета package:matcher на package:checks. Пригодится для перехода на строгую типизацию утверждений и улучшение диагностики ошибок. CX Codex +1 18 100установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой