# Shell scripts MUST be LF — they ship in the plugin and run under /bin/sh on Unix/CC; # CRLF would break the shebang and `sed`/`case` parsing. Force LF regardless of core.autocrlf. *.sh text eol=lf # Extensionless shell scripts (git hooks) must also be LF + run under /bin/sh. ci/git-hooks/* text eol=lf # Python (CI validators) — LF for deterministic cross-platform runs on the fleet. *.py text eol=lf # PowerShell + Windows batch are CRLF. *.ps1 text eol=crlf *.bat text eol=crlf *.cmd text eol=crlf # Keep these LF for consistent diffs / cross-platform tooling. *.json text eol=lf *.toml text eol=lf *.md text eol=lf # Generated agent indexes (llms.txt / llms-full.txt) are emitted LF by ci/docs/gen-llms.sh; force # LF so the docs-drift gate's diff (generated LF vs committed file) never false-fails on a CRLF # checkout. Applies to any *.txt for consistency. *.txt text eol=lf