chore: drop the configuration validator - #20
Merged
Conversation
The script checked that settings.json points at hooks that exist, that CLAUDE.md's @-imports resolve and that skills keep their frontmatter — real silent-failure modes, but meta-checks on the repository rather than on what the template does. The value here is a working, verified configuration, not scaffolding that watches it. CI keeps what verifies behaviour: ruff, shellcheck, and the hook tests. Its CHANGELOG entry is dropped rather than moved to Removed: it was added and removed inside the same unreleased cycle, so it never shipped. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
skateddu
changed the base branch from
fix/hook-false-positive-on-heredoc
to
main
August 13, 2026 13:58
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Removes
scripts/validate_config.py, added in #16, along with its CI step and every reference to it.Why
The script checked four things: that
settings.jsonand the MCP configs parse, that the hook scriptssettings.jsonnames exist on disk, thatCLAUDE.md's@-imports resolve, and that each skill'sSKILL.mdstill declaresnameanddescription. Three of those are genuine silent-failure modes — a renamed hook stops firing with no error, a broken import drops a rule from context.But they are checks on the repository, not on what the template does. This project's value is a working, verified configuration; scaffolding that watches the configuration is a second thing to maintain, and it grows. The call is to keep the verification that proves behaviour and drop the verification that proves tidiness.
Worth recording what is given up, so the decision can be revisited on evidence rather than memory:
settings.jsonis now caught only partially —run_hookasserts the script exists, so deletingprotect-main.shstill turns the tests red, but renaming it and updating the tests while forgettingsettings.jsonpasses.@-import inCLAUDE.mdand a skill that loses its frontmatter are no longer caught by anything.Its own blind spot argued the same way: it did not catch
.claude/hooks/lib/command-text.shbeing swallowed by.gitignorein #19 — it inspected files named insettings.json, and a sourced sibling was invisible to it. A checker that needs its own checker is the shape of the problem.What CI keeps
ruff check/ruff format --checkshellcheck --severity=warningpytestAlso
scripts/**/*.pydropped from ruff'sinclude;scripts/is gone entirely.pyproject.tomlentries are corrected to match.Addedentry fortests/said 65; the suite is 75 after fix(hooks): stop matching patterns against heredoc prose #19. Corrected — the same drift the coherence pass in docs: align README, CHANGELOG and CONTRIBUTING with actual state #18 was about.validate_config.pyis resolved by the file's deletion.Verification
Lint, format and all 75 tests pass. No reference to
validate_configremains outside the vendored skills.🤖 Generated with Claude Code