mcpField
F
file-watcher

file-watcher

github.com/rohitg00Agent 工作流2.9k149 次安装4 周前更新
代码仓库

关于 file-watcher

面向 Claude Code 的技能,可根据文件系统变化构建响应式工作流。它通过钩子注册监视路径,并在文件变更时运行处理程序。

主要功能

  1. 01通过钩子注册文件监视器
  2. 02响应文件变更事件
  3. 03通过 CLAUDE_ENV_FILE 注入环境变量
  4. 04配置文件名匹配规则

适用场景

  1. 01响应 .env 变更
  2. 02跟踪 package.json 依赖更新
  3. 03响应 tsconfig.json 变更
  4. 04监控构建输出

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rohitg00/pro-workflow --skill file-watcher

安装后在 Claude Code 中输入/file-watcher确认已加载。

详细介绍

文件监听器

使用 Claude Code 的 FileChanged 和 CwdChanged hook,创建可对文件系统更改作出响应的响应式工作流。

触发条件

适用于:

  • 为配置更改设置自动重新加载
  • 监听依赖项更新
  • 监控构建输出
  • 创建响应式开发工作流

文件监听的工作方式

Claude Code 的 SessionStart 和 CwdChanged hook 支持返回 watchPaths 来注册文件监听器。当前的 cwd-changed.js 脚本专注于环境变量注入;如需添加监听器注册,你的 hook 脚本必须输出以下 JSON 结构:

{
  "hookSpecificOutput": {
    "hookEventName": "SessionStart",
    "watchPaths": [
      "/absolute/path/to/.env",
      "/absolute/path/to/package.json"
    ]
  }
}

监听的文件发生更改时,会触发 FileChanged hook,并附带:

{
  "hook_event_name": "FileChanged",
  "file_path": "/path/to/changed/file",
  "event": "change"
}

环境变量注入

CwdChanged 和 FileChanged hook 可以写入 CLAUDE_ENV_FILE,将环境变量注入后续的 Bash 命令:

echo "export PROJECT_TYPE=node" >> "$CLAUDE_ENV_FILE"
echo "export TEST_CMD='npm test'" >> "$CLAUDE_ENV_FILE"

常见监听模式

监听 .env 的更改
const envFile = path.join(projectRoot, '.env');
if (fs.existsSync(envFile)) {
  output.hookSpecificOutput = {
    hookEventName: 'SessionStart',
    watchPaths: [envFile]
  };
}
监听 package.json 中的依赖项更改

检测依赖项是否发生更改,并提醒运行 npm install。

监听 tsconfig.json 中的配置更改

提醒在配置更改后重新启动 TypeScript 检查。

设置

在 hooks.json 中添加:

{
  "FileChanged": [{
    "matcher": ".env|package.json|tsconfig.json",
    "hooks": [{
      "type": "command",
      "command": "node scripts/file-changed.js"
    }]
  }]
}

规则

  • watchPaths 使用绝对路径(Claude Code 要求)
  • 匹配器使用竖线分隔文件名
  • 监听器使用 500ms 稳定性阈值和 200ms 轮询间隔
  • file-changed 处理程序应保持快速(<5s),以避免阻塞
  • 使用 CLAUDE_ENV_FILE 注入环境变量,而不是直接导出

评论

支持 Markdown