holistic-linting
Holistic Linting
Run configured quality gates and treat diagnostics as evidence to diagnose, not instructions to silence. Read ../../ARCHITECTURE.md when changing this workflow or when a diagnostic crosses language, configuration, generated-artifact, or shared-contract boundaries.
1. Resolve scope and discover gates
Start from explicitly requested files/directories, or task-changed files when no scope was supplied. Do not broaden into repository-wide cleanup unless requested or required by an authoritative configured gate.
Inspect repository configuration read-only. When prek/pre-commit configuration is authoritative, run one aggregate prek run --files <changed files> invocation; name a hook only when reproducing or diagnosing that hook's failure. Preserve unknown/custom configured hooks rather than silently reducing them to a known-tool allowlist.
When .pre-commit-config.yaml is authoritative, detect_hook_tool.py may assist runner selection. Resolve the script from this installed skill directory, not the caller's working directory. Its answer is evidence about runner selection, not proof that all configured gates were discovered.
Classify discovery as COMPLETE, NO_APPLICABLE_GATES, or INCOMPLETE. Missing executables, malformed/unsupported configuration, timeout, and no-applicable-gate are distinct outcomes. Never turn an empty/unknown result into a pass.
For every planned gate retain command, cwd, scope, revision/config identity, and tool identity/version when material.
2. Execute and account for diagnostics
Run formatting and quality checks according to repository configuration. Formatting is a state change; add formatter-touched files to the affected verification surface.