关于 dependency-doctor
dependency-doctor 是供开发者检查指定依赖清单中直接问题的本地 Skill。它离线说明检查结果并建议针对性修复,但不负责依赖解析、漏洞审计或全仓库检查。
主要功能
- 01检查支持的依赖清单
- 02检测重复项和冲突的精确版本锁定
- 03检查未锁定版本的依赖
- 04查找 Python 标准库同名包及过时回移包
- 05离线诊断并提供针对性修复建议
适用场景
- 01安装问题排查前检查清单
- 02审查疑似过时锁定或重复项
- 03发现依赖声明中的直接隐患
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ shubhamsaboo/ awesome-llm-apps --skill dependency-doctor安装后在 Claude Code 中输入/dependency-doctor确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdreferences/dependency-pitfalls.mdscripts/dep_doctor.py详细介绍
依赖诊断工具
检查用户机器上的一个依赖清单,找出直接、表层的潜在问题。用通俗易懂的语言解释每项发现,然后提供一个小幅、便于审查的修复方案。这不能诊断 pip 或 uv 解析失败的问题。
这是一个面向用户所选项目的本地开发工具。它不是适用于整个仓库的 lint 规则、CI 门禁,也不是要在互不相关的应用之间强制执行依赖策略的提案。
适用场景
- 用户要求检查、审计、诊断或剖析依赖清单
- 用户希望在深入排查安装问题之前,先排除直接清单中的问题
- 用户怀疑依赖版本固定已过时、存在回移包、重复条目或依赖老化
- 用户询问依赖项是否有问题
不适用场景
- 不诊断问题,只安装当前依赖项
- 升级所有软件包或添加新软件包
- 全面的漏洞审计。要覆盖 CVE,请使用
pip-audit、npm audit或项目批准的安全扫描器 - 创建适用于整个仓库的 CI 检查。此技能由用户主动调用,仅在本地运行
选择清单
使用用户指定的路径。如果用户未提供路径,且存在多个清单,请询问要检查哪一个。不要扫描整个仓库,也不要仅仅因为触发了此技能就编辑任何内容。
支持的输入:
requirements.txt- 使用 PEP 621 或常见 Poetry 依赖表的
pyproject.toml package.json依赖部分
运行离线诊断
在此技能目录中:
python3 scripts/dep_doctor.py /path/to/requirements.txt --json
默认情况下,整个过程完全离线运行。它只读取所选清单。报告格式如下:
{
"file": "/path/to/requirements.txt",
"findings": [
{
"severity": "high",
"kind": "stdlib-shadowing",
"package": "pathlib",
"line": 4,
"why": "...",
"fix": "..."
}
],
"summary": {
"total": 1,
"by_severity": {"high": 1},
"by_kind": {"stdlib-shadowing": 1},
"online": false
}
}
离线检查包括:
- 以软件包形式发布的 Python 标准库名称
- 在受支持的 Python 版本上不应安装的已知回移包
- 缺少可用版本约束的依赖项
- 重复的软件包条目
- 同一软件包的精确版本固定存在冲突
对于 package.json,Python 特有的标准库和回移包检查不适用。诊断工具仍会检查未固定版本的条目和重复的依赖项。
解释诊断结果
在展示发现之前,请先阅读 references/dependency-pitfalls.md。先说明高严重性问题,再说明中、低严重性问题。每项发现都应包含:
- 软件包及其所在行
- 可能出现的问题
- 建议的修复方案
不要将所有版本范围都称为冲突。只有精确版本固定不一致时,确定性核心才会报告约束冲突。分散在多行、彼此兼容的约束属于应合并的重复条目。
如果没有发现问题,请说明检查了哪些内容,并指出检查的局限。干净的报告不等于 CVE 审计或完整的依赖解析。
可选的 PyPI 撤回检查
在线检查会将软件包名称和精确固定的版本发送到 pypi.org。启用此检查前必须征得用户同意,即使用户此前要求进行离线诊断也不例外。
python3 scripts/dep_doctor.py /path/to/requirements.txt --json --online
只有当某个精确 Python 发行版的所有文件都标记为已撤回时,才会报告该发行版。网络故障会作为低严重性发现报告,而不会掩盖离线诊断结果。
提供修复方案,不要擅自应用
解释报告后,提供针对性的编辑方案。更改清单前请先等待批准。
- 从受支持的 Python 项目中移除标准库软件包
- 移除过时的回移包;如果旧运行时确实需要某个回移包,则添加 Python 版本标记
- 对于未固定版本的依赖项,检查当前环境中已安装的版本,确认其符合预期,并提出精确且经过审查的版本固定方案
- 重复条目只保留一项,并合并兼容的约束
- 对于精确版本固定冲突,在选择版本前先检查依赖它的项目
- 将已撤回的版本固定替换为经过测试且未撤回的发行版
任何获批的编辑完成后,都要重新运行离线诊断以及项目现有的安装或测试命令。不要引入新的 CI 门禁。
文件
scripts/dep_doctor.py:仅使用标准库的清单解析器和诊断引擎references/dependency-pitfalls.md:针对报告风险的分析指南