К основному содержанию
правило официальный · GitHub

no-heredoc — правило для GitHub Copilot: запрет heredoc в терминале

Правило запрещает агенту писать файлы через heredoc и перенаправления в терминале, потому что в VS Code такие команды портят содержимое.

Установить в GitHub Copilot · Вручную: положить файлы Все способы и платформы ↓
.github/instructions/no-heredoc.instructions.md
Открыть на GitHub

Что делает 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 задаёт, к каким файлам применять

По шагам, с командами для каждой платформы: AGENTS.md и CLAUDE.md: что это, кто читает и какой выбрать

Из того же набора732

Весь набор →
pcf-manifest-schema Правило подсказывает Copilot структуру ControlManifest.Input.xml: какие элементы и атрибуты бывают и что они делают. Пригодится, когда правишь манифест PCF-компонента. ★ 40 418звёзд репо pcf-events Правило подсказывает Copilot, как объявлять и обрабатывать кастомные события в компонентах Power Apps Component Framework. ★ 40 418звёзд репо pcf-code-components Правило объясняет Copilot, как устроены code components в Power Apps component framework: манифест, реализация, ресурсы. Пригодится, когда правите ControlManifest.Input.xml или index.ts. ★ 40 418звёзд репо oop-design-patterns Правило для GitHub Copilot, которое подталкивает его к паттернам GoF и принципам SOLID при генерации и рефакторинге ООП-кода. ★ 40 418звёзд репо nestjs Правило подключает к GitHub Copilot набор стандартов NestJS: модули, DI, DTO и валидация. Пригодится, когда агент пишет серверный код на TypeScript. ★ 40 418звёзд репо moodle Правило задаёт Copilot стандарты Moodle: Frankenstyle-неймспейсы, Mustache-шаблоны, обязательные функции безопасности. Пригодится, если пишете плагины и темы. ★ 40 418звёзд репо langchain-python Правило для GitHub Copilot, которое подсказывает агенту паттерны LangChain: Runnable, LCEL, чат-модели, ретриверы и векторные хранилища. Пригодится, если вы пишете на Python с LangChain. ★ 40 418звёзд репо java-upgrade Правило подсказывает Copilot подключить скилл java-upgrade, когда вы меняете версию Java в Maven или Gradle. Пригодится при переходе между LTS. ★ 40 418звёзд репо

Похожие

agent-flow-visualization reason-machines Скилл ставит расширение VS Code, которое рисует работу агентов Claude живым графом: вызовы инструментов, ветвления, субагенты, тайминги. CX Codex +1 887установок smux ShawnPana Скилл связывает агентов в сессиях tmux и управляет панелями терминала через утилиту tmux-bridge. Пригодится при параллельной работе нескольких процессов. CX Codex +1 2 900установок cli-for-agents cursor Скилл помогает проектировать и проверять консольные утилиты, чтобы автономные агенты запускали их без зависаний на интерактивных вопросах. CX Codex +1 1 400установок monitoring-terminal-errors spencerpauly Скилл смотрит за выводом запущенного процесса — dev-сервера, тестов, сборки — и чинит падения по стек-трейсу. Пригодится, когда сервер сыпет ошибками, а вы не хотите читать лог вручную. CX Codex +1 449установок terminal-screenshot daymade Рендерит вывод консольных команд с ANSI-цветами в PNG-изображение. Это нужно, чтобы агент мог визуально оценить контрастность тем и подсветку синтаксиса в терминале. CX Codex +1 433установок create-cli steipete Помогает спроектировать интерфейс консольной утилиты до написания кода: аргументы, флаги, коды возврата и правила вывода по стандартам clig.dev. CX Codex +1 415установок

Рядом в теме «Настройка агента: память, контекст, субагенты»

Все правила 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

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой