Scan Report
5 /100
BitSoulStockSkill
BitSoul旗下all-in-one的A股市场综合skill,提供股票筛选策略,内置上百种行业常见量化指标, 基于MOE混合因子专家模型的股票买卖点计算判断,个股风险判定,关键指标计算,数据回测
Legitimate A-share stock market analysis skill with all capabilities correctly declared; minor issues limited to unpinned Python dependencies.
Safe to install
Approve for use. Consider pinning exact dependency versions to reduce supply-chain risk.
Findings 2 items
| Severity | Finding | Location |
|---|---|---|
| Low | Python dependencies lack version pinning Supply Chain | assets/requirements.txt:1 |
| Info | BITSOUL_TOKEN sent to remote server for authentication Sensitive Access | scripts/remote_api.py:108 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Filesystem | READ | READ | ✓ Aligned | utils.py creates temp dir; data_fetcher.py reads/writes SQLite in temp dir; all … |
| Network | READ | READ | ✓ Aligned | remote_api.py and data_fetcher.py POST/GET to info.aicodingyard.com; stock_crawl… |
| Environment | READ | READ | ✓ Aligned | config.py reads BITSOUL_TOKEN and BITSOUL_TOKEN_ENV_FILE from os.environ; SKILL.… |
| Skill Invoke | READ | READ | ✓ Aligned | stock_api.py exposes StockApi with stock data/metrics/backtest methods; moe_sign… |
| Shell | NONE | NONE | — | No subprocess/os.popen/shell=True found across all 21 Python files (grep confirm… |
8 findings
Medium External URL 外部 URL
https://www.aicodingyard.com SKILL.md:8 Medium External URL 外部 URL
https://finance.sina.com.cn/ SKILL.md:25 Medium External URL 外部 URL
http://info.aicodingyard.com assets/config.json:3 Medium External URL 外部 URL
https://push2his.eastmoney.com/api/qt/stock/kline/get scripts/factor_mining.py:382 Medium External URL 外部 URL
https://www.eastmoney.com/ scripts/factor_mining.py:391 Medium External URL 外部 URL
http://hq.sinajs.cn/list= scripts/realtime_data_featcher.py:42 Medium External URL 外部 URL
http://push2.eastmoney.com/api/qt/stock/get scripts/stock_crawler.py:150 Medium External URL 外部 URL
http://d.10jqka.com.cn/v6/line/hs_ scripts/stock_crawler.py:219 File Tree
26 files · 662.4 KB · 17445 lines Python 21f · 16159L
Markdown 2f · 1051L
JSON 2f · 231L
Text 1f · 4L
├─
▾
assets
│ ├─
config.json
⚠
JSON
│ └─
requirements.txt
Text
├─
▾
references
│ └─
API_FOR_LLM.md
Markdown
├─
▾
scripts
│ ├─
▾
formulaicAlphas
│ │ ├─
__init__.py
Python
│ │ ├─
alpha101.py
Python
│ │ ├─
data_loader.py
Python
│ │ └─
operators.py
Python
│ ├─
backtest_tools.py
Python
│ ├─
config.py
Python
│ ├─
data_fetcher.py
Python
│ ├─
decrypt_patch.py
Python
│ ├─
define.py
Python
│ ├─
factor_mining.py
Python
│ ├─
indicators.py
Python
│ ├─
logger.py
Python
│ ├─
metrics.py
Python
│ ├─
moe_signal.py
Python
│ ├─
moe_weights.json
JSON
│ ├─
realtime_data_featcher.py
Python
│ ├─
remote_api.py
Python
│ ├─
signals.py
Python
│ ├─
stock_api.py
Python
│ ├─
stock_crawler.py
Python
│ ├─
track_logger.py
Python
│ └─
utils.py
Python
└─
SKILL.md
Markdown
Dependencies 4 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
pandas | >=1.3.5 | requirements.txt | No | Version not pinned; only lower bound specified |
numpy | >=1.21.0 | requirements.txt | No | Version not pinned; only lower bound specified |
requests | >=2.31.0 | requirements.txt | No | Version not pinned; only lower bound specified |
SQLAlchemy | >=2.0.48 | requirements.txt | No | Version not pinned; only lower bound specified |
Security Positives
✓ No subprocess, os.popen, shell=True, or any shell execution commands found
✓ No credential harvesting — does not scan ~/.ssh, ~/.aws, .env, or other credential paths
✓ No base64-encoded payloads, eval/exec, or dynamic code loading
✓ No hidden HTML comments, obfuscation, or anti-analysis patterns
✓ No prompt injection instructions found in any file
✓ No persistence mechanisms (cron, startup hooks, registry writes)
✓ No C2 communication or data exfiltration to undeclared endpoints
✓ All network access targets are explicitly declared in SKILL.md frontmatter
✓ Filesystem writes are scoped to temp directory (system temp/BitSoulStockSkill), not user home
✓ Token is used only for declared remote API authentication purposes
✓ Encrypted data files use per-file decryption keys fetched per-request — not stored insecurely
✓ Skill correctly uses sqlalchemy text() for parameterized SQL queries, preventing injection