Scan Report
40 /100
birthday
中文农历/公历生日提醒管理,支持身份证生日提取与独立提醒天数
The birthday management skill contains undeclared network access (webhook, SMTP email) and shell execution (JS sendmail), with sensitive personal data capable of external transmission.
Use with caution
Update SKILL.md to explicitly declare network:WRITE capability if email/webhook channels are supported, or remove these features. Consider documenting the subprocess usage in JS version. Review whether email and webhook channels are essential features.
Findings 4 items
| Severity | Finding | Location |
|---|---|---|
| Medium | Undeclared email notification channel Doc Mismatch | scripts/birthday_manager.py:309 |
| Medium | Undeclared webhook notification channel Doc Mismatch | scripts/birthday_manager.py:316 |
| Medium | Undeclared shell command execution (JS) Doc Mismatch | scripts/birthday_manager.js:290 |
| Low | Environment variable access for credentials Sensitive Access | scripts/birthday_manager.py:201 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Filesystem | READ | WRITE | ✓ Aligned | Both scripts read/write birthdays.json for data persistence - documented |
| Network | NONE | WRITE | ✗ Violation | Python: smtplib.SMTP, urllib.request (webhook); JS: none; SKILL.md only declares… |
| Shell | NONE | WRITE | ✗ Violation | JS: child_process.spawnSync for 'which sendmail' and sendmail binary execution -… |
| Environment | NONE | READ | ✓ Aligned | Scripts read SMTP config from env vars (BIRTHDAY_SMTP_*), but only for notificat… |
File Tree
7 files · 58.1 KB · 1752 lines JavaScript 1f · 760L
Python 1f · 695L
Markdown 2f · 254L
JSON 2f · 39L
YAML 1f · 4L
├─
▾
agents
│ └─
openai.yaml
YAML
├─
▾
data
│ └─
notification.json
JSON
├─
▾
references
│ └─
data-format.md
Markdown
├─
▾
scripts
│ ├─
birthday_manager.js
JavaScript
│ └─
birthday_manager.py
Python
├─
package.json
JSON
└─
SKILL.md
Markdown
Dependencies 1 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
None (pure stdlib) | N/A | Python stdlib + Node.js stdlib | No | No npm dependencies in package.json, no pip requirements.txt - all code uses standard library only |
Security Positives
✓ ID card numbers are properly masked (first 6 and last 4 digits only)
✓ No access to sensitive system paths (~/.ssh, ~/.aws, .env)
✓ Package has zero third-party dependencies (no supply chain risk)
✓ No base64-encoded or obfuscated code detected
✓ No reverse shell, C2, or credential harvesting patterns
✓ Email/webhook channels require explicit user configuration via notification.json
✓ Webhook URL is user-controlled, not hardcoded to external servers
✓ Lunar calendar conversion table is embedded (no external dependencies)
✓ Both scripts are well-structured with proper error handling