Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Configure file watching hooks to auto-react to config changes, env file updates, and dependency modifications. Use to set up reactive workflows.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -38% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -25% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -50% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -39% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -36% | 0% |
Use Claude Code's FileChanged and CwdChanged hooks to create reactive workflows that respond to file system changes.
Use when:
Claude Code's SessionStart and CwdChanged hooks support returning watchPaths to register file watchers. The current cwd-changed.js script focuses on env injection; to add watch registration, your hook script must output this JSON structure:
json{ "hookSpecificOutput": { "hookEventName": "SessionStart", "watchPaths": [ "/absolute/path/to/.env", "/absolute/path/to/package.json" ] } }
When watched files change, the FileChanged hook fires with:
json{ "hook_event_name": "FileChanged", "file_path": "/path/to/changed/file", "event": "change" }
CwdChanged and FileChanged hooks can write to CLAUDE_ENV_FILE to inject environment variables into subsequent Bash commands:
bashecho "export PROJECT_TYPE=node" >> "$CLAUDE_ENV_FILE" echo "export TEST_CMD='npm test'" >> "$CLAUDE_ENV_FILE"
javascriptconst envFile = path.join(projectRoot, '.env'); if (fs.existsSync(envFile)) { output.hookSpecificOutput = { hookEventName: 'SessionStart', watchPaths: [envFile] }; }
Detect when dependencies change and remind to run npm install.
Remind to restart TypeScript checks when config changes.
Add to hooks.json:
json{ "FileChanged": [{ "matcher": ".env|package.json|tsconfig.json", "hooks": [{ "type": "command", "command": "node scripts/file-changed.js" }] }] }
CLAUDE_ENV_FILE for injecting env vars, not direct exportOther measured skills in the registry, with their headline benchmark lift.