SuperAPI AI 工具集

session-start-hook

编程与开发

查看项目

更新于 10-15 17:19

技能介绍

该技能用于为 Claude Code on the web 创建 SessionStart 启动钩子,在会话启动阶段安装依赖,使测试与 linter 可用。钩子通过 stdin 接收 JSON 输入,包含 session_id、source、transcript_path、permission_mode、hook_event_name、cwd 等字段。

主要能力与用法:可编写脚本安装依赖;支持异步模式,输出 {"async": true, "asyncTimeout": 300000} 后在后台运行,降低延迟但可能产生竞态。可用环境变量 $CLAUDE_PROJECT_DIR、$CLAUDE_ENV_FILE、$CLAUDE_CODE_REMOTE;通过 $CLAUDE_ENV_FILE 持久化变量,例如 echo 'export PYTHONPATH="."' >> "$CLAUDE_ENV_FILE",并可用 $CLAUDE_CODE_REMOTE 判断远程环境。

工作流:分析依赖清单(如 package.json、pyproject.toml、requirements.txt、Cargo.toml、go.mod、Gemfile);设计幂等、非交互的钩子,首版不使用异步;创建 .claude/hooks/session-start.sh 并 chmod +x;在 .claude/settings.json 注册 SessionStart 钩子,命令为 $CLAUDE_PROJECT_DIR/.claude/hooks/session-start.sh;用 CLAUDE_CODE_REMOTE=true 直接运行脚本验证,并分别验证 linter 与单个测试,最后提交并推送。

限制:默认仅面向 web 环境;异步模式存在竞态;钩子完成后容器状态会被缓存,建议优先 npm install 而非 npm ci;同步模式下远程会话需等钩子完成才启动。合并到默认分支后,后续会话都会使用该钩子。