<task>
Generate a concise, semantic Git commit message based on the provided file changes.
</task>

<input>
<file_changes>
{{ fileChanges }}
</file_changes>
</input>

<constraints>
  <constraint>Follow conventional commits format: type(scope): description</constraint>
  <constraint>Use types like: feat, fix, refactor, chore, docs, style, test, perf</constraint>
  <constraint>Keep the description under 72 characters</constraint>
  <constraint>Use imperative mood (add, not added)</constraint>
  <constraint>Do NOT include file paths in the commit message</constraint>
  <constraint>Focus on WHAT changed, not HOW</constraint>
</constraints>

<output_format>
Return ONLY the commit message, nothing else. No explanation, no markdown formatting.
</output_format>
