AIKraft/Skills/modern-cpp

modern-cpp

Помогает писать и модернизировать C++-код с использованием современных идиом (C++20/23/26). Заменяет сырые указатели на умные, SFINAE на концепты, printf на std::print, а коды ошибок на std::expected. Полезно для нового кода и безопасности.

TOBTrail of Bits official Разработка ★ 7.4k

Что делает навык

Навык предоставляет руководство по написанию и модернизации C++-кода с использованием идиом C++20, C++23 и C++26, фокусируясь на устранении уязвимостей и сокращении шаблонного кода. Он помогает заменять устаревшие паттерны (сырые указатели, SFINAE, printf) на современные безопасные аналоги (умные указатели, концепты, std::expected).

Когда применять

  • Написание новых C++ функций, классов или библиотек с использованием современных идиом по умолчанию.
  • Модернизация существующего кода (до C++20) с приоритетом по уровню безопасности (память > типы > стиль).
  • Работа над критичным к безопасности или безопасным C++-кодом с включением флагов жесткого контроля компилятора.
  • Проверка C++-кода на соответствие современным идиомам и выявление антипаттернов.

Как работает

  1. Определить контекст: если пишется новый код, использовать современные идиомы (C++20/23); если модернизация — начинать с замен Tier 1.
  2. Заменить антипаттерны на рекомендуемые аналоги: например, new/delete на std::make_unique, SFINAE на концепты, printf на std::print.
  3. Для критичного кода включить флаги жесткого контроля компилятора (-D_FORTIFY_SOURCE=3, -fstack-protector-strong) и санитайзеры (ASan, UBSan) в CI.
  4. При использовании C++26 планировать внедрение Reflection для устранения шаблонного кода, но осторожно относиться к Contracts и std::execution.
  5. Следовать чек-листу: использовать умные указатели для владения, std::span для параметров, constexpr для вычислений на этапе компиляции.

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

Модернизируй этот C++-код, заменив сырые указатели на умные и SFINAE на концепты.
Напиши новую функцию на C++20, которая возвращает std::expected вместо кодов ошибок.
Проверь этот код на наличие антипаттернов и предложи замены из таблицы миграции.

Описание составлено по SKILL.md навыка, сверено 09.10.2026.

Как подключить

1Скачать навык
# возьмите папку навыка «modern-cpp» из репозитория: # https://github.com/trailofbits/skills
2Положить папку с SKILL.md к навыкам ассистента
# положите папку навыка туда, где ассистент ищет skills: cp -r modern-cpp/ ~/.claude/skills/modern-cpp/

Навык — папка с файлом SKILL.md (описание + инструкции) и опциональными скриптами. Ассистент (Claude, Claude Code и совместимые) подхватывает его по описанию и следует шагам.