with one click
deps-check
// 检查项目依赖 (库 / 包 / jar) 是否有可升级版本, 适配多生态: Maven / npm·pnpm·yarn·bun / PyPI / Cargo / Go / RubyGems / Composer / NuGet. 铁律: 版本号必须从官方 registry 在线查询, 不靠记忆/编造, 且区分 "声明的版本是否存在" 与 "是否最新". 用户要求"看有没有要更新的依赖"时使用.
// 检查项目依赖 (库 / 包 / jar) 是否有可升级版本, 适配多生态: Maven / npm·pnpm·yarn·bun / PyPI / Cargo / Go / RubyGems / Composer / NuGet. 铁律: 版本号必须从官方 registry 在线查询, 不靠记忆/编造, 且区分 "声明的版本是否存在" 与 "是否最新". 用户要求"看有没有要更新的依赖"时使用.
维护 .ai_state/architecture/ 长效档案 (项目现状档). Refactor/System 路径完成后强制更新 ARCHITECTURE.md 总入口 + {type}-{slug}.md 子系统档. 注: 不同于 cx 端的 architect.toml subagent (后者是 design stage 工作者).
Athena 主入口 skill. 接收用户任务, 做 PACE 路由分诊 (brainstorm/roadmap/plan/...), 启动对应 stage. v9.6.4 升级: 加 brainstorm + roadmap 分诊 (铁律 14), 加路由检测自动 ultrathink 提示.
Athena 项目初始化 skill. 在项目中执行 /athena-init 时调用. 职责: 探测平台 / 工具可用性, 创建 .ai_state/ 目录 + 复制 _index.md 模板 + 填入探测结果.
Athena 版本迁移工具. v9.6.4 重写: 含 v9.6.2 → v9.6.4 破坏式重构 (sprints/ + compound/ + 4 新 ai_state 文件 + lessons.md 三选项交互).
PACE review stage 执行 skill. v9.6.4 升级: 6 维度 (并行 spawn 3 subagent: reviewer + spec-compliance + evaluator).
快速查看当前项目的 Athena 状态: stage / path / sprint / 进度 / 活动 worktree. 无副作用, 只读.
| name | deps-check |
| description | 检查项目依赖 (库 / 包 / jar) 是否有可升级版本, 适配多生态: Maven / npm·pnpm·yarn·bun / PyPI / Cargo / Go / RubyGems / Composer / NuGet. 铁律: 版本号必须从官方 registry 在线查询, 不靠记忆/编造, 且区分 "声明的版本是否存在" 与 "是否最新". 用户要求"看有没有要更新的依赖"时使用. |
| effort | medium |
永远查权威 registry 的"元数据接口", 不查搜索索引 (search index)。
search.maven.org/solrsearch、npm 网站搜索) 会延迟/缓存,
曾导致把"明明存在的最新版"误判成"编造的版本号"。release / latest / max_stable_version 字段。latest 常包含 -alpha/-rc/-beta, 升级建议默认只推稳定版。^ 锁主版本, ~ 锁次版本, 精确锁定), 区分"range 内可升"和"跨大版本"。1. 探测生态 → 扫 manifest / lockfile, 判定用哪些 registry
2. 抽取依赖 → 解析出 (包名, 当前声明版本/range)
3. 在线查询 → 对每个包打权威 registry, 拿 latest / release + 验证当前版本存在
4. 比对归类 → MAJOR (跨大版本) / MINOR-PATCH (range 内或小升) / 已最新 / 查不到
5. 出报告 → 表格 + 升级建议, 大版本单列并提示 breaking 风险, 由用户决定
| manifest 文件 | 生态 | lockfile |
|---|---|---|
pom.xml / build.gradle(.kts) | Maven / Gradle | — |
package.json | npm 系 | package-lock.json/pnpm-lock.yaml/yarn.lock/bun.lock |
pyproject.toml / requirements*.txt / Pipfile | PyPI | poetry.lock/uv.lock/Pipfile.lock |
Cargo.toml | Cargo | Cargo.lock |
go.mod | Go modules | go.sum |
Gemfile | RubyGems | Gemfile.lock |
composer.json | Composer (PHP) | composer.lock |
*.csproj / packages.config | NuGet (.NET) | — |
多生态项目 (前后端 monorepo) → 各生态分别跑, 分节报告。
下列命令可直接复制运行。批量时写到
/tmp/depcheck_<eco>.sh循环跑 (本 skill 不预置脚本, 按需生成)。jq不可用时用grep -o '"version":"[^"]*"'兜底解析。
repo1.maven.org metadata# groupId 的点要转成路径斜杠: org.redisson -> org/redisson
G=org/redisson; A=redisson-spring-boot-starter
curl -s "https://repo1.maven.org/maven2/$G/$A/maven-metadata.xml" \
| grep -oE '<(release|latest)>[^<]+' | sed 's/<[^>]*>//'
# <release> = 最新稳定版 (推荐据此判断); <latest> 可能含快照/预发布
# 验证某声明版本是否存在 (404 = 不存在):
V=4.4.0; curl -s -o /dev/null -w "%{http_code}\n" "https://repo1.maven.org/maven2/$G/$A/$V/"
pom.xml 的 <properties>, 优先读那里。search.maven.org/solrsearch/select 的 latestVersion 判断最新 (有缓存延迟)。registry.npmjs.org# 最新稳定版 (dist-tags.latest):
curl -s "https://registry.npmjs.org/react/latest" | grep -o '"version":"[^"]*"' | head -1
# scoped 包: '/' 要编码成 %2f -> @tanstack/react-query -> @tanstack%2freact-query
curl -s "https://registry.npmjs.org/@tanstack%2freact-query/latest" | grep -o '"version":"[^"]*"' | head -1
# 验证声明版本存在 (404 = 不存在):
curl -s -o /dev/null -w "%{http_code}\n" "https://registry.npmjs.org/react/19.2.5"
# 列全部版本 + 各 dist-tag:
curl -s "https://registry.npmjs.org/react" | jq '.["dist-tags"]'
npm outdated / pnpm outdated / yarn outdated / bun outdated。^1.2.3 允许 <2.0.0; ~1.2.3 允许 <1.3.0; 无前缀 = 精确锁定。pypi.org/pypi/<pkg>/jsoncurl -s "https://pypi.org/pypi/requests/json" | jq -r '.info.version' # 最新
curl -s "https://pypi.org/pypi/requests/json" | jq -r '.releases | keys[]' # 所有版本
# 验证某版本存在:
curl -s -o /dev/null -w "%{http_code}\n" "https://pypi.org/pypi/requests/2.31.0/json"
.info.version 已是最新稳定 (yanked 版本在 .releases[ver][].yanked)。crates.io (需 User-Agent)curl -s -H "User-Agent: deps-check" "https://crates.io/api/v1/crates/serde" \
| jq -r '.crate.max_stable_version' # 最新稳定; .crate.newest_version 含预发布
proxy.golang.orgM=github.com/gin-gonic/gin
curl -s "https://proxy.golang.org/$M/@latest" | jq -r '.Version' # 最新
curl -s "https://proxy.golang.org/$M/@v/list" # 所有版本 (大写路径需转义见官方文档)
curl -s "https://rubygems.org/api/v1/versions/rails/latest.json" | jq -r '.version'
repo.packagist.orgcurl -s "https://repo.packagist.org/p2/monolog/monolog.json" \
| jq -r '.packages["monolog/monolog"][0].version'
curl -s "https://api.nuget.org/v3-flatcontainer/newtonsoft.json/index.json" \
| jq -r '.versions[-1]' # 包名需小写
| 类别 | 判定 | 建议 |
|---|---|---|
| 已最新 | 声明版本 == registry release | 跳过 |
| range 内可升 | registry release 落在声明 range 内 | 安全升 (改 lockfile 即可) |
| 小版本升 (改 manifest) | 同主版本, range 外 | 推荐升, 低风险 |
| 大版本升 (MAJOR) | 主版本号变化 | 单列, 提示 breaking, 需查 changelog/迁移指南, 由用户决定 |
| 查不到 / 声明版本 404 | registry 无此版本 | 标红, 可能写错或来自私服 — 核实, 不要直接判"编造" |
| 预发布 only | 仅有 -rc/-beta 更新 | 默认不推, 标注 |
## <生态> 依赖检查 (源: <registry URL>)
| 包 | 当前(声明) | 最新稳定 | 类别 | 建议 |
|---|---|---|---|---|
| react | ^19.2.5 | 19.2.5 | 已最新 | — |
| react-day-picker | 9.14.0 | 10.0.1 | MAJOR | 跨大版本, 看 v10 迁移 |
...
小结: 共 N 个, 可安全升 X, 大版本 Y (需确认), 查不到 Z。
mvn -q dependency:resolve · npm/pnpm/bun install · pip install -U · cargo update ...mvn clean compile (确认所有模块真的重新编译, 别被 0.x 秒的假成功骗了)tsc --noEmit + vite build / npm run buildtable -> month_grid)。| 现象 | 处理 |
|---|---|
| 搜索索引版本比声明的还旧 | 正常, 索引有延迟; 以 metadata 接口为准, 别误判编造 |
| scoped npm 包 404 | / 没编码成 %2f |
| Maven 查不到 | groupId 点没转斜杠 / 包在私服 (换 base URL) / classifier 特殊 |
| crates.io 403 | 缺 User-Agent 头 |
| jq 未安装 | 用 grep -o '"version":"[^"]*"' 兜底, 或 python3 -c 解析 |
latest 是预发布 | 改看 release(Maven) / max_stable_version(crates) / 过滤 `-rc |
| 网络/代理失败 | 重试; 仍失败则标"未能在线核实", 不靠记忆填版本号 |
npm audit/pip-audit/OSV 的活, 可附带提)。