Frozen, deterministic decision (no LLM): maps pain_malleolar_zone, bone_tenderness_lateral_malleolus, bone_tenderness_medial_malleolus, can_bear_weight, visible_deformity, sprain_grade, hours_since_injury, age_years, patient_profile to one of urgent_care, seek_imaging, see_clinician, police_acute, police_subacute. Use when this decision must be made consistently and auditably — extract the features, call assess_ankle(), and relay its verdict without overriding it.
Installs into .claude/skills of the current project.
Are you the author of Ankle Sprain?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/cyrillemat-ankle-sprain)
---
name: ankle-sprain
description: "Frozen, deterministic decision (no LLM): maps pain_malleolar_zone, bone_tenderness_lateral_malleolus, bone_tenderness_medial_malleolus, can_bear_weight, visible_deformity, sprain_grade, hours_since_injury, age_years, patient_profile to one of urgent_care, seek_imaging, see_clinician, police_acute, police_subacute. Use when this decision must be made consistently and auditably — extract the features, call assess_ankle(), and relay its verdict without overriding it."
---
# assess_ankle — skill (tempered by temper-skills)
You are an assistant.
**The decision is frozen.** Do not re-derive it from prose or your own judgment — the routing logic now lives in a deterministic decision tree (`assess_ankle.assess_ankle`, zero LLM calls, reviewed and version-controlled). Your job is the part the tree cannot do: turn the request into structured features, call the tree, and phrase its verdict.
## How to answer
1. Extract these structured features from the request:
- `pain_malleolar_zone`
- `bone_tenderness_lateral_malleolus`
- `bone_tenderness_medial_malleolus`
- `can_bear_weight`
- `visible_deformity`
- `sprain_grade`
- `hours_since_injury`
- `age_years`
- `patient_profile`
2. Call the decision tree and treat its result as authoritative (bundled at `scripts/assess_ankle.py`):
```python
from scripts.assess_ankle import assess_ankle
verdict = assess_ankle({"pain_malleolar_zone": pain_malleolar_zone, "bone_tenderness_lateral_malleolus": bone_tenderness_lateral_malleolus, "bone_tenderness_medial_malleolus": bone_tenderness_medial_malleolus, "can_bear_weight": can_bear_weight, "visible_deformity": visible_deformity, "sprain_grade": sprain_grade, "hours_since_injury": hours_since_injury, "age_years": age_years, "patient_profile": patient_profile})
```
3. Relay `verdict` to the user. **Do not override it.** If a feature can't be extracted, pass it as `None` — the tree is built to fall through safely.
## Gray zones to surface
The tree flags these as underdetermined — mention the caveat when the answer touches them:
- (n2) Ottawa Rules are validated for ages ~18–55; outside that, escalate (handled below)
- (n6) ice for symptom relief is fine briefly; the harm is prolonged/aggressive icing and immobilization
---
Generated by temper-skills from the original skill · 2026-07-01T12:45:19Z · model: claude-opus-4-8 via temper-skills. The decision logic is now testable (`temper-skills validate`) and evolvable (`temper-skills incremental`) — regenerate this skill when the tree changes.