Создание навыков по кодовой базе
Находит архитектурные шаблоны проекта и создаёт или обновляет файлы SKILL с примерами, правилами и справочниками по стеку.
В навыке 18 файлов. Их можно скопировать или скачать по отдельности, сохранив указанные имена и папки.
SKILL.md
---
name: skill-master
description: Находит архитектурные шаблоны в кодовой базе и автоматически создаёт файлы SKILL для .claude/skills/. Используй при поиске недостающих навыков проекта, создании навыков по существующему коду и синхронизации навыков со структурой проекта.
version: 1.0.0
---
# Skill Master
## Обзор
Анализируй кодовую базу, находи повторяющиеся архитектурные шаблоны и создавай или обновляй файлы SKILL в `.claude/skills/`. Навык поддерживает проекты для нескольких платформ и определяет шаблоны с учётом стека.
**Возможности:**
- Поиск архитектурных шаблонов в коде: ViewModel, Repository, Room и других.
- Сравнение найденных шаблонов с существующими навыками.
- Автоматическое создание файлов SKILL с настоящими примерами кода.
- Отслеживание версий и обновление с сохранением внесённых правок.
## Как ИИ находит и использует этот навык
Навык срабатывает, когда пользователь:
- Просит найти недостающие навыки проекта.
- Просит создать навыки на основе шаблонов в коде.
- Хочет синхронизировать или обновить существующие навыки.
- Упоминает «skill discovery», «generate skills» или «skill-sync».
**Признаки для определения контекста:**
- Наличие каталога `.claude/skills/`.
- Структура проекта, соответствующая известным шаблонам.
- Файлы сборки и конфигурации, указывающие на платформу; см. справочные файлы.
## Режимы
### Режим поиска
Проанализируй кодовую базу и сообщи, каких навыков не хватает.
**Шаги:**
1. Определи платформу по файлам сборки и конфигурации; см. справочные файлы.
2. Проверь корневые каталоги исходников на признаки известных шаблонов.
3. Сопоставь найденные шаблоны с содержимым `.claude/skills/`.
4. Выведи отчёт о недостающих навыках.
**Формат результата:**
```
Найдено шаблонов: {count}
| Шаблон | Найдено файлов | Пример расположения |
|---------|-------------|------------------|
| {name} | {count} | {path} |
Существующих навыков: {count}
Недостающих навыков: {count}
- {skill-name}: {pattern}, найдено файлов: {file-count}
```
### Режим создания
Создай файлы SKILL по найденным шаблонам.
**Шаги:**
1. Запусти поиск, чтобы определить недостающие навыки.
2. Для каждого недостающего навыка:
- Найди 2-3 показательных файла исходного кода.
- Извлеки импорты, аннотации, структуру классов и принятые соглашения.
- Если есть `.ruler/*.md`, извлеки правила из этих файлов.
3. Создай SKILL.md по структуре шаблона.
4. Добавь версию и маркер источников.
**Структура создаваемого SKILL:**
```yaml
---
name: {pattern-name}
description: {Generated description with trigger keywords}
version: 1.0.0
---
# {Title}
## Обзор
{Brief description from pattern analysis}
## Структура файлов
{Extracted from codebase}
## Шаблон реализации
{Real code examples - anonymized}
## Правила
### Что делать
{From .ruler/*.md + codebase conventions}
### Чего избегать
{Anti-patterns found}
## Расположение файлов
{Actual paths from codebase}
```
## Создание нового файла
Если целевой файл SKILL ещё не существует:
1. Создай файл по шаблону.
2. Установи `version: 1.0.0` во frontmatter.
3. Добавь все обязательные разделы.
4. В конце добавь маркер источников; см. «Формат маркера».
## Обновление
**Проверка маркера:** ищи `<!-- Generated by skill-master command` в конце файла.
**Если маркер есть, то есть навык уже запускался:**
- Объедини содержимое: сохрани пользовательские правки и добавь недостающие разделы.
- Увеличь версию: major для несовместимых изменений, minor для новых возможностей, patch для исправлений.
- Обнови список источников в маркере.
**Если маркера нет, то есть существующий файл обновляется впервые:**
- Создай резервную копию: `SKILL.md` → `SKILL.md.bak`.
- Используй её как источник и извлеки подходящее содержимое.
- Создай новый файл с маркером.
- Установи `version: 1.0.0`.
## Формат маркера
Помести его в КОНЕЦ созданного SKILL.md:
```html
<!-- Generated by skill-master command
Version: {version}
Sources:
- path/to/source1.kt
- path/to/source2.md
- .ruler/rule-file.md
Last updated: {YYYY-MM-DD}
-->
```
## Справочные файлы для платформ
После определения платформы прочитай соответствующий файл:
| Платформа | Файлы для определения | Справочный файл |
|----------|-----------------|-----------|
| Android/Gradle | `build.gradle`, `settings.gradle` | `references/android.md` |
| iOS/Xcode | `*.xcodeproj`, `Package.swift` | `references/ios.md` |
| React (web) | `package.json` + react | `references/react-web.md` |
| React Native | `package.json` + react-native | `references/react-native.md` |
| Flutter/Dart | `pubspec.yaml` | `references/flutter.md` |
| Node.js | `package.json` | `references/node.md` |
| Python | `pyproject.toml`, `requirements.txt` | `references/python.md` |
| Java/JVM | `pom.xml`, `build.gradle` | `references/java.md` |
| .NET/C# | `*.csproj`, `*.sln` | `references/dotnet.md` |
| Go | `go.mod` | `references/go.md` |
| Rust | `Cargo.toml` | `references/rust.md` |
| PHP | `composer.json` | `references/php.md` |
| Ruby | `Gemfile` | `references/ruby.md` |
| Elixir | `mix.exs` | `references/elixir.md` |
| C/C++ | `CMakeLists.txt`, `Makefile` | `references/cpp.md` |
| Неизвестная платформа | - | `references/generic.md` |
Если найдено несколько платформ, прочитай несколько справочных файлов.
## Правила
### Что делать
- Извлекай только те шаблоны, которые подтверждены кодом.
- Используй реальные примеры кода, обезличивая бизнес-логику.
- Добавляй ключевые слова для срабатывания навыка в описание.
- Ограничивай SKILL.md 500 строками.
- Подробности выноси в отдельные файлы и ссылайся на них.
- Сохраняй пользовательские разделы при обновлениях.
- Всегда делай резервную копию перед первым изменением.
### Чего избегать
- Не включай секреты, токены и учётные данные.
- Не раскрывай детали логики конкретного бизнеса.
- Не создавай пустые заготовки вместо настоящего содержимого.
- Не перезаписывай пользовательские правки без резервной копии.
- Не создавай глубоких цепочек ссылок: не более 1 уровня.
- Не записывай файлы за пределами `.claude/skills/`.
## Правила извлечения содержимого
**Из кодовой базы:**
- Извлекай структуру классов, аннотации, способы импорта, расположение файлов и соглашения об именовании.
- Никогда не извлекай жёстко заданные значения, секреты, API-ключи и персональные данные.
**Из .ruler/*.md, если такие файлы есть:**
- Извлекай разрешения и запреты, архитектурные ограничения и правила зависимостей.
## Итоговый отчёт
После создания выведи:
```
ОТЧЁТ О СОЗДАНИИ НАВЫКОВ
Создано навыков: {count}
{skill-name} [CREATED | UPDATED | BACKED_UP+CREATED]
├── Проанализировано файлов исходного кода: {file-count}
├── Источники: {list of source files}
├── Правила из: {.ruler files if any}
└── Результат: .claude/skills/{skill-name}/SKILL.md ({line-count} строк)
Проверка:
✓ Корректный YAML frontmatter
✓ В описании есть ключевые слова для срабатывания
✓ Объём не превышает 500 строк
✓ Все обязательные разделы на месте
```
## Ограничения безопасности
- Никогда не записывай файлы за пределами `.claude/skills/`.
- Никогда не удаляй содержимое без резервной копии.
- Всегда создавай резервную копию перед первым изменением файла.
- Сохраняй пользовательские правки.
- Обеспечивай воспроизводимость: одинаковые входные данные дают одинаковый результат.
references/android.md
# Android (Gradle/Kotlin)
## Признаки платформы
- `settings.gradle` или `settings.gradle.kts`
- `build.gradle` или `build.gradle.kts`
- `gradle.properties`, `gradle/libs.versions.toml`
- `gradlew`, `gradle/wrapper/gradle-wrapper.properties`
- `app/src/main/AndroidManifest.xml`
## Признаки многомодульного проекта
- Несколько `include(...)` в `settings.gradle*`
- Несколько каталогов с `build.gradle*` + `src/`
- Типичные корневые каталоги: `feature/`, `core/`, `library/`, `domain/`, `data/`
## Источники перед созданием навыка
- `settings.gradle*` (список модулей)
- `build.gradle*` (корневой проект и модули)
- `gradle/libs.versions.toml` (зависимости)
- `config/detekt/detekt.yml` (если есть)
- `**/AndroidManifest.xml`
## Что искать в кодовой базе
### Корневые каталоги исходников
- `*/src/main/java/`, `*/src/main/kotlin/`
### Типовые слои и каталоги: зафиксируй найденные
`features/`, `core/`, `common/`, `data/`, `domain/`, `presentation/`, `ui/`, `di/`, `navigation/`, `network/`
### Признаки шаблонов
| Шаблон | Критерии обнаружения | Имя навыка |
|---------|-------------------|------------|
| ViewModel | `@HiltViewModel`, `ViewModel()`, `MVI<` | viewmodel-mvi |
| Repository | `*Repository`, `*RepositoryImpl` | data-repository |
| UseCase | `operator fun invoke`, `*UseCase` | domain-usecase |
| Room Entity | `@Entity`, `@PrimaryKey`, `@ColumnInfo` | room-entity |
| Room DAO | `@Dao`, `@Query`, `@Insert`, `@Update` | room-dao |
| Migration | `Migration(`, `@Database(version=` | room-migration |
| Type Converter | `@TypeConverter`, `@TypeConverters` | type-converter |
| DTO | `@SerializedName`, `*Request`, `*Response` | network-dto |
| Compose Screen | `@Composable`, `NavGraphBuilder.` | compose-screen |
| Bottom Sheet | `ModalBottomSheet`, `*BottomSheet(` | bottomsheet-screen |
| Navigation | `@Route`, `NavGraphBuilder.`, `composable(` | navigation-route |
| Hilt Module | `@Module`, `@Provides`, `@Binds`, `@InstallIn` | hilt-module |
| Worker | `@HiltWorker`, `CoroutineWorker`, `WorkManager` | worker-task |
| DataStore | `DataStore<Preferences>`, `preferencesDataStore` | datastore-preference |
| Retrofit API | `@GET`, `@POST`, `@PUT`, `@DELETE` | retrofit-api |
| Mapper | `*.toModel()`, `*.toEntity()`, `*.toDto()` | data-mapper |
| Interceptor | `Interceptor`, `intercept()` | network-interceptor |
| Paging | `PagingSource`, `Pager(`, `PagingData` | paging-source |
| Broadcast Receiver | `BroadcastReceiver`, `onReceive(` | broadcast-receiver |
| Android Service | `: Service()`, `ForegroundService` | android-service |
| Notification | `NotificationCompat`, `NotificationChannel` | notification-builder |
| Analytics | `FirebaseAnalytics`, `logEvent` | analytics-event |
| Feature Flag | `RemoteConfig`, `FeatureFlag` | feature-flag |
| App Widget | `AppWidgetProvider`, `GlanceAppWidget` | app-widget |
| Unit Test | `@Test`, `MockK`, `mockk(`, `every {` | unit-test |
## Обязательные разделы результата
Добавь, если найдено; перечисли реальные имена:
- **Состав функциональных модулей**: каталоги в `feature/`
- **Основные модули**: каталоги в `core/`, `library/`
- **Графы навигации**: `*Graph.kt`, `*Navigator*.kt`
- **Модули Hilt**: `@Module` классы, `di/` содержимое
- **API Retrofit**: `*Api.kt` интерфейсы
- **Базы данных Room**: `@Database` классы
- **Фоновые обработчики**: `@HiltWorker` классы
- **Proguard**: `proguard-rules.pro`, если есть
## Откуда брать команды
- README и документация с вызовами `./gradlew`
- Сценарии CI с командами Gradle
- Обычные команды: `./gradlew assemble`, `./gradlew test`, `./gradlew lint`
- Добавляй только команды, которые есть в репозитории
## Основные пути
- `app/src/main/`, `app/src/main/res/`
- `app/src/main/java/`, `app/src/main/kotlin/`
- `app/src/test/`, `app/src/androidTest/`
- `library/database/migration/` (миграции Room)
references/cpp.md
# C/C++ ## Признаки платформы - `CMakeLists.txt` - `Makefile`, `makefile` - `*.cpp`, `*.c`, `*.h`, `*.hpp` - `conanfile.txt`, `conanfile.py` (Conan) - `vcpkg.json` (vcpkg) ## Признаки многомодульного проекта - Несколько `CMakeLists.txt` с `add_subdirectory` - Несколько `Makefile` в подкаталогах - `lib/`, `src/`, `modules/` каталоги ## Источники перед созданием навыка - `CMakeLists.txt` (зависимости и цели сборки) - `conanfile.*` (зависимости) - `vcpkg.json` (зависимости) - `Makefile` (цели сборки) ## Что искать в кодовой базе ### Корневые каталоги исходников - `src/`, `lib/`, `include/` ### Типовые слои и каталоги: зафиксируй найденные `core/`, `utils/`, `network/`, `storage/`, `ui/`, `tests/` ### Признаки шаблонов | Шаблон | Критерии обнаружения | Имя навыка | |---------|-------------------|------------| | Class | `class *`, `public:`, `private:` | cpp-class | | Header | `*.h`, `*.hpp`, `#pragma once` | header-file | | Template | `template<`, `typename T` | cpp-template | | Smart Pointer | `std::unique_ptr`, `std::shared_ptr` | smart-pointer | | RAII | шаблон деструктора, `~*()` | raii-pattern | | Singleton | `static *& instance()` | singleton | | Factory | `create*()`, `make*()` | factory-pattern | | Observer | `subscribe`, `notify`, шаблон обратного вызова | observer-pattern | | Thread | `std::thread`, `std::async`, `pthread` | threading | | Mutex | `std::mutex`, `std::lock_guard` | synchronization | | Network | `socket`, `asio::`, `boost::asio` | network-cpp | | Serialization | `nlohmann::json`, `protobuf` | serialization | | Unit Test | `TEST(`, `TEST_F(`, `gtest` | gtest | | Catch2 Test | `TEST_CASE(`, `REQUIRE(` | catch2-test | ## Обязательные разделы результата Добавь, если найдено: - **Основные модули**: основная функциональность - **Библиотеки**: внутренние библиотеки - **Заголовочные файлы**: публичный API - **Тесты**: организация проверок - **Build цели сборки**: executables, libraries ## Откуда брать команды - `CMakeLists.txt` пользовательские цели сборки - `Makefile` цели сборки - README, документация и CI - Обычные команды: `cmake`, `make`, `ctest` - Добавляй только команды, которые есть в репозитории ## Основные пути - `src/`, `include/` - `lib/`, `libs/` - `tests/`, `test/` - `build/` (вне каталога исходников)
references/dotnet.md
# .NET (C#/F#) ## Признаки платформы - `*.csproj`, `*.fsproj` - `*.sln` - `global.json` - `appsettings.json` - `Program.cs`, `Startup.cs` ## Признаки многомодульного проекта - Несколько `*.csproj` файлов - Решение с несколькими проектами - `src/`, `tests/` каталоги с projects ## Источники перед созданием навыка - `*.csproj` (зависимости и SDK) - `*.sln` (структура проекта) - `appsettings.json` (конфигурация) - `global.json` (версия SDK) ## Что искать в кодовой базе ### Корневые каталоги исходников - `src/`, `*/` (для каждого проекта) ### Типовые слои и каталоги: зафиксируй найденные `Controllers/`, `Services/`, `Repositories/`, `Models/`, `Entities/`, `DTOs/`, `Middleware/`, `Extensions/` ### Признаки шаблонов | Шаблон | Критерии обнаружения | Имя навыка | |---------|-------------------|------------| | Controller | `[ApiController]`, `ControllerBase`, `[HttpGet]` | aspnet-controller | | Service | `I*Service`, `class *Service` | dotnet-service | | Repository | `I*Repository`, `class *Repository` | dotnet-repository | | Entity | `class *Entity`, `[Table]`, `[Key]` | ef-entity | | DTO | `class *Dto`, `class *Request`, `class *Response` | dto-pattern | | DbContext | `: DbContext`, `DbSet<` | ef-dbcontext | | Middleware | `IMiddleware`, `RequestDelegate` | aspnet-middleware | | Background Service | `BackgroundService`, `IHostedService` | background-service | | MediatR Handler | `IRequestHandler<`, `INotificationHandler<` | mediatr-handler | | SignalR Hub | `: Hub`, `[HubName]` | signalr-hub | | Minimal API | `app.MapGet(`, `app.MapPost(` | minimal-api | | gRPC Service | `*.proto`, `: *Base` | grpc-service | | EF Migration | `Migrations/`, `AddMigration` | ef-migration | | Unit Test | `[Fact]`, `[Theory]`, `xUnit` | xunit-test | | Integration Test | `WebApplicationFactory`, `IClassFixture` | integration-test | ## Обязательные разделы результата Добавь, если найдено: - **Контроллеры**: конечные точки API - **Сервисы**: бизнес-логика - **Репозитории**: доступ к данным (EF Core) - **Сущности/DTO**: модели данных - **Промежуточные обработчики**: цепочка обработки запросов - **Фоновые сервисы**: размещённые сервисы ## Откуда брать команды - `*.csproj` цели сборки - README, документация и CI - Обычные команды: `dotnet build`, `dotnet test`, `dotnet run` - Добавляй только команды, которые есть в репозитории ## Основные пути - `src/*/`, project каталоги - `tests/` - `Migrations/` - `Properties/`
references/elixir.md
# Elixir/Erlang ## Признаки платформы - `mix.exs` - `mix.lock` - `config/config.exs` - `lib/`, `test/` каталоги ## Признаки многомодульного проекта - Umbrella-приложение (`apps/` каталог) - Несколько `mix.exs` в подкаталогах - `rel/` для релизов ## Источники перед созданием навыка - `mix.exs` (dependencies, config) - `config/*.exs` (конфигурация) - `rel/config.exs` (releases) ## Что искать в кодовой базе ### Корневые каталоги исходников - `lib/`, `apps/*/lib/` ### Типовые слои и каталоги: зафиксируй найденные `controllers/`, `views/`, `channels/`, `contexts/`, `schemas/`, `workers/` ### Признаки шаблонов | Шаблон | Критерии обнаружения | Имя навыка | |---------|-------------------|------------| | Phoenix Controller | `use *Web, :controller`, `def index` | phoenix-controller | | Phoenix LiveView | `use *Web, :live_view`, `mount/3` | phoenix-liveview | | Phoenix Channel | `use *Web, :channel`, `join/3` | phoenix-channel | | Ecto Schema | `use Ecto.Schema`, `schema "` | ecto-schema | | Ecto Migration | `use Ecto.Migration`, `create table` | ecto-migration | | Ecto Changeset | `cast/4`, `validate_required` | ecto-changeset | | Context | `defmodule *Context`, `def list_*` | phoenix-context | | GenServer | `use GenServer`, `handle_call` | genserver | | Supervisor | `use Supervisor`, `start_link` | supervisor | | Task | `Task.async`, `Task.Supervisor` | elixir-task | | Oban Worker | `use Oban.Worker`, `perform/1` | oban-worker | | Absinthe | `use Absinthe.Schema`, `field :` | graphql-schema | | ExUnit Test | `use ExUnit.Case`, `test "` | exunit-test | ## Обязательные разделы результата Добавь, если найдено: - **Контроллеры/LiveView**: обработчики HTTP/WebSocket - **Контексты**: бизнес-логика - **Схемы**: модели Ecto - **Каналы**: обработчики в реальном времени - **Фоновые обработчики**: фоновые задания ## Откуда брать команды - `mix.exs` псевдонимы - README, документация и CI - Обычные команды: `mix deps.get`, `mix test`, `mix phx.server` - Добавляй только команды, которые есть в репозитории ## Основные пути - `lib/*/`, `lib/*_web/` - `priv/repo/migrations/` - `test/` - `config/`
references/flutter.md
# Flutter/Dart ## Признаки платформы - `pubspec.yaml` - `lib/main.dart` - `android/`, `ios/`, `web/` каталоги - `.dart_tool/` - `analysis_options.yaml` ## Признаки многомодульного проекта - `melos.yaml` (монорепозиторий) - Несколько `pubspec.yaml` в подкаталогах - `packages/` каталог ## Источники перед созданием навыка - `pubspec.yaml` (зависимости) - `analysis_options.yaml` - `build.yaml` (если используется build_runner) - `lib/main.dart` (точка входа) ## Что искать в кодовой базе ### Корневые каталоги исходников - `lib/`, `test/` ### Типовые слои и каталоги: зафиксируй найденные `screens/`, `widgets/`, `models/`, `services/`, `providers/`, `repositories/`, `utils/`, `constants/`, `bloc/`, `cubit/` ### Признаки шаблонов | Шаблон | Критерии обнаружения | Имя навыка | |---------|-------------------|------------| | Screen/Page | `*Screen`, `*Page`, `extends StatefulWidget` | flutter-screen | | Widget | `extends StatelessWidget`, `extends StatefulWidget` | flutter-widget | | BLoC | `extends Bloc<`, `extends Cubit<` | bloc-pattern | | Provider | `ChangeNotifier`, `Provider.of<`, `context.read<` | provider-pattern | | Riverpod | `@riverpod`, `ref.watch`, `ConsumerWidget` | riverpod-provider | | GetX | `GetxController`, `Get.put`, `Obx(` | getx-controller | | Repository | `*Repository`, `abstract class *Repository` | data-repository | | Service | `*Service` | service-layer | | Model | `fromJson`, `toJson`, `@JsonSerializable` | json-model | | Freezed | `@freezed`, `part '*.freezed.dart'` | freezed-model | | API Client | `Dio`, `http.Client`, `Retrofit` | api-client | | Navigation | `Navigator`, `GoRouter`, `auto_route` | flutter-navigation | | Localization | `AppLocalizations`, `l10n`, `intl` | flutter-l10n | | Testing | `testWidgets`, `WidgetTester`, `flutter_test` | widget-test | | Integration Test | `integration_test`, `IntegrationTestWidgetsFlutterBinding` | integration-test | ## Обязательные разделы результата Добавь, если найдено: - **Состав экранов**: каталоги в `screens/`, `pages/` - **Управление состоянием**: BLoC, Provider, Riverpod, GetX - **Настройка навигации**: GoRouter, auto_route, Navigator - **Способ внедрения зависимостей**: get_it, injectable, вручную - **Слой API**: Dio, http, Retrofit - **Модели**: Freezed, json_serializable ## Откуда брать команды - `pubspec.yaml` команды (если используется melos) - README и документация - Обычные команды: `flutter run`, `flutter test`, `flutter build` - Добавляй только команды, которые есть в репозитории ## Основные пути - `lib/`, `test/` - `lib/screens/`, `lib/widgets/` - `lib/bloc/`, `lib/providers/` - `assets/`
references/generic.md
# Общий случай: неизвестный стек Запасной справочник для случая, когда конкретную платформу определить не удалось. ## Признаки платформы - Характерные файлы сборки или конфигурации не найдены - Смешанный технологический стек - Репозиторий только с документацией ## Признаки многомодульного проекта - Несколько каталогов с разными зонами ответственности - `packages/`, `modules/`, `libs/` каталоги - Структура монорепозитория без специальных инструментов ## Источники перед созданием навыка - `README.md` (обзор проекта) - `docs/*` (documentation) - `.env.example` (переменные окружения) - `docker-compose.yml` (сервисы) - Файлы CI (`.github/workflows/`, и др.) ## Что искать в кодовой базе ### Корневые каталоги исходников - `src/`, `lib/`, `app/` ### Типовые слои и каталоги: зафиксируй найденные `api/`, `core/`, `utils/`, `services/`, `models/`, `config/`, `scripts/` ### Признаки общих шаблонов | Шаблон | Критерии обнаружения | Имя навыка | |---------|-------------------|------------| | Entry Point | `main.*`, `index.*`, `app.*` | entry-point | | Config | `config.*`, `settings.*` | config-file | | API Client | `api/`, `client/`, HTTP-вызовы | api-client | | Model | `model/`, `types/`, структуры данных | data-model | | Service | `service/`, бизнес-логика | service-layer | | Utility | `utils/`, `helpers/`, `common/` | utility-module | | Test | `test/`, `tests/`, `*_test.*`, `*.test.*` | test-file | | Script | `scripts/`, `bin/` | script-file | | Documentation | `docs/`, `*.md` | documentation | ## Обязательные разделы результата Добавь, если найдено: - **Структура проекта**: main каталоги - **Точки входа**: main файлов - **Конфигурация**: файлы конфигурации - **Зависимости**: любой менеджер пакетов - **Команды сборки и запуска**: из README и скриптов ## Откуда брать команды - `README.md` (ищи блоки кода) - `Makefile`, `Taskfile.yml` - `scripts/` каталог - Сценарии CI - Добавляй только команды, которые есть в репозитории ## Основные пути - `src/`, `lib/` - `docs/` - `scripts/` - `config/` ## Примечания При работе с этим общим справочником: 1. Ищи любые узнаваемые шаблоны 2. Опиши фактическую структуру проекта 3. Если есть README, извлеки команды из него 4. Отметь технологии, упомянутые в документации 5. Ограничь результат необходимыми проверенными фактами
references/go.md
# Go ## Признаки платформы - `go.mod` - `go.sum` - `main.go` - `cmd/`, `internal/`, `pkg/` каталоги ## Признаки многомодульного проекта - `go.work` (рабочая область) - Несколько `go.mod` файлов - `cmd/*/main.go` (несколько исполняемых файлов) ## Источники перед созданием навыка - `go.mod` (зависимости) - `Makefile` (команды сборки) - `config/*.yaml` или `*.toml` ## Что искать в кодовой базе ### Корневые каталоги исходников - `cmd/`, `internal/`, `pkg/` ### Типовые слои и каталоги: зафиксируй найденные `handler/`, `service/`, `repository/`, `model/`, `middleware/`, `config/`, `util/` ### Признаки шаблонов | Шаблон | Критерии обнаружения | Имя навыка | |---------|-------------------|------------| | HTTP Handler | `http.Handler`, `http.HandlerFunc`, `gin.Context` | http-handler | | Gin Route | `gin.Engine`, `r.GET(`, `r.POST(` | gin-route | | Echo Route | `echo.Echo`, `e.GET(`, `e.POST(` | echo-route | | Fiber Route | `fiber.App`, `app.Get(`, `app.Post(` | fiber-route | | gRPC Service | `*.proto`, `pb.*Server` | grpc-service | | Repository | `type *Repository interface`, `*Repository` | data-repository | | Service | `type *Service interface`, `*Service` | service-layer | | GORM Model | `gorm.Model`, `*gorm.DB` | gorm-model | | sqlx | `sqlx.DB`, `sqlx.NamedExec` | sqlx-usage | | Migration | `goose`, `golang-migrate` | db-migration | | Middleware | `func(*Context)`, `middleware.*` | go-middleware | | Worker | `go func()`, `sync.WaitGroup`, `errgroup` | worker-goroutine | | Config | `viper`, `envconfig`, `cleanenv` | config-loader | | Unit Test | `*_test.go`, `func Test*(t *testing.T)` | go-test | | Mock | `mockgen`, `*_mock.go` | go-mock | ## Обязательные разделы результата Добавь, если найдено: - **Обработчики HTTP**: конечные точки API - **Сервисы**: бизнес-логика - **Репозитории**: доступ к данным - **Модели**: структуры данных - **Промежуточные обработчики**: перехватчики запросов - **Миграции**: миграции базы данных ## Откуда брать команды - `Makefile` цели сборки - README, документация и CI - Обычные команды: `go build`, `go test`, `go run` - Добавляй только команды, которые есть в репозитории ## Основные пути - `cmd/`, `internal/`, `pkg/` - `api/`, `handler/` - `migrations/` - `config/`
references/ios.md
# iOS (Xcode/Swift)
## Признаки платформы
- `*.xcodeproj`, `*.xcworkspace`
- `Package.swift` (SPM)
- `Podfile`, `Podfile.lock` (CocoaPods)
- `Cartfile` (Carthage)
- `*.pbxproj`
- `Info.plist`
## Признаки многомодульного проекта
- Несколько целей сборки в `*.xcodeproj`
- Несколько `Package.swift` файлов
- Рабочая область с несколькими проектами
- `Modules/`, `Packages/`, `Features/` каталоги
## Источники перед созданием навыка
- `*.xcodeproj/project.pbxproj` (список целей сборки)
- `Package.swift` (зависимости и цели сборки)
- `Podfile` (зависимости)
- `*.xcconfig` (конфигурации сборки)
- `Info.plist` файлов
## Что искать в кодовой базе
### Корневые каталоги исходников
- `*/Sources/`, `*/Source/`
- `*/App/`, `*/Core/`, `*/Features/`
### Типовые слои и каталоги: зафиксируй найденные
`Models/`, `Views/`, `ViewModels/`, `Services/`, `Networking/`, `Utilities/`, `Extensions/`, `Coordinators/`
### Признаки шаблонов
| Шаблон | Критерии обнаружения | Имя навыка |
|---------|-------------------|------------|
| SwiftUI View | `struct *: View`, `var body: some View` | swiftui-view |
| UIKit VC | `UIViewController`, `viewDidLoad()` | uikit-viewcontroller |
| ViewModel | `@Observable`, `ObservableObject`, `@Published` | viewmodel-observable |
| Coordinator | `Coordinator`, `*Coordinator` | coordinator-pattern |
| Repository | `*Repository`, `protocol *Repository` | data-repository |
| Service | `*Service`, `protocol *Service` | service-layer |
| Core Data | `NSManagedObject`, `@NSManaged`, `.xcdatamodeld` | coredata-entity |
| Realm | `Object`, `@Persisted` | realm-model |
| Network | `URLSession`, `Alamofire`, `Moya` | network-client |
| Dependency | `@Inject`, `Container`, `Swinject` | di-container |
| Navigation | `NavigationStack`, `NavigationPath` | navigation-swiftui |
| Combine | `Publisher`, `AnyPublisher`, `sink` | combine-publisher |
| Async/Await | `async`, `await`, `Task {` | async-await |
| Unit Test | `XCTestCase`, `func test*()` | xctest |
| UI Test | `XCUIApplication`, `XCUIElement` | xcuitest |
## Обязательные разделы результата
Добавь, если найдено:
- **Состав целей сборки**: список из pbxproj
- **Модули/пакеты**: пакеты SPM и Pods
- **Архитектура представлений**: SwiftUI или UIKit
- **Управление состоянием**: Combine, Observable, и др.
- **Сетевой слой**: URLSession, Alamofire, и др.
- **Хранение данных**: Core Data, Realm, UserDefaults
- **Настройка внедрения зависимостей**: Swinject, ручное внедрение
## Откуда брать команды
- README и документация с командами xcodebuild
- `fastlane/Fastfile` сценарии
- Сценарии CI (`.github/workflows/`, `.gitlab-ci.yml`)
- Обычные команды: `xcodebuild test`, `fastlane test`
- Добавляй только команды, которые есть в репозитории
## Основные пути
- `*/Sources/`, `*/Tests/`
- `*.xcodeproj/`, `*.xcworkspace/`
- `Pods/` (при использовании CocoaPods)
- `Packages/` (при использовании локальных пакетов SPM)
references/java.md
# Java/JVM (Spring, и др.) ## Признаки платформы - `pom.xml` (Maven) - `build.gradle`, `build.gradle.kts` (Gradle) - `settings.gradle` (несколько модулей) - `src/main/java/`, `src/main/kotlin/` - `application.properties`, `application.yml` ## Признаки многомодульного проекта - Несколько `pom.xml` с `<modules>` - Несколько `build.gradle` с `include()` - `modules/`, `services/` каталоги ## Источники перед созданием навыка - `pom.xml` или `build.gradle*` (зависимости) - `application.properties/yml` (конфигурация) - `settings.gradle` (модули) - `docker-compose.yml` (сервисы) ## Что искать в кодовой базе ### Корневые каталоги исходников - `src/main/java/`, `src/main/kotlin/` - `src/test/java/`, `src/test/kotlin/` ### Типовые слои и каталоги: зафиксируй найденные `controller/`, `service/`, `repository/`, `model/`, `entity/`, `dto/`, `config/`, `exception/`, `util/` ### Признаки шаблонов | Шаблон | Критерии обнаружения | Имя навыка | |---------|-------------------|------------| | REST Controller | `@RestController`, `@GetMapping`, `@PostMapping` | spring-controller | | Service | `@Service`, `class *Service` | spring-service | | Repository | `@Repository`, `JpaRepository`, `CrudRepository` | spring-repository | | Entity | `@Entity`, `@Table`, `@Id` | jpa-entity | | DTO | `class *DTO`, `class *Request`, `class *Response` | dto-pattern | | Config | `@Configuration`, `@Bean` | spring-config | | Component | `@Component`, `@Autowired` | spring-component | | Security | `@EnableWebSecurity`, `SecurityFilterChain` | spring-security | | Validation | `@Valid`, `@NotNull`, `@Size` | validation-pattern | | Exception Handler | `@ControllerAdvice`, `@ExceptionHandler` | exception-handler | | Scheduler | `@Scheduled`, `@EnableScheduling` | scheduled-task | | Event | `ApplicationEvent`, `@EventListener` | event-listener | | Flyway Migration | `V*__*.sql`, `flyway` | flyway-migration | | Liquibase | `changelog*.xml`, `liquibase` | liquibase-migration | | Unit Test | `@Test`, `@SpringBootTest`, `MockMvc` | spring-test | | Integration Test | `@DataJpaTest`, `@WebMvcTest` | integration-test | ## Обязательные разделы результата Добавь, если найдено: - **Контроллеры**: конечные точки REST - **Сервисы**: бизнес-логика - **Репозитории**: доступ к данным (JPA, JDBC) - **Сущности/DTO**: модели данных - **Конфигурация**: бины и профили Spring - **Безопасность**: настройки аутентификации ## Откуда брать команды - `pom.xml` плагины, `build.gradle` задачи - README, документация и CI - Обычные команды: `./mvnw`, `./gradlew`, `mvn test`, `gradle test` - Добавляй только команды, которые есть в репозитории ## Основные пути - `src/main/java/`, `src/main/kotlin/` - `src/main/resources/` - `src/test/` - `db/migration/` (Flyway)
references/node.md
# Node.js ## Признаки платформы - `package.json` (без react/react-native) - `tsconfig.json` - `node_modules/` - `*.js`, `*.ts`, `*.mjs`, `*.cjs` entry файлов ## Признаки многомодульного проекта - `pnpm-workspace.yaml`, `lerna.json` - `nx.json`, `turbo.json` - Несколько `package.json` в подкаталогах - `packages/`, `apps/` каталоги ## Источники перед созданием навыка - `package.json` (зависимости и команды) - `tsconfig.json` (пути и параметры компилятора) - `.env.example` (переменные окружения) - `docker-compose.yml` (сервисы) ## Что искать в кодовой базе ### Корневые каталоги исходников - `src/`, `lib/`, `app/` ### Типовые слои и каталоги: зафиксируй найденные `controllers/`, `services/`, `models/`, `routes/`, `middleware/`, `utils/`, `config/`, `types/`, `repositories/` ### Признаки шаблонов | Шаблон | Критерии обнаружения | Имя навыка | |---------|-------------------|------------| | Express Route | `app.get(`, `app.post(`, `Router()` | express-route | | Express Middleware | `(req, res, next)`, `app.use(` | express-middleware | | NestJS Controller | `@Controller`, `@Get`, `@Post` | nestjs-controller | | NestJS Service | `@Injectable`, `@Service` | nestjs-service | | NestJS Module | `@Module`, `imports:`, `providers:` | nestjs-module | | Fastify Route | `fastify.get(`, `fastify.post(` | fastify-route | | GraphQL Resolver | `@Resolver`, `@Query`, `@Mutation` | graphql-resolver | | TypeORM Entity | `@Entity`, `@Column`, `@PrimaryGeneratedColumn` | typeorm-entity | | Prisma Model | `prisma.*.create`, `prisma.*.findMany` | prisma-usage | | Mongoose Model | `mongoose.Schema`, `mongoose.model(` | mongoose-model | | Sequelize Model | `Model.init`, `DataTypes` | sequelize-model | | Queue Worker | `Bull`, `BullMQ`, `process(` | queue-worker | | Cron Job | `@Cron`, `node-cron`, `cron.schedule` | cron-job | | WebSocket | `ws`, `socket.io`, `io.on(` | websocket-handler | | Unit Test | `describe(`, `it(`, `expect(`, `jest` | jest-test | | E2E Test | `supertest`, `request(app)` | e2e-test | ## Обязательные разделы результата Добавь, если найдено: - **Маршруты/контроллеры**: конечные точки API - **Сервисный слой**: бизнес-логика - **База данных**: использование ORM/ODM (TypeORM, Prisma, Mongoose) - **Промежуточные обработчики**: аутентификация, валидация и обработка ошибок - **Фоновые задания**: очереди и задания cron - **Обработчики WebSocket**: возможности реального времени ## Откуда брать команды - `package.json` раздел команд - README и документация - Сценарии CI - Обычные команды: `npm run dev`, `npm run build`, `npm test` - Добавляй только команды, которые есть в репозитории ## Основные пути - `src/`, `lib/` - `src/routes/`, `src/controllers/` - `src/services/`, `src/models/` - `prisma/`, `migrations/`
references/php.md
# PHP ## Признаки платформы - `composer.json`, `composer.lock` - `public/index.php` - `artisan` (Laravel) - `spark` (CodeIgniter 4) - `bin/console` (Symfony) - `app/Config/App.php` (CodeIgniter 4) - `ext-phalcon` в composer.json (Phalcon) - `phalcon/devtools` (Phalcon) ## Признаки многомодульного проекта - `packages/` каталог - Модули Laravel (`app/Modules/`) - Модули CodeIgniter (`app/Modules/`, `modules/`) - Несколько приложений Phalcon (`apps/*/`) - Несколько `composer.json` в подкаталогах ## Источники перед созданием навыка - `composer.json` (зависимости) - `.env.example` (переменные окружения) - `config/*.php` (Laravel/Symfony) - `routes/*.php` (Laravel) - `app/Config/*` (CodeIgniter 4) - `apps/*/config/` (Phalcon) ## Что искать в кодовой базе ### Корневые каталоги исходников - `app/`, `src/`, `apps/` ### Типовые слои и каталоги: зафиксируй найденные `Controllers/`, `Services/`, `Repositories/`, `Models/`, `Entities/`, `Http/`, `Providers/`, `Console/` ### Структуры конкретных фреймворков **Laravel** (зафиксируй, если найдено): - `app/Http/Controllers`, `app/Models`, `database/migrations` - `routes/*.php`, `resources/views` **Symfony** (зафиксируй, если найдено): - `src/Controller`, `src/Entity`, `config/packages`, `templates` **CodeIgniter 4** (зафиксируй, если найдено): - `app/Controllers`, `app/Models`, `app/Views` - `app/Config/Routes.php`, `app/Database/Migrations` **Phalcon** (зафиксируй, если найдено): - `apps/*/controllers/`, `apps/*/Module.php` - `models/`, `views/` ### Признаки шаблонов | Шаблон | Критерии обнаружения | Имя навыка | |---------|-------------------|------------| | Laravel Controller | `extends Controller`, `public function index` | laravel-controller | | Laravel Model | `extends Model`, `protected $fillable` | laravel-model | | Laravel Migration | `extends Migration`, `Schema::create` | laravel-migration | | Laravel Service | `class *Service`, `app/Services/` | laravel-service | | Laravel Repository | `*Repository`, `interface *Repository` | laravel-repository | | Laravel Job | `implements ShouldQueue`, `dispatch(` | laravel-job | | Laravel Event | `extends Event`, `event(` | laravel-event | | Symfony Controller | `#[Route]`, `AbstractController` | symfony-controller | | Symfony Service | `#[AsService]`, `services.yaml` | symfony-service | | Doctrine Entity | `#[ORM\Entity]`, `#[ORM\Column]` | doctrine-entity | | Doctrine Migration | `AbstractMigration`, `$this->addSql` | doctrine-migration | | CI4 Controller | `extends BaseController`, `app/Controllers/` | ci4-controller | | CI4 Model | `extends Model`, `protected $table` | ci4-model | | CI4 Migration | `extends Migration`, `$this->forge->` | ci4-migration | | CI4 Entity | `extends Entity`, `app/Entities/` | ci4-entity | | Phalcon Controller | `extends Controller`, `Phalcon\Mvc\Controller` | phalcon-controller | | Phalcon Model | `extends Model`, `Phalcon\Mvc\Model` | phalcon-model | | Phalcon Migration | `Phalcon\Migrations`, `morphTable` | phalcon-migration | | API Resource | `extends JsonResource`, `toArray` | api-resource | | Form Request | `extends FormRequest`, `rules()` | form-request | | Middleware | `implements Middleware`, `handle(` | php-middleware | | Unit Test | `extends TestCase`, `test*()`, `PHPUnit` | phpunit-test | | Feature Test | `extends TestCase`, `$this->get(`, `$this->post(` | feature-test | ## Обязательные разделы результата Добавь, если найдено: - **Контроллеры**: конечные точки HTTP - **Модели/сущности**: слой данных - **Сервисы**: бизнес-логика - **Репозитории**: доступ к данным - **Миграции**: изменения базы данных - **Задания/события**: асинхронная обработка - **Бизнес-модули**: крупнейшие модули по размеру ## Откуда брать команды - `composer.json` команды - `php artisan` (Laravel) - `php spark` (CodeIgniter 4) - `bin/console` (Symfony) - `phalcon` команды devtools - README, документация и CI - Добавляй только команды, которые есть в репозитории ## Основные пути **Laravel:** - `app/`, `routes/`, `database/migrations/` - `resources/views/`, `tests/` **Symfony:** - `src/`, `config/`, `templates/` - `migrations/`, `tests/` **CodeIgniter 4:** - `app/Controllers/`, `app/Models/`, `app/Views/` - `app/Database/Migrations/`, `tests/` **Phalcon:** - `apps/*/controllers/`, `apps/*/models/` - `apps/*/views/`, `migrations/`
references/python.md
# Python ## Признаки платформы - `pyproject.toml` - `requirements.txt`, `requirements-dev.txt` - `Pipfile`, `poetry.lock` - `setup.py`, `setup.cfg` - `manage.py` (Django) ## Признаки многомодульного проекта - Несколько `pyproject.toml` в подкаталогах - `packages/`, `apps/` каталоги - Структура Django: `apps/` с `apps.py` ## Источники перед созданием навыка - `pyproject.toml` или `setup.py` - `requirements*.txt`, `Pipfile` - `tox.ini`, `pytest.ini` - `manage.py`, `settings.py` (Django) ## Что искать в кодовой базе ### Корневые каталоги исходников - `src/`, `app/`, `packages/`, `tests/` ### Типовые слои и каталоги: зафиксируй найденные `api/`, `routers/`, `views/`, `services/`, `repositories/`, `models/`, `schemas/`, `utils/`, `config/` ### Признаки шаблонов | Шаблон | Критерии обнаружения | Имя навыка | |---------|-------------------|------------| | FastAPI Router | `APIRouter`, `@router.get`, `@router.post` | fastapi-router | | FastAPI Dependency | `Depends(`, `def get_*():` | fastapi-dependency | | Django View | `View`, `APIView`, `def get(self, request)` | django-view | | Django Model | `models.Model`, `class Meta:` | django-model | | Django Serializer | `serializers.Serializer`, `ModelSerializer` | drf-serializer | | Flask Route | `@app.route`, `Blueprint` | flask-route | | Pydantic Model | `BaseModel`, `Field(`, `model_validator` | pydantic-model | | SQLAlchemy Model | `Base`, `Column(`, `relationship(` | sqlalchemy-model | | Alembic Migration | `alembic/versions/`, `op.create_table` | alembic-migration | | Repository | `*Repository`, `class *Repository` | data-repository | | Service | `*Service`, `class *Service` | service-layer | | Celery Task | `@celery.task`, `@shared_task` | celery-task | | CLI Command | `@click.command`, `typer.Typer` | cli-command | | Unit Test | `pytest`, `def test_*():`, `unittest` | pytest-test | | Fixture | `@pytest.fixture`, `conftest.py` | pytest-fixture | ## Обязательные разделы результата Добавь, если найдено: - **Маршрутизаторы/представления**: конечные точки API - **Модели/схемы**: модели данных (Pydantic, SQLAlchemy, Django) - **Сервисы**: слой бизнес-логики - **Репозитории**: слой доступа к данным - **Миграции**: миграции Alembic и Django - **Задачи**: Celery, фоновые задания ## Откуда брать команды - `pyproject.toml` разделы инструментов - README, документация и CI - Обычные команды: `python manage.py`, `pytest`, `uvicorn`, `flask run` - Добавляй только команды, которые есть в репозитории ## Основные пути - `src/`, `app/` - `tests/` - `alembic/`, `migrations/` - `templates/`, `static/` (для веб-приложения)
references/react-native.md
# React Native ## Признаки платформы - `package.json` с `react-native` - `metro.config.js` - `app.json` или `app.config.js` (Expo) - `android/`, `ios/` каталоги - `babel.config.js` с пресет metro ## Признаки многомодульного проекта - Monorepo с `packages/` - Несколько `app.json` файлов - Рабочая область Nx с React Native ## Источники перед созданием навыка - `package.json` (зависимости и команды) - `app.json` или `app.config.js` - `metro.config.js` - `babel.config.js` - `tsconfig.json` ## Что искать в кодовой базе ### Корневые каталоги исходников - `src/`, `app/` ### Типовые слои и каталоги: зафиксируй найденные `screens/`, `components/`, `navigation/`, `services/`, `hooks/`, `store/`, `api/`, `utils/`, `assets/` ### Признаки шаблонов | Шаблон | Критерии обнаружения | Имя навыка | |---------|-------------------|------------| | Screen | `*Screen`, `export function *Screen` | rn-screen | | Component | `export function *()`, `StyleSheet.create` | rn-component | | Navigation | `createNativeStackNavigator`, `NavigationContainer` | rn-navigation | | Hook | `use*`, `export function use*()` | rn-hook | | Redux | `createSlice`, `configureStore` | redux-slice | | Zustand | `create(`, `useStore` | zustand-store | | React Query | `useQuery`, `useMutation` | react-query | | Native Module | `NativeModules`, `TurboModule` | native-module | | Async Storage | `AsyncStorage`, `@react-native-async-storage` | async-storage | | SQLite | `expo-sqlite`, `react-native-sqlite-storage` | sqlite-storage | | Push Notification | `@react-native-firebase/messaging`, `expo-notifications` | push-notification | | Deep Link | `Linking`, `useURL`, `expo-linking` | deep-link | | Animation | `Animated`, `react-native-reanimated` | rn-animation | | Gesture | `react-native-gesture-handler`, `Gesture` | rn-gesture | | Testing | `@testing-library/react-native`, `render` | rntl-test | ## Обязательные разделы результата Добавь, если найдено: - **Состав экранов**: каталоги в `screens/` - **Структура навигации**: навигация стеком, вкладками и боковым меню - **Управление состоянием**: Redux, Zustand, Context - **Нативные модули**: собственный нативный код - **Слой хранения**: AsyncStorage, SQLite, MMKV - **Особенности платформы**: `*.android.tsx`, `*.ios.tsx` ## Откуда брать команды - `package.json` команды - README и документация - Обычные команды: `npm run android`, `npm run ios`, `npx expo start` - Добавляй только команды, которые есть в репозитории ## Основные пути - `src/screens/`, `src/components/` - `src/navigation/`, `src/store/` - `android/app/`, `ios/*/` - `assets/`
references/react-web.md
# React (Web) ## Признаки платформы - `package.json` с `react`, `react-dom` - `vite.config.ts`, `next.config.js`, `craco.config.js` - `tsconfig.json` или `jsconfig.json` - `src/App.tsx` или `src/App.jsx` - `public/index.html` (CRA) ## Признаки многомодульного проекта - `pnpm-workspace.yaml`, `lerna.json` - Несколько `package.json` в подкаталогах - `packages/`, `apps/` каталоги - Рабочая область Nx (`nx.json`) ## Источники перед созданием навыка - `package.json` (зависимости и команды) - `tsconfig.json` (пути и параметры компилятора) - `vite.config.*`, `next.config.*`, `webpack.config.*` - `.env.example` (переменные окружения) ## Что искать в кодовой базе ### Корневые каталоги исходников - `src/`, `app/`, `pages/` ### Типовые слои и каталоги: зафиксируй найденные `components/`, `hooks/`, `services/`, `utils/`, `store/`, `api/`, `types/`, `contexts/`, `features/`, `layouts/` ### Признаки шаблонов | Шаблон | Критерии обнаружения | Имя навыка | |---------|-------------------|------------| | Component | `export function *()`, `export const * =` с JSX | react-component | | Hook | `use*`, `export function use*()` | custom-hook | | Context | `createContext`, `useContext`, `*Provider` | react-context | | Redux | `createSlice`, `configureStore`, `useSelector` | redux-slice | | Zustand | `create(`, `useStore` | zustand-store | | React Query | `useQuery`, `useMutation`, `QueryClient` | react-query | | Form | `useForm`, `react-hook-form`, `Formik` | form-handling | | Router | `createBrowserRouter`, `Route`, `useNavigate` | react-router | | API Client | `axios`, `fetch`, `ky` | api-client | | Testing | `@testing-library/react`, `render`, `screen` | rtl-test | | Storybook | `*.stories.tsx`, `Meta`, `StoryObj` | storybook | | Styled | `styled-components`, `@emotion`, `styled(` | styled-component | | Tailwind | `className="*"`, `tailwind.config.js` | tailwind-usage | | i18n | `useTranslation`, `i18next`, `t()` | i18n-usage | | Auth | `useAuth`, `AuthProvider`, `PrivateRoute` | auth-pattern | ## Обязательные разделы результата Добавь, если найдено: - **Состав компонентов**: каталоги в `components/` - **Функциональные модули/страницы**: каталоги в `features/`, `pages/` - **Управление состоянием**: Redux, Zustand, Context - **Настройка маршрутизации**: React Router и страницы Next.js - **Слой API**: экземпляры axios и обёртки fetch - **Способ оформления**: CSS-модули, Tailwind и styled-components - **Обработка форм**: react-hook-form, Formik ## Откуда брать команды - `package.json` раздел команд - README и документация - Сценарии CI - Обычные команды: `npm run dev`, `npm run build`, `npm test` - Добавляй только команды, которые есть в репозитории ## Основные пути - `src/components/`, `src/hooks/` - `src/pages/`, `src/features/` - `src/store/`, `src/api/` - `public/`, `dist/`, `build/`
references/ruby.md
# Ruby/Rails ## Признаки платформы - `Gemfile` - `Gemfile.lock` - `config.ru` - `Rakefile` - `config/application.rb` (Rails) ## Признаки многомодульного проекта - Несколько `Gemfile` в подкаталогах - `engines/` каталог (движки Rails) - `gems/` каталог (монорепозиторий) ## Источники перед созданием навыка - `Gemfile` (зависимости) - `config/database.yml` - `config/routes.rb` (Rails) - `.env.example` ## Что искать в кодовой базе ### Корневые каталоги исходников - `app/`, `lib/` ### Типовые слои и каталоги: зафиксируй найденные `controllers/`, `models/`, `services/`, `jobs/`, `mailers/`, `channels/`, `helpers/`, `concerns/` ### Признаки шаблонов | Шаблон | Критерии обнаружения | Имя навыка | |---------|-------------------|------------| | Rails Controller | `< ApplicationController`, `def index` | rails-controller | | Rails Model | `< ApplicationRecord`, `has_many`, `belongs_to` | rails-model | | Rails Migration | `< ActiveRecord::Migration`, `create_table` | rails-migration | | Service Object | `class *Service`, `def call` | service-object | | Rails Job | `< ApplicationJob`, `perform_later` | rails-job | | Mailer | `< ApplicationMailer`, `mail(` | rails-mailer | | Channel | `< ApplicationCable::Channel` | action-cable | | Serializer | `< ActiveModel::Serializer`, `attributes` | serializer | | Concern | `extend ActiveSupport::Concern` | rails-concern | | Sidekiq Worker | `include Sidekiq::Worker`, `perform_async` | sidekiq-worker | | Grape API | `Grape::API`, `resource :` | grape-api | | RSpec Test | `RSpec.describe`, `it "` | rspec-test | | Factory | `FactoryBot.define`, `factory :` | factory-bot | | Rake Task | `task :`, `namespace :` | rake-task | ## Обязательные разделы результата Добавь, если найдено: - **Контроллеры**: конечные точки HTTP - **Модели**: связи ActiveRecord - **Сервисы**: бизнес-логика - **Задания**: фоновая обработка - **Миграции**: схема базы данных ## Откуда брать команды - `Gemfile` команды - `Rakefile` задачи - `bin/rails`, `bin/rake` - README, документация и CI - Добавляй только команды, которые есть в репозитории ## Основные пути - `app/controllers/`, `app/models/` - `app/services/`, `app/jobs/` - `db/migrate/` - `spec/`, `test/` - `lib/`
references/rust.md
# Rust ## Признаки платформы - `Cargo.toml` - `Cargo.lock` - `src/main.rs` или `src/lib.rs` - `target/` каталог ## Признаки многомодульного проекта - `[workspace]` в `Cargo.toml` - Несколько `Cargo.toml` в подкаталогах - `crates/`, `packages/` каталоги ## Источники перед созданием навыка - `Cargo.toml` (зависимости и возможности) - `build.rs` (скрипт сборки) - `rust-toolchain.toml` (набор инструментов) ## Что искать в кодовой базе ### Корневые каталоги исходников - `src/`, `crates/*/src/` ### Типовые слои и каталоги: зафиксируй найденные `handlers/`, `services/`, `models/`, `db/`, `api/`, `utils/`, `error/`, `config/` ### Признаки шаблонов | Шаблон | Критерии обнаружения | Имя навыка | |---------|-------------------|------------| | Axum Handler | `axum::`, `Router`, `async fn handler` | axum-handler | | Actix Route | `actix_web::`, `#[get]`, `#[post]` | actix-route | | Rocket Route | `rocket::`, `#[get]`, `#[post]` | rocket-route | | Service | `impl *Service`, `pub struct *Service` | rust-service | | Repository | `*Repository`, `trait *Repository` | rust-repository | | Diesel Model | `diesel::`, `Queryable`, `Insertable` | diesel-model | | SQLx | `sqlx::`, `FromRow`, `query_as!` | sqlx-model | | SeaORM | `sea_orm::`, `Entity`, `ActiveModel` | seaorm-entity | | Error Type | `thiserror`, `anyhow`, `#[derive(Error)]` | error-type | | CLI | `clap`, `#[derive(Parser)]` | cli-app | | Async Task | `tokio::spawn`, `async fn` | async-task | | Trait | `pub trait *`, `impl * for` | rust-trait | | Unit Test | `#[cfg(test)]`, `#[test]` | rust-test | | Integration Test | `tests/`, `#[tokio::test]` | integration-test | ## Обязательные разделы результата Добавь, если найдено: - **Обработчики/маршруты**: конечные точки API - **Сервисы**: бизнес-логика - **Модели/сущности**: структуры данных - **Типы ошибок**: собственные ошибки - **Миграции**: миграции diesel/sqlx ## Откуда брать команды - `Cargo.toml` команды и псевдонимы - `Makefile`, README и документация - Обычные команды: `cargo build`, `cargo test`, `cargo run` - Добавляй только команды, которые есть в репозитории ## Основные пути - `src/`, `crates/` - `tests/` - `migrations/` - `examples/`
Текст доступен бесплатно по CC0 1.0. Источники и лицензии.
Как использовать навык
Прочитайте инструкцию и проверьте, какие файлы, инструменты и подключения ей нужны. Перенесите навык в совместимое приложение для AI-агентов или используйте подходящие шаги в чате. Если навык состоит из нескольких файлов, сохраните их структуру.