ecology
Study of interactions between organisms and their environment, ecosystems, and populations
Source facts
- Repository
- ffsshhttiikk/opencode-agents-skills
- Last source activity
- February 28, 2026 at 22:46
- Detected SKILL.md language
- English
- Stars
- 3
- Forks
- 2
Install options
The review-first prompt is selected by default. You can switch to a direct command or download a local copy.
Review the source files
Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.
Showing SKILL.md
SKILL.md
Source instructions · Read-only preview- name
- ecology
- description
- Study of interactions between organisms and their environment, ecosystems, and populations
- category
- biology
- keywords
- ["ecology","ecosystems","populations","communities","biodiversity","food webs","conservation"]
# Ecology
## What I Do
Ecology studies interactions between organisms and their environment at various scales. I cover population dynamics, community structure, ecosystem function, biogeography, behavioral ecology, and conservation biology. I help analyze species distributions, model population growth, and understand ecological relationships.
## When to Use Me
- Modeling population growth and dynamics
- Analyzing community structure and diversity
- Studying predator-prey and competitive interactions
- Assessing ecosystem productivity and energy flow
- Evaluating biodiversity and conservation status
- Studying habitat selection and species distribution
- Understanding nutrient cycling and ecosystem services
## Core Concepts
1. **Population Growth**: Exponential, logistic, density-dependence
2. **Community Ecology**: Species diversity, richness, evenness
3. **Ecosystem Ecology**: Energy flow, nutrient cycling, productivity
4. **Behavioral Ecology**: Foraging, mating strategies, social behavior
5. **Food Webs**: Trophic levels, energy transfer efficiency
6. **Biodiversity**: Alpha, beta, gamma diversity indices
7. **Species Interactions**: Competition, predation, mutualism, parasitism
8. **Ecosystem Services**: Provisioning, regulating, supporting services
9. **Conservation Biology**: Endangered species, habitat fragmentation
10. **Biogeography**: Island biogeography, range distributions
## Code Examples
```python
import numpy as np
from typing import List, Dict, Tuple
class PopulationEcology:
def __init__(self, species: str, carrying_capacity: float):
self.species = species
self.K = carrying_capacity
def exponential_growth(self, initial_pop: float,
rate: float,
time: float) -> float:
return initial_pop * np.exp(rate * time)
def logistic_growth(self, initial_pop: float,
rate: float,
time: float) -> float:
N0 = initial_pop
K = self.K
r = rate
return K / (1 + ((K - N0) / N0) * np.exp(-r * time))
def calculate_growth_rate(self, N1: float, N2: float,
dt: float) -> float:
return (np.log(N2) - np.log(N1)) / dt
def density_dependence(self, N: float,
r: float,
alpha: float) -> float:
return r * (1 - N / self.K) - alpha * (N / self.K)**2
def carrying_capacity_estimation(self, populations: List[float],
growth_rates: List[float]) -> float:
return np.mean([p * r for p, r in zip(populations, growth_rates)])
def population_viability_analysis(self, N0: float,
lambda_rate: float,
generations: int,
catastrophe_prob: float) -> Dict:
N = N0
extinction_prob = 0.0
for gen in range(generations):
if np.random.random() < catastrophe_prob:
N *= 0.1 # Severe reduction
else:
N *= lambda_rate
if N < 1:
extinction_prob += (1 - extinction_prob) * (1 / (gen + 1))
return {'extinction_probability': extinction_prob}
class CommunityEcology:
def __init__(self, community_name: str):
self.community = community_name
def calculate_diversity_indices(self, abundances: List[int]) -> Dict:
total = sum(abundances)
proportions = [a / total for a in abundances]
H = -sum(p * np.log(p) for p in proportions if p > 0)
D = sum(p**2 for p in proportions)
S = len(abundances)
J = H / np.log(S) if S > 0 else 0
return {
'shannon_H': H,
'simpson_D': D,
'species_richness_S': S,
'pielou_evenness_J': J
}
def simpson_diversity(self, species_counts: List[int]) -> float:
N = sum(species_counts)
return 1 - sum(n * (n - 1) for n in species_counts) / (N * (N - 1))
def beta_diversity(self, community1: List[int],
community2: List[int]) -> float:
species_shared = len([1 for s in community1 if s > 0 and s < len(community2) and community2[s-1] > 0])
species_total = len([1 for s in community1 if s > 0]) + \
len([1 for s in community2 if s > 0])
return species_shared / species_total
def rank_abundance_curve(self, abundances: List[float]) -> List[float]:
return sorted(abundances, reverse=True)
class EcosystemEcology:
def __init__(self, ecosystem: str):
self.ecosystem = ecosystem
def calculate_npp(self, gpp: float, ra: float) -> float:
return gpp - ra # Net Primary Production
def energy_transfer_efficiency(self, production_next: float,
production_current: float) -> float:
return production_next / production_current * 100
def calculate_biomass_accumulation(self, npp: float,
turnover_rate: float) -> float:
return npp / turnover_rate
def nutrient_limitation(self, nitrogen: float,
phosphorus: float,
kn: float,
kp: float) -> Dict:
limitation = np.sqrt(nitrogen / kn) * np.sqrt(phosphorus / kp)
if nitrogen / kn < phosphorus / kp:
limiting_nutrient = "nitrogen"
else:
limiting_nutrient = "phosphorus"
return {'limitation_index': limitation, 'limiting_nutrient': limiting_nutrient}
def calculate_lei(self, actual_et: float, potential_et: float) -> float:
return actual_et / potential_et # Landscape Evapotranspiration Index
class SpeciesDistribution:
def __init__(self, species: str):
self.species = species
def habitat_suitability(self, temperature: float,
precipitation: float,
elevation: float) -> float:
opt_temp = 20 + np.random.uniform(-5, 5)
opt_precip = 1000 + np.random.uniform(-200, 200)
temp_suit = np.exp(-((temperature - opt_temp) / 10)**2)
precip_suit = np.exp(-((precipitation - opt_precip) / 200)**2)
return temp_suit * precip_suit
def calculate_range_area(self, occurrences: np.ndarray) -> float:
convex_hull = occurrences
return len(occurrences) * 0.1 # Simplified
pop = PopulationEcology("SnowshoeHare", 10000)
N = pop.logistic_growth(100, 0.5, 10)
print(f"Population after 10 generations: {N:.0f}")
comm = CommunityEcology("TemperateForest")
diversity = comm.calculate_diversity_indices([50, 30, 15, 5])
print(f"Shannon H: {diversity['shannon_H']:.2f}")
```
## Best Practices
1. Use appropriate spatial and temporal scales in ecological studies
2. Account for detection probability in species surveys
3. Consider environmental stochasticity in population models
4. Validate models with independent data when possible
5. Use proper sampling design for community analysis
6. Consider source-sink dynamics in metapopulations
7. Account for temporal autocorrelation in time series
8. Use multiple diversity measures for comprehensive assessment
9. Consider edge effects in fragmented habitats
10. Document data collection methods for reproducibility
View on GitHub