diff --git a/instructions/no-heredoc.instructions.md b/instructions/no-heredoc.instructions.md new file mode 100644 index 00000000..e5219b59 --- /dev/null +++ b/instructions/no-heredoc.instructions.md @@ -0,0 +1,77 @@ +--- +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 < 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