# migrate-nullable-references

Скилл помогает включить nullable reference types в C#-проекте и разрешить все предупреждения. Подходит для миграции существующих кодовых баз, файл за файлом или целиком, и для аннотирования публичных API.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 3400 установок · ★ 5730
- Автор: dotnet
- Лицензия: MIT · policy=mirror · лицензия открытая, файл — в исходнике
- Исходник: https://github.com/dotnet/skills/tree/HEAD/plugins/dotnet-upgrade/skills/migrate-nullable-references/SKILL.md
- Обновлён: 2026-10-24
- HTML: https://affpapa.org/nevibecode/skills/migrate-nullable-references

## Что делает

Скилл автоматизирует процесс включения `<Nullable>enable</Nullable>` и устранения предупреждений CS86xx. Работает пошагово: сначала проверяет готовность проекта (версия языка, целевой фреймворк), затем включает NRT, находит места, где требуются аннотации, и предлагает правки — добавление `?` к типам, применение атрибутов вроде `[NotNullWhen]`, удаление null-forgiving операторов `!`. Всё делается без изменений поведения кода: только метаданные и аннотации, никаких новых ветвлений или проверок.

Скилл поддерживает две стратегии миграции: проект целиком или файл за файлом. Для многопроектных решений рекомендует мигрировать в порядке зависимостей — сначала общие библиотеки. Предусмотрен вспомогательный скрипт `Get-NullableReadiness.ps1`, который сканирует проект и сообщает текущий статус: какие директивы `#nullable disable` установлены, где используются `!` операторы, есть ли suppressions.

Не подходит для проектов на C# 7.3 и ниже (NRT требует C# 8.0+), для кодовых баз, уже полностью мигрировавших с нулевыми предупреждениями, и для простого подавления варнингов без их решения.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add dotnet/skills --skill migrate-nullable-references -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/migrate-nullable-references/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/migrate-nullable-references/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add dotnet/skills --skill migrate-nullable-references -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/migrate-nullable-references/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add dotnet/skills --skill migrate-nullable-references -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/migrate-nullable-references/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install dotnet/skills migrate-nullable-references
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/migrate-nullable-references/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add dotnet/skills --skill migrate-nullable-references -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/dotnet/skills --path plugins/dotnet-upgrade/skills/migrate-nullable-references
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/migrate-nullable-references/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add dotnet/skills --skill migrate-nullable-references -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/dotnet/skills/tree/HEAD/plugins/dotnet-upgrade/skills/migrate-nullable-references/SKILL.md

## Когда брать
- включить nullable reference types в существующем C#-проекте
- разрешить CS8602, CS8618 и другие nullable-варнинги
- аннотировать публичное API библиотеки для nullability
- очистить null-forgiving операторы и понять, где они действительно нужны
- мигрировать проект после обновления зависимостей с новыми nullable-аннотациями

## Примеры запросов агенту
- Помоги включить nullable reference types в моём C#-проекте и устрани все варнинги
- Мне нужно аннотировать публичный API библиотеки для nullability, начни с выяснения готовности проекта
- Обновил зависимость, теперь много новых CS8602 варнингов — помоги мигрировать файл за файлом

## Похожие
- [migrate](https://affpapa.org/nevibecode/skills/codewithmukesh-migrate.md) — скилл · 2800 установок
- [migrate-to-rust](https://affpapa.org/nevibecode/skills/migrate-to-rust.md) — скилл · 538 установок
- [cli-anything-sbox](https://affpapa.org/nevibecode/skills/cli-anything-sbox.md) — скилл · 378 установок
- [google-mobile-ads-android-migrate-to-next-gen](https://affpapa.org/nevibecode/skills/google-mobile-ads-android-migrate-to-next-gen.md) — скилл · 5969 установок
- [design-systems-slds2-migrate](https://affpapa.org/nevibecode/skills/design-systems-slds2-migrate.md) — скилл · 5600 установок
- [migrate-ai-sdk-v6-to-v7](https://affpapa.org/nevibecode/skills/migrate-ai-sdk-v6-to-v7.md) — скилл · 5500 установок

Из того же набора: [dotnet/skills](https://affpapa.org/nevibecode/by/dotnet/skills.md) — 101 карточка

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
