Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 09:06:38 +08:00
commit ed3e4c84c3
76 changed files with 20449 additions and 0 deletions

60
hooks/utils/test-performance.sh Executable file
View File

@@ -0,0 +1,60 @@
#!/usr/bin/env bash
set -e
cd "$(dirname "$0")/.."
source utils/skill-matcher.sh
echo "=== Performance Tests ==="
echo ""
# Test 1: match_keywords performance (<50ms)
echo "Test 1: match_keywords performance"
prompt="I want to write a test for the login function"
keywords="test,testing,TDD,spec,unit test"
start=$(date +%s%N)
for i in {1..10}; do
match_keywords "$prompt" "$keywords" >/dev/null
done
end=$(date +%s%N)
duration_ns=$((end - start))
duration_ms=$((duration_ns / 1000000 / 10))
echo " Duration: ${duration_ms}ms (target: <50ms)"
if [ $duration_ms -lt 50 ]; then
echo " ✓ PASS"
else
echo " ✗ FAIL"
exit 1
fi
echo ""
# Test 2: find_matching_skills performance (<1000ms acceptable for 113 patterns)
echo "Test 2: find_matching_skills performance"
prompt="I want to implement a new feature with TDD"
rules_path="skill-rules.json"
start=$(date +%s%N)
result=$(find_matching_skills "$prompt" "$rules_path" 3)
end=$(date +%s%N)
duration_ns=$((end - start))
duration_ms=$((duration_ns / 1000000))
echo " Duration: ${duration_ms}ms (target: <1000ms for 19 skills, 113 patterns)"
echo " Matches found: $(echo "$result" | jq 'length')"
if [ $duration_ms -lt 1000 ]; then
echo " ✓ PASS"
else
echo " ✗ FAIL - Performance degradation detected"
exit 1
fi
# Note: 113 regex patterns × 19 skills with bash regex matching
# Typical user prompts are 10-50 words, matching completes in <600ms
# This is acceptable for a user-prompt-submit hook (runs once per prompt)
echo ""
echo "=== All Performance Tests Passed ==="