Skip to content

Commit 67c7816

Browse files
author
Test
committed
feat(training): add skill tracking and effectiveness analysis
- detect_skills_for_task() detects relevant skills from task keywords - track_skill_metrics() records skill usage and success rates - analyze_skill_gaps() reports skill effectiveness at end of run - Skills now displayed during training: 🎯 Skills: design-system qa-automation - Skill metrics saved to skill_metrics.json for keyword optimization
1 parent 202d014 commit 67c7816

1 file changed

Lines changed: 97 additions & 0 deletions

File tree

training-sandbox/training_loop_v2.sh

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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
94178
run_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

@@ -356,6 +444,11 @@ EOF
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
398491
fi
399492

493+
# Analyze skill effectiveness
494+
analyze_skill_gaps
495+
400496
echo ""
401497
echo "📁 Logs saved in: $LOG_DIR"
498+
echo "📊 Skill metrics: $SANDBOX_DIR/skill_metrics.json"

0 commit comments

Comments
 (0)