Hooks
What vibecosystem runs automatically, and when. A hook is a command Claude Code fires at a fixed moment, without you asking for it.
$ npx -y skills add vibeeval/vibecosystem --agent claude-codeShips with vibecosystem. Installing the plugin gets these hooks.
What fires, and when
PreToolUse
node ${CLAUDE_PLUGIN_ROOT}/hooks/dist/pre-tool-use-broadcast.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/agent-observer.mjs- Matches
Read|Edit|Write|Bash|Grep|Globnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/credential-deny.mjs - Matches
Agentnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/agent-memory-loader.mjs - Matches
Read|Edit|Writenode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/path-rules.mjs - Matches
Readnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/magic-doc-tracker.mjs - Matches
Readnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/tldr-read-enforcer.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/mcp-discovery.mjs - Matches
Grepnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/smart-search-router.mjs - Matches
Grepnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/epistemic-reminder.mjs - Matches
Tasknode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/tldr-context-inject.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/arch-context-inject.mjs - Matches
Editnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/file-claims.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/edit-context-inject.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/signature-helper.mjs
PreCompact
node ${CLAUDE_PLUGIN_ROOT}/hooks/dist/pre-compact-continuity.mjs
SessionStart
Fires once when a session begins, and again after a context compaction. It is where a plugin sets up its environment, or restores state the compaction dropped.
node ${CLAUDE_PLUGIN_ROOT}/hooks/dist/session-banner.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/session-register.mjs- Matches
resume|compact|clearnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/session-start-continuity.mjs - Matches
startup|resumenode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/session-start-tldr-cache.mjs node ${CLAUDE_PLUGIN_ROOT}/hooks/dist/session-start-recall.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/instinct-loader.mjs- Matches
startupnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/dream-consolidator.mjs
UserPromptSubmit
Fires before Claude sees each prompt you send. A plugin can use it to inject context, so the same instruction reaches the model every turn instead of only at session start.
node ${CLAUDE_PLUGIN_ROOT}/hooks/dist/intent-classifier.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/skill-activation-prompt.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/smart-memory-recall.mjs
PostToolUse
node ${CLAUDE_PLUGIN_ROOT}/hooks/dist/token-tracker.mjs- Matches
Edit|Writenode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/typescript-preflight.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/compiler-in-the-loop.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/post-edit-diagnostics.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/impact-refactor.mjs - Matches
Writenode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/handoff-index.mjs - Matches
Edit|Writenode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/import-validator.mjs - Matches
Edit|Writenode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/sast-on-edit.mjs - Matches
Bashnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/import-error-detector.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/bash-audit-log.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/canavar-error-broadcast.mjs - Matches
Agentnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/agent-memory-saver.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/canavar-cross-review.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/canavar-error-broadcast.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/canavar-subagent-tracker.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/subagent-stop-learner.mjs - Matches
Edit|Write|Bashnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/passive-learner.mjs
Stop
node ${CLAUDE_PLUGIN_ROOT}/hooks/dist/magic-doc-updater.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/compiler-in-the-loop-stop.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/anti-rationalization.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/instinct-consolidator.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/canavar-skill-tracker.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/session-analytics.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/memory-graph.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/changelog-on-release.mjs
SessionEnd
node ${CLAUDE_PLUGIN_ROOT}/hooks/dist/session-end-cleanup.mjsnode ${CLAUDE_PLUGIN_ROOT}/hooks/dist/session-outcome.mjs
Where it lives
- hooks/vitest.config.tsGitHub
Read the script
import { defineConfig } from 'vitest/config'; export default defineConfig({ test: { include: ['src/__tests__/**/*.test.ts'], environment: 'node', testTimeout: 10000, }, });
Read the script before you install anything that runs on your machine. This is the one part of a plugin that acts without being asked.
Your AI software team. Built on Claude Code. vibecosystem turns Claude Code into a full AI software team — 138 specialized agents that plan, build, review, test, and learn from every mistake. No configuration needed — just install and code.
Repo: vibeeval/vibecosystem

