mirror of
https://github.com/Donchitos/Claude-Code-Game-Studios.git
synced 2026-10-16 01:37:05 +00:00
Fix release for 1.1.1: the minimal path end to end, engine commands that run on Godot, Unity and Unreal, hook warnings you can see, and verdicts that say when they could not check. Details in CHANGELOG.md; upgrade steps in UPGRADING.md (v1.1.1 → v1.1.2). Fixes #67 Fixes #131 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuJn2FdynEybfL5KC697nJ
85 lines
2.5 KiB
Markdown
85 lines
2.5 KiB
Markdown
# Hook: post-merge-asset-validation
|
|
|
|
## Trigger
|
|
|
|
Runs after any merge to `main` (the trunk) or a `release/*` branch that
|
|
includes changes to `assets/`.
|
|
|
|
## Purpose
|
|
|
|
Validates that all assets in the merged branch conform to naming conventions,
|
|
size budgets, and format requirements. Prevents non-compliant assets from
|
|
accumulating on the trunk.
|
|
|
|
## Implementation
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
# Post-merge hook: Asset validation
|
|
# Checks merged assets against project standards
|
|
|
|
MERGED_ASSETS=$(git diff --name-only HEAD@{1} HEAD | grep -E '^assets/')
|
|
|
|
if [ -z "$MERGED_ASSETS" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
EXIT_CODE=0
|
|
WARNINGS=""
|
|
|
|
for file in $MERGED_ASSETS; do
|
|
filename=$(basename "$file")
|
|
|
|
# Check naming convention (lowercase with underscores)
|
|
if echo "$filename" | grep -qE '[A-Z[:space:]-]'; then
|
|
WARNINGS="$WARNINGS\nNAMING: $file -- must be lowercase with underscores"
|
|
EXIT_CODE=1
|
|
fi
|
|
|
|
# Check texture sizes (must be power of 2)
|
|
if [[ "$file" == *.png || "$file" == *.jpg ]]; then
|
|
# Requires ImageMagick
|
|
if command -v identify &> /dev/null; then
|
|
dims=$(identify -format "%w %h" "$file" 2>/dev/null)
|
|
if [ -n "$dims" ]; then
|
|
w=$(echo "$dims" | cut -d' ' -f1)
|
|
h=$(echo "$dims" | cut -d' ' -f2)
|
|
if (( (w & (w-1)) != 0 || (h & (h-1)) != 0 )); then
|
|
WARNINGS="$WARNINGS\nSIZE: $file -- dimensions ${w}x${h} not power-of-2"
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# Check file size budgets
|
|
size=$(stat -f%z "$file" 2>/dev/null || stat -c%s "$file" 2>/dev/null)
|
|
if [ -n "$size" ]; then
|
|
# Textures: max 4MB
|
|
if [[ "$file" == assets/art/* ]] && [ "$size" -gt 4194304 ]; then
|
|
WARNINGS="$WARNINGS\nBUDGET: $file -- ${size} bytes exceeds 4MB texture budget"
|
|
EXIT_CODE=1
|
|
fi
|
|
# Audio: max 10MB for music, 512KB for SFX
|
|
if [[ "$file" == assets/audio/sfx* ]] && [ "$size" -gt 524288 ]; then
|
|
WARNINGS="$WARNINGS\nBUDGET: $file -- ${size} bytes exceeds 512KB SFX budget"
|
|
fi
|
|
fi
|
|
done
|
|
|
|
if [ -n "$WARNINGS" ]; then
|
|
echo "=== Asset Validation Report ==="
|
|
echo -e "$WARNINGS"
|
|
echo "================================"
|
|
echo "Run /asset-audit for a full report."
|
|
fi
|
|
|
|
exit $EXIT_CODE
|
|
```
|
|
|
|
## Agent Integration
|
|
|
|
When this hook reports issues:
|
|
1. For naming violations: fix manually or invoke `art-director` for guidance
|
|
2. For size violations: invoke `technical-artist` for optimization advice
|
|
3. For a full audit: run `/asset-audit` skill
|