hookify: example rule files lack the hookify. filename prefix, so copied examples silently never load

Status Open
Maintainer reply None cached
Activity 4 comments · opened Jul 19, 2026

plugins/hookify/core/config_loader.py discovers rules with the glob .claude/hookify.*.local.md (line 210), and the writing-rules skill documents the hookify. prefix as mandatory, listing danger.local.md (missing hookify prefix) under bad names (SKILL.md lines 286-298).

The plugin's own examples ship without the prefix:

plugins/hookify/examples/console-log-warning.local.md
plugins/hookify/examples/dangerous-rm.local.md
plugins/hookify/examples/require-tests-stop.local.md
plugins/hookify/examples/sensitive-files-warning.local.md

The docs (help.md, list.md, SKILL.md lines 324-327) point users at examples/ with no rename instruction. A file copied verbatim into .claude/ is silently dead: the glob never matches it, no error is shown, and the rule never fires. This matches hookify's known silent-failure pattern.

Verified by copying each example into a scratch project's .claude/ and running the real load_rules(): all four are invisible to the loader; after renaming with the prefix, all four are discovered (three active, require-tests-stop correctly parsed but inactive since it ships enabled: false). Happy to open a PR renaming the examples and updating the filename references.

View original on GitHub ↗

3 Comments

Codeturion · 1 month ago

PR #79148 is open for this. It renames the four example rule files to the hookify. prefix and updates the references in skills/writing-rules/SKILL.md, so a copied example is picked up by the loader glob. Verified against the real load_rules(): before the change all four are invisible, after it all four are discovered, with require-tests-stop correctly inactive because it ships enabled: false.

sepehrtaji-dev · 1 month ago

I have a fix ready on my fork: sepehrtaji-dev:fix/hookify-example-filenames

The patch renames the four example rule files with the required hookify. prefix so a user who copies one verbatim into .claude/ gets a working rule instead of a silently dead one:

  • examples/console-log-warning.local.md → examples/hookify.console-log-warning.local.md
  • examples/dangerous-rm.local.md → examples/hookify.dangerous-rm.local.md
  • examples/require-tests-stop.local.md → examples/hookify.require-tests-stop.local.md
  • examples/sensitive-files-warning.local.md → examples/hookify.sensitive-files-warning.local.md

It also updates the filename references in README.md, commands/hookify.md, commands/list.md, and skills/writing-rules/SKILL.md. All renamed files now match the discovery glob hookify.*.local.md, and no stale references to the old names remain.

PR creation appears to be limited to collaborators on this repository at the moment, so I'm linking the branch here instead — happy to open a proper PR if invited.

Faizankhan17623 · 11 days ago

A fix is in https://github.com/Faizankhan17623/claude-code/commit/ed29abf432b84499e9ce830849947aabcec272e0 (the repo takes PRs from collaborators only, so I can't open one). The four files in plugins/hookify/examples/ are renamed to hookify.*.local.md, the name the loader globs for, and the list in skills/writing-rules/SKILL.md follows. Copied into .claude/, the enabled examples now load.

Showing cached comments. Read the full discussion on GitHub ↗