*.sh text eol=lf
*.md text eol=lf
# Generated Vale files and their source license are byte-compared and packaged.
/vale/** text=auto eol=lf
/LICENSE text eol=lf
# Byte-exact fixtures: the Vale export sample is compared byte-for-byte, so keep LF on every checkout.
scripts/fixtures/vale-export-94/*.json text eol=lf
# Retained evaluation evidence is verified by SHA-256, so its bytes must never
# change on checkout (core.autocrlf on Windows rewrote LF to CRLF; see #427).
# -text disables line-ending conversion for every current and future report.
# Markdown narratives stay normalized text; they are not hashed.
evals/rewrite/reports/** -text
evals/rewrite/reports/**/*.md text eol=lf
# Frozen research method/results carry recorded byte hashes, too.
docs/research/hape-2026-11/*.js -text
docs/research/hape-2026-11/*.json -text

# Generated copies. Regenerated by scripts/sync-plugin-skill.sh and
# scripts/sync-cursor-rules.sh (edit the canonical sources instead); marking
# them collapses their diffs on GitHub and drops them from language stats.
# Keep these globs narrow: cursor-rules/README.md, the hand-written sub-skill
# SKILL.md files, skills/avoid-ai-writing/agents/openai.yaml and the plugin
# manifests are not generated.
SKILL.full.md linguist-generated=true
dist/avoid-ai-writing.md linguist-generated=true
cursor-rules/avoid-ai-writing.mdc linguist-generated=true
plugins/avoid-ai-writing/skills/avoid-ai-writing/** linguist-generated=true
skills/avoid-ai-writing/SKILL.md linguist-generated=true
skills/avoid-ai-writing/references/** linguist-generated=true
skills/avoid-ai-writing/detector/** linguist-generated=true
skills/avoid-ai-writing/scripts/** linguist-generated=true
skills/avoid-ai-writing/examples/** linguist-generated=true
skills/ai-writing-detector/scripts/patterns.js linguist-generated=true
skills/preservation-verifier/scripts/patterns.js linguist-generated=true
skills/preservation-verifier/scripts/validate.js linguist-generated=true
