Краткое руководство: используйте пользовательские инструкции, чтобы GitHub Copilot следовал вашим соглашениям T-SQL

Пользовательские инструкции помогают GitHub Copilot следовать стандартам вашей команды, чтобы каждый ответ — будь то в режиме ask, режиме agent или во встроенных автодополнениях — соответствовал принятым у вас соглашениям об именовании, форматировании и использовании типов данных. Один файл Markdown, применяемый к файлам .sql, преобразует универсальный вывод Transact-SQL (T-SQL) в согласованный вывод, соответствующий вашему проекту.

Tip

Пользовательские инструкции применяются во всех компонентах GitHub Copilot, соответствующих шаблону applyTo glob, включая режим вопросов, режим редактирования, режим агента и встроенные автодополнения. Настройте их один раз на язык или домен.

Основные итоги

  • Пользовательские инструкции находятся внутри .github/instructions/<name>.instructions.md вашей рабочей области.
  • Ключ applyTo front matter задаёт для каждого файла область действия с помощью glob-шаблона, например **/*.sql.
  • GitHub Copilot автоматически внедряет соответствующие инструкции в каждый запрос. Слэш-команда не требуется.
  • Без пользовательских инструкций GitHub Copilot по умолчанию использует универсальные соглашения (PascalCase, первичные ключи, INT без шаблонов файлов).

Prerequisites

  • Visual Studio Code с установленным расширением MSSQL.
  • Активная GitHub Copilot подписка.
  • Папка рабочей области. Это краткое руководство создаёт новые файлы в каталоге .github/instructions/.

Что такое индивидуальные инструкции?

Пользовательские инструкции — это файлы Markdown, которые GitHub Copilot считывает и применяет к каждому запросу, соответствующему glob-шаблону. Visual Studio Code поддерживает их изначально. Расширение MSSQL не требует дополнительной конфигурации.

Теперь каждый серьёзный ИИ-инструмент для программирования поддерживает ту или иную версию этого шаблона: Cursor использует .cursorrules, OpenAI Codex использует AGENTS.md, а Claude Code от Anthropic использует CLAUDE.md. GitHub Copilot в Visual Studio Code использует .github/instructions/*.instructions.md. Преимущество заключается в том, что в одном репозитории можно использовать несколько файлов инструкций, охватывающих разные типы файлов.

Общую документацию Visual Studio Code по этой функции см. в статье Настройка ответов ИИ в Visual Studio Code.

Почему пользовательские инструкции важны для T-SQL

Современный GitHub Copilot из коробки генерирует впечатляющий T-SQL: NVARCHAR столбцы, DATETIME2 метки времени, осмысленные имена ограничений. Но по умолчанию используются соглашения, которые ваша команда может не использовать.

При отсутствии пользовательских инструкций GitHub Copilot обычно:

  • Использует PascalCase для имен таблиц и столбцов (UserID, CreatedAt) вместо принятых в вашей команде camelCase или snake_case.
  • Использует INT первичные ключи вместо BIGINT.
  • Пропускает шаблоны заголовков файлов, SET ANSI_NULLS ON и SET QUOTED_IDENTIFIER ON.
  • Пропускает квалификацию схемы (CREATE TABLE users вместо CREATE TABLE dbo.users).
  • Создает автоматически именованные ограничения вместо того, чтобы следовать шаблону PK_tableName / FK_child_parent .

Ни одно из этих значений по умолчанию не является ошибочным. Они просто не ваши. Пользовательские инструкции исправляют все это с помощью одного файла.

Создание файла соглашений T-SQL

В этом примере создается файл инструкций, который задает соглашение об именовании в стиле camelCase, обязательное указание схемы, аудитные столбцы и шаблон заголовка файла.

Шаг 1. Создание файла с помощью GitHub Copilot

  1. В Visual Studio Code откройте представление Copilot Chat GitHub.
  2. Выберите значок настроек (шестеренка), затем выберите Инструкции и правила>Новый файл инструкций.
  3. Когда появится запрос на выбор местоположения, выберите .github/instructions.
  4. При появлении запроса на имя файла введите tsql-conventions.

Visual Studio Code создает .github/instructions/tsql-conventions.instructions.md с помощью шаблонной передней материи.

Шаг 2: Добавьте свои соглашения

Замените шаблонное содержимое стандартами T-SQL вашей команды. Следующий шаблон охватывает именование, типы данных, столбцы аудита, квалификацию схемы, именование ограничений и запрещенные шаблоны.

---
applyTo: "**/*.sql"
---

# T-SQL conventions

## Database environment
- Local development: [!INCLUDE [sssql25-md](../../../includes/sssql25-md.md)] running in a Docker container
- Cloud / production: Azure SQL Database
- All T-SQL must be compatible with both environments

## File template
Every .sql file MUST begin with this header block:

-- ================================================================
-- Author:      <your name>
-- Created:     <YYYY-MM-DD>
-- Purpose:     <brief description>
-- ================================================================
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO

