# Force LF on text files we parse with `\n`-anchored regexes (frontmatter, # YAML, markdown structure tests). Without this, Windows checkouts with # core.autocrlf=true convert these to CRLF and break tests that match # /^---\n...\n---/ against SKILL.md.tmpl frontmatter, etc. *.md text eol=lf *.tmpl text eol=lf *.yml text eol=lf *.yaml text eol=lf *.json text eol=lf *.toml text eol=lf *.txt text eol=lf # Bash scripts must always use LF — CRLF in bash scripts produces bizarre # "Bad interpreter" / "command not found" errors on Linux runners. *.sh text eol=lf *.bash text eol=lf # Extensionless executables (top-level setup script + bin/gstack-* helpers). # These are bash scripts checked into git without a `.sh` suffix. Without # explicit eol=lf, Windows checkout with core.autocrlf=true converts them # to CRLF and breaks both `\n`-anchored regex tests (test/setup-codesign.test.ts) # and shebang resolution if the script is ever executed on Linux. setup text eol=lf bin/* text eol=lf **/scripts/* text eol=lf # Nested executables (#3110). A pattern containing a slash is anchored at the # repository root, so `bin/*` above covers only the top-level bin/. These are # bash or sh entry points too; a Windows checkout wrote them with CRLF, and a # Linux bash reading that checkout (a synced tree, WSL, a bind mount) failed # with `set: pipefail: invalid option name`. setup's CRLF repair rewrites # copies an older checkout already left with CRLF. **/bin/* text eol=lf hosts/*/hooks/* text eol=lf lib/cso/images/* text eol=lf scripts/app/* text eol=lf browse/test/fixtures/mock-claude/* text eol=lf # Dockerfiles build on Linux, and test/ci-image-cli-pin.test.ts joins their # `\`-continued RUN lines with a `\\\n` match; CRLF left each RUN split. Dockerfile* text eol=lf # TypeScript/JavaScript: LF for portability across the bun toolchain. *.ts text eol=lf *.tsx text eol=lf *.js text eol=lf *.mjs text eol=lf *.cjs text eol=lf # Binary files — never touch. *.png binary *.jpg binary *.jpeg binary *.gif binary *.ico binary *.pdf binary *.icns binary # The committed diagram-render bundle is hash-pinned (BUILD_INFO sha256); # a CRLF rewrite on Windows checkout would break the drift test and change # the content-addressed staged filename. lib/diagram-render/dist/*.html text eol=lf lib/diagram-render/dist/*.json text eol=lf