astock-utils — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited astock-utils (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
normalize_code(code) - 规范化代码 (统一 6 位)get_market(code) - 判断市场 (sh/sz/bj)is_cyb(code) - 是否创业板is_kcb(code) - 是否科创板is_bj(code) - 是否北交所is_st(name) - 是否 ST 股today_str() - 今天parse_date(s) - 解析日期last_n_trade_days(n) - 最近 N 个交易日date_str(dt) - 日期转字符串add_ma(df, [5,10,20,60]) - 均线add_macd(df) - MACDadd_kdj(df) - KDJadd_rsi(df) - RSIadd_boll(df) - 布林带add_all_indicators(df) - 一次性添加所有fmt_volume(v) - 成交量 (1.23亿)fmt_money(v) - 金额fmt_pct(v) - 百分比# 命令行
python main.py normalize-code sh600000
python main.py market 300750
python main.py is-cyb 300750
python main.py trade-days 5from skills.01-infra.astock-utils.main import (
normalize_code, get_market, add_all_indicators,
fmt_volume, fmt_pct
)
code = normalize_code("sh600000") # "600000"
market = get_market("300750") # "sz"
df_with_indicators = add_all_indicators(df)
print(fmt_volume(123456789)) # "1.23亿"pandas>=1.5.0
numpy>=1.22.0
akshare>=1.12.0 # 交易日历~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.