Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/Venkateshvenki404224/frappe-apps-managerWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/hooks/venkateshvenki404224/frappe-apps-manager/user-prompt-submit)<a href="https://agentmods.dev/hooks/venkateshvenki404224/frappe-apps-manager/user-prompt-submit"><img src="https://agentmods.dev/badge/hooks/venkateshvenki404224/frappe-apps-manager/user-prompt-submit/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/hooks/venkateshvenki404224/frappe-apps-manager/user-prompt-submit"><img src="https://agentmods.dev/badge/hooks/venkateshvenki404224/frappe-apps-manager/user-prompt-submit.svg" alt="Reviewed on agentmods" width="80" height="20"></a>Grade B, and why
UserPromptSubmit scanned grade B with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the commands this hook runs, not an audit. A hook is shell that executes on your machine at the event it names, which is why every command in it is printed with what was found.
Asks for rootmediumPrivilege escalation
A mod that escalates privileges can change anything on the machine, not only the project.
"command": "if command -v redis-cli >/dev/null 2>&1; then if redis-cli ping >/dev/null 2>&1; then echo '✓ Redis is running'; else echo '⚠ Redis is not responding. Start with: sudo systemctl start redis-server'; fi; fi" What it actually says
{
"UserPromptSubmit": [
{
"matcher": "",
"keywords": [
"frappe",
"bench",
"doctype",
"migrate"
],
"hooks": [
{
"type": "command",
"command": "echo '🔍 Checking Frappe bench setup...'; if [ -f 'sites/common_site_config.json' ]; then echo '✓ Valid bench directory'; bench --version 2>/dev/null || echo '⚠ Bench command not found'; else echo '❌ Not a Frappe bench directory'; fi"
}
]
},
{
"matcher": "",
"keywords": [
"site",
"test",
"migrate",
"backup",
"console"
],
"hooks": [
{
"type": "command",
"command": "if [ -f 'sites/common_site_config.json' ]; then site_count=$(ls -d sites/*/ 2>/dev/null | wc -l); if [ $site_count -gt 0 ]; then echo \"✓ Found $site_count site(s)\"; else echo '⚠ No sites found. Create one with /frappe-new-site'; fi; fi"
}
]
},
{
"matcher": "",
"keywords": [
"cache",
"redis",
"clear cache"
],
"hooks": [
{
"type": "command",
"command": "if command -v redis-cli >/dev/null 2>&1; then if redis-cli ping >/dev/null 2>&1; then echo '✓ Redis is running'; else echo '⚠ Redis is not responding. Start with: sudo systemctl start redis-server'; fi; fi"
}
]
}
]
}What else hooks.json configures
This page is one entry in a file that holds 3. Installing the file brings all of them; each is measured and scanned on its own page.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 49 lines scan B 63d744c15c09
UserPromptSubmit is a hook published in the GitHub repository Venkateshvenki404224/frappe-apps-manager (27 stars, last pushed 3mo ago), licensed MIT. Its token cost is not measured: a hook is shell that never enters the context. A static security scan graded it B with 1 finding (asks for root). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other hooks, from other repositories
PostToolUse
Runs after a tool call finishes for Write and Edit tool calls, executing format_and_lint.sh. From supabase/supabase.
SessionStart
Runs when a session starts on startup, executing install_pkgs.sh. From supabase/supabase.
SessionStart
Runs when a session starts, executing on-start.js via node. From google-gemini/gemini-cli.
PreToolUse
Runs before the agent uses a tool for Bash tool calls, running an inline shell check. From apache/superset.
PreToolUse
Runs before the agent uses a tool for Bash tool calls, executing enforce-tools.mjs via node. From prisma/orm.
PostToolUse
Runs after a tool call finishes for Write and Edit tool calls, executing format-ts.mjs via node. From prisma/orm.