# Shell scripts must use LF line endings. core.autocrlf=true would otherwise
# convert them to CRLF on checkout, which breaks bash on Windows Git Bash
# (stray \r corrupts commands and string comparisons). This applies to the
# .claude/hooks/*.sh hooks and .claude/scripts/*.sh.
*.sh text eol=lf

# Tabular data is compared byte-for-byte by tooling that diffs it against
# freshly-generated output (which is always LF). A CRLF checkout would make
# every line differ, silently breaking any such comparison.
*.tsv text eol=lf

# Markdown under .claude/ is authored LF. Two concrete reasons, both hit during
# v1.1 development:
#   - tooling that flattens SKILL.md files and substring-matches sentences
#     breaks on a stray \r mid-sentence: every multi-line match fails.
#     Before this was found it produced 262 false "lost rule" reports.
#   - a CRLF file produces a whole-file diff the first time anyone edits it,
#     which buries real changes.
# .gitattributes governs the INDEX. It does not retro-fix a working tree that
# predates the rule -- run `git add --renormalize .` for that.
.claude/**/*.md text eol=lf
