Sources: extracted from two upstream archives (skill-repo, skills-main),
merged with the following policy:
- 15 broken symlinks (pointing to /Users/jameslee/.cc-switch/skills or
../../.agents/skills on a foreign machine) discarded
- 3 real name collisions with identical content (ai-pair, ifind-http-api,
zhipu-websearch) kept as one copy
- Functional overlaps deduped keeping the strongest variant:
- docx family: kept docx (official, full toolchain) + docx-cn
(GB/T 9704 Chinese official-document constants),
dropped docx_writer (no scripts, name collided with docx)
- humanizer family: kept humanizer-zh (6 zh reference docs),
dropped humanizer (en, redundant for CN workflow)
- Skills that only ran in a foreign environment removed:
ablemind-ops, app-publish, hlb-design-system, openclaw-adj-skill,
claude-driver
- alphapai excluded from this public repo because its SKILL.md hard-coded
live credentials
Result: 25 skills, 572 files, ~7.5 MB.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.3 KiB
3.3 KiB
连接器与变换操作参考
ConnectorFactory — 3 种数据连接器
ConnectorFactory 通过 type 字段自动路由到对应的连接器。
csv — CSV 文件连接器
从本地 CSV 文件加载 DataFrame。
{"type": "csv", "path": "data/stock.csv", "encoding": "utf-8"}
path: 相对于data_dir(默认ppt-st/data/)或绝对路径encoding: 默认utf-8
xlsx — Excel 文件连接器
从 Excel 文件加载 DataFrame。
{"type": "xlsx", "path": "data/report.xlsx", "sheet_name": "Sheet1"}
path: 同 csvsheet_name: 工作表名,默认第一个
tushare — Tushare 金融数据连接器
从 Tushare Pro API 获取 A 股市场数据。
{
"type": "tushare",
"api_name": "pro_bar",
"ts_code": "600519.SH",
"start_date": "20240101",
"end_date": "20241231"
}
支持的 api_name:
index_daily: 指数日线数据(需ts_code或index_code)pro_bar: 通用日线数据,前复权(需ts_code)
返回的 DataFrame 自动按 trade_date 升序排列,trade_date 列已转为 datetime。
前置条件: TUSHARE_TOKEN 环境变量或 .env 文件。
DataFrameTransformer — 7 种变换操作
变换在 transforms 中定义,每个变换指定 from(数据源)和 ops(有序操作列表)。
多源合并
from 支持字符串(单源)或数组(多源 concat):
{"from": ["stock_data", "index_data"], "ops": [...]}
多源使用 pd.concat(axis=1) 按列合并。
groupby — 分组聚合
{"type": "groupby", "by": ["year"], "agg": {"close": "mean", "vol": "sum"}}
pivot — 透视表
{"type": "pivot", "index": "trade_date", "columns": "indicator", "values": "value"}
compute — 计算新列
{"type": "compute", "expr": "close / close.iloc[0] - 1", "output_col": "cumulative_return"}
使用 pandas.DataFrame.eval(),支持列名引用。
filter — 条件过滤
{"type": "filter", "condition": "close > 100 and vol > 10000"}
使用 pandas.DataFrame.query()。
sort — 排序
{"type": "sort", "sort_by": ["trade_date"], "ascending": true}
rename — 重命名列
{"type": "rename", "map": {"trade_date": "日期", "close": "收盘价"}}
merge — 未实现
会抛 NotImplementedError。替代方案:
{"from": ["src1", "src2"], "ops": [...]}
用 from 数组实现 concat,然后用其他 ops 整理。
常用组合模式
合并两个 Tushare 序列
{
"datasources": {
"stock": {"type": "tushare", "api_name": "pro_bar", "ts_code": "600519.SH"},
"index": {"type": "tushare", "api_name": "pro_bar", "ts_code": "000300.SH"}
},
"transforms": {
"combined": {
"from": ["stock", "index"],
"ops": [
{"type": "rename", "map": {"close": "stock_close"}}
]
}
}
}
计算累计收益率
{
"ops": [
{"type": "sort", "sort_by": ["trade_date"]},
{"type": "compute", "expr": "close / close.iloc[0] - 1", "output_col": "累计收益率"}
]
}
过滤后重命名
{
"ops": [
{"type": "filter", "condition": "trade_date >= '2024-01-01'"},
{"type": "rename", "map": {"trade_date": "日期", "close": "收盘价"}},
{"type": "sort", "sort_by": ["日期"]}
]
}