Stats
Actions
Tags
From qol-project
Runs a swarm coordination system: a file guard script on Write/Edit calls, init on session start, and sync on user prompts. Implemented in Node.js.
3 events · 5 hooks
Safety signals detected in this hook configuration
Where this hook configuration is defined
Defined in hooks/hooks.json
Event handlers and matchers — expand Raw Configuration for the full JSON
Edit|Write|MultiEdit|NotebookEditnode -e 'const fs=require("node:fs"),cp=require("node:child_process"),path=require("node:path"),os=require("node:os");const [plugin,rel]=process.argv.slice(1);const input=fs.readFileSync(0);let root=process.env.CLAUDE_PLUGIN_ROOT||process.env.CODEX_PLUGIN_ROOT||"";if(!root){const cache=path.join(process.env.CODEX_HOME||path.join(os.homedir(),".codex"),"plugins","cache");const found=[];try{for(const market of fs.readdirSync(cache)){const dir=path.join(cache,market,plugin);if(!fs.existsSync(dir))continue;for(const version of fs.readdirSync(dir)){const candidate=path.join(dir,version);if(fs.existsSync(path.join(candidate,rel)))found.push([fs.statSync(candidate).mtimeMs,candidate]);}}}catch{}root=found.sort((a,b)=>a[0]-b[0]).pop()?.[1]||"";}if(!root)process.exit(0);const file=path.join(root,rel);if(!fs.existsSync(file))process.exit(0);const result=cp.spawnSync(process.execPath,[file],{input});if(result.stdout)process.stdout.write(result.stdout);if(result.stderr)process.stderr.write(result.stderr);process.exit(result.status??0);' qol-project bin/check-qol-arch-code.cjsnode -e 'const fs=require("node:fs"),cp=require("node:child_process"),path=require("node:path"),os=require("node:os");const [plugin,rel]=process.argv.slice(1);const input=fs.readFileSync(0);let root=process.env.CLAUDE_PLUGIN_ROOT||process.env.CODEX_PLUGIN_ROOT||"";if(!root){const cache=path.join(process.env.CODEX_HOME||path.join(os.homedir(),".codex"),"plugins","cache");const found=[];try{for(const market of fs.readdirSync(cache)){const dir=path.join(cache,market,plugin);if(!fs.existsSync(dir))continue;for(const version of fs.readdirSync(dir)){const candidate=path.join(dir,version);if(fs.existsSync(path.join(candidate,rel)))found.push([fs.statSync(candidate).mtimeMs,candidate]);}}}catch{}root=found.sort((a,b)=>a[0]-b[0]).pop()?.[1]||"";}if(!root)process.exit(0);const file=path.join(root,rel);if(!fs.existsSync(file))process.exit(0);const result=cp.spawnSync(process.execPath,[file],{input});if(result.stdout)process.stdout.write(result.stdout);if(result.stderr)process.stderr.write(result.stderr);process.exit(result.status??0);' qol-project bin/check-qol-arch-cross-platform.cjsnode -e 'const fs=require("node:fs"),cp=require("node:child_process"),path=require("node:path"),os=require("node:os");const [plugin,rel]=process.argv.slice(1);const input=fs.readFileSync(0);let root=process.env.CLAUDE_PLUGIN_ROOT||process.env.CODEX_PLUGIN_ROOT||"";if(!root){const cache=path.join(process.env.CODEX_HOME||path.join(os.homedir(),".codex"),"plugins","cache");const found=[];try{for(const market of fs.readdirSync(cache)){const dir=path.join(cache,market,plugin);if(!fs.existsSync(dir))continue;for(const version of fs.readdirSync(dir)){const candidate=path.join(dir,version);if(fs.existsSync(path.join(candidate,rel)))found.push([fs.statSync(candidate).mtimeMs,candidate]);}}}catch{}root=found.sort((a,b)=>a[0]-b[0]).pop()?.[1]||"";}if(!root)process.exit(0);const file=path.join(root,rel);if(!fs.existsSync(file))process.exit(0);const result=cp.spawnSync(process.execPath,[file],{input});if(result.stdout)process.stdout.write(result.stdout);if(result.stderr)process.stderr.write(result.stderr);process.exit(result.status??0);' qol-project bin/check-qol-arch-cicd.cjsstartup|resume|clearnode -e 'const fs=require("node:fs"),cp=require("node:child_process"),path=require("node:path"),os=require("node:os");const [plugin,rel]=process.argv.slice(1);const input=fs.readFileSync(0);let root=process.env.CLAUDE_PLUGIN_ROOT||process.env.CODEX_PLUGIN_ROOT||"";if(!root){const cache=path.join(process.env.CODEX_HOME||path.join(os.homedir(),".codex"),"plugins","cache");const found=[];try{for(const market of fs.readdirSync(cache)){const dir=path.join(cache,market,plugin);if(!fs.existsSync(dir))continue;for(const version of fs.readdirSync(dir)){const candidate=path.join(dir,version);if(fs.existsSync(path.join(candidate,rel)))found.push([fs.statSync(candidate).mtimeMs,candidate]);}}}catch{}root=found.sort((a,b)=>a[0]-b[0]).pop()?.[1]||"";}if(!root)process.exit(0);const file=path.join(root,rel);if(!fs.existsSync(file))process.exit(0);const result=cp.spawnSync(process.execPath,[file],{input});if(result.stdout)process.stdout.write(result.stdout);if(result.stderr)process.stderr.write(result.stderr);process.exit(result.status??0);' qol-project bin/inject-qol-cli-context.cjsnode -e 'const fs=require("node:fs"),cp=require("node:child_process"),path=require("node:path"),os=require("node:os");const [plugin,rel]=process.argv.slice(1);const input=fs.readFileSync(0);let root=process.env.CLAUDE_PLUGIN_ROOT||process.env.CODEX_PLUGIN_ROOT||"";if(!root){const cache=path.join(process.env.CODEX_HOME||path.join(os.homedir(),".codex"),"plugins","cache");const found=[];try{for(const market of fs.readdirSync(cache)){const dir=path.join(cache,market,plugin);if(!fs.existsSync(dir))continue;for(const version of fs.readdirSync(dir)){const candidate=path.join(dir,version);if(fs.existsSync(path.join(candidate,rel)))found.push([fs.statSync(candidate).mtimeMs,candidate]);}}}catch{}root=found.sort((a,b)=>a[0]-b[0]).pop()?.[1]||"";}if(!root)process.exit(0);const file=path.join(root,rel);if(!fs.existsSync(file))process.exit(0);const result=cp.spawnSync(process.execPath,[file],{input});if(result.stdout)process.stdout.write(result.stdout);if(result.stderr)process.stderr.write(result.stderr);process.exit(result.status??0);' qol-project bin/qol-mission-reminder.cjs14plugins reuse this hooks config
First indexed Dec 4, 2025
Showing the 6 earliest of 14 plugins
npx claudepluginhub qol-tools/qol-skills --plugin qol-project