Scan Report
18 /100
xgjk-skill
玄关 Skill 全生命周期工具 — 发现平台已有 Skill、按 XGJK 协议创建新 Skill、发布/更新/下架 Skill
A legitimate skill lifecycle management platform tool with minor security issues (SSL bypass, unpinned requests dependency) but no malicious behavior detected.
Safe to install
Pin the requests library to a specific version and consider re-enabling SSL certificate verification for production use. Add missing tool declarations to SKILL.md.
Findings 3 items
| Severity | Finding | Location |
|---|---|---|
| Medium | Unpinned 'requests' dependency in work-report scripts Supply Chain | scripts/work-report/send_report_with_confirm.py:34 |
| Low | tools_provided only declares one tool, but skill offers 10+ Doc Mismatch | SKILL.md:5 |
| Low | SSL certificate verification disabled in all HTTP clients Sensitive Access | scripts/fetch_api_doc.py:38 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Network | READ | READ | ✓ Aligned | SKILL.md:fetch_api_doc + all scripts use urllib/requests |
| Filesystem | NONE | WRITE | ✓ Aligned | SKILL.md workflows describe ZIP creation but only fetch_api_doc is in tools_prov… |
| Shell | NONE | NONE | — | No subprocess/shell invocation; Python scripts use stdlib urllib |
| Environment | NONE | READ | ✓ Aligned | Scripts read XG_USER_TOKEN, BP_APP_KEY, COMPANY_APP_KEY; documented in auth.md |
| Skill Invoke | NONE | EXEC | ✓ Aligned | Skill creation/publishing workflow described in docs but not in tools_provided |
15 findings
Medium External URL 外部 URL
https://skills.mediportal.com.cn SKILL.md:61 Medium External URL 外部 URL
https://cwork-web.mediportal.com.cn/user/login/appkey?appCode=cms_gpt&appKey= common/auth.md:21 Medium External URL 外部 URL
http://json-schema.org/draft-07/schema# docs/XGJK_SKILL_PROTOCOL.md:239 Medium External URL 外部 URL
https://api.weather-demo.com/openapi/weather/current docs/XGJK_SKILL_PROTOCOL.md:1044 Medium External URL 外部 URL
https://sg-cwork-api.mediportal.com.cn/im/skill/delete openapi/skill-management/delete-skill.md:1 Medium External URL 外部 URL
https://sg-cwork-api.mediportal.com.cn/im/skill/nologin/list openapi/skill-management/get-skills.md:1 Medium External URL 外部 URL
https://sg-cwork-api.mediportal.com.cn/im/skill/register openapi/skill-management/register-skill.md:1 Medium External URL 外部 URL
https://sg-cwork-api.mediportal.com.cn/im/skill/update openapi/skill-management/update-skill.md:1 Medium External URL 外部 URL
https://sg-cwork-api.mediportal.com.cn/ai-business/qiNiu/getSimpleUploadCredentials openapi/skill-management/upload-to-qiniu.md:1 Medium External URL 外部 URL
https://up-z2.qiniup.com/ openapi/skill-management/upload-to-qiniu.md:1 Medium External URL 外部 URL
https://host/api-center/doc.html#/im/1.机器人管理/deleteMyRobotUsingPOST scripts/fetch_api_doc.py:19 Medium External URL 外部 URL
https://host/api-center/doc.html#/im/1.机器人管理/listVisibleUsingGET scripts/fetch_api_doc.py:20 Medium External URL 外部 URL
https://host/api-center/doc.html#/im/xxx/someAPI scripts/fetch_api_doc.py:24 Medium External URL 外部 URL
https://host/api-center/doc.html#/im/2.消息管理/msgListByIdsUsingPOST scripts/fetch_api_doc.py:104 Medium External URL 外部 URL
https://sg-al-cwork-web.mediportal.com.cn/open-api scripts/work-report/group_contacts.py:21 File Tree
35 files · 161.7 KB · 4507 lines Markdown 24f · 2636L
Python 10f · 1866L
JSON 1f · 5L
├─
▾
common
│ ├─
auth.md
Markdown
│ └─
conventions.md
Markdown
├─
▾
design
│ ├─
DESIGN.md
Markdown
│ ├─
DISCUSSION-LOG.md
Markdown
│ └─
LEARNING-LOOP.md
Markdown
├─
▾
docs
│ ├─
SKILL_CREATION_WORKFLOW.md
Markdown
│ ├─
SKILL_VALIDATION_CHECKLIST.md
Markdown
│ └─
XGJK_SKILL_PROTOCOL.md
Markdown
├─
▾
examples
│ └─
▾
skill-management
│ └─
README.md
Markdown
├─
▾
openapi
│ ├─
▾
common
│ │ └─
appkey.md
Markdown
│ └─
▾
skill-management
│ ├─
api-index.md
Markdown
│ ├─
delete-skill.md
Markdown
│ ├─
get-skills.md
Markdown
│ ├─
pack-skill.md
Markdown
│ ├─
publish-skill.md
Markdown
│ ├─
register-skill.md
Markdown
│ ├─
update-skill.md
Markdown
│ └─
upload-to-qiniu.md
Markdown
├─
▾
references
│ ├─
auth-rules.md
Markdown
│ ├─
routing-table.md
Markdown
│ └─
workflow.md
Markdown
├─
▾
scripts
│ ├─
▾
skill-management
│ │ ├─
delete_skill.py
Python
│ │ ├─
get_skills.py
Python
│ │ ├─
pack_skill.py
Python
│ │ ├─
publish_skill.py
Python
│ │ ├─
README.md
Markdown
│ │ ├─
register_skill.py
Python
│ │ ├─
update_skill.py
Python
│ │ └─
upload_to_qiniu.py
Python
│ ├─
▾
work-report
│ │ ├─
group_contacts.py
Python
│ │ ├─
README.md
Markdown
│ │ └─
send_report_with_confirm.py
Python
│ └─
fetch_api_doc.py
Python
├─
_meta.json
JSON
└─
SKILL.md
Markdown
Dependencies 1 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
requests | * | pip | No | Version not pinned; used by work-report scripts |
Security Positives
✓ No malicious behavior: no reverse shells, no C2, no data exfiltration to external servers
✓ Credential tokens stay internal: XG_USER_TOKEN and appKey are read from env vars and passed only to legitimate platform APIs (mediportal.com.cn, qiniu.com)
✓ Token exchange is properly scoped: auth.md documents the token flow through the official /user/login/appkey endpoint
✓ No credential harvesting: scripts do not enumerate os.environ for secrets or send credentials to third parties
✓ No obfuscation: all code is readable Python, no base64-encoded payloads or eval tricks
✓ Access control is documented: SKILL.md clearly separates nologin operations (discover/create) from auth-required operations (publish/delete)
✓ No hidden functionality: all file writes are documented (pack_skill.py creates ZIPs, fetch_api_doc.py writes parsed docs)
✓ Solid authentication rules: auth.md enforces token priority chain and prohibits asking users for credentials
✓ Work report safety: send_report_with_confirm.py requires explicit CONFIRM_SEND token and shows confirmation before sending
✓ No remote code execution: all execution is via Python stdlib urllib/requests, no shell commands or curl|bash patterns