Context
Issue #296 was merged as an intermediate fix while the broader git-hooks extraction work is still pending.
resources/git-hooks still contains the hook runtime logic, and the GrumPHP binary fallbacks were fixed directly in this repository in a temporary way.
Problem
We need a dedicated package boundary for Git hooks instead of keeping lifecycle scripts inside dev-tools, so this repository can depend on the extracted hook package and avoid duplicated or environment-specific logic.
Scope
- Create and publish a dedicated
fast-forward/git-hooks package/repository (or integrate the final target package that already exists) to host the managed Git hook scripts.
- Migrate existing hook scripts from
resources/git-hooks/* while preserving behavior for:
commit-msg
post-checkout
post-merge
pre-commit
- Update
dev-tools synchronization and installation flow to consume the externalized package instead of embedding the full hook logic.
- Keep local and global execution compatibility, including GrumPHP resolution order and project-local overrides.
- Keep documentation and generated output in sync with the new source-of-truth for hooks.
Acceptance Criteria
- Hook execution logic is implemented in the dedicated git-hooks package and no longer maintained only inside
resources/git-hooks.
dev-tools git-hooks installs and updates the expected hooks in consumer repositories.
- GrumPHP invocation order remains unchanged in behavior for managed workflows:
vendor/bin/grumphp
vendor/bin/grumphp.phar
grumphp in PATH
- Existing and regression tests for
GitHooksCommand and self-update/global path checks remain green.
- README/usage and command help that mention Git hook installation reflect the new package flow.
- Any required changelog note is added for user-facing or release-process behavior changes.
Notes
Context
Issue #296 was merged as an intermediate fix while the broader git-hooks extraction work is still pending.
resources/git-hooksstill contains the hook runtime logic, and the GrumPHP binary fallbacks were fixed directly in this repository in a temporary way.Problem
We need a dedicated package boundary for Git hooks instead of keeping lifecycle scripts inside
dev-tools, so this repository can depend on the extracted hook package and avoid duplicated or environment-specific logic.Scope
fast-forward/git-hookspackage/repository (or integrate the final target package that already exists) to host the managed Git hook scripts.resources/git-hooks/*while preserving behavior for:commit-msgpost-checkoutpost-mergepre-commitdev-toolssynchronization and installation flow to consume the externalized package instead of embedding the full hook logic.Acceptance Criteria
resources/git-hooks.dev-tools git-hooksinstalls and updates the expected hooks in consumer repositories.vendor/bin/grumphpvendor/bin/grumphp.phargrumphpin PATHGitHooksCommandand self-update/global path checks remain green.Notes