{ "listing": { "skills": [ { "path": "plugin/skills/add-and-validate-guardian-developer-semgrep-rule/SKILL.md", "name": "add-and-validate-guardian-developer-semgrep-rule", "description": "write a custom semgrep rule with the user, add it to guardian in either user or repo scope, and prove it fires by writing a file that should trip it. use when someone wants guardian to catch something it currently misses, asks to write or add a semgrep rule, or wants a project convention enforced on the code claude writes.", "files": { "plugin/skills/add-and-validate-guardian-developer-semgrep-rule/SKILL.md": "cde31a31c56f1b7408350bf28daa69f8080e2416176df883577c5c768dfd78ef" } }, { "path": "plugin/skills/install-mfw/SKILL.md", "name": "install-mfw", "description": "Install the mfw (Semgrep Malware Firewall) CLI via the curl|sh installer and walk the user through setup — trust store, PATH shims, shell integration, and the background daemon — asking questions at real decision points. Detects when the user's shell rc files are *managed* (symlinked into nix / home-manager / chezmoi / GNU stow / a dotfiles git repo) and, instead of clobbering them, adds mfw's source line to the right source-of-truth. Use when the user wants to install, set up, or onboard mfw on this machine.", "files": { "plugin/skills/install-mfw/SKILL.md": "e5479a19f4456e6280e87ec9dfe1846ae4660b46d146c78c81f605bc88448f60", "plugin/skills/install-mfw/scripts/inspect-shell-config.sh": "b687ad351fa160158d9d4f7240334fb891f936b8588b30fe2a080d8f22f57bc6", "plugin/skills/install-mfw/scripts/install-binary.sh": "4b668717db33351289ec90027f91e8836722061a6d570a355120dd5a55f2421b" } }, { "path": "plugin/skills/remove-guardian-developer-semgrep-rule/SKILL.md", "name": "remove-guardian-developer-semgrep-rule", "description": "Remove a custom Semgrep rule from Guardian — list what is installed, work out which file holds the rule, and delete or edit it out of the user or repo rules directory. Use when someone wants Guardian to stop flagging something, asks to remove, delete or disable a custom rule, or wants to clear room under the rule limit.", "files": { "plugin/skills/remove-guardian-developer-semgrep-rule/SKILL.md": "7bb53bab73b48ff668c714f4ba0c6676c49565ed90e1286320c52ed999d8040b" } } ], "hooks": [ { "path": "plugin/hooks/hooks.json", "sha256": "85dd9fd7b96e02c51deb903973045f3bf214b400beaf7b1e957fe2c7e0ddecf2", "event": "PreToolUse", "matcher": "Write|Edit|Bash|apply_patch", "declaration": { "type": "command", "command": "\"${CLAUDE_PLUGIN_ROOT}/scripts/hook\" auto PreToolUse", "commandWindows": "& \"$env:CLAUDE_PLUGIN_ROOT\\scripts\\hook.exe\" auto PreToolUse" }, "executed": false }, { "path": "plugin/hooks/hooks.json", "sha256": "85dd9fd7b96e02c51deb903973045f3bf214b400beaf7b1e957fe2c7e0ddecf2", "event": "PostToolUse", "matcher": "Write|Edit|Bash|apply_patch", "declaration": { "type": "command", "command": "\"${CLAUDE_PLUGIN_ROOT}/scripts/hook\" auto PostToolUse --async", "commandWindows": "& \"$env:CLAUDE_PLUGIN_ROOT\\scripts\\hook.exe\" auto PostToolUse --async", "async": true }, "executed": false }, { "path": "plugin/hooks/hooks.json", "sha256": "85dd9fd7b96e02c51deb903973045f3bf214b400beaf7b1e957fe2c7e0ddecf2", "event": "SessionStart", "matcher": "startup|resume|clear|compact", "declaration": { "type": "command", "command": "\"${CLAUDE_PLUGIN_ROOT}/scripts/hook\" auto SessionStatus", "commandWindows": "& \"$env:CLAUDE_PLUGIN_ROOT\\scripts\\hook.exe\" auto SessionStatus", "timeout": 5 }, "executed": false }, { "path": "plugin/hooks/hooks.json", "sha256": "85dd9fd7b96e02c51deb903973045f3bf214b400beaf7b1e957fe2c7e0ddecf2", "event": "SessionStart", "matcher": "startup|resume|clear|compact", "declaration": { "type": "command", "command": "\"${CLAUDE_PLUGIN_ROOT}/scripts/hook\" auto SessionStart --async", "commandWindows": "& \"$env:CLAUDE_PLUGIN_ROOT\\scripts\\hook.exe\" auto SessionStart --async", "async": true, "timeout": 180 }, "executed": false }, { "path": "plugin/hooks/hooks.json", "sha256": "85dd9fd7b96e02c51deb903973045f3bf214b400beaf7b1e957fe2c7e0ddecf2", "event": "SessionStart", "matcher": "startup|resume|clear|compact", "declaration": { "type": "command", "command": "\"${CLAUDE_PLUGIN_ROOT}/scripts/hook\" auto Update --async", "commandWindows": "& \"$env:CLAUDE_PLUGIN_ROOT\\scripts\\hook.exe\" auto Update --async", "async": true, "timeout": 180 }, "executed": false }, { "path": "plugin/hooks/hooks.json", "sha256": "85dd9fd7b96e02c51deb903973045f3bf214b400beaf7b1e957fe2c7e0ddecf2", "event": "Stop", "matcher": null, "declaration": { "type": "command", "command": "\"${CLAUDE_PLUGIN_ROOT}/scripts/hook\" auto Stop", "commandWindows": "& \"$env:CLAUDE_PLUGIN_ROOT\\scripts\\hook.exe\" auto Stop", "timeout": 35 }, "executed": false }, { "path": "plugin/hooks/hooks.json", "sha256": "85dd9fd7b96e02c51deb903973045f3bf214b400beaf7b1e957fe2c7e0ddecf2", "event": "Stop", "matcher": null, "declaration": { "type": "command", "command": "\"${CLAUDE_PLUGIN_ROOT}/scripts/hook\" auto StopRewake --async", "commandWindows": "& \"$env:CLAUDE_PLUGIN_ROOT\\scripts\\hook.exe\" auto StopRewake --async", "async": true, "asyncRewake": true, "timeout": 600 }, "executed": false }, { "path": "plugin/hooks/hooks.json", "sha256": "85dd9fd7b96e02c51deb903973045f3bf214b400beaf7b1e957fe2c7e0ddecf2", "event": "SessionEnd", "matcher": "clear|resume|logout|prompt_input_exit|bypass_permissions_disabled|other", "declaration": { "type": "command", "command": "\"${CLAUDE_PLUGIN_ROOT}/scripts/hook\" auto SessionEnd", "commandWindows": "& \"$env:CLAUDE_PLUGIN_ROOT\\scripts\\hook.exe\" auto SessionEnd", "timeout": 3 }, "executed": false } ], "executions": [] } }