## T-SQL conventions
- Use camelCase for ALL identifiers: table names, column names, parameters
- Use NVARCHAR for all text columns - never VARCHAR
- Use BIGINT for all primary keys and foreign keys - never INT
- Every table MUST include these audit columns:
    createdAt  DATETIME2(7) NOT NULL DEFAULT GETUTCDATE()
    updatedAt  DATETIME2(7) NOT NULL DEFAULT GETUTCDATE()
- Always schema-qualify all objects: dbo.tableName
- Use clustered primary keys on all tables
- Foreign key column names follow the pattern: [referencedTable]Id
- Never use SELECT * - always name columns explicitly

## Constraint naming conventions
- Primary keys: PK_tableName
- Foreign keys: FK_childTable_parentTable
- Unique constraints: UQ_tableName_columnName
- Check constraints: CK_tableName_columnName
- Default constraints: DF_tableName_columnName

## What to avoid
- Do NOT generate stored procedures unless I explicitly ask for one
- Do NOT use deprecated T-SQL syntax (no *= for joins, no non-ANSI joins)
- Do NOT generate object-relational mapping (ORM) models or application code

Шаг 3. Сохранение файла

GitHub Copilot распознаёт файлы с инструкциями сразу после сохранения. Нет шага перезагрузки или конфигурации.

См. контрастность до и после

Чтобы увидеть влияние пользовательских инструкций, выполните тот же запрос в GitHub Copilot Chat до и после добавления файла.

Прежде: нет пользовательских инструкций

В рабочей области без папки .github/instructions/, попросите GitHub Copilot:

Create a users table and a projects table for a task management app.

Типичные выходные данные:

  • CREATE TABLE Users (без квалификации схемы, PascalCase)
  • UserID INT IDENTITY(1,1) PRIMARY KEY
  • Без блока заголовка файла, без SET инструкций
  • Автоматически именованные или несогласованные ограничения

После: с пользовательскими инструкциями

В рабочей области, где вы создали tsql-conventions.instructions.md, введите тот же запрос:

Create a users table and a projects table for a task management app.

Ожидаемые выходные данные:

  • Полный заголовок файла с автором, датой, назначением, SET ANSI_NULLS ONSET QUOTED_IDENTIFIER ON
  • CREATE TABLE dbo.users (с указанием схемы, camelCase)
  • userId BIGINT IDENTITY(1,1) PRIMARY KEY
  • столбцы аудита createdAt и updatedAt
  • Именованные ограничения: PK_users, UQ_users_email, FK_projects_usersDF_users_createdAt

Одна и та же модель, один и тот же запрос, тот же GitHub Copilot. Файл с инструкциями выполнил задачу.

Проверка применения пользовательских инструкций

Чтобы убедиться, что GitHub Copilot считывает файл инструкций, проверьте выходные данные отладки.

  1. В Visual Studio Code выберите "Просмотреть>выходные данные".
  2. В раскрывающемся списке выходного канала выберите GitHub Copilot или GitHub Copilot чат.
  3. Отправьте запрос и просмотрите выходной канал. В журнале отображается полное тело запроса, включая ваши пользовательские инструкции.

Это представление отладки является источником истины. Если выходные данные не содержат ваши инструкции, проверьте следующее:

  • Файл находится в .github/instructions/<name>.instructions.md папке ( .instructions.md требуется суффикс).
  • Глоб applyTo соответствует файлу, над которым вы работаете.
  • Файл сохраняется.

Шаблоны и рекомендации

  • Один файл на язык или домен. Используйте отдельные файлы для T-SQL, TypeScript, Python и т. д., каждый из которых имеет собственный applyTo глоб. Не смешивайте языки в одном файле.
  • Сохраняйте его декларативным. Маркированные списки и короткие правила работают лучше, чем сплошной текст. GitHub Copilot более точно следует инструкциям, если их удобно просматривать.
  • Управление версиями файлов. Добавьте .github/instructions/ в свой репозиторий, чтобы каждый участник автоматически получал преимущества.
  • Сопрягайте с режимом планирования. При использовании режима плана для проектирования базы данных соглашения наследуются автоматически. Вам не нужно повторно указывать их в запросе.
  • Протестируйте после изменений. Используйте представление отладки, чтобы подтвердить применение инструкций при обновлении файла.

Оставьте свой отзыв

Чтобы помочь нам уточнить и улучшить GitHub Copilot для расширения MSSQL, используйте следующий шаблон проблемы GitHub для отправки отзывов: GitHub Copilot Feedback

При отправке отзывов рассмотрите возможность включения:

  • Тестируемые сценарии: сообщите нам, на какие области вы ориентированы, например создание схемы, создание запросов, безопасность, локализация.

  • Что хорошо работало: Опишите любые ситуации, которые были безупречными, полезными или превысили ваши ожидания.

  • Проблемы или ошибки: любые проблемы, несоответствия или запутанное поведение. Снимки экрана или записи экрана особенно полезны.

  • Предложения по улучшению: поделитесь идеями для улучшения удобства использования, расширения охвата или улучшения ответов GitHub Copilot.