mcpField
D
dependency-doctor

dependency-doctor

github.com/shubhamsaboo开发143.3k403 次安装1 周前更新
代码仓库

关于 dependency-doctor

dependency-doctor 是供开发者检查指定依赖清单中直接问题的本地 Skill。它离线说明检查结果并建议针对性修复,但不负责依赖解析、漏洞审计或全仓库检查。

主要功能

  1. 01检查支持的依赖清单
  2. 02检测重复项和冲突的精确版本锁定
  3. 03检查未锁定版本的依赖
  4. 04查找 Python 标准库同名包及过时回移包
  5. 05离线诊断并提供针对性修复建议

适用场景

  1. 01安装问题排查前检查清单
  2. 02审查疑似过时锁定或重复项
  3. 03发现依赖声明中的直接隐患

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/shubhamsaboo/awesome-llm-apps --skill dependency-doctor

安装后在 Claude Code 中输入/dependency-doctor确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
references/
dependency-pitfalls.md
scripts/
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。先说明高严重性问题,再说明中、低严重性问题。每项发现都应包含:

  1. 软件包及其所在行
  2. 可能出现的问题
  3. 建议的修复方案

不要将所有版本范围都称为冲突。只有精确版本固定不一致时,确定性核心才会报告约束冲突。分散在多行、彼此兼容的约束属于应合并的重复条目。

如果没有发现问题,请说明检查了哪些内容,并指出检查的局限。干净的报告不等于 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:针对报告风险的分析指南

评论

支持 Markdown