跳到主要内容
知仓学习社ZHICANG

package-health

Check a package's health before you depend on it — npm and PyPI registry APIs via keyless curl: downloads, release recency, maintenance signals, and…

不碰外部(只输出文字)无严重或高危命中mohitagw15856/pm-claude-skills

它会碰到什么

扫了多少1 个文本文件,5 KB
它会碰到什么不碰外部(只输出文字)
命中总数0 处
命中统计严重 0 · 高 0 · 中 0 · 低 0

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

Package Health Skill

Adding a dependency is hiring code you'll never interview — and the registries publish the résumé keylessly: last release date, download trajectory, version cadence, maintainer count. This skill pulls the signals for npm and PyPI over plain curl and does the part the raw numbers don't: interpretation. A package with no release in three years is abandoned or finished — and which one it is depends on what the package does. The output is a read, not a dashboard.

What This Skill Produces

  • The health read — maintained / stable-and-done / drifting / abandoned — with the reasoning
  • The signals table — latest version + date, download scale, release cadence, deprecation flags
  • The comparison — for adoption decisions between candidates, same signals side by side
  • The commands — every number's curl, rerunnable

Required Inputs

Ask for these if not provided:

  • The package(s) and ecosystem — npm or PyPI; exact names (typosquats are a real hazard — the exact-name check is part of the job, and a near-miss name is a 🔴 finding, not a typo to auto-correct)
  • The role it would play — a core dependency, a dev tool, a one-function utility: the stakes calibrate the read ("finished" is fine for a slugify; concerning for a crypto library)
  • The runtime context — versions/platforms that matter for compatibility checking

Framework: The Signals and the Reads

  1. npm calls: latest: curl -s "https://registry.npmjs.org/express/latest" (version, dependencies, deprecation notices) · full metadata: curl -s "https://registry.npmjs.org/express" (time object = the whole release history — cadence lives here; maintainers) · downloads: curl -s "https://api.npmjs.org/downloads/point/last-month/express".
  2. PyPI calls: curl -s "https://pypi.org/pypi/requests/json"info (version, requires_python, project_urls, yanked flags), releases (the dated history). Downloads for PyPI live at https://pypistats.org/api/packages/<name>/recent (keyless).
  3. Interpret age against purpose: no-release-in-3-years = abandoned for an API client (upstream APIs moved), plausibly finished for a pure algorithm. The read must say which and why — this rule is the skill's whole value over a stats page.
  4. The signal cluster beats any single number: healthy = recent releases + steady cadence + real downloads + active repo (chain to [github-repo-vitals](../github-repo-vitals/SKILL.md) via the metadata's repository URL). Warning shapes: downloads huge but releases stopped (the ecosystem is riding a corpse — someone will fork; watch which), single maintainer + critical role (bus-factor flag, not a disqualifier), deprecation notice in the registry (the maintainer's own verdict — believe them).
  5. The decision framing, not the decision: adopt / adopt-and-monitor / vendor-the-function (for one-function utilities, fifty lines beats a dependency) / avoid — recommended with reasoning, stakes-calibrated; security auditing is its own discipline and gets named as out of scope rather than faked.

Output Format

Package Health: [name] ([ecosystem])

The read: [maintained / stable-and-done / drifting / abandoned] — [two sentences of reasoning].

| Signal | Value | Read |

|---|---|---|

[Version + date · release cadence · downloads/month · maintainers · deprecation/yank flags]

[Comparison mode: candidates × signals, same table, verdict per role]

Recommendation frame: [adopt / monitor / vendor / avoid — with the stakes reasoning]

Source: [registry] APIs · as of [date] · rerun: [the curls]

Registry signals, not a security audit — that's a separate discipline.

Quality Checks

  • [ ] The exact package name was verified — near-miss names flagged, never auto-corrected
  • [ ] The read interprets age against the package's purpose, not against a universal freshness bar
  • [ ] Warning shapes (riding-a-corpse, bus-factor, registry deprecation) are checked
  • [ ] The repo-vitals chain is offered when the registry signals are ambiguous
  • [ ] Security audit is scoped out explicitly, not implied

Anti-Patterns

  • [ ] Do not present a stats dump as a health check — the read is the product
  • [ ] Do not treat "old" as "dead" without the purpose test — finished software exists
  • [ ] Do not auto-correct package names — typosquats are the attack this check can catch
  • [ ] Do not extrapolate download counts into quality — popularity is a signal about forks and eyes, not correctness
  • [ ] Do not answer from memory — versions and deprecations are live facts; fetch or hand over the commands

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。

同名技能的其他版本

有 3 个不同仓库或目录里都有叫 package-health 的技能。它们内容并不相同,别混用: