no-heredoc — правило для GitHub Copilot: запрет heredoc в терминале
Правило запрещает агенту писать файлы через heredoc и перенаправления в терминале, потому что в VS Code такие команды портят содержимое.
.github/instructions/no-heredoc.instructions.mdЧто делает no-heredoc
Терминальные heredoc-операции в связке VS Code и Copilot работают криво. Табы запускают автодополнение оболочки, кавычки и бэктики экранируются неверно, вывод обрывается на коде выхода 130. Файл после такого либо побит, либо обрезан, и чинить его приходится руками.
Правило перекрывает любые другие усвоенные привычки агента. Перед командой, которая создаёт или меняет файл, он должен остановиться и проверить: не собирается ли он использовать cat, echo, printf, tee или >/>>. Если да — команда не выполняется, вместо неё идёт инструмент редактирования файлов из окружения. Новый файл создаётся этим инструментом, существующий правится им же, удаление остаётся за rm.
Терминал при этом не отбирают целиком. Установка пакетов, сборка, тесты, git add и git commit, запуск готового кода, навигация по файловой системе и загрузка через curl или wget разрешены. Запрещены только heredoc (<<) и многострочные перенаправления с содержимым. Файл правила кладётся в .github/instructions/no-heredoc.instructions.md и действует на все файлы проекта.
Какие задачи решает
- создать файл с содержимым без риска получить битый текст
- убрать из работы агента heredoc-команды и многострочные перенаправления
- объяснить агенту, когда терминал всё-таки уместен
- защитить конфиги и скрипты от обрезки на коде выхода 130
- перевести правку файлов на инструменты редактирования вместо оболочки
Примеры запросов агенту
- создай файл
.env.exampleс этими переменными, но не через терминал - допиши в
package.jsonновый скрипт сборки - поправь
docker-compose.yml, добавь сервис redis
Как установить no-heredoc
Вручную: положить файлы
.github/instructions/no-heredoc.instructions.mdПоле applyTo задаёт, к каким файлам применять
Вручную: положить файлы
.claude/rules/no-heredoc.mdПоле paths во frontmatter ограничивает файлы: applyTo из источника → paths
AGENTS.md
Codex читает AGENTS.md: вставьте текст правила туда
Вручную: положить файлы
.cursor/rules/no-heredoc.mdcВо frontmatter: description, globs, alwaysApply. applyTo из источника → globs, иначе правило само не подключится
Вручную: положить файлы
.devin/rules/no-heredoc.mdВручную: положить файлы
.clinerules/no-heredoc.mdПо шагам, с командами для каждой платформы: AGENTS.md и CLAUDE.md: что это, кто читает и какой выбрать
Из того же набора732
Весь набор →Похожие
Рядом в теме «Настройка агента: память, контекст, субагенты»
Все правила IDE по теме «Настройка агента: память, контекст, субагенты» →Вопросы о no-heredoc
Как установить no-heredoc в GitHub Copilot?
Положите файл правила по пути .github/instructions/no-heredoc.instructions.md. После этого он применяется ко всем файлам проекта.
Что делает no-heredoc?
Запрещает агенту создавать и менять файлы через терминал: cat, echo, printf, tee и перенаправления. Вместо них используются инструменты редактирования файлов.
Какие команды в терминале остаются разрешёнными?
Установка пакетов, сборка, тесты, работа с git, запуск готового кода, навигация по файловой системе, а также curl и wget без записи содержимого в файл.
Исходный текст
no-heredoc.instructions.md · MIT
--- name: 'No Heredoc File Operations' description: 'Prevents terminal heredoc file corruption in VS Code Copilot by enforcing use of file editing tools instead of shell redirections' applyTo: '**' --- # MANDATORY: File Operation Override This instruction applies to ALL agents and ALL file operations. It takes precedence over any other learned behavior. ## The Problem Terminal heredoc operations are BROKEN in VS Code's Copilot integration. They cause: - File corruption from tab characters triggering shell completion - Mangled content from quote/backtick escaping failures - Truncated files from exit code 130 interruptions - Garbage output from special character interpretation ## The Rule **BEFORE writing ANY terminal command that creates or modifies a file, STOP.** Ask yourself: "Am I about to use `cat`, `echo`, `printf`, `tee`, or `>>`/`>` to write content to a file?" If YES → **DO NOT EXECUTE.** Use file editing tools instead. ## Forbidden Patterns ```bash # ALL OF THESE CORRUPT FILES - NEVER USE THEM cat > file << EOF cat > file << 'EOF' cat > file <<EOF cat > file <<'EOF' cat > file <<-EOF cat >> file << EOF echo "multi line" > file printf '%s\n' "line1" "line2" > file tee file << EOF tee file << 'EOF' ``` ## Required Approach Instead of terminal commands for file content: - **New files** → Use the file creation/editing tool provided by your environment - **Modify files** → Use the file editing tool provided by your environment - **Delete files** → Use the file deletion tool or `rm` command ## Terminal IS Allowed For - `npm install`, `pip install`, `cargo add` (package management) - `npm run build`, `make`, `cargo build` (builds) - `npm test`, `pytest`, `go test` (testing) - `git add`, `git commit`, `git push` (version control) - `node script.js`, `python app.py` (running existing code) - `ls`, `cd`, `mkdir`, `pwd`, `rm` (filesystem navigation) - `curl`, `wget` (downloading, but not piping to files with content manipulation) ## Terminal is FORBIDDEN For - ANY file creation with content - ANY file modification with content - ANY heredoc syntax (`<<`) - ANY multi-line string redirection ## Enforcement This is not a suggestion. This is a hard technical requirement due to VS Code terminal integration bugs. Ignoring this instruction will result in corrupted files that the user must manually fix. When you need to create or edit a file: 1. Stop before typing any terminal command 2. Use the appropriate file editing tool 3. The tool will handle the content correctly without corruption
© github · MIT · github/awesome-copilot