Skip to content

feat: ship a Claude Code plugin that finds and bwraps the checker - #69

Merged
ryanleecode merged 7 commits into
masterfrom
feature/claude-plugin
Aug 26, 2026
Merged

feat: ship a Claude Code plugin that finds and bwraps the checker#69
ryanleecode merged 7 commits into
masterfrom
feature/claude-plugin

Conversation

@systemfsoftware-maker

Copy link
Copy Markdown
Collaborator

The checker was a binary you had to wire by hand. This repo is now also a Claude Code plugin.

The hook locates comment-checker on PATH, then via direnv exec. If both miss and the project has flake.nix, the error names direnv allow / nix develop. A native ELF/Mach-O binary is run under bwrap when bubblewrap is installed; a wrapper that already calls bwrap is left alone. The hook passes --strip. Deno must be on PATH.

claude --plugin-dir .

The hook locates comment-checker on PATH or via direnv, names flake.nix
when that is why it is missing, and runs a native binary under bwrap
when bubblewrap is present. It passes --strip. Deno is required.
The launcher is a thin PATH/direnv/bwrap exec. Those tests did not
defend an observable contract.
Stop hand-written tagged unions. Resolve config from hooks/deno.jsonc.
Invoke the script by path so hooks.json does not repeat the shebang.
dprint already owns formatting.
Launch was a self-asserted tagged union. Env is the untrusted boundary:
trim and non-empty CLAUDE_PROJECT_DIR, PATH split to entries. One walk
collects comment-checker, bwrap, and direnv; bind-root exists run together.
string.trim |> string > 0 is valid arktype. It also looks like a
numeric compare. Pipe the trim morph into atLeastLength(1) instead.
The hook does not walk PATH, read ELF magic, or build a bwrap profile.
Sandboxing stays in the nix wrapper.
@ryanleecode
ryanleecode merged commit 9318c83 into master Aug 26, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants