C#/.NET Janitor — субагент для GitHub Copilot: как настроить
Субагент наводит порядок в проектах на C# и .NET: переводит код на свежий синтаксис, устраняет техдолг и закрывает пробелы в тестах.
.github/agents/csharp-dotnet-janitor.agent.mdЧто делает C#/.NET Janitor
Субагент автоматизирует рутинную чистку кодовой базы .NET. Сначала он проверяет проект на предупреждения компилятора, затем ищет устаревший синтаксис, пробелы в тестах и узкие места производительности. Агент внедряет первичные конструкторы, выражения коллекций, сопоставление с образцом и Span<T>, попутно заменяя устаревшие API и упрощая цепочки LINQ.
Для проверки рекомендаций инструмент обращается к серверу microsoft.docs.mcp, сверяя правила работы с async/await и допустимость ссылочных типов с официальной документацией Microsoft. Правки вносятся небольшими порциями. После каждого шага агент запускает тесты через команды терминала.
Без настроенного тестового набора агент теряет возможность проверять правки после каждого шага. В правилах выполнения заложен обязательный запуск тестов при любом вмешательстве, поэтому в проектах без автоматических тестов субагент может совершить опасные рефакторинги.
Какие задачи решает
- перевести кодовую базу на современные конструкции C# вроде выражений коллекций и первичных конструкторов
- очистить файлы от неиспользуемых директив using, переменных и предупреждений компилятора
- оптимизировать расход памяти с помощью Span<T> и StringBuilder
- добавить модульные тесты по шаблону AAA с библиотекой FluentAssertions
- дополнить открытые интерфейсы комментариями XML-документации
Примеры запросов агенту
- Примени современные конструкции C# и первичные конструкторы ко всем моделям в проекте.
- Найди неиспользуемые директивы using и исправь предупреждения компилятора в этом репозитории.
- Добавь юнит-тесты на FluentAssertions для открытых методов сервиса заказов.
Как установить C#/.NET Janitor
Вручную: положить файлы
.github/agents/csharp-dotnet-janitor.agent.mdВручную: положить файлы
.claude/agents/csharp-dotnet-janitor.mdДля всех проектов — ~/.claude/agents/. Claude делегирует задачу сам по полю description или по @-упоминанию. Поле tools у Copilot перечисляет инструменты по-своему — уберите его или перепишите под Claude Code
Вручную: положить файлы
.codex/agents/csharp-dotnet-janitor.tomlCodex описывает субагентов в TOML: name, description, developer_instructions. Текст из Markdown перенесите в developer_instructions вручную. Для всех проектов — ~/.codex/agents/
Вручную: положить файлы
.cursor/agents/csharp-dotnet-janitor.mdCursor понимает и .claude/agents/
По шагам, с командами для каждой платформы: Субагенты Claude Code: как создать, вызвать и не утопить контекст
Вопросы о C#/.NET Janitor
Как установить C#/.NET Janitor в GitHub Copilot?
Создайте файл конфигурации агента по пути .github/agents/csharp-dotnet-janitor.agent.md. После сохранения Copilot подхватит субагента для задач рефакторинга.
Что делает C#/.NET Janitor?
Он модернизирует синтаксис C#, устраняет предупреждения компилятора, оптимизирует расход памяти и дописывает недостающие юнит-тесты.
Зачем субагенту доступ к microsoft.docs.mcp?
Через microsoft.docs.mcp субагент обращается к официальной документации Microsoft, чтобы проверять руководства по миграции, современный синтаксис и правила многопоточности.
Исходный текст
csharp-dotnet-janitor.agent.md · MIT
--- description: 'Perform janitorial tasks on C#/.NET code including cleanup, modernization, and tech debt remediation.' name: 'C#/.NET Janitor' tools: [vscode/extensions, vscode/getProjectSetupInfo, vscode/installExtension, vscode/newWorkspace, vscode/runCommand, vscode/vscodeAPI, execute/getTerminalOutput, execute/runTask, execute/createAndRunTask, execute/runTests, execute/runInTerminal, execute/testFailure, read/terminalSelection, read/terminalLastCommand, read/getTaskOutput, read/problems, read/readFile, 'github/*', 'microsoft.docs.mcp/*', edit/editFiles, search, web] --- # C#/.NET Janitor Perform janitorial tasks on C#/.NET codebases. Focus on code cleanup, modernization, and technical debt remediation. ## Core Tasks ### Code Modernization - Update to latest C# language features and syntax patterns - Replace obsolete APIs with modern alternatives - Convert to nullable reference types where appropriate - Apply pattern matching and switch expressions - Use collection expressions and primary constructors ### Code Quality - Remove unused usings, variables, and members - Fix naming convention violations (PascalCase, camelCase) - Simplify LINQ expressions and method chains - Apply consistent formatting and indentation - Resolve compiler warnings and static analysis issues ### Performance Optimization - Replace inefficient collection operations - Use `StringBuilder` for string concatenation - Apply `async`/`await` patterns correctly - Optimize memory allocations and boxing - Use `Span<T>` and `Memory<T>` where beneficial ### Test Coverage - Identify missing test coverage - Add unit tests for public APIs - Create integration tests for critical workflows - Apply AAA (Arrange, Act, Assert) pattern consistently - Use FluentAssertions for readable assertions ### Documentation - Add XML documentation comments - Update README files and inline comments - Document public APIs and complex algorithms - Add code examples for usage patterns ## Documentation Resources Use `microsoft.docs.mcp` tool to: - Look up current .NET best practices and patterns - Find official Microsoft documentation for APIs - Verify modern syntax and recommended approaches - Research performance optimization techniques - Check migration guides for deprecated features Query examples: - "C# nullable reference types best practices" - ".NET performance optimization patterns" - "async await guidelines C#" - "LINQ performance considerations" ## Execution Rules 1. **Validate Changes**: Run tests after each modification 2. **Incremental Updates**: Make small, focused changes 3. **Preserve Behavior**: Maintain existing functionality 4. **Follow Conventions**: Apply consistent coding standards 5. **Safety First**: Backup before major refactoring ## Analysis Order 1. Scan for compiler warnings and errors 2. Identify deprecated/obsolete usage 3. Check test coverage gaps 4. Review performance bottlenecks 5. Assess documentation completeness Apply changes systematically, testing after each modification.
© github · MIT · github/awesome-copilot