sql-sp-generation — правило для GitHub Copilot
Правило задаёт Copilot стиль для SQL: имена таблиц, ключи, транзакции, параметры и оформление хранимых процедур.
.github/instructions/sql-sp-generation.instructions.mdЧто делает sql-sp-generation
Это файл инструкций, который Copilot подхватывает при работе с файлами **/*.sql. Внутри — набор соглашений по трём слоям сразу: схема базы, стиль запросов и хранимые процедуры.
По схеме правило требует имена таблиц и колонок в единственном числе, первичный ключ id, колонки created_at и updated_at. Внешние ключи объявляются inline, с именем и опциями ON DELETE CASCADE и ON UPDATE CASCADE. В запросах — заглавные ключевые слова, явный список колонок вместо SELECT *, квалификация колонок при нескольких таблицах, LIMIT/TOP для ограничения выборки. Процедуры именуются с префиксом usp_ в PascalCase, параметры — с @ и camelCase, обязательные идут первыми.
Отдельный блок про безопасность: параметризация всех запросов, prepared statements для динамического SQL, никаких учётных данных внутри скриптов. Транзакции открываются и коммитятся явно, для процедур, меняющих данные, добавляется SET NOCOUNT ON. Файл кладётся в репозиторий, поэтому правило действует на всех, кто работает с этим кодом, и спорить с ним придётся через правку самого файла.
Какие задачи решает
- договориться о едином стиле имён таблиц и колонок в команде
- не забыть
created_atиupdated_atв новых таблицах - писать внешние ключи с каскадами вместо ручных удалений
- оформить хранимую процедуру с шапкой и понятным именем
- убрать
SELECT *и функции над индексированными колонками из запросов
Примеры запросов агенту
- Сгенерируй схему таблиц для заказов и позиций заказа по правилам sql-sp-generation
- Напиши хранимую процедуру
usp_GetCustomerOrdersс параметрами и шапкой - Перепиши этот запрос: убери
SELECT *и добавьLIMIT
Как установить sql-sp-generation
Вручную: положить файлы
.github/instructions/sql-sp-generation.instructions.mdПоле applyTo задаёт, к каким файлам применять
Вручную: положить файлы
.claude/rules/sql-sp-generation.mdПоле paths во frontmatter ограничивает файлы: applyTo из источника → paths
AGENTS.md
Codex читает AGENTS.md: вставьте текст правила туда
Вручную: положить файлы
.cursor/rules/sql-sp-generation.mdcВо frontmatter: description, globs, alwaysApply. applyTo из источника → globs, иначе правило само не подключится
Вручную: положить файлы
.devin/rules/sql-sp-generation.mdВручную: положить файлы
.clinerules/sql-sp-generation.mdПо шагам, с командами для каждой платформы: AGENTS.md и CLAUDE.md: что это, кто читает и какой выбрать
Вопросы о sql-sp-generation
Как установить sql-sp-generation в GitHub Copilot?
Положи файл по пути .github/instructions/sql-sp-generation.instructions.md в репозитории.
Что делает sql-sp-generation?
Задаёт Copilot правила генерации SQL и хранимых процедур: именование, ключи, стиль запросов, параметры, транзакции и безопасность.
На какие файлы распространяется правило?
На **/*.sql — так указано в applyTo в начале файла.
Исходный текст
sql-sp-generation.instructions.md · MIT
--- description: 'Guidelines for generating SQL statements and stored procedures' applyTo: '**/*.sql' --- # SQL Development ## Database schema generation - all table names should be in singular form - all column names should be in singular form - all tables should have a primary key column named `id` - all tables should have a column named `created_at` to store the creation timestamp - all tables should have a column named `updated_at` to store the last update timestamp ## Database schema design - all tables should have a primary key constraint - all foreign key constraints should have a name - all foreign key constraints should be defined inline - all foreign key constraints should have `ON DELETE CASCADE` option - all foreign key constraints should have `ON UPDATE CASCADE` option - all foreign key constraints should reference the primary key of the parent table ## SQL Coding Style - use uppercase for SQL keywords (SELECT, FROM, WHERE) - use consistent indentation for nested queries and conditions - include comments to explain complex logic - break long queries into multiple lines for readability - organize clauses consistently (SELECT, FROM, JOIN, WHERE, GROUP BY, HAVING, ORDER BY) ## SQL Query Structure - use explicit column names in SELECT statements instead of SELECT * - qualify column names with table name or alias when using multiple tables - limit the use of subqueries when joins can be used instead - include LIMIT/TOP clauses to restrict result sets - use appropriate indexing for frequently queried columns - avoid using functions on indexed columns in WHERE clauses ## Stored Procedure Naming Conventions - prefix stored procedure names with 'usp_' - use PascalCase for stored procedure names - use descriptive names that indicate purpose (e.g., usp_GetCustomerOrders) - include plural noun when returning multiple records (e.g., usp_GetProducts) - include singular noun when returning single record (e.g., usp_GetProduct) ## Parameter Handling - prefix parameters with '@' - use camelCase for parameter names - provide default values for optional parameters - validate parameter values before use - document parameters with comments - arrange parameters consistently (required first, optional later) ## Stored Procedure Structure - include header comment block with description, parameters, and return values - return standardized error codes/messages - return result sets with consistent column order - use OUTPUT parameters for returning status information - prefix temporary tables with 'tmp_' ## SQL Security Best Practices - parameterize all queries to prevent SQL injection - use prepared statements when executing dynamic SQL - avoid embedding credentials in SQL scripts - implement proper error handling without exposing system details - avoid using dynamic SQL within stored procedures ## Transaction Management - explicitly begin and commit transactions - use appropriate isolation levels based on requirements - avoid long-running transactions that lock tables - use batch processing for large data operations - include SET NOCOUNT ON for stored procedures that modify data
© github · MIT · github/awesome-copilot