ecological-agent-skills 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENT_CONTEXT.md +191 -0
- package/CATALOG.md +329 -0
- package/LICENSE +692 -0
- package/README.md +347 -0
- package/bin/install.mjs +168 -0
- package/docs/comparison-with-alternatives.md +38 -0
- package/docs/global-examples-index.md +103 -0
- package/docs/repository-statistics.md +101 -0
- package/docs/theoretical-foundations.md +188 -0
- package/environment.yaml +106 -0
- package/examples/community/arctic_tundra_vegetation_example.md +247 -0
- package/examples/community/bird_landuse_example.md +63 -0
- package/examples/community/phytoplankton_reservoir_example.md +60 -0
- package/examples/community/reef_fish_indopacific_example.md +221 -0
- package/examples/impact/baci_road_example.md +57 -0
- package/examples/impact/ecosystem_services_atlantic_forest.md +83 -0
- package/examples/impact/forest_loss_borneo_timeseries_example.md +225 -0
- package/examples/occupancy/puma_camera_example.md +61 -0
- package/examples/occupancy/snow_leopard_himalayas_example.md +204 -0
- package/examples/reproducible/whittaker_biome_sdm_example.md +406 -0
- package/examples/sdm/anteater_cerrado_example.md +69 -0
- package/examples/sdm/jaguar_amazon_example.md +80 -0
- package/examples/sdm/koala_climate_change_example.md +170 -0
- package/examples/sdm/wolf_recolonization_europe_example.md +193 -0
- package/package.json +43 -0
- package/renv.lock +194 -0
- package/skills/SKILL_INDEX.json +1020 -0
- package/skills/acoustic-monitoring/SKILL.md +163 -0
- package/skills/acoustic-monitoring/examples/example-prompts.md +100 -0
- package/skills/acoustic-monitoring/examples/temperate_forest_birds_example.md +285 -0
- package/skills/acoustic-monitoring/resources/acoustic-indices-reference.md +93 -0
- package/skills/acoustic-monitoring/resources/soundscape-ecology-guide.md +90 -0
- package/skills/acoustic-monitoring/resources/species-id-tools-comparison.md +89 -0
- package/skills/acoustic-monitoring/scripts/batch_species_detection.py +360 -0
- package/skills/acoustic-monitoring/scripts/compute_acoustic_indices.R +235 -0
- package/skills/acoustic-monitoring/scripts/compute_acoustic_indices.py +374 -0
- package/skills/biostatistics-workbench/SKILL.md +140 -0
- package/skills/biostatistics-workbench/examples/example-prompts.md +39 -0
- package/skills/biostatistics-workbench/resources/effect-size-reference.md +81 -0
- package/skills/biostatistics-workbench/resources/glm-family-link-reference.md +47 -0
- package/skills/biostatistics-workbench/resources/test-selection-guide.md +93 -0
- package/skills/biostatistics-workbench/scripts/glm_pipeline.R +78 -0
- package/skills/biostatistics-workbench/scripts/glm_pipeline.py +210 -0
- package/skills/camera-trap-processing/SKILL.md +159 -0
- package/skills/camera-trap-processing/examples/example-prompts.md +103 -0
- package/skills/camera-trap-processing/examples/leopard_serengeti_example.md +231 -0
- package/skills/camera-trap-processing/resources/activity-patterns-reference.md +113 -0
- package/skills/camera-trap-processing/resources/camtrapR-workflow-guide.md +130 -0
- package/skills/camera-trap-processing/resources/detection-event-definition-guide.md +89 -0
- package/skills/camera-trap-processing/scripts/estimate_activity.R +169 -0
- package/skills/camera-trap-processing/scripts/process_camtrap_data.R +179 -0
- package/skills/camera-trap-processing/scripts/process_camtrap_data.py +192 -0
- package/skills/community-ecology-ordination/SKILL.md +133 -0
- package/skills/community-ecology-ordination/examples/example-prompts.md +35 -0
- package/skills/community-ecology-ordination/resources/dissimilarity-metric-guide.md +53 -0
- package/skills/community-ecology-ordination/resources/nmds-interpretation-guide.md +104 -0
- package/skills/community-ecology-ordination/scripts/__pycache__/community_analysis.cpython-311.pyc +0 -0
- package/skills/community-ecology-ordination/scripts/community_analysis.R +143 -0
- package/skills/community-ecology-ordination/scripts/community_analysis.py +231 -0
- package/skills/ecological-data-foundation/SKILL.md +129 -0
- package/skills/ecological-data-foundation/examples/example-prompts.md +40 -0
- package/skills/ecological-data-foundation/resources/coordinate-cleaning-flags.md +66 -0
- package/skills/ecological-data-foundation/resources/darwin-core-glossary.md +91 -0
- package/skills/ecological-data-foundation/resources/data-citation-guide.md +265 -0
- package/skills/ecological-data-foundation/resources/gbif-data-citation-guide.md +193 -0
- package/skills/ecological-data-foundation/resources/qa-checklist.md +83 -0
- package/skills/ecological-data-foundation/scripts/__pycache__/clean_occurrences.cpython-311.pyc +0 -0
- package/skills/ecological-data-foundation/scripts/__pycache__/download_from_ebird.cpython-311.pyc +0 -0
- package/skills/ecological-data-foundation/scripts/__pycache__/download_from_inat.cpython-311.pyc +0 -0
- package/skills/ecological-data-foundation/scripts/__pycache__/download_from_iucn.cpython-311.pyc +0 -0
- package/skills/ecological-data-foundation/scripts/__pycache__/download_from_obis.cpython-311.pyc +0 -0
- package/skills/ecological-data-foundation/scripts/clean_occurrences.R +230 -0
- package/skills/ecological-data-foundation/scripts/clean_occurrences.py +268 -0
- package/skills/ecological-data-foundation/scripts/download_from_ebird.R +251 -0
- package/skills/ecological-data-foundation/scripts/download_from_ebird.py +364 -0
- package/skills/ecological-data-foundation/scripts/download_from_gbif.R +315 -0
- package/skills/ecological-data-foundation/scripts/download_from_gbif.py +407 -0
- package/skills/ecological-data-foundation/scripts/download_from_inat.R +238 -0
- package/skills/ecological-data-foundation/scripts/download_from_inat.py +304 -0
- package/skills/ecological-data-foundation/scripts/download_from_iucn.R +273 -0
- package/skills/ecological-data-foundation/scripts/download_from_iucn.py +344 -0
- package/skills/ecological-data-foundation/scripts/download_from_obis.R +248 -0
- package/skills/ecological-data-foundation/scripts/download_from_obis.py +318 -0
- package/skills/ecological-impact-assessment/SKILL.md +123 -0
- package/skills/ecological-impact-assessment/examples/example-prompts.md +32 -0
- package/skills/ecological-impact-assessment/resources/baci-design-guide.md +55 -0
- package/skills/ecological-impact-assessment/resources/fragmentation-metrics-reference.md +86 -0
- package/skills/ecological-impact-assessment/resources/pressure-index-template.md +78 -0
- package/skills/ecological-impact-assessment/resources/study-design-guide.md +168 -0
- package/skills/ecological-impact-assessment/scripts/baci_analysis.R +161 -0
- package/skills/ecological-impact-assessment/scripts/fragmentation_analysis.py +141 -0
- package/skills/ecological-impact-assessment/scripts/power_analysis_baci.R +274 -0
- package/skills/ecosystem-services-assessment/SKILL.md +125 -0
- package/skills/ecosystem-services-assessment/examples/example-prompts.md +24 -0
- package/skills/ecosystem-services-assessment/resources/es-indicator-reference.md +45 -0
- package/skills/ecosystem-services-assessment/resources/invest-parameter-guide.md +86 -0
- package/skills/ecosystem-services-assessment/resources/rusle-coefficients.md +88 -0
- package/skills/ecosystem-services-assessment/scripts/__pycache__/compute_es.cpython-311.pyc +0 -0
- package/skills/ecosystem-services-assessment/scripts/compute_es.py +189 -0
- package/skills/ecosystem-services-assessment/scripts/tradeoff_analysis.R +161 -0
- package/skills/environmental-time-series/SKILL.md +125 -0
- package/skills/environmental-time-series/examples/example-prompts.md +33 -0
- package/skills/environmental-time-series/resources/anomaly-indices-reference.md +88 -0
- package/skills/environmental-time-series/resources/bfast-parameter-guide.md +69 -0
- package/skills/environmental-time-series/scripts/__pycache__/recovery_trajectory.cpython-311.pyc +0 -0
- package/skills/environmental-time-series/scripts/__pycache__/trend_analysis.cpython-311.pyc +0 -0
- package/skills/environmental-time-series/scripts/recovery_trajectory.R +305 -0
- package/skills/environmental-time-series/scripts/recovery_trajectory.py +178 -0
- package/skills/environmental-time-series/scripts/trend_analysis.R +192 -0
- package/skills/environmental-time-series/scripts/trend_analysis.py +184 -0
- package/skills/geoprocessing-for-ecology/SKILL.md +123 -0
- package/skills/geoprocessing-for-ecology/examples/example-prompts.md +32 -0
- package/skills/geoprocessing-for-ecology/resources/crs-reference.md +62 -0
- package/skills/geoprocessing-for-ecology/resources/global-predictor-sources.md +331 -0
- package/skills/geoprocessing-for-ecology/resources/resampling-methods.md +57 -0
- package/skills/geoprocessing-for-ecology/scripts/__pycache__/download_predictors.cpython-311.pyc +0 -0
- package/skills/geoprocessing-for-ecology/scripts/download_predictors.R +239 -0
- package/skills/geoprocessing-for-ecology/scripts/download_predictors.py +379 -0
- package/skills/geoprocessing-for-ecology/scripts/stack_and_extract.R +224 -0
- package/skills/geoprocessing-for-ecology/scripts/stack_and_extract.py +172 -0
- package/skills/landscape-connectivity/SKILL.md +170 -0
- package/skills/landscape-connectivity/examples/example-prompts.md +96 -0
- package/skills/landscape-connectivity/examples/jaguar_mesoamerica_corridor_example.md +271 -0
- package/skills/landscape-connectivity/resources/circuitscape-parameter-guide.md +155 -0
- package/skills/landscape-connectivity/resources/graph-theory-for-ecology.md +134 -0
- package/skills/landscape-connectivity/resources/resistance-surface-guide.md +141 -0
- package/skills/landscape-connectivity/scripts/connectivity_analysis.py +387 -0
- package/skills/landscape-connectivity/scripts/connectivity_metrics.R +274 -0
- package/skills/landscape-connectivity/scripts/resistance_surface.R +239 -0
- package/skills/model-validation-and-uncertainty/SKILL.md +131 -0
- package/skills/model-validation-and-uncertainty/examples/example-prompts.md +30 -0
- package/skills/model-validation-and-uncertainty/resources/extrapolation-risk-guide.md +236 -0
- package/skills/model-validation-and-uncertainty/resources/metric-selection-guide.md +52 -0
- package/skills/model-validation-and-uncertainty/resources/threshold-selection-guide.md +64 -0
- package/skills/model-validation-and-uncertainty/scripts/__pycache__/validate_model.cpython-311.pyc +0 -0
- package/skills/model-validation-and-uncertainty/scripts/extrapolation_risk.R +315 -0
- package/skills/model-validation-and-uncertainty/scripts/validate_model.py +226 -0
- package/skills/model-validation-and-uncertainty/scripts/validate_sdm.R +162 -0
- package/skills/occupancy-and-detection/SKILL.md +126 -0
- package/skills/occupancy-and-detection/examples/example-prompts.md +33 -0
- package/skills/occupancy-and-detection/resources/detection-history-format.md +100 -0
- package/skills/occupancy-and-detection/resources/occupancy-study-design.md +47 -0
- package/skills/occupancy-and-detection/scripts/__pycache__/occupancy_analysis.cpython-311.pyc +0 -0
- package/skills/occupancy-and-detection/scripts/occupancy_analysis.R +160 -0
- package/skills/occupancy-and-detection/scripts/occupancy_analysis.py +159 -0
- package/skills/population-viability-analysis/SKILL.md +161 -0
- package/skills/population-viability-analysis/examples/african_elephant_pva_example.md +266 -0
- package/skills/population-viability-analysis/examples/example-prompts.md +95 -0
- package/skills/population-viability-analysis/resources/extinction-risk-thresholds.md +128 -0
- package/skills/population-viability-analysis/resources/matrix-model-guide.md +139 -0
- package/skills/population-viability-analysis/resources/sensitivity-elasticity-reference.md +182 -0
- package/skills/population-viability-analysis/scripts/matrix_pva.R +258 -0
- package/skills/population-viability-analysis/scripts/pva_analysis.py +442 -0
- package/skills/population-viability-analysis/scripts/stochastic_pva.R +353 -0
- package/skills/predictive-modeling-best-practices/SKILL.md +136 -0
- package/skills/predictive-modeling-best-practices/examples/example-prompts.md +58 -0
- package/skills/predictive-modeling-best-practices/resources/collinearity-decision-tree.md +65 -0
- package/skills/predictive-modeling-best-practices/resources/sampling-bias-correction.md +267 -0
- package/skills/predictive-modeling-best-practices/resources/spatial-cv-guide.md +73 -0
- package/skills/predictive-modeling-best-practices/scripts/__pycache__/spatial_cv.cpython-311.pyc +0 -0
- package/skills/predictive-modeling-best-practices/scripts/collinearity_check.R +112 -0
- package/skills/predictive-modeling-best-practices/scripts/spatial_cv.py +182 -0
- package/skills/reproducible-ecology-pipeline/SKILL.md +139 -0
- package/skills/reproducible-ecology-pipeline/examples/example-prompts.md +35 -0
- package/skills/reproducible-ecology-pipeline/resources/directory-structure-template.md +94 -0
- package/skills/reproducible-ecology-pipeline/resources/params-yaml-template.yaml +84 -0
- package/skills/reproducible-ecology-pipeline/resources/reproducibility-checklist-template.md +66 -0
- package/skills/reproducible-ecology-pipeline/scripts/generate_file_manifest.py +110 -0
- package/skills/reproducible-ecology-pipeline/scripts/init_project.sh +53 -0
- package/skills/spatial-prioritization/SKILL.md +162 -0
- package/skills/spatial-prioritization/examples/biodiversity_hotspot_prioritization_example.md +289 -0
- package/skills/spatial-prioritization/examples/example-prompts.md +93 -0
- package/skills/spatial-prioritization/resources/cost-surface-reference.md +130 -0
- package/skills/spatial-prioritization/resources/marxan-vs-prioritizr-comparison.md +125 -0
- package/skills/spatial-prioritization/resources/prioritizr-formulation-guide.md +188 -0
- package/skills/spatial-prioritization/resources/representation-targets-guide.md +186 -0
- package/skills/spatial-prioritization/scripts/prioritization_sensitivity.R +320 -0
- package/skills/spatial-prioritization/scripts/run_prioritization.R +336 -0
- package/skills/species-distribution-modeling/SKILL.md +139 -0
- package/skills/species-distribution-modeling/examples/example-prompts.md +36 -0
- package/skills/species-distribution-modeling/resources/algorithm-comparison.md +25 -0
- package/skills/species-distribution-modeling/resources/calibration-area-guide.md +71 -0
- package/skills/species-distribution-modeling/resources/climate-scenario-preparation.md +170 -0
- package/skills/species-distribution-modeling/resources/maxent-calibration-guide.md +211 -0
- package/skills/species-distribution-modeling/resources/sdm-checklist.md +37 -0
- package/skills/species-distribution-modeling/scripts/predict_distribution.R +236 -0
- package/skills/species-distribution-modeling/scripts/predict_distribution.py +286 -0
- package/skills/species-distribution-modeling/scripts/prepare_future_layers.R +351 -0
- package/skills/species-distribution-modeling/scripts/project_scenarios.R +220 -0
- package/skills/species-distribution-modeling/scripts/run_ensemble_sdm.R +99 -0
- package/skills/species-distribution-modeling/scripts/sdm_pipeline.py +318 -0
- package/skills/species-distribution-modeling/scripts/tune_maxnet.R +344 -0
- package/templates/SKILL_TEMPLATE.md +225 -0
- package/templates/checklists/data-submission-checklist.md +38 -0
- package/templates/checklists/post-analysis-checklist.md +55 -0
- package/templates/checklists/pre-analysis-checklist.md +31 -0
- package/templates/prompts/debug-skill.md +47 -0
- package/templates/prompts/invoke-skill.md +34 -0
- package/templates/prompts/invoke-workflow.md +45 -0
- package/templates/reports/technical-report-template.md +80 -0
- package/templates/scripts/logger_setup.R +79 -0
- package/templates/scripts/logger_setup.py +119 -0
- package/templates/scripts/params_loader.R +28 -0
- package/templates/scripts/params_loader.py +38 -0
- package/workflows/analyze-community-structure/WORKFLOW.md +72 -0
- package/workflows/analyze-environmental-change/WORKFLOW.md +73 -0
- package/workflows/assess-ecological-impact/WORKFLOW.md +75 -0
- package/workflows/assess-ecosystem-services/WORKFLOW.md +68 -0
- package/workflows/assess-landscape-connectivity/WORKFLOW.md +84 -0
- package/workflows/build-fire-risk-map/WORKFLOW.md +79 -0
- package/workflows/produce-technical-report/WORKFLOW.md +113 -0
- package/workflows/run-camera-trap-occupancy/WORKFLOW.md +87 -0
- package/workflows/run-conservation-prioritization/WORKFLOW.md +89 -0
- package/workflows/run-multispecies-screening/WORKFLOW.md +197 -0
- package/workflows/run-occupancy-analysis/WORKFLOW.md +74 -0
- package/workflows/run-population-viability/WORKFLOW.md +90 -0
- package/workflows/run-sdm-study/WORKFLOW.md +99 -0
package/README.md
ADDED
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
# ecological-agent-skills
|
|
2
|
+
|
|
3
|
+
[](https://www.gnu.org/licenses/gpl-3.0)
|
|
4
|
+
|
|
5
|
+
A curated, agent-agnostic skill library for **quantitative ecology** workflows, designed for use with any AI coding agent.
|
|
6
|
+
|
|
7
|
+
**17 modular skills** | **13 multi-step workflows** | **58 R/Python scripts** | **14 worked examples across 6 continents**
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Table of Contents
|
|
12
|
+
|
|
13
|
+
- [New Here? Start Here!](#new-here-start-here)
|
|
14
|
+
- [Installation](#installation)
|
|
15
|
+
- [Core Concepts](#core-concepts)
|
|
16
|
+
- [Skills (17)](#skills-17)
|
|
17
|
+
- [Workflows (13)](#workflows-13)
|
|
18
|
+
- [How to Use Skills](#how-to-use-skills)
|
|
19
|
+
- [For AI Agents](#for-ai-agents)
|
|
20
|
+
- [Examples (14)](#examples-14)
|
|
21
|
+
- [Documentation](#documentation)
|
|
22
|
+
- [Implementation Roadmap](#implementation-roadmap)
|
|
23
|
+
- [Contributing](#contributing)
|
|
24
|
+
- [License](#license)
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## New Here? Start Here!
|
|
29
|
+
|
|
30
|
+
**What is this?** A collection of structured Markdown instructions (skills) that teach AI agents how to perform quantitative ecology analyses — from cleaning GBIF data to running species distribution models, occupancy analysis, PVA, and conservation prioritization.
|
|
31
|
+
|
|
32
|
+
**Who is it for?** Ecologists, conservation biologists, and environmental scientists who use AI coding agents to assist with data analysis in R or Python.
|
|
33
|
+
|
|
34
|
+
**1-minute quick start:**
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# 1. Clone the repository
|
|
38
|
+
git clone https://github.com/baratadiego/ecological-agent-skills.git
|
|
39
|
+
|
|
40
|
+
# 2. Tell your agent about it (example for Claude Code)
|
|
41
|
+
cd ecological-agent-skills
|
|
42
|
+
# The agent reads AGENT_CONTEXT.md and skills/SKILL_INDEX.json automatically
|
|
43
|
+
|
|
44
|
+
# 3. Ask your agent to run an analysis
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
Use the species-distribution-modeling skill to build a MaxEnt model
|
|
49
|
+
for Panthera onca in the Amazon biome using WorldClim v2.1 predictors.
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**That's it.** The agent reads the skill instructions, follows the decision points, runs the R/Python scripts, and produces validated outputs with full reproducibility tracking.
|
|
53
|
+
|
|
54
|
+
**Pick a starting workflow:**
|
|
55
|
+
|
|
56
|
+
| Your goal | Workflow to run |
|
|
57
|
+
|-----------|----------------|
|
|
58
|
+
| Model where a species occurs | `run-sdm-study` |
|
|
59
|
+
| Estimate occupancy from camera traps | `run-camera-trap-occupancy` |
|
|
60
|
+
| Assess impact of a disturbance | `assess-ecological-impact` |
|
|
61
|
+
| Compare community composition | `analyze-community-structure` |
|
|
62
|
+
| Identify conservation priority areas | `run-conservation-prioritization` |
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Installation
|
|
67
|
+
|
|
68
|
+
### Option A: npx (recommended)
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
npx ecological-agent-skills --claude
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
One command. Clones the repository, copies skills to the right location for your agent, and prints next steps.
|
|
75
|
+
|
|
76
|
+
### Option B: Git clone
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
git clone https://github.com/baratadiego/ecological-agent-skills.git
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Option C: Download ZIP
|
|
83
|
+
|
|
84
|
+
Download from [Releases](https://github.com/baratadiego/ecological-agent-skills/releases) and extract to your preferred location.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
### Choose Your Tool
|
|
89
|
+
|
|
90
|
+
| Tool | Install command |
|
|
91
|
+
|------|----------------|
|
|
92
|
+
| **Claude Code** | `npx ecological-agent-skills --claude` |
|
|
93
|
+
| **Gemini CLI / Antigravity** | `npx ecological-agent-skills --gemini` |
|
|
94
|
+
| **Cursor** | `npx ecological-agent-skills --cursor` |
|
|
95
|
+
| **GitHub Copilot** | `npx ecological-agent-skills --copilot` |
|
|
96
|
+
| **Codex CLI** | `npx ecological-agent-skills --codex` |
|
|
97
|
+
| **Custom path** | `npx ecological-agent-skills --path ./my-skills` |
|
|
98
|
+
|
|
99
|
+
**What each flag does:**
|
|
100
|
+
|
|
101
|
+
| Flag | Install path | Notes |
|
|
102
|
+
|------|-------------|-------|
|
|
103
|
+
| `--claude` | `.claude/skills/ecological-agent-skills/` | Project-local. Add reference to `CLAUDE.md` |
|
|
104
|
+
| `--gemini` | `~/.gemini/ecological-agent-skills/skills/` | Global. Auto-discovered by Gemini CLI |
|
|
105
|
+
| `--cursor` | `.cursor/skills/ecological-agent-skills/` | Project-local. Add reference to `.cursor/rules/` |
|
|
106
|
+
| `--copilot` | `.github/skills/ecological-agent-skills/` | Project-local. Reference in `copilot-instructions.md` |
|
|
107
|
+
| `--codex` | `.codex/skills/ecological-agent-skills/` | Project-local |
|
|
108
|
+
| `--path <dir>` | Custom directory | For any agent or manual setup |
|
|
109
|
+
|
|
110
|
+
### Manual setup per agent
|
|
111
|
+
|
|
112
|
+
If you prefer to clone manually, here's how to wire it up for each tool:
|
|
113
|
+
|
|
114
|
+
| Agent Framework | Setup after cloning |
|
|
115
|
+
|----------------|---------------------|
|
|
116
|
+
| **Claude Code** | Add to `CLAUDE.md`: `Read AGENT_CONTEXT.md from ecological-agent-skills/ before any ecology task` |
|
|
117
|
+
| **Gemini CLI** | Move to `~/.gemini/ecological-agent-skills/skills/` — auto-discovered |
|
|
118
|
+
| **Cursor** | Add to `.cursor/rules/`: `Read AGENT_CONTEXT.md from ecological-agent-skills/ before any ecology task` |
|
|
119
|
+
| **GitHub Copilot** | Reference in `.github/copilot-instructions.md` |
|
|
120
|
+
| **Windsurf** | Reference in `.windsurfrules` |
|
|
121
|
+
| **Any agent** | Point the agent to `AGENT_CONTEXT.md` directly |
|
|
122
|
+
|
|
123
|
+
### Environment setup (for running R/Python scripts)
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# Python + R environment via conda
|
|
127
|
+
conda env create -f environment.yaml
|
|
128
|
+
conda activate eco-skills
|
|
129
|
+
|
|
130
|
+
# R packages via renv (inside R session)
|
|
131
|
+
renv::restore()
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Core Concepts
|
|
137
|
+
|
|
138
|
+
**Skills** are self-contained analysis modules. Each skill lives in its own directory with:
|
|
139
|
+
- `SKILL.md` — instructions the agent reads before executing
|
|
140
|
+
- `resources/` — reference guides, checklists, decision tables
|
|
141
|
+
- `scripts/` — R and Python scripts the agent can run
|
|
142
|
+
- `examples/` — worked examples and prompt templates
|
|
143
|
+
|
|
144
|
+
**Workflows** chain multiple skills into end-to-end pipelines (e.g., data cleaning → modeling → validation → reporting).
|
|
145
|
+
|
|
146
|
+
**Decision Points** are built into every skill and workflow — conditional logic that tells the agent what to do when AUC is too low, sample size is insufficient, or assumptions are violated.
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Skills (17)
|
|
151
|
+
|
|
152
|
+
### Foundation (Phase 1)
|
|
153
|
+
|
|
154
|
+
| # | Skill | Domain |
|
|
155
|
+
|---|-------|--------|
|
|
156
|
+
| 1 | `ecological-data-foundation` | Data ingestion, QA, schema |
|
|
157
|
+
| 2 | `geoprocessing-for-ecology` | CRS, raster, vector, spatial ops |
|
|
158
|
+
| 3 | `biostatistics-workbench` | Tests, GLM/GLMM, effect sizes |
|
|
159
|
+
| 4 | `predictive-modeling-best-practices` | CV, tuning, leakage, collinearity |
|
|
160
|
+
| 12 | `reproducible-ecology-pipeline` | Traceability, audit, checklist |
|
|
161
|
+
|
|
162
|
+
### Modeling (Phase 2)
|
|
163
|
+
|
|
164
|
+
| # | Skill | Domain |
|
|
165
|
+
|---|-------|--------|
|
|
166
|
+
| 5 | `model-validation-and-uncertainty` | Metrics, calibration, sensitivity |
|
|
167
|
+
| 6 | `species-distribution-modeling` | SDM/ENM full pipeline |
|
|
168
|
+
| 9 | `ecological-impact-assessment` | BACI, fragmentation, pressure |
|
|
169
|
+
| 10 | `environmental-time-series` | Trend, seasonality, breakpoint |
|
|
170
|
+
|
|
171
|
+
### Specialist (Phase 3)
|
|
172
|
+
|
|
173
|
+
| # | Skill | Domain |
|
|
174
|
+
|---|-------|--------|
|
|
175
|
+
| 7 | `occupancy-and-detection` | Occupancy models, detectability |
|
|
176
|
+
| 8 | `community-ecology-ordination` | NMDS, PCA, diversity, clustering |
|
|
177
|
+
| 11 | `ecosystem-services-assessment` | ES indicators, valuation |
|
|
178
|
+
|
|
179
|
+
### Advanced (Phase 4)
|
|
180
|
+
|
|
181
|
+
| # | Skill | Domain |
|
|
182
|
+
|---|-------|--------|
|
|
183
|
+
| 13 | `camera-trap-processing` | Detection events, RAI, diel activity, Dhat4 overlap |
|
|
184
|
+
| 14 | `acoustic-monitoring` | ACI/NDSI indices, BirdNET detection, soundscape ecology |
|
|
185
|
+
| 15 | `landscape-connectivity` | IIC, PC, dPC, Circuitscape, resistance surfaces |
|
|
186
|
+
| 16 | `population-viability-analysis` | Leslie/Lefkovitch lambda, stochastic PVA, IUCN Criterion E |
|
|
187
|
+
| 17 | `spatial-prioritization` | prioritizr ILP, 30x30 targets, BLM calibration, irreplaceability |
|
|
188
|
+
|
|
189
|
+
See [CATALOG.md](CATALOG.md) for full metadata, inputs, outputs, and workflow linkages.
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Workflows (13)
|
|
194
|
+
|
|
195
|
+
| Workflow | Skills Used | Purpose |
|
|
196
|
+
|----------|-------------|---------|
|
|
197
|
+
| `run-sdm-study` | 1 → 2 → 4 → 6 → 5 → 12 | Species distribution modeling |
|
|
198
|
+
| `assess-ecological-impact` | 1 → 2 → 9 → 3 → 5 → 12 | BACI impact analysis |
|
|
199
|
+
| `analyze-community-structure` | 1 → 3 → 8 → 5 → 12 | Community ordination |
|
|
200
|
+
| `build-fire-risk-map` | 1 → 2 → 10 → 4 → 5 → 9 | Fire risk spatial model |
|
|
201
|
+
| `run-occupancy-analysis` | 1 → 3 → 7 → 5 → 12 | Occupancy with imperfect detection |
|
|
202
|
+
| `analyze-environmental-change` | 1 → 2 → 10 → 9 → 12 | Environmental time series |
|
|
203
|
+
| `assess-ecosystem-services` | 1 → 2 → 11 → 3 → 12 | ES valuation |
|
|
204
|
+
| `produce-technical-report` | 12 → template → synthesis | Report generation |
|
|
205
|
+
| `run-multispecies-screening` | 1 → 2 → 4 → 6 → 5 | Rapid multi-species SDM |
|
|
206
|
+
| `run-camera-trap-occupancy` | 1 → 13 → 7 → 5 → 12 | Camera trap to occupancy |
|
|
207
|
+
| `assess-landscape-connectivity` | 1 → 2 → 15 → 5 → 12 | Corridor and patch importance |
|
|
208
|
+
| `run-population-viability` | 1 → 3 → 16 → 5 → 12 | PVA and extinction risk |
|
|
209
|
+
| `run-conservation-prioritization` | 1 → 2 → 6 → 17 → 12 | Reserve network design |
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## How to Use Skills
|
|
214
|
+
|
|
215
|
+
### Natural invocation
|
|
216
|
+
```
|
|
217
|
+
Use the species-distribution-modeling skill to build a MaxEnt model for Chrysocyon brachyurus.
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Explicit skill reference
|
|
221
|
+
```
|
|
222
|
+
Load skill: ecological-data-foundation
|
|
223
|
+
Task: validate and clean the occurrence dataset at data/raw/occurrences.csv
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Chaining via workflow
|
|
227
|
+
```
|
|
228
|
+
Run workflow: run-sdm-study
|
|
229
|
+
Species: Panthera onca
|
|
230
|
+
Study area: Amazon biome
|
|
231
|
+
Predictors: WorldClim v2.1 + MapBiomas land cover
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## For AI Agents
|
|
237
|
+
|
|
238
|
+
If you are an AI agent operating in this repository, **read these two files first**:
|
|
239
|
+
|
|
240
|
+
| File | Purpose |
|
|
241
|
+
|---|---|
|
|
242
|
+
| [`AGENT_CONTEXT.md`](AGENT_CONTEXT.md) | Canonical rules for skill invocation, disambiguation, minimum sample sizes, project scaling, and file conventions |
|
|
243
|
+
| [`skills/SKILL_INDEX.json`](skills/SKILL_INDEX.json) | Machine-readable index of all skills with trigger keywords, required inputs, outputs, dependencies, and decision thresholds |
|
|
244
|
+
|
|
245
|
+
**Quick start for agents:**
|
|
246
|
+
1. Read `AGENT_CONTEXT.md` in full before any task.
|
|
247
|
+
2. Search `skills/SKILL_INDEX.json` by `trigger_keywords` to select the correct skill.
|
|
248
|
+
3. Read the full `SKILL.md` of the selected skill before executing any step.
|
|
249
|
+
4. Check `min_inputs` and `decision_points` before running scripts.
|
|
250
|
+
5. Write decisions to `decision_log.md` after each skill completes.
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
## Examples (14)
|
|
255
|
+
|
|
256
|
+
| Region | Example | Analysis |
|
|
257
|
+
|--------|---------|----------|
|
|
258
|
+
| Amazon, Brazil | Jaguar | SDM |
|
|
259
|
+
| Cerrado, Brazil | Giant Anteater | SDM |
|
|
260
|
+
| Atlantic Forest, Brazil | Bird community | Community ordination |
|
|
261
|
+
| Atlantic Forest, Brazil | Puma | Occupancy |
|
|
262
|
+
| Atlantic Forest, Brazil | Road construction | BACI impact |
|
|
263
|
+
| Atlantic Forest, Brazil | Ecosystem services | ES valuation |
|
|
264
|
+
| Amazon reservoirs | Phytoplankton | Community shift |
|
|
265
|
+
| Western Europe | Grey Wolf | SDM + recolonization + conflict |
|
|
266
|
+
| Eastern Australia | Koala | SDM + climate change + MOP |
|
|
267
|
+
| Indo-Pacific | Reef fish (987 spp.) | Beta diversity + PERMANOVA |
|
|
268
|
+
| Central Himalayas | Snow Leopard | Occupancy + camera trap |
|
|
269
|
+
| Borneo | Tropical forest | BFAST + MESH + BACI |
|
|
270
|
+
| Arctic (Greenland/Canada) | Tundra vegetation | NDVI greening |
|
|
271
|
+
| Holarctic (global) | Red Fox | Fully reproducible SDM |
|
|
272
|
+
|
|
273
|
+
See [`docs/global-examples-index.md`](docs/global-examples-index.md) for full details with data sources and DOIs.
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## Documentation
|
|
278
|
+
|
|
279
|
+
| Document | Description |
|
|
280
|
+
|----------|-------------|
|
|
281
|
+
| [`docs/theoretical-foundations.md`](docs/theoretical-foundations.md) | Citable justifications for 10 methodological decisions with primary references |
|
|
282
|
+
| [`docs/global-examples-index.md`](docs/global-examples-index.md) | Inventory of all 14 examples with geographic and taxonomic coverage |
|
|
283
|
+
| [`docs/comparison-with-alternatives.md`](docs/comparison-with-alternatives.md) | Comparison vs. Wallace, biomod2, kuenm, ENMTML, SDMtoolbox, Zonation, Vortex |
|
|
284
|
+
| [`CATALOG.md`](CATALOG.md) | Skill-level metadata: inputs, outputs, trigger keywords, workflow linkages |
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
## Repository Structure
|
|
289
|
+
|
|
290
|
+
```
|
|
291
|
+
ecological-agent-skills/
|
|
292
|
+
├── AGENT_CONTEXT.md ← rules for AI agents (read first)
|
|
293
|
+
├── CATALOG.md ← skill index with metadata
|
|
294
|
+
├── CITATION.cff ← citation metadata
|
|
295
|
+
├── CHANGELOG.md ← version history
|
|
296
|
+
├── CONTRIBUTING.md ← contributor guidelines
|
|
297
|
+
├── KNOWN_ISSUES.md ← documented issues with workarounds
|
|
298
|
+
├── RELEASE_CHECKLIST.md ← release process
|
|
299
|
+
├── environment.yaml ← conda environment (Python + R)
|
|
300
|
+
├── renv.lock ← R package lock file
|
|
301
|
+
├── skills/ ← 17 modular skills
|
|
302
|
+
│ ├── SKILL_INDEX.json ← machine-readable skill registry
|
|
303
|
+
│ └── <skill-name>/
|
|
304
|
+
│ ├── SKILL.md ← main instructions
|
|
305
|
+
│ ├── resources/ ← checklists, glossaries, templates
|
|
306
|
+
│ ├── examples/ ← usage prompt examples
|
|
307
|
+
│ └── scripts/ ← R/Python helpers
|
|
308
|
+
├── workflows/ ← 13 multi-step playbooks
|
|
309
|
+
│ └── <workflow-name>/
|
|
310
|
+
│ └── WORKFLOW.md
|
|
311
|
+
├── templates/ ← reusable prompts, reports, checklists
|
|
312
|
+
├── examples/ ← 14 worked examples (6 continents)
|
|
313
|
+
├── docs/ ← theoretical foundations, comparisons
|
|
314
|
+
├── tests/ ← pytest + testthat + 585 CI checks
|
|
315
|
+
│ ├── ci_check.sh ← structural integrity checker
|
|
316
|
+
│ ├── python/ ← 19 pytest test files
|
|
317
|
+
│ ├── r/ ← 18 testthat test files
|
|
318
|
+
│ ├── data/ ← 11 test CSVs
|
|
319
|
+
│ ├── regression/ ← reference-based regression tests
|
|
320
|
+
│ └── agent_smoke/ ← 15 agent routing validation cases
|
|
321
|
+
└── .github/workflows/ci.yml ← GitHub Actions CI
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
## Implementation Roadmap
|
|
327
|
+
|
|
328
|
+
| Phase | Skills | Status |
|
|
329
|
+
|-------|--------|--------|
|
|
330
|
+
| **Phase 1** — Foundation | ecological-data-foundation, geoprocessing-for-ecology, biostatistics-workbench, predictive-modeling-best-practices, reproducible-ecology-pipeline | Complete |
|
|
331
|
+
| **Phase 2** — Modeling | model-validation-and-uncertainty, species-distribution-modeling, ecological-impact-assessment, environmental-time-series | Complete |
|
|
332
|
+
| **Phase 3** — Specialist | occupancy-and-detection, community-ecology-ordination, ecosystem-services-assessment | Complete |
|
|
333
|
+
| **Phase 4** — Advanced | camera-trap-processing, acoustic-monitoring, landscape-connectivity, population-viability-analysis, spatial-prioritization | Complete |
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## Contributing
|
|
338
|
+
|
|
339
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for full guidelines.
|
|
340
|
+
|
|
341
|
+
Follow the standard skill packaging pattern: one directory per skill, `SKILL.md` as the entry point, with optional `resources/`, `examples/`, and `scripts/` subdirectories.
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
## License
|
|
346
|
+
|
|
347
|
+
This project is licensed under the [GNU General Public License v3.0](LICENSE) or later. See [`CITATION.cff`](CITATION.cff) for citation metadata.
|
package/bin/install.mjs
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// ecological-agent-skills installer
|
|
4
|
+
// Usage: npx ecological-agent-skills [--claude | --gemini | --cursor | --copilot | --codex | --path <dir>]
|
|
5
|
+
|
|
6
|
+
import { execFileSync } from "node:child_process";
|
|
7
|
+
import { existsSync, mkdirSync, cpSync } from "node:fs";
|
|
8
|
+
import { resolve, join } from "node:path";
|
|
9
|
+
import { homedir } from "node:os";
|
|
10
|
+
|
|
11
|
+
const REPO_URL = "https://github.com/baratadiego/ecological-agent-skills.git";
|
|
12
|
+
const PACKAGE_NAME = "ecological-agent-skills";
|
|
13
|
+
|
|
14
|
+
const TARGETS = {
|
|
15
|
+
"--claude": {
|
|
16
|
+
path: () => join(process.cwd(), ".claude", "skills", PACKAGE_NAME),
|
|
17
|
+
label: "Claude Code",
|
|
18
|
+
postInstall: `Add to your CLAUDE.md:\n Read AGENT_CONTEXT.md from .claude/skills/${PACKAGE_NAME}/ before any ecology task.`,
|
|
19
|
+
},
|
|
20
|
+
"--gemini": {
|
|
21
|
+
path: () => join(homedir(), ".gemini", PACKAGE_NAME, "skills"),
|
|
22
|
+
label: "Gemini CLI / Antigravity",
|
|
23
|
+
postInstall: "Skills will be auto-discovered by Gemini CLI.",
|
|
24
|
+
},
|
|
25
|
+
"--cursor": {
|
|
26
|
+
path: () => join(process.cwd(), ".cursor", "skills", PACKAGE_NAME),
|
|
27
|
+
label: "Cursor",
|
|
28
|
+
postInstall: `Add to .cursor/rules/:\n Read AGENT_CONTEXT.md from .cursor/skills/${PACKAGE_NAME}/ before any ecology task.`,
|
|
29
|
+
},
|
|
30
|
+
"--copilot": {
|
|
31
|
+
path: () => join(process.cwd(), ".github", "skills", PACKAGE_NAME),
|
|
32
|
+
label: "GitHub Copilot",
|
|
33
|
+
postInstall: `Reference in .github/copilot-instructions.md:\n Read AGENT_CONTEXT.md from .github/skills/${PACKAGE_NAME}/ before any ecology task.`,
|
|
34
|
+
},
|
|
35
|
+
"--codex": {
|
|
36
|
+
path: () => join(process.cwd(), ".codex", "skills", PACKAGE_NAME),
|
|
37
|
+
label: "Codex CLI",
|
|
38
|
+
postInstall: "Skills installed for Codex CLI.",
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
function printUsage() {
|
|
43
|
+
console.log(`
|
|
44
|
+
ecological-agent-skills — installer for quantitative ecology AI skills
|
|
45
|
+
|
|
46
|
+
Usage:
|
|
47
|
+
npx ecological-agent-skills --claude Install for Claude Code (project-local)
|
|
48
|
+
npx ecological-agent-skills --gemini Install for Gemini CLI (~/.gemini/)
|
|
49
|
+
npx ecological-agent-skills --cursor Install for Cursor (project-local)
|
|
50
|
+
npx ecological-agent-skills --copilot Install for GitHub Copilot (project-local)
|
|
51
|
+
npx ecological-agent-skills --codex Install for Codex CLI (project-local)
|
|
52
|
+
npx ecological-agent-skills --path <dir> Install to a custom directory
|
|
53
|
+
|
|
54
|
+
Options:
|
|
55
|
+
--help Show this help message
|
|
56
|
+
--version Show version
|
|
57
|
+
`);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function getVersion() {
|
|
61
|
+
return "3.1.0";
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function main() {
|
|
65
|
+
const args = process.argv.slice(2);
|
|
66
|
+
|
|
67
|
+
if (args.includes("--help") || args.length === 0) {
|
|
68
|
+
printUsage();
|
|
69
|
+
process.exit(0);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (args.includes("--version")) {
|
|
73
|
+
console.log(getVersion());
|
|
74
|
+
process.exit(0);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
let targetPath;
|
|
78
|
+
let label;
|
|
79
|
+
let postInstall;
|
|
80
|
+
|
|
81
|
+
if (args.includes("--path")) {
|
|
82
|
+
const idx = args.indexOf("--path");
|
|
83
|
+
const customPath = args[idx + 1];
|
|
84
|
+
if (!customPath) {
|
|
85
|
+
console.error("Error: --path requires a directory argument.");
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
targetPath = resolve(customPath);
|
|
89
|
+
label = "Custom path";
|
|
90
|
+
postInstall = `Skills installed to ${targetPath}`;
|
|
91
|
+
} else {
|
|
92
|
+
const flag = args.find((a) => TARGETS[a]);
|
|
93
|
+
if (!flag) {
|
|
94
|
+
console.error(`Unknown option: ${args[0]}`);
|
|
95
|
+
printUsage();
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
const target = TARGETS[flag];
|
|
99
|
+
targetPath = target.path();
|
|
100
|
+
label = target.label;
|
|
101
|
+
postInstall = target.postInstall;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
console.log(`\nInstalling ecological-agent-skills for ${label}...`);
|
|
105
|
+
console.log(`Target: ${targetPath}\n`);
|
|
106
|
+
|
|
107
|
+
const tmpDir = join(
|
|
108
|
+
homedir(),
|
|
109
|
+
".cache",
|
|
110
|
+
"ecological-agent-skills-tmp-" + Date.now()
|
|
111
|
+
);
|
|
112
|
+
|
|
113
|
+
try {
|
|
114
|
+
console.log("Cloning repository...");
|
|
115
|
+
execFileSync("git", ["clone", "--depth", "1", REPO_URL, tmpDir], {
|
|
116
|
+
stdio: "pipe",
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
mkdirSync(targetPath, { recursive: true });
|
|
120
|
+
|
|
121
|
+
const filesToCopy = [
|
|
122
|
+
"skills",
|
|
123
|
+
"workflows",
|
|
124
|
+
"templates",
|
|
125
|
+
"examples",
|
|
126
|
+
"docs",
|
|
127
|
+
"AGENT_CONTEXT.md",
|
|
128
|
+
"CATALOG.md",
|
|
129
|
+
"environment.yaml",
|
|
130
|
+
"renv.lock",
|
|
131
|
+
];
|
|
132
|
+
|
|
133
|
+
for (const item of filesToCopy) {
|
|
134
|
+
const src = join(tmpDir, item);
|
|
135
|
+
const dest = join(targetPath, item);
|
|
136
|
+
if (existsSync(src)) {
|
|
137
|
+
cpSync(src, dest, { recursive: true });
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
console.log("\nInstalled successfully!\n");
|
|
142
|
+
console.log(` 17 skills, 13 workflows, 58 scripts\n`);
|
|
143
|
+
console.log(`Next steps:`);
|
|
144
|
+
console.log(` ${postInstall}\n`);
|
|
145
|
+
console.log(
|
|
146
|
+
`Environment setup (optional, for running R/Python scripts):`
|
|
147
|
+
);
|
|
148
|
+
console.log(` conda env create -f ${join(targetPath, "environment.yaml")}`);
|
|
149
|
+
console.log(` conda activate eco-skills\n`);
|
|
150
|
+
} catch (err) {
|
|
151
|
+
console.error("Installation failed:", err.message);
|
|
152
|
+
process.exit(1);
|
|
153
|
+
} finally {
|
|
154
|
+
try {
|
|
155
|
+
if (process.platform === "win32") {
|
|
156
|
+
execFileSync("cmd", ["/c", "rmdir", "/s", "/q", tmpDir], {
|
|
157
|
+
stdio: "pipe",
|
|
158
|
+
});
|
|
159
|
+
} else {
|
|
160
|
+
execFileSync("rm", ["-rf", tmpDir], { stdio: "pipe" });
|
|
161
|
+
}
|
|
162
|
+
} catch {
|
|
163
|
+
// Ignore cleanup errors
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
main();
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Comparison with Alternative Tools
|
|
2
|
+
|
|
3
|
+
This document provides an objective comparison of **ecological-agent-skills** against established software tools used in quantitative ecology, species distribution modeling, population viability analysis, and spatial conservation planning.
|
|
4
|
+
|
|
5
|
+
## Comparison Table
|
|
6
|
+
|
|
7
|
+
| Criterion | ecological-agent-skills | Wallace | SDMtoolbox | biomod2 | kuenm | ENMTML | Zonation | Vortex |
|
|
8
|
+
|---|---|---|---|---|---|---|---|---|
|
|
9
|
+
| **Type** | Skill repository (R + Python) | R/Shiny GUI | ArcGIS plugin (Python) | R package | R package | R package | Standalone (C++) | Standalone (Windows) |
|
|
10
|
+
| **SDM algorithms** | MaxEnt, GLM, GAM, BRT, RF via biomod2/maxnet wrappers | MaxEnt, GLM, GAM, BRT, RF, BIOCLIM | MaxEnt (with background selection tools) | MaxEnt, GLM, GAM, GBM, RF, SRE, FDA, MARS, ANN, CTA (10+) | MaxEnt only (calibration-focused) | MaxEnt, GLM, GAM, GBM, RF, SVM, BIOCLIM, Domain (10+) | None (consumes SDM outputs) | None (not an SDM tool) |
|
|
11
|
+
| **PVA included** | Yes (matrix-based, stochastic demographic) | No | No | No | No | No | No | Yes (individual-based, genetics, catastrophes) |
|
|
12
|
+
| **Prioritization included** | Yes (via prioritizr wrapper) | No | No | No | No | No | Yes (core functionality) | No |
|
|
13
|
+
| **Connectivity included** | Yes (resistance surfaces, least-cost paths, circuit theory via gdistance/Circuitscape) | No | Partial (corridor tools in ArcGIS) | No | No | No | Partial (connectivity penalty in planning) | No |
|
|
14
|
+
| **Reproducibility** | 4/5 -- scripted pipelines with config files, but depends on user discipline to version inputs | 3/5 -- session-based, exports R scripts but GUI steps not fully logged | 2/5 -- ArcGIS model builder possible but manual steps common | 4/5 -- fully scripted R workflows | 4/5 -- scripted calibration with CSV logs | 4/5 -- scripted with HTML output reports | 2/5 -- GUI-driven parameter files, batch mode possible | 2/5 -- GUI with project files, XML scenarios exportable |
|
|
15
|
+
| **Learning curve** | 3/5 -- requires comfort with CLI/agents and R/Python, but SKILL.md docs guide each step | 2/5 -- GUI with step-by-step tabs, beginner-friendly | 3/5 -- requires ArcGIS expertise | 3/5 -- R programming required, good vignettes | 3/5 -- R programming, MaxEnt-specific knowledge | 3/5 -- R programming, similar interface to biomod2 | 4/5 -- complex parameter tuning, sparse documentation | 4/5 -- many parameters, population biology expertise needed |
|
|
16
|
+
| **AI agent support** | Yes (designed for agents: trigger keywords, SKILL.md index, AGENT_CONTEXT.md) | No | No | No | No | No | No | No |
|
|
17
|
+
| **Methodological decision docs** | Yes (theoretical-foundations linking choices to primary literature) | Partial (guidance text in GUI panels) | No | Partial (vignettes explain options) | Yes (calibration rationale in publications) | Partial (vignettes) | No (user must consult external literature) | No (user must consult external literature) |
|
|
18
|
+
| **Global scope** | Yes (GBIF/BIEN download, WorldClim/CHELSA layers, any region) | Yes (GBIF integration, WorldClim) | Partial (requires user-supplied layers, no built-in download) | Yes (user supplies data, no built-in download, but global in principle) | Partial (user supplies data, designed for any region) | Yes (built-in GBIF and WorldClim download) | Yes (user supplies layers, any region) | Yes (user defines parameters, any species) |
|
|
19
|
+
| **Last update / maintenance** | 2025 (active development) | 2024 (active, v2.x) | 2021 (maintenance mode, ArcGIS Pro migration unclear) | 2024 (active, CRAN) | 2023 (maintained, GitHub) | 2022 (low activity) | 2022 (Zonation 5 released, limited updates) | 2024 (active, v10.x) |
|
|
20
|
+
| **Licence** | MIT | GPL-3 | GPL-3 | GPL-2+ | GPL-3 | GPL-3 | Proprietary (free for academic use) | Proprietary (free for non-commercial use) |
|
|
21
|
+
|
|
22
|
+
## Positioning
|
|
23
|
+
|
|
24
|
+
ecological-agent-skills is the only repository designed specifically for use with AI agents, integrating 17 skills in reproducible pipelines with documented methodological decisions. It does not replace biomod2 or prioritizr -- it uses them as dependencies. It is distinguished by: (1) agent-native design with trigger keywords and skill index, (2) integrated coverage from data download through SDM, community ecology, impact assessment, PVA, connectivity, and spatial prioritization, (3) dual R+Python implementation for every script, and (4) theoretical-foundations document linking every methodological choice to primary literature.
|
|
25
|
+
|
|
26
|
+
Where Wallace and ENMTML excel at providing accessible, self-contained SDM workflows, and Vortex and Zonation offer deep functionality in PVA and spatial planning respectively, ecological-agent-skills occupies a distinct niche: it is a coordination layer that connects these analytical domains into end-to-end pipelines that an AI agent can discover, parameterize, and execute without manual GUI interaction. The repository is most valuable when an analyst needs to chain multiple analytical steps -- for example, downloading occurrence data, fitting an ensemble SDM, running a PVA on predicted suitable habitat, and feeding both outputs into a spatial prioritization -- in a single reproducible session guided by an AI assistant.
|
|
27
|
+
|
|
28
|
+
## Limitations of ecological-agent-skills
|
|
29
|
+
|
|
30
|
+
The following limitations should be considered when evaluating whether this repository is appropriate for a given use case:
|
|
31
|
+
|
|
32
|
+
- **No GUI** -- requires command-line or agent interface. Users who prefer point-and-click workflows should consider Wallace or Vortex instead.
|
|
33
|
+
- **Not a standalone software package** -- a skill library that wraps existing packages. It adds orchestration and documentation, not novel algorithms.
|
|
34
|
+
- **SDM algorithms depend on external packages** (maxnet, dismo, biomod2). If upstream packages introduce breaking changes, scripts may require updates.
|
|
35
|
+
- **PVA implementation is simpler than Vortex** -- no genetics module, no individual-based modeling, no catastrophe scheduling. For species requiring detailed genetic or demographic complexity, Vortex remains the better tool.
|
|
36
|
+
- **Prioritization is a wrapper around prioritizr** -- does not add novel optimization solvers or planning unit generation beyond what prioritizr already provides.
|
|
37
|
+
- **Test suite does not cover all edge cases** for scripts that require live API calls (GBIF, WorldClim). Tests use stored fixtures; failures against live APIs may not be caught until runtime.
|
|
38
|
+
- **Documentation is in English only**. Non-English-speaking users may face accessibility barriers, particularly for the methodological decision documents.
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Global Examples Index
|
|
2
|
+
|
|
3
|
+
Complete inventory of all worked examples in the ecological-agent-skills repository, with geographic and thematic coverage analysis.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Example Inventory
|
|
8
|
+
|
|
9
|
+
| # | Example | Species / System | Region | Continent | Biome | Skill / Workflow | Analysis Type | Data Source | DOI / URL |
|
|
10
|
+
|---|---------|-----------------|--------|-----------|-------|-----------------|---------------|-------------|-----------|
|
|
11
|
+
| 1 | [Jaguar SDM](../examples/sdm/jaguar_amazon_example.md) | *Panthera onca* | Brazilian Amazon | South America | Tropical moist forest | run-sdm-study | SDM | GBIF, SpeciesLink, WorldClim | doi:10.15468/dl.xxxxx |
|
|
12
|
+
| 2 | [Giant Anteater SDM](../examples/sdm/anteater_cerrado_example.md) | *Myrmecophaga tridactyla* | Cerrado, Brazil | South America | Tropical savanna | run-sdm-study | SDM | GBIF, WorldClim, MapBiomas | doi:10.15468/dl.xxxxx |
|
|
13
|
+
| 3 | [Grey Wolf Recolonization](../examples/sdm/wolf_recolonization_europe_example.md) | *Canis lupus* | Western Europe | Europe | Temperate forest / Mediterranean | run-sdm-study | SDM + conflict analysis | GBIF, EuroLargeCarnivores, WorldClim, Corine LC | doi:10.15468/dl.xxxxx |
|
|
14
|
+
| 4 | [Koala Climate Change](../examples/sdm/koala_climate_change_example.md) | *Phascolarctos cinereus* | Eastern Australia | Oceania | Temperate woodland | run-sdm-study | SDM + future projection + MOP | GBIF, ALA, WorldClim, CMIP6 | doi:10.15468/dl.xxxxx |
|
|
15
|
+
| 5 | [Red Fox Reproducible](../examples/reproducible/whittaker_biome_sdm_example.md) | *Vulpes vulpes* | Holarctic (global) | Multi-continent | Multiple | run-sdm-study | SDM (fully reproducible) | GBIF, WorldClim | doi:10.15468/dl.example |
|
|
16
|
+
| 6 | [Bird Community — Atlantic Forest](../examples/community/bird_landuse_example.md) | 127 bird species | Atlantic Forest, Brazil | South America | Tropical moist forest | analyze-community-structure | Community ecology | Field surveys | — |
|
|
17
|
+
| 7 | [Phytoplankton — Amazon Reservoirs](../examples/community/phytoplankton_reservoir_example.md) | Phytoplankton assemblages | Amazon basin reservoirs | South America | Tropical moist forest (aquatic) | analyze-community-structure | Community ecology | Field surveys | — |
|
|
18
|
+
| 8 | [Reef Fish — Indo-Pacific](../examples/community/reef_fish_indopacific_example.md) | 987 reef fish species | Indo-Pacific coral reefs | Asia / Oceania | Marine coral reef | analyze-community-structure | Community ecology (beta diversity) | Reef Life Survey | doi:10.1038/sdata.2014.7 |
|
|
19
|
+
| 9 | [Arctic Tundra Vegetation](../examples/community/arctic_tundra_vegetation_example.md) | Tundra vegetation | Greenland, northern Canada | North America / Europe | Arctic tundra | analyze-community-structure + environmental-time-series | Time series + community shift | MODIS, ERA5-Land, AVA | — |
|
|
20
|
+
| 10 | [BACI Road Impact — Birds](../examples/impact/baci_road_example.md) | Birds (Atlantic Forest) | Atlantic Forest, Brazil | South America | Tropical moist forest | assess-ecological-impact | BACI impact assessment | Field surveys | — |
|
|
21
|
+
| 11 | [Ecosystem Services — Atlantic Forest](../examples/impact/ecosystem_services_atlantic_forest.md) | Atlantic Forest remnants | São Paulo, Brazil | South America | Tropical moist forest | assess-ecosystem-services | Ecosystem services | MapBiomas | — |
|
|
22
|
+
| 12 | [Forest Loss — Borneo](../examples/impact/forest_loss_borneo_timeseries_example.md) | Tropical rainforest | Borneo (Malaysia, Indonesia) | Asia | Tropical moist forest | assess-ecological-impact | BFAST + fragmentation + BACI | Hansen GFC, MODIS | doi:10.1126/science.1244693 |
|
|
23
|
+
| 13 | [Puma Occupancy — Camera Traps](../examples/occupancy/puma_camera_example.md) | *Puma concolor* | Atlantic Forest, Brazil | South America | Tropical moist forest | run-occupancy-analysis | Occupancy modeling | Camera traps | — |
|
|
24
|
+
| 14 | [Snow Leopard Occupancy — Himalayas](../examples/occupancy/snow_leopard_himalayas_example.md) | *Panthera uncia* | Central Himalayas (Nepal/India) | Asia | Alpine / montane | run-occupancy-analysis | Occupancy modeling | Camera traps, literature | doi:10.2193/0091-7648 |
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Coverage Summary
|
|
29
|
+
|
|
30
|
+
### Continents Represented
|
|
31
|
+
|
|
32
|
+
| Continent | Examples | Example IDs |
|
|
33
|
+
|-----------|---------|-------------|
|
|
34
|
+
| South America | 6 | 1, 2, 6, 7, 10, 11 |
|
|
35
|
+
| Europe | 2 | 3, 9 (Greenland) |
|
|
36
|
+
| Asia | 3 | 8, 12, 14 |
|
|
37
|
+
| Oceania | 2 | 4, 8 (Indo-Pacific overlap) |
|
|
38
|
+
| North America | 2 | 5 (Holarctic), 9 (Canada) |
|
|
39
|
+
| Africa | 1 | 5 (Holarctic — includes N. Africa margin) |
|
|
40
|
+
|
|
41
|
+
All 6 inhabited continents are covered. Africa has minimal direct representation (only via the Holarctic red fox range), but the repository's skills and workflows are globally applicable.
|
|
42
|
+
|
|
43
|
+
### Biomes Represented
|
|
44
|
+
|
|
45
|
+
| Biome | Examples | n |
|
|
46
|
+
|-------|---------|---|
|
|
47
|
+
| Tropical moist forest | 1, 2, 6, 7, 10, 11, 12, 13 | 8 |
|
|
48
|
+
| Tropical savanna (Cerrado) | 2 | 1 |
|
|
49
|
+
| Temperate forest | 3 | 1 |
|
|
50
|
+
| Temperate woodland | 4 | 1 |
|
|
51
|
+
| Mediterranean | 3 | 1 |
|
|
52
|
+
| Marine coral reef | 8 | 1 |
|
|
53
|
+
| Arctic tundra | 9 | 1 |
|
|
54
|
+
| Alpine / montane | 14 | 1 |
|
|
55
|
+
| Multiple (Holarctic) | 5 | 1 |
|
|
56
|
+
|
|
57
|
+
### Taxonomic Groups
|
|
58
|
+
|
|
59
|
+
| Group | Species / System | Examples |
|
|
60
|
+
|-------|-----------------|---------|
|
|
61
|
+
| Mammals | Jaguar, anteater, wolf, koala, fox, puma, snow leopard | 1, 2, 3, 4, 5, 13, 14 |
|
|
62
|
+
| Birds | Atlantic Forest bird community | 6, 10 |
|
|
63
|
+
| Fish | Indo-Pacific reef fish (987 spp.) | 8 |
|
|
64
|
+
| Plants | Arctic tundra vegetation | 9 |
|
|
65
|
+
| Phytoplankton | Amazon reservoir assemblages | 7 |
|
|
66
|
+
| Ecosystem (forest) | Borneo tropical forest, Atlantic Forest remnants | 11, 12 |
|
|
67
|
+
|
|
68
|
+
### Analysis Types
|
|
69
|
+
|
|
70
|
+
| Analysis | Examples | n |
|
|
71
|
+
|----------|---------|---|
|
|
72
|
+
| SDM (species distribution modeling) | 1, 2, 3, 4, 5 | 5 |
|
|
73
|
+
| Community ecology (ordination, diversity) | 6, 7, 8 | 3 |
|
|
74
|
+
| Occupancy modeling | 13, 14 | 2 |
|
|
75
|
+
| BACI impact assessment | 10, 12 | 2 |
|
|
76
|
+
| Ecosystem services | 11 | 1 |
|
|
77
|
+
| Time series (NDVI, BFAST) | 9, 12 | 2 |
|
|
78
|
+
| Climate change projection | 4 | 1 |
|
|
79
|
+
| Conflict / land-use overlay | 3 | 1 |
|
|
80
|
+
| Fragmentation (MESH) | 12 | 1 |
|
|
81
|
+
|
|
82
|
+
### Workflows Used
|
|
83
|
+
|
|
84
|
+
| Workflow | Examples |
|
|
85
|
+
|----------|---------|
|
|
86
|
+
| run-sdm-study | 1, 2, 3, 4, 5 |
|
|
87
|
+
| analyze-community-structure | 6, 7, 8, 9 |
|
|
88
|
+
| run-occupancy-analysis | 13, 14 |
|
|
89
|
+
| assess-ecological-impact | 10, 12 |
|
|
90
|
+
| assess-ecosystem-services | 11 |
|
|
91
|
+
| analyze-environmental-change | 9 |
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Coverage Gaps and Notes
|
|
96
|
+
|
|
97
|
+
- **Africa**: Represented only through the Holarctic red fox example. All skills and workflows are applicable to African taxa and ecosystems — users are encouraged to contribute African case studies.
|
|
98
|
+
- **Acoustic monitoring / eDNA**: No worked example yet. The `acoustic-monitoring` skill includes decision tables and scripts but awaits a full example.
|
|
99
|
+
- **PVA**: No worked example yet. The `population-viability-analysis` skill includes Leslie matrix scripts and IUCN Criterion E guidance.
|
|
100
|
+
- **Spatial prioritization**: No worked example yet. The `spatial-prioritization` skill includes prioritizr scripts and 30x30 target guidance.
|
|
101
|
+
- **Connectivity**: No worked example yet. The `landscape-connectivity` skill includes IIC/PC/Circuitscape scripts.
|
|
102
|
+
|
|
103
|
+
These gaps represent opportunities for future examples. The skill documentation and scripts are complete and functional — examples provide illustration, not implementation.
|