Skill Trust Decision

geoskill-glacier-retreat-monitoring

合法的遥感冰川监测工具,核心功能完全离线实现,存在轻微的文档-行为差异(声明离线但地名解析模块可能触发网络请求),credentials.py虽包含硬编码凭证但未被本skill实际使用。

Install decision first Source: ClawHub Scanned: Aug 4, 2026
Files 24
Artifacts 9
Violations 1
Findings 3

Why this conclusion was reached

1/4 dimensions flagged
Block
Declared vs actual capability

1 undeclared or violating capabilities were inferred.

Review
Hidden execution and egress

9 lower-risk artifacts were extracted and still need context.

Pass
Attack chain and severe findings

There is no explicit malicious chain in the report.

Review
Dependencies and supply chain hygiene

6 dependency or supply-chain issues need attention.

What drove the risk score up

文档-行为差异 +15

SKILL.md声明'完全离线,不发起任何网络请求',但 aio.py 在离线匹配失败时会调用 Open-Meteo/Nominatim API

未使用的凭证模块 +5

credentials.py 包含硬编码 NASA Earthdata 默认账号,但该模块在本 skill 中未被 import

Most important evidence

Low Doc Mismatch

隐私声明与实际行为不完全一致

SKILL.md 声明 '默认完全离线运行,不发起任何网络请求',但当用户使用地名(而非 bbox 经纬度)时,aio.py 的 resolve_place() 会尝试在线地理编码服务(Open-Meteo/Nominatim)。不过代码设计为离线优先(28+ 城市硬编码),网络请求是 fallback 行为。

_geoskill_core/aoi.py:189
更新 SKILL.md 说明地名解析模式可能触发有限的地理编码 API 请求(仅在离线匹配失败时),或明确标注 --bbox 模式为唯一完全离线方式。
Low Supply Chain

依赖无版本锁定

requirements.txt 中所有依赖(numpy, rasterio, scipy, geopandas, shapely, matplotlib)均无版本约束,可能引入供应链风险。

requirements.txt:1
建议添加版本锁定(如 numpy>=1.24.0)或使用 pip-compile 生成锁文件。
Info Supply Chain

未使用的凭证管理模块

_geoskill_core/credentials.py 包含硬编码的 NASA Earthdata 默认账号(ruiduobao/Ruiduobao123)。该模块是 geoskill-core 的共享组件,但本 skill(冰川退缩监测)的核心功能不涉及数据下载,因此该模块未被实际使用。

_geoskill_core/credentials.py:40
如果本 skill 永远不需要外部数据下载,考虑从 vendoring 中排除 credentials.py 以减少暴露面。否则接受为无害的设计模式。

Declared capability vs actual capability

Filesystem Pass
Declared READ
→
Inferred WRITE
geoskill-glacier-retreat-monitoring.py:310 os.makedirs(output_dir)
Network Block
Declared NONE
→
Inferred READ
_geoskill_core/aoi.py:189 _open_meteo_search() 会发起网络请求
Shell Pass
Declared NONE
→
Inferred NONE
主脚本无 shell 执行调用
Environment Pass
Declared NONE
→
Inferred READ
_geoskill_core/credentials.py:74 os.environ.get(),但本 skill 未使用此模块
Skill Invoke Pass
Declared NONE
→
Inferred NONE
无跨 skill 调用
Clipboard Pass
Declared NONE
→
Inferred NONE
无剪贴板操作
Browser Pass
Declared NONE
→
Inferred NONE
无浏览器操作
Database Pass
Declared NONE
→
Inferred NONE
无数据库操作

Suspicious artifacts and egress

Medium External URL
https://semver.org/

CHANGELOG.md:4

Medium External URL
https://clawhub.ai

_geoskill_core/aoi.py:99

Medium External URL
https://geocoding-api.open-meteo.com/v1/search

_geoskill_core/aoi.py:234

Medium External URL
https://nominatim.openstreetmap.org/search

_geoskill_core/aoi.py:272

Medium External URL
https://urs.earthdata.nasa.gov/users/new/

_geoskill_core/credentials.py:302

Medium External URL
https://urs.earthdata.nasa.gov/profile

_geoskill_core/credentials.py:306

Medium External URL
https://firms.modaps.eosdis.nasa.gov/api/map_key/

_geoskill_core/credentials.py:308

Medium External URL
http://data.cma.cn/

_geoskill_core/credentials.py:310

Medium External URL
https://eogdata.mines.edu/register/

_geoskill_core/credentials.py:314

Dependencies and supply chain

PackageVersionSourceKnown vulnNotes
numpy * pip No 无版本锁定
rasterio * pip No 无版本锁定
scipy * pip No 无版本锁定
geopandas * pip No 无版本锁定
shapely * pip No 无版本锁定
matplotlib * pip No 无版本锁定

File composition

24 files · 3679 lines
Python 16 files · 3253 linesMarkdown 3 files · 366 linesOther 1 files · 21 linesText 2 files · 18 linesYAML 1 files · 15 linesConfig 1 files · 6 lines
Files of concern · 2
_geoskill_core/credentials.py Python · 317 lines
未使用的凭证管理模块 · https://urs.earthdata.nasa.gov/users/new/ · https://urs.earthdata.nasa.gov/profile · https://firms.modaps.eosdis.nasa.gov/api/map_key/ · http://data.cma.cn/ · https://eogdata.mines.edu/register/
_geoskill_core/aoi.py Python · 507 lines
隐私声明与实际行为不完全一致 · https://clawhub.ai · https://geocoding-api.open-meteo.com/v1/search · https://nominatim.openstreetmap.org/search
Other files · geoskill-glacier-retreat-monitoring.py · sensors.py · _place.py · manifest.py · safe_download.py · checks.py +4

Security positives

核心算法完全离线:NDSI 计算、矢量化为 GeoJSON、面积分析均在本地完成
无 shell 执行:无 subprocess、os.system、eval 等危险调用
无数据外泄:输出仅写入用户指定的 OUTPUT_DIR
有输入验证:bbox 范围检查、NDSI 阈值检查、数值合法性检查
文档结构完整:SKILL.md 详细描述了算法原理和使用方法
代码质量高:类型注解、docstring、错误处理完善
支持完全离线的 --synthetic 模式生成测试数据