内容
<h1 align="center">pip-skill</h1>
<p align="center"><strong>从已安装的 Python API 构建 AI 技能。 一条命令。 离线。 无需构造的函数名称。</strong></p>
<p align="center">直接从 <code>inspect.signature</code> 生成 Claude Code、Cursor、Windsurf、OpenCode 和 MCP 服务器技能。无需文档抓取,无需 API 密钥,无需 LLM 参与。</p>
<p align="center">
<a href="https://github.com/xmpuspus/pip-skill/stargazers"><img src="https://img.shields.io/github/stars/xmpuspus/pip-skill" alt="GitHub stars"></a>
<a href="https://pypi.org/project/pip-skill/"><img src="https://img.shields.io/pypi/v/pip-skill.svg?cacheSeconds=300" alt="PyPI"></a>
<img src="https://img.shields.io/badge/python-3.11%20%7C%203.12%20%7C%203.13-blue.svg" alt="Python 3.11/3.12/3.13">
<img src="https://img.shields.io/badge/platform-linux%20%7C%20macos%20%7C%20windows-lightgrey.svg" alt="Linux | macOS | Windows">
<img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License">
<img src="https://img.shields.io/badge/offline-yes-success.svg" alt="默认离线">
<img src="https://img.shields.io/badge/eval-%2B20pp%20Sonnet%20%2F%20%2B22pp%20Haiku%20(blind%2C%209%20pkgs)-brightgreen.svg" alt="评估:+20pp Sonnet / +22pp Haiku 跨 9 个包(盲评)">
</p>
<p align="center"><img src="pip-skill-demo.gif" alt="pip-skill 演示:一条命令将 requests 转换为 Claude 技能" width="900"></p>
```bash
uvx pip-skill convert requests --install
```
这就是整个流程。 一条命令,无需安装,技能包将位于
`~/.claude/plugins/requests/`,Claude 可以在下一次会话中调用 requests 并具有正确的类型。
> **注意:** `convert` 导入目标包(其顶级代码运行)并遍历每个子模块。 仅转换您信任的包到 `pip install`。 请参阅 [信任模型](#trust-model)。
如果您更喜欢永久安装? `pip install pip-skill` 并直接使用 `pip-skill` 二进制文件。
## 它真的能帮助 AI 吗?
我们进行了测量。 请参阅 [`RESEARCH.md`](RESEARCH.md) 获取方法和每个包的详细结果。
### 9 包盲评(2026 年 5 月)
从每个包的文档/ README 中 **不咨询生成的 SKILL.md** 重写项目,因此评估衡量的是终端用户在全新生成的技能中实际看到的内容。
| 模型 | 包 | 项目 | 无技能 | **技能** | 提升 |
|---|---|---|---|---|---|
| Sonnet 4.5 | 9 | 90 | 61/90 (67.8%) | **79/90 (87.8%)** | **+20.0pp** |
| Haiku 4.5 | 9 | 90 | 62/90 (68.9%) | **82/90 (91.1%)** | **+22.2pp** |
Sonnet(盲评):mcp `+80pp`,returns / fastmcp `+60pp`,msgspec / pendulum `+10pp`,h3 / toolz 达到上限,arrow / more_itertools `-20pp`。 两个回归共享一个模式:技能表面低级替代品,如 `arrow.parser.DateTimeParser.parse_iso` 而不是 `arrow.get` 和 `more_itertools.Stats` 而不是 `chunked`,模型选择特定替代品而不是规范的。
## 快速开始
### 一次转换(无需安装)
```bash
uvx pip-skill convert httpx --install
```
技能包将位于 `~/.claude/plugins/httpx/`。 Claude Code 自动发现它在下一个会话中。 对于 Cursor、Windsurf 或 OpenCode,请添加 `--format cursor`(或 `windsurf` / `opencode`)并且 `--install` 写入匹配的项目本地配置。
### 首次检查包
```bash
pip-skill info pandas
```
```
Package: pandas v2.2.0
Import name: pandas
Description: 用于数据分析的强大数据结构
Submodules: 42
Public functions: 156
Public classes: 38
Annotation coverage: 65%
Estimated tier: 2 (部分注释)
```
### 验证技能在 `pip install --upgrade` 后仍保持同步
```bash
pip-skill test ./httpx
```
```
Testing httpx skill (v0.28.1)...
[PASS] httpx.get
[PASS] httpx.request
[PASS] httpx.URL
...
Result: 18/18 passed
```
`test` 读取 `plugin.json` 中的结构化 `tools` 清单并验证每个条目在当前 Python 环境中是否仍可导入。
### 查看更改
```bash
pip-skill diff ./httpx
```
<p align="center"><img src="demos/diff.gif" alt="pip-skill diff 输出" width="720"></p>
添加/删除的功能名称每行打印一个。 将其输送到再生钩子中以自动保持技能更新。
### 批量处理整个 requirements.txt
```bash
pip-skill batch requirements.txt --workers 4
```
<p align="center"><img src="demos/batch.gif" alt="并行批量转换技能" width="720"></p>
工作进程输出通过打印锁序列化,因此每包状态行永不交错。 失败的包在 stderr 上返回 `[FAIL] <pkg>: <reason>` 和非零退出代码。
## 您获得的内容
一个自包含的 Claude Code 插件,准备好放入 `~/.claude/plugins/`:
```
requests/
├── .claude-plugin/
│ └── plugin.json # 结构化清单:工具、限定名、参数、版本
├── skills/requests/
│ ├── SKILL.md # Claude 读取的内容(~5k tokens;对于大型 SDK 来说更大)
│ ├── CONTEXT.md # 该包的代理指南
│ └── references/
│ └── api-reference.md # 完整的模式、签名、JSON 模式每个工具
└── MANIFEST.sha256 # 仅在 --deterministic 下;涵盖上述每个文件
```
`plugin.json` 中的 `tools` 数组是技能公开内容的规范记录。 `pip-skill diff` 和 `pip-skill test` 直接读取它,这就是为什么 200 包 monorepo 的版本漂移在几秒内可检测到,并且过时的技能无法被静默发布。
## 多格式输出
从同一遍历为主要 AI 编码助手生成技能:
| 格式 | 标志 | 输出 |
|--------|------|--------|
| Claude Code | `--format claude`(默认) | `SKILL.md` + `plugin.json` + `CONTEXT.md` + `api-reference.md` |
| Cursor | `--format cursor` | `.cursorrules` |
| Windsurf | `--format windsurf` | `.windsurfrules` |
| OpenCode | `--format opencode` | `AGENTS.md` |
| MCP 服务器 | `--mcp` | FastMCP Python 服务器,标识符验证 |
生成的 `SKILL.md` 遵循开放的 [Agent Skills](https://agentskills.io) 标准,因此它适用于许多 AI 编码工具,这些工具使用规范:Claude Code、Cursor、Windsurf、OpenCode、GitHub Copilot、VS Code Copilot、OpenAI Codex、Gemini CLI、JetBrains Junie、Goose、Roo Code、Databricks Genie Code 等。
## 现实世界的例子
配方对于每个包都是相同的:`pip install <pkg> && uvx pip-skill convert <pkg> --install`,然后启动一个 Claude Code 会话并按名称使用包。 下表列出了您在下一个会话中获得的功能;每行一个提示就足以验证。
| 包 | Claude 获得的内容 | 示例提示 |
|---|---|---|
| `Pillow` | 调整大小、裁剪、旋转、水印、转换格式、过滤、合成 | "将此文件夹中的所有 JPEG 调整为 1200px 宽并添加“CONFIDENTIAL”水印" |
| `openpyxl` | 真实的 `.xlsx`,带有公式、合并单元格、图表、条件格式 | "使用汇总表格和总行中的 SUM 公式生成销售报告" |
| `boto3` | S3、Lambda、EC2、CloudWatch、SQS、DynamoDB,带有已安装 SDK 的类型 | "列出所有 S3 存储桶及其大小,并将存档存储桶中超过 90 天的对象移动到 Glacier" |
| `pytesseract` | 对截图、收据、名片进行 OCR | "从这些收据照片中提取项目和总计到电子表格中" |
| `paramiko` | SSH + SFTP、运行命令、传输文件 | "SSH 进入每个服务器并提醒我任何分区超过 80%" |
| `pdfplumber` | 表格、边界框、PDF 中的字符级位置 | "从每个 PDF 中提取发票表格并合并到一个电子表格中" |
| `stripe` | 客户、订阅、退款、发票、产品 | "查找暂停 >30 天的订阅、发送 20% 重新激活优惠券、记录结果" |
| `cryptography` | Fernet、RSA、X.509、HMAC、密码哈希 | "使用通行短语加密所有 .env 文件,写入 .env.enc,删除原件" |
| `pydub` | 切片、标准化、叠加、格式转换音频 | "将此播客在 >2 秒沉默处分割,标准化为 -14 LUFS,导出为 MP3" |
| `twilio` | SMS、WhatsApp、语音、电话查找 | "向此列表中的每个人发送文本,确认他们的预约明天" |
| `reportlab` | 带有表格、图表、嵌入图像、自定义字体的 PDF | "使用此 JSON 生成 PDF 发票,带有徽标、项目表格、税计算、页脚" |
| `pyarrow` | Parquet、Arrow、数据集的列查询太大而无法使用 pandas | "读取此 4GB Parquet,过滤 `revenue > 10000 AND region == 'APAC'`,导出为 CSV" |
三个更深入的演练(Anthropic SDK、databricks-sdk、google-cloud-bigquery)位于 [`EXAMPLES.md`](EXAMPLES.md) 中。
## 工作原理
1. **`importlib.import_module(...)` + `pkgutil.walk_packages(...)`** 遍历每个子模块。 导入错误在 `BaseException` 边界处捕获,因此引发 `pytest.importorskip`(继承自 `BaseException`)的包不会导致遍历崩溃。
2. **`inspect.signature(eval_str=True)`** 以温和的回退解决类型注释,甚至在像 httpx 这样的包上,其前向引用引用未从定义模块导出的符号。
3. **`typing.get_type_hints()`** 遍历 `from __future__ import annotations` 和 `Annotated[...]` 包装器;元数据层提取 pydantic `Field(description=...)` 和类似的内容。
4. **`docstring-parser`** 从 Google / NumPy / reST 文档字符串中提取参数描述。
5. **`pydantic.create_model()`** + **`model.model_json_schema()`** 从类型注释生成 JSON 模式;当注释部分时,会使用手动模式生成器。
6. **10 信号评分算法** 选择最有用的候选项(模块深度、`__all__` 成员资格、文档字符串质量、注释覆盖率、名称动词前缀、参数计数、返回类型存在、不已弃用、顶级重新导出和针对更高评分同行的唯一性)。 默认上限为每技能 20 个工具,我们的 [工具计数扫描](scripts/tool_count_sweep.py) 显示这是 polars 的最佳位置:N=40 时,准确率保持在 80%,N=10 时,覆盖率降至 50%。
7. **顶级函数、公共类的实例方法和类构造函数都是候选项,** 因此规范模式如 `requests.Session().get()` 和 `boto3.client('s3').list_buckets()` 与模块级函数以相同方式评分。
8. **破坏性动词**(`delete`、`drop`、`terminate`、`kill`、`revoke`、`cancel`、`unlink`、`purge`、`wipe`、`uninstall`,...)在生成的 SKILL.md 中自动获得 `[CAUTION]` 调用,以便 Claude 在调用前确认。
来源:[`introspect.py`](src/pip_skill/introspect.py)、[`selector.py`](src/pip_skill/selector.py)、[`schema.py`](src/pip_skill/schema.py)、[`generator.py`](src/pip_skill/generator.py)。
## 可复制性 (`--deterministic`)
```bash
pip-skill convert requests --deterministic
sha256sum -c MANIFEST.sha256
```
固定 `plugin.json` 中的 `generatedAt` 时间戳,排序模块遍历,以便 OS 文件系统大小敏感性不会更改选择,强制 `--select` 上的 `temperature=0`,并发出一个涵盖包中每个字节的 `MANIFEST.sha256`。 两个运行针对相同包版本和相同的 pip-skill 版本,产生比特相同的字节。 在论文中引用包或固定评估基线时使用此功能。
## 衡量技能 (`pip-skill eval`)
```bash
# 离线:预期的工具是否在包中? 无模型调用。
pip-skill eval ./requests examples/eval/requests.jsonl
# 通过现有的 Claude Code 会话评估实时模型。
# 无需 API 密钥:`claude -p` 在您的订阅下运行。
pip-skill eval ./requests examples/eval/requests.jsonl \
--conditions coverage,no-skill,skill
```
在生成的包上运行 JSONL 评估集 `{task, expected_qualname}`。 `coverage` 条件是离线的。 `no-skill` 和 `skill` 条件要求 Claude 在有和没有生成的 SKILL.md 的情况下发出 Python 调用,然后在第一个 `<package>.<fn>(...)` 调用上评估 AST 等价。 与 [Berkeley Function-Calling Leaderboard(BFCL)](https://gorilla.cs.berkeley.edu/leaderboard.html) 相同的指标。
提取器接受常见别名(`pl` 表示 polars、`pd` 表示 pandas、`np` 表示 numpy 等)并将其标准化回规范名称。 评估集随 `requests`、`httpx` 和 `polars` 一起位于 [`examples/eval/`](examples/eval/) 下;以 JSONL 编写自己的评估集,每个 `{task, expected_qualname}` 一行。
**后端**(默认无需 API 密钥):
| 后端 | 认证 | 可复制 | 何时自动选择 |
|---|---|---|---|
| `claude-cli` | 通过 `claude -p` 使用您的 Claude Code 会话 | 否(CLI 不公开 `temperature`) | 当 `claude` 在 PATH 上且未设置 API 密钥时 |
| `api` | `ANTHROPIC_API_KEY` + `[llm]` 额外项(Anthropic SDK) | 是(`temperature=0`) | 当设置了 `ANTHROPIC_API_KEY` 时 |
强制使用 `--backend claude-cli`(零摩擦,推荐用于本地检查)或 `--backend api`(论文级可复制性)。
## Python API
对于笔记本、评估工具和 CI 作业:
```python
from pip_skill import generate_skill
bundle = generate_skill("requests", deterministic=True)
print(bundle.tool_count, bundle.tool_names[:3])
# 20 ['requests.get', 'requests.post', 'requests.put']
print(bundle.manifest_path.read_text().splitlines()[0])
# 8e3f... .claude-plugin/plugin.json
# 相同的调用,但通过 Claude 重新排序庞大的 SDK。
bundle = generate_skill("boto3", select=True, deterministic=True)
```
`SkillBundle` 公开已遍历的 `PackageInfo`、已选定的 `ToolSchema` 列表、磁盘路径和(在确定性模式下)SHA-256 清单路径。完整表面位于 [`src/pip_skill/api.py`](src/pip_skill/api.py)。
## 与其他技能生成器的比较
| | pip-skill | [skill-seekers](https://pypi.org/project/skill-seekers/) | [skillnet-ai](https://pypi.org/project/skillnet-ai/) | [skills-cli](https://pypi.org/project/skills-cli/) |
|---|---|---|---|---|
| **做什么** | 将已安装的 pip 包转换为技能 | 将文档、存储库、PDF、视频转换为技能 | 从各种来源创建、评估和连接技能 | 搭建、验证和管理现有技能 |
| **输入源** | 已安装的 Python 包(运行时遍历) | 17 种源类型(网站、存储库、PDF、视频、Wiki) | 会话日志、存储库、文档、提示 | 手动创作 |
| **类型准确性** | 精确(在运行时读取 `inspect.signature()`) | 取决于文档质量 | 取决于源质量 | 不适用(手动) |
| **需要 API 密钥** | 否(默认离线) | 可选(用于 AI 增强) | 是(用于创建/评估) | 否 |
| **输出格式** | Claude、Cursor、Windsurf、OpenCode、MCP | Claude、Gemini、OpenAI、LangChain、12+ 格式 | SKILL.md | SKILL.md |
| **漂移检测** | `diff` + `test` 针对结构化清单 | 无 | 无 | 规范验证 |
| **可复制性** | `--deterministic` 模式 + `MANIFEST.sha256` | 无 | 无 | 无 |
| **评估** | `pip-skill eval`(AST 等价性,BFCL 风格) | 无 | 评估框架 | 无 |
| **最佳用途** | 您在代码中使用的 Python 包 | 文档和知识库 | 发现预建技能 | 管理和分发技能 |
这些工具是互补的:pip-skill 从具有精确类型签名的已安装 Python API 生成技能;其他工具从文档或预建存储库工作。
### `pip-skill convert <package>`
从已安装的包生成技能。
```
选项:
--mcp 生成MCP服务器以及SKILL.md
--output 目录 输出目录(默认:./{package-name})
--max-tools 数目 要包含的最大函数数量(默认:20)
--format 格式 输出格式:claude(默认)、cursor、windsurf、opencode
--include 模式 包含匹配全局模式的函数
--exclude 模式 排除匹配全局模式的函数
--select 使用Claude优化启发式选择
(需要ANTHROPIC_API_KEY和pip-skill[llm])
--install 生成后,将技能安装到AI工具目录
(~/.claude/plugins/, .cursor/rules/, 等)
--deterministic 固定时间戳,排序遍历,MANIFEST.sha256
(用于可引用的/可复制的包)
--dry-run 预览而不写入文件
--verbose 显示评分明细
--force 覆盖现有输出(首先清理目录)
```
### `pip-skill batch <packages|requirements.txt>`
并行转换多个包。
```
选项:
--workers 数目 并行工作线程(默认:4)
--output-dir 目录 基目录(默认:当前工作目录)
--format 格式 输出格式
--mcp 同时生成MCP服务器
--max-tools 数目 每个技能的最大工具数量(默认:20)
--include 模式 包含匹配全局模式的函数
--exclude 模式 排除匹配全局模式的函数
--force 覆盖每个包的输出目录
```
### `pip-skill info <package>`
显示包元数据和API表面摘要。
### `pip-skill diff <plugin-dir>`
比较生成的技能与当前安装的包版本。
报告从结构化`tools`清单中添加或删除的函数名称。
### `pip-skill test <plugin-dir>`
验证技能中的每个函数在当前Python环境中是否仍然可导入。
在依赖项升级后使用,以在Claude执行之前捕获过时的技能。
### `pip-skill validate <plugin-dir>`
轻量级结构检查:`plugin.json`存在,`SKILL.md`存在且在500行规范限制之内。
对于功能检查,请使用`test`。
### `pip-skill eval <plugin-dir> <eval-file.jsonl>`
在JSONL评估集上评估工具调用的准确性。
条件是`coverage`(离线,在清单检查中),`no-skill`(Claude无规范,基准),`skill`(Claude附带SKILL.md)。
通过率以表格或JSON形式发出,供CI使用。方法论在[`RESEARCH.md`](RESEARCH.md)。
### `pip-skill build <package>`
交互式TUI构建器。需要`pip-skill[tui]`。
### `pip-skill search [query]` / `pip-skill install <package>`
从注册表中浏览和安装预构建的技能。可选;常见路径是针对本地安装的包使用`pip-skill convert`。
## CI集成
[`action.yml`](action.yml)是一个复合GitHub Action,封装了`astral-sh/setup-uv`和`pip-skill batch`。
在工作流中使用它,以保持生成的技能与`requirements.txt`同步:
```yaml
- uses: xmpuspus/pip-skill@v0.1.0
with:
packages: requirements.txt
output-dir: ./skills
workers: 4
```
[`.pre-commit-hooks.yaml`](.pre-commit-hooks.yaml)为pre-commit用户提供了`pip-skill-sync`和`pip-skill-test`钩子。
## 信任模型
`pip-skill convert`执行两项影响安全的操作:
1. **导入目标包。** `inspect.signature`需要一个真正的Python模块,因此`importlib.import_module(...)`运行包的顶级代码。
信任要求与`pip install`相同:仅对您已经愿意安装在venv中的包运行pip-skill。
2. **将包的文档字符串嵌入到SKILL.md中,AI将其作为权威技能指令加载。**
恶意包的文档字符串可能会尝试通过`<system>...</system>`样式标签进行提示注入。
pip-skill中和了LLM控制标签词汇量,在每个散文插值中,并验证Python标识符,然后再将它们发出到生成的MCP服务器中。
威胁模型与InjecAgent([arXiv:2403.02691](https://arxiv.org/abs/2403.02691))和MCPTox([arXiv:2508.14925](https://arxiv.org/pdf/2508.14925))合作。
完整列表在[`SECURITY.md`](SECURITY.md)。
## 研究
pip-skill的设计直接源于函数调用文献中的两个线程:
1. **读取实时API可消除train/serve文档偏差**,Gorilla和CloudAPIBench衡量(无幻觉API)。
2. **将签名+文档字符串压缩为简洁的工具规范**,比过去的文档粘贴产生的EASYTOOL-style指令的token成本更低。
[`RESEARCH.md`](RESEARCH.md)收集了16个引用(Gorilla、BFCL、ToolLLM、API-Bank、EasyTool、ToolACE、MetaTool、RestBench、AgentBench、InjecAgent、MCPTox、MCP安全审计、CloudAPIBench、基于代理的函数调用稳健性、Agent Skills规范、MCP规范),本次发布中的四个测量发现、路线图实验(BFCL提交、漂移悬崖测量、100包真实API语料库)和BibTeX条目。
如果您发布从pip-skill输出计算的结果,请使用`--deterministic`重新生成,并引用`plugin.json`中记录的版本(`generatedBy`)。
`MANIFEST.sha256`文件允许审查者逐字节验证包。
## 常见问题
**为什么不直接粘贴文档到上下文中?**
令牌限制。boto3文档大小为50MB+。pip-skill选择按有用性评分最高的20个函数,并将所有内容以约4,000个令牌、正确的类型和JSON模式拟合。
**为什么不依赖LLM的内置知识?**
它适用于像`requests`这样的热门包(我们测量了Sonnet的9/10 no-skill)。
对于训练截止日期后更新的包、特定包和复杂签名,它会失败。
pip-skill在运行时读取实际安装的API,因此函数名称和类型签名来自`inspect.signature`,而不是模型。
CloudAPIBench([arXiv:2407.09726](https://arxiv.org/abs/2407.09726))量化了低频API的训练截止日期差距。
**为什么不直接使用MCP服务器?**
pip-skill也生成这些( `--mcp`)。
但是仅限技能模式更轻量:无需服务器进程,无需端口,无需配置。
AI读取SKILL.md并直接编写正确的Python。
**对于具有C扩展的包怎么办?**
与numpy、pandas等一起工作。C级函数的签名信息有限,但pip-skill会回落到文档字符串解析,并将技能标记为Tier 3,以便AI知道要谨慎。
** `--select`会大大改变输出吗?**
对于一级包(httpx、pydantic),启发式和LLM往往对前20个达成一致。
胜利在于动态SDK(boto3、stripe),其中LLM更擅长选择与用例相关的函数,而不是得分最高的函数。
量化比较在路线图上(参见[`RESEARCH.md`](RESEARCH.md),实验1)。
** `--install`将文件放在哪里?**
Claude格式->`~/.claude/plugins/{normalized-name}/`。
Cursor->`.cursor/rules/{name}.mdc`。
Windsurf->`.windsurf/rules/{name}.md`。
OpenCode->`./AGENTS.md`。
名称规范化后,Pillow->pillow,PyYAML->pyyaml,discord.py->discord-py,与主机文件系统大小写敏感性无关。
**生成的输出是否可复制?**
使用`--deterministic`时,是的。
固定`generatedAt`,排序遍历,`temperature=0`在`--select`上,以及涵盖每个字节的`MANIFEST.sha256`。
对同一包版本使用相同的pip-skill版本,会产生比特相同的包。
**评估工具是否需要API密钥?**
不需要。
默认后端(`claude-cli`)在您现有的Claude Code会话下调用`claude -p`。
`api`后端存在于论文级可复制性(`temperature=0`),仅在设置`ANTHROPIC_API_KEY`时启用。
**我可以在CI中使用它吗?**
是的。参见[CI集成](#ci-integration)。
## 支持的包
pip-skill适用于任何已安装的Python包。它处理:
- 完全注释的API(Tier 1):httpx、pydantic、fastapi
- 部分注释的API(Tier 2):requests、click、flask
- 有状态/动态API(Tier 3):boto3、sqlalchemy、stripe
- C扩展:numpy、pandas(签名信息有限)
- Pydantic v2模型:自动检测,从`model_fields`提取字段
- `Annotated[X, Field(description=...)]`:描述进入JSON模式
- 数据类:自动检测;通过`__init__`签名显示字段
- 通过模块级`__getattr__`延迟导入:检测(将包推入Tier 3,以便生成的CONTEXT.md告诉Claude防御属性解析)
- `*args`/`**kwargs`:作为合成`args`/`kwargs`模式属性保留
### 大型数据科学/数据工程库
pip-skill转换大型库而不会卡住 — 16包扫描(numpy、pandas、polars、pyarrow、scikit-learn、xgboost、statsmodels、matplotlib、seaborn、plotly、sqlalchemy、duckdb、networkx、joblib、tqdm、scipy)全部清洁转换。
测试套件和基准测试(`*.tests.*`、`test_*`、`conftest`)在检查期间跳过,因此像pandas(其测试树约为1,100个模块)这样的包在几秒钟内转换,而不是几分钟。
启发式选择是**大型库的最佳努力**:数据科学家调用的函数(`pandas.read_csv`、`matplotlib.pyplot.plot`、`seaborn.scatterplot`)在结构上与同一`__all__`中的数十个不常见的兄弟姐妹无法区分,因此默认排名会错过其中许多。
对于这些,请使用`--select`(LLM管理)- `convert`在库公开超过300个公共可调用函数时打印提醒:
```bash
pip-skill convert pandas --select # Claude精选20个最有用的调用
```
## 贡献
参见[`CONTRIBUTING.md`](CONTRIBUTING.md)获取开发设置和指南。
使用`./scripts/bootstrap-demo.sh && vhs docs/demo.tape`(和`docs/batch.tape`、`docs/diff.tape`)重新录制demo GIF。
## 许可证
MIT,参见[`LICENSE`](LICENSE)。
<p align="center">由<a href="https://github.com/xmpuspus">Xavier Puspus</a>构建</p>
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器