SKILL.md
Conservation Biology Guide
A skill for conducting conservation biology research, covering species assessment methods, habitat modeling, population viability analysis, key biodiversity databases, and frameworks for conservation prioritization.
Species Assessment and Red List
IUCN Red List Categories
Extinction Risk Categories (from highest to lowest):
EX - Extinct
EW - Extinct in the Wild
CR - Critically Endangered
EN - Endangered
VU - Vulnerable
NT - Near Threatened
LC - Least Concern
DD - Data Deficient
NE - Not Evaluated
Classification criteria (any one triggers the category):
A: Population size reduction
B: Geographic range (extent of occurrence, area of occupancy)
C: Small population size and decline
D: Very small or restricted population
E: Quantitative extinction probability analysis
Querying the IUCN API
import os
import json
import urllib.request
def get_species_assessment(species_name: str) -> dict:
"""
Retrieve IUCN Red List assessment for a species.
Args:
species_name: Scientific name (e.g., 'Panthera tigris')
"""
api_token = os.environ["IUCN_API_TOKEN"]
encoded_name = urllib.parse.quote(species_name)
url = f"https://apiv3.iucnredlist.org/api/v3/species/{encoded_name}?token={api_token}"
req = urllib.request.Request(url)
response = urllib.request.urlopen(req)
data = json.loads(response.read())
if data.get("result"):
species = data["result"][0]
return {
"scientific_name": species.get("scientific_name"),
"common_name": species.get("main_common_name"),
"category": species.get("category"),
"population_trend": species.get("population_trend"),
"assessment_date": species.get("assessment_date"),
"criteria": species.get("criteria")
}
return {"error": "Species not found in IUCN Red List"}
Habitat Modeling
Species Distribution Models (SDMs)
def sdm_workflow(occurrence_data: list[tuple],
environmental_layers: list[str],
method: str = "maxent") -> dict:
"""
Outline a species distribution modeling workflow.
Args:
occurrence_data: List of (latitude, longitude) tuples
environmental_layers: List of environmental raster file paths
method: Modeling method (maxent, glm, rf, boosted_regression)
"""
return {
"data_preparation": {
"occurrences": len(occurrence_data),
"environmental_variables": len(environmental_layers),
"steps": [
"Clean occurrence records (remove duplicates, spatial outliers)",
"Thin records to reduce spatial autocorrelation (1 per grid cell)",
"Generate pseudo-absences or background points",
"Extract environmental values at occurrence/absence points",
"Check for multicollinearity (VIF < 10)"
]
},
"modeling": {
"method": method,
"methods_available": {
"maxent": "Maximum entropy (presence-only, widely used)",
"glm": "Generalized linear model (presence-absence)",
"rf": "Random forest (handles non-linearities)",
"boosted_regression": "BRT (good predictive performance)",
"ensemble": "Combine multiple methods for robustness"
}
},
"validation": {
"metrics": ["AUC-ROC", "TSS (True Skill Statistic)", "Boyce Index"],
"methods": [
"k-fold cross-validation",
"Spatial block cross-validation (reduces spatial autocorrelation bias)",
"Independent validation dataset (ideal)"
]
},
"projection": {
"current": "Map current suitable habitat",
"future": "Project under climate change scenarios (SSP1-2.6, SSP5-8.5)",
"note": "Report uncertainty across climate models and scenarios"
}
}
