Per-skill assessment within an :class:`ExecutionAnalysis`. One ``ExecutionAnalysis`` (per task) contains zero or more ``SkillJudgment`` entries — one for each skill that was selected for that task. ``skill_applied`` semantics depend on skill category: - WORKFLOW: agent foll
| 162 | # Per-skill judgment within a task analysis |
| 163 | @dataclass |
| 164 | class SkillJudgment: |
| 165 | """Per-skill assessment within an :class:`ExecutionAnalysis`. |
| 166 | |
| 167 | One ``ExecutionAnalysis`` (per task) contains zero or more |
| 168 | ``SkillJudgment`` entries — one for each skill that was selected |
| 169 | for that task. |
| 170 | |
| 171 | ``skill_applied`` semantics depend on skill category: |
| 172 | - WORKFLOW: agent followed the prescribed steps |
| 173 | - TOOL_GUIDE: agent used the described tool / approach |
| 174 | - REFERENCE: knowledge influenced agent decisions |
| 175 | """ |
| 176 | |
| 177 | skill_id: str |
| 178 | skill_applied: bool = False # Whether the skill was actually applied |
| 179 | note: str = "" # Per-skill observation (deviation, usage, etc.) |
| 180 | |
| 181 | def to_dict(self) -> Dict[str, Any]: |
| 182 | return { |
| 183 | "skill_id": self.skill_id, |
| 184 | "skill_applied": self.skill_applied, |
| 185 | "note": self.note, |
| 186 | } |
| 187 | |
| 188 | @classmethod |
| 189 | def from_dict(cls, data: Dict[str, Any]) -> "SkillJudgment": |
| 190 | return cls( |
| 191 | skill_id=data["skill_id"], |
| 192 | skill_applied=data.get("skill_applied", False), |
| 193 | note=data.get("note", ""), |
| 194 | ) |
| 195 | |
| 196 | |
| 197 | @dataclass |
no outgoing calls
no test coverage detected