@@ -90,6 +90,90 @@ detect_language() {
9090 echo " unknown"
9191}
9292
93+ # Detect skills that should be loaded for a task
94+ detect_skills_for_task () {
95+ local task=" $1 "
96+ local detected_skills=" "
97+
98+ # Product skills
99+ echo " $task " | grep -qi " form\|button\|ui\|component\|frontend" && detected_skills=" $detected_skills design-system"
100+ echo " $task " | grep -qi " tracking\|analytics\|metrics\|pixel" && detected_skills=" $detected_skills product-metrics"
101+ echo " $task " | grep -qi " test\|e2e\|playwright" && detected_skills=" $detected_skills qa-automation"
102+ echo " $task " | grep -qi " deploy\|production\|health\|error" && detected_skills=" $detected_skills production-ready"
103+
104+ # Security skills
105+ echo " $task " | grep -qi " auth\|login\|password\|token\|jwt\|security" && detected_skills=" $detected_skills security"
106+ echo " $task " | grep -qi " vulnerability\|audit\|incident\|waf" && detected_skills=" $detected_skills secops"
107+
108+ # Ops skills
109+ echo " $task " | grep -qi " docker\|kubernetes\|k8s\|terraform\|pipeline" && detected_skills=" $detected_skills devops"
110+ echo " $task " | grep -qi " bash\|shell\|linux\|systemd\|cron" && detected_skills=" $detected_skills sysops"
111+ echo " $task " | grep -qi " model\|ml\|training\|inference\|mlflow" && detected_skills=" $detected_skills mlops"
112+
113+ # Workflow skills
114+ echo " $task " | grep -qi " bug\|fix\|tdd" && detected_skills=" $detected_skills tdd-bug-fix"
115+ echo " $task " | grep -qi " review" && detected_skills=" $detected_skills code-review"
116+
117+ echo " $detected_skills " | xargs # Trim whitespace
118+ }
119+
120+ # Track skill effectiveness for a run
121+ track_skill_metrics () {
122+ local task=" $1 "
123+ local language=" $2 "
124+ local success=" $3 " # 1 = success, 0 = failure
125+ local skills_used=" $4 "
126+ local metrics_file=" $SANDBOX_DIR /skill_metrics.json"
127+
128+ # Initialize metrics file if not exists
129+ if [ ! -f " $metrics_file " ]; then
130+ echo ' {"skill_usage":{},"skill_success":{},"missing_keywords":[]}' > " $metrics_file "
131+ fi
132+
133+ # Record each skill used
134+ for skill in $skills_used ; do
135+ jq --arg s " $skill " --argjson success " $success " '
136+ .skill_usage[$s] = ((.skill_usage[$s] // 0) + 1) |
137+ if $success == 1 then
138+ .skill_success[$s] = ((.skill_success[$s] // 0) + 1)
139+ else . end
140+ ' " $metrics_file " > /tmp/sm.json && mv /tmp/sm.json " $metrics_file "
141+ done
142+
143+ # If no skills detected but task had specific keywords, record as potential gap
144+ if [ -z " $skills_used " ] && [ ${# task} -gt 20 ]; then
145+ jq --arg task " $task " ' .missing_keywords += [$task]' " $metrics_file " > /tmp/sm.json && mv /tmp/sm.json " $metrics_file "
146+ fi
147+ }
148+
149+ # Analyze skill metrics and suggest keyword improvements
150+ analyze_skill_gaps () {
151+ local metrics_file=" $SANDBOX_DIR /skill_metrics.json"
152+
153+ if [ ! -f " $metrics_file " ]; then
154+ echo " 📊 No skill metrics yet"
155+ return
156+ fi
157+
158+ echo " "
159+ echo " 📊 Skill Effectiveness Analysis"
160+ echo " ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
161+
162+ # Calculate success rates per skill
163+ jq -r '
164+ .skill_usage | to_entries | .[] |
165+ "\(.key): \(.value) uses"
166+ ' " $metrics_file " 2> /dev/null || echo " No data yet"
167+
168+ # Show potential missing keywords
169+ local missing_count=$( jq ' .missing_keywords | length' " $metrics_file " 2> /dev/null || echo " 0" )
170+ if [ " $missing_count " -gt 0 ]; then
171+ echo " "
172+ echo " ⚠️ Tasks with no skill match ($missing_count ):"
173+ jq -r ' .missing_keywords | .[-5:][]' " $metrics_file " 2> /dev/null | head -5
174+ fi
175+ }
176+
93177# Run gt review and parse result
94178run_review () {
95179 local diff_file=" $1 "
@@ -226,6 +310,10 @@ echo "$ISSUES" | jq -c '.[]' | while read -r issue; do
226310
227311$BODY "
228312
313+ # Detect skills that will be used for this task
314+ DETECTED_SKILLS=$( detect_skills_for_task " $TASK " )
315+ [ -n " $DETECTED_SKILLS " ] && echo " 🎯 Skills: $DETECTED_SKILLS "
316+
229317 LOG_FILE=" $LOG_DIR /${REPO_NAME} _${NUMBER} .log"
230318 START_TIME=$( date +%s)
231319
356444 jq " . += [$FEEDBACK_JSON ]" " $FEEDBACK_FILE " > /tmp/f.json && mv /tmp/f.json " $FEEDBACK_FILE "
357445 fi
358446
447+ # Track skill metrics for this run
448+ SKILL_SUCCESS=0
449+ [ " $RESULT " = " success" ] && SKILL_SUCCESS=1
450+ track_skill_metrics " $TASK " " $LANGUAGE " " $SKILL_SUCCESS " " $DETECTED_SKILLS "
451+
359452 # Cleanup
360453 cd " $SANDBOX_DIR "
361454 rm -rf " $REPO_NAME "
@@ -397,5 +490,9 @@ if [ "$TOTAL" -gt 0 ]; then
397490 fi
398491fi
399492
493+ # Analyze skill effectiveness
494+ analyze_skill_gaps
495+
400496echo " "
401497echo " 📁 Logs saved in: $LOG_DIR "
498+ echo " 📊 Skill metrics: $SANDBOX_DIR /skill_metrics.json"
0 commit comments