扫描报告
10 /100
run-coach
Science-based running coach with HD visual training plans and Garmin sync
A legitimate running coach skill with well-documented capabilities. All external network access (Telegram Bot API, Garmin Connect) is declared. No hidden functionality, credential theft, or malicious patterns detected.
可以安装
Pin the garminconnect library version in SKILL.md to avoid unexpected breakage. Consider explicitly declaring browser:READ for the Playwright-based screenshot pipeline.
安全发现 3 项
| 严重性 | 安全发现 | 位置 |
|---|---|---|
| 低危 | Playwright dependency not declared | training/screenshot.mjs:1 |
| 低危 | garminconnect version not pinned | SKILL.md:77 |
| 提示 | Telegram bot credentials transmitted to external API | training/send-album.mjs:18 |
| 资源类型 | 声明权限 | 推断权限 | 状态 | 证据 |
|---|---|---|---|---|
| 文件系统 | READ | WRITE | ✓ 一致 | SKILL.md: 'pip install garminconnect'; garmin-sync.py writes to garmin/activitie… |
| 网络访问 | READ | READ | ✓ 一致 | SKILL.md declares Telegram bot and Garmin Connect usage; send-album.mjs:18 POSTs… |
| 命令执行 | WRITE | WRITE | ✓ 一致 | SKILL.md instructs agent to use exec/bash for training/text-to-image.sh and node… |
| 环境变量 | READ | READ | ✓ 一致 | SKILL.md declares GARMIN_EMAIL, GARMIN_PASSWORD, TELEGRAM_BOT_TOKEN, TELEGRAM_CH… |
| 浏览器 | NONE | READ | ✓ 一致 | screenshot.mjs uses Playwright/chrome-headless-shell to screenshot HTML, used vi… |
2 项发现
中危 外部 URL 外部 URL
https://api.telegram.org/bot$ training/send-album.mjs:18 提示 邮箱 邮箱地址
[email protected] garmin/garmin-sync.py:37 目录结构
8 文件 · 31.6 KB · 920 行 Python 2f · 473L
Markdown 2f · 228L
JavaScript 2f · 116L
Shell 2f · 103L
├─
▾
garmin
│ ├─
garmin-query.py
Python
│ └─
garmin-sync.py
Python
├─
▾
training
│ ├─
screenshot.mjs
JavaScript
│ ├─
send-album.mjs
JavaScript
│ ├─
send-plan.sh
Shell
│ └─
text-to-image.sh
Shell
├─
MEMORY.md
Markdown
└─
SKILL.md
Markdown
依赖分析 2 项
| 包名 | 版本 | 来源 | 已知漏洞 | 备注 |
|---|---|---|---|---|
garminconnect | * | pip | 否 | Version not pinned — minor maintenance risk |
playwright-core | * | npm | 否 | Assumed pre-installed in /app/node_modules/; not explicitly listed in SKILL.md |
安全亮点
✓ All shell execution (bash, node -e) is explicitly declared in SKILL.md agent instructions
✓ Telegram Bot API is the only external network destination — no suspicious IPs or URLs
✓ Garmin Connect is a known, legitimate third-party API — not a hidden exfiltration channel
✓ Garmin credentials are used only for Garmin Connect authentication and immediately discarded
✓ No base64 encoding, obfuscation, eval(), or dynamic code generation patterns
✓ No access to ~/.ssh, ~/.aws, .env, or other sensitive host paths
✓ Playwright uses chrome-headless-shell (not full Chrome), avoiding unnecessary attack surface
✓ Token caching uses .garth file in workspace — not credential stores
✓ All file writes are scoped to the skill's own garmin/ and training/ directories