npx claudepluginhub joshuarweaver/cascade-code-languages-misc-2 --plugin venkateshvenki404224-frappe-apps-managerDefined in hooks/hooks.json
Bash|Write|Editif [ -f 'sites/common_site_config.json' ]; then echo '✓ Frappe bench detected'; else echo '⚠ Not in Frappe bench directory'; fiWritejq -r '.tool_input.file_path' | { read file_path; if [[ "$file_path" == *test_*.py ]]; then if [[ "$file_path" != */doctype/* ]] && [[ "$file_path" != */tests/* ]]; then echo '⚠ Test files should be in doctype/ or tests/ directory'; fi; fi; }Write|Editjq -r '.tool_input.file_path' | { read file_path; if [[ "$file_path" == *.json ]] && [[ "$file_path" == */doctype/* ]]; then echo '💡 Reminder: Run migrations with /frappe-migrate'; fi; }Write|Editjq -r '.tool_input.file_path' | { read file_path; if [[ "$file_path" == *.py ]] && [[ "$file_path" == */doctype/*.py ]] && [[ "$file_path" != *test_*.py ]]; then echo '✓ Code updated. Consider running tests with /frappe-test'; fi; }Write|Editjq -r '.tool_input.file_path' | { read file_path; if [[ "$file_path" == *.js ]] && [[ "$file_path" == */doctype/*.js ]]; then echo '💡 Reminder: Clear cache with /frappe-cache for JS changes to take effect'; fi; }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'; fiif [ -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; fiif 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; fiExecutes bash commands via 'ctx system' for context loading/gating, QA reminders, task completion checks, and session health (size, persistence, freshness) on PreToolUse, PostToolUse, UserPromptSubmit. Touches files.