Detectors
driftcheck ships 86 detector modules covering 76 registered detectors. Each checks for a specific kind of version drift between toolchain files and documentation.
Language Runtimes
| Detector |
Description |
bun_drifts |
package.json engines.bun vs README. Major.minor comparison. |
dart_drifts |
pubspec.yaml environment.sdk constraint vs README. |
deno_drifts |
deno.json version pins vs README. |
dotnet_drifts |
*.csproj <TargetFramework> vs README. Handles multi-targeting. |
elixir_drifts |
mix.exs elixir: version vs README. |
go_drifts |
go.mod go directive vs README. |
julia_drifts |
Project.toml [compat] and Manifest.toml vs README package versions. |
java_drifts |
pom.xml Maven compiler source/target version vs README. |
kotlin_drifts |
build.gradle.kts plugin version vs README. |
node_drifts |
package.json engines.node vs README. |
php_drifts |
composer.json require.php vs README. Major.minor comparison. |
python_drifts |
pyproject.toml requires-python vs README. |
python_version_drifts |
.python-version vs pyproject.toml requires-python floor. |
ruby_drifts |
Gemfile ruby "x.y.z" vs README. Major.minor comparison. |
rust_drifts |
rust-toolchain.toml channel and Cargo.toml rust-version vs README. Minor-aware (patch differences ignored). |
cargo_feature_drifts |
Cargo.toml [features] vs explicit feature lists in README. |
rust_workspace_drifts |
Cargo workspace member version vs [workspace.package] version, cross-crate majority consensus, and crates.io badge versions in member READMEs. |
npm_workspace_drifts |
Same dependency, different version ranges across workspace package.json files. |
swift_drifts |
Package.swift swift-tools-version and dependency pins vs README. |
Package Managers & Lockfiles
| Detector |
Description |
conda_drifts |
environment.yml unpinned packages. |
gradle_catalog_drifts |
libs.versions.toml (Gradle version catalog) vs README. |
lockfile_drifts |
Missing, stale, or orphaned lockfiles (informational). |
npmrc_drifts |
.npmrc registry vs README mentions. |
package_manager_drifts |
packageManager field vs detected lockfile (npm/pnpm/yarn/bun). |
pnpm_drifts |
pnpm-lock.yaml version drift vs README. |
pipfile_drifts |
Pipfile vs Pipfile.lock version mismatches. |
poetry_drifts |
pyproject.toml [tool.poetry] dependency versions vs README. |
python_version_drifts |
.python-version vs pyproject.toml requires-python floor. |
pyproject_tool_drifts |
[tool.ruff] / [tool.black] / [tool.mypy] / [tool.pyright] Python targets vs requires-python. |
requirements_drifts |
requirements.txt unpinned packages vs known latest. |
python_req_drifts |
requirements.txt vs pyproject.toml [project].dependencies. |
yarnrc_drifts |
.yarnrc.yml Yarn version vs README mentions. |
CI/CD
| Detector |
Description |
actions_drifts |
Outdated uses: action@version for 18 popular actions. Detects deprecated Node 20 runtime. |
gh_actions_version_drifts |
Outdated GitHub Actions versions by category. |
gitlab_drifts |
.gitlab-ci.yml image tags vs README. |
circleci_drifts |
.circleci/config.yml docker image tags vs README. |
jenkins_drifts |
Jenkinsfile tool versions (nodejs, python, docker.image) vs README. |
ci_os_drifts |
Deprecated GitHub Actions runners (ubuntu-18.04, macos-11, windows-2016). |
Infrastructure
| Detector |
Description |
compose_drifts |
Docker Compose service image/tag drift vs README. |
dc_drifts |
docker-compose.yml/compose.yaml image tags vs README. |
devcontainer_drifts |
Devcontainer.json features/base image vs README. |
docker_bases_drifts |
Dockerfile FROM base image drift across multi-stage builds. |
docker_drifts |
Dockerfile FROM <image>:<tag> vs README. |
docker_multistage_drifts |
Multi-stage Dockerfile FROM consistency across stages. |
env_drift_drifts |
.env.example vs .env, docker-compose.yml vs docker-compose.prod.yml. |
external_drifts |
Third-party CDN dependencies that break offline rendering (informational). |
k8s_drifts |
Kubernetes manifest image tags vs README. |
helm_dependency_drifts |
Chart.yaml dependency constraints vs Chart.lock versions. |
| Detector |
Description |
cmake_drifts |
CMakeLists.txt cmake_minimum_required version vs README. |
java_gradle_drifts |
build.gradle sourceCompatibility, jvmTarget vs README. |
makefile_drifts |
Makefile tool version variables (GCC_VERSION, CMAKE_VERSION, GO_VERSION). |
maven_drifts |
pom.xml java.version, maven.compiler.source/target vs README. |
taskfile_drifts |
Taskfile.yml tool version variables vs README. |
terraform_drifts |
versions.tf required_providers version vs README. |
terraform_lock_drifts |
.terraform.lock.hcl version outside the required_providers constraint. |
Configuration
| Detector |
Description |
dependabot_drifts |
Ecosystems used but not covered by .github/dependabot.yml (informational). |
editorconfig_drifts |
.editorconfig indent_size/indent_style consistency vs project convention. |
engines_drifts |
package.json engines field consistency across package managers. |
git_tag_drifts |
Latest git tag vs README version mentions. |
mise_drifts |
mise.toml [tools] section vs README. |
nvmrc_drifts |
.nvmrc vs package.json engines.node (informational). |
|
pre_commit_drifts |
|
changelog_drifts |
|
tool_versions_drifts |
version_files_drifts |
.ruby-version, .python-version, .node-version, etc. vs README. |
frontmatter_drifts |
Markdown YAML frontmatter versions vs Cargo, pyproject, package.json, and go.mod. |
Other
| Detector |
Description |
count_drifts |
skills/ directory count vs README mentions of "N skills". |
env_drift_drifts |
.env.example vs .env, docker-compose.yml vs docker-compose.prod.yml. |
external_drifts |
Third-party CDN dependencies that break offline rendering (informational). |
fix_drifts |
Auto-correct detected drifts in documentation files (fix application module). |
helm_drifts |
Chart.yaml/values.yaml image tags vs README. |
lineending_drifts |
Missing * text=auto eol=lf in .gitattributes (informational). |
package_manager_drifts |
packageManager field vs detected lockfile (npm/pnpm/yarn/bun). |
plugin_<name>_drifts |
Custom drift detection via plugins. |
pnpm_drifts |
pnpm-lock.yaml version drift vs README. |
poetry_drifts |
pyproject.toml [tool.poetry] dependency versions vs README. |
python_version_drifts |
.python-version vs pyproject.toml requires-python floor. |
requirements_drifts |
requirements.txt unpinned packages vs known latest. |
renovate_drifts |
renovate.json configuration health checks (packageRules, managerPolicy). |
typosquat_drifts |
Suspicious package names similar to popular packages (security). |
vscode_drifts |
extensions.json recommendations vs README mentions. |
Detector Aliases
Many detectors can be referenced by short name in --only/--exclude:
driftcheck --only rust-cargo,node,python,go
driftcheck --exclude lockfile,nvmrc,ci_os
The short name is the detector's kind prefix (before _drifts).