
Routines 把 prompt、仓库、云环境、连接器和触发器打包成可重复执行的 Claude Code 云端任务。本篇拆解 Schedule、API、GitHub 三类触发器,以及云环境、权限边界和适合团队试水的落地顺序。
| 触发器 | 适合什么任务 | 最该注意什么 |
|---|---|---|
| Schedule | 每小时、每天、工作日、每周,或未来某个时间点跑一次;自定义 cron 目前可通过 /schedule update 设置,最小间隔是一小时。1 | 定时任务会有几分钟 stagger,同一个 routine 的偏移保持一致,不适合要求秒级准点的流程。1 |
| API | 外部系统向 routine 专属 /fire endpoint 发 POST,请求体可带一个自由文本 text 字段,适合告警、部署、内部工具触发。1 | token 只显示一次,要放进告警或 CI 的 secret store;API 触发目前从 web UI 添加,CLI 不能创建或撤销 token。1 |
| GitHub | 对 pull request 和 release 事件启动新 session,可按 author、title、body、base branch、head branch、labels、draft、merged 等字段过滤。1 | /web-setup 只授予仓库 clone 访问,不会安装 Claude GitHub App,也不会启用 webhook;GitHub trigger 需要安装 GitHub App。1 |
| 配置或资源 | 云端 routine 能不能用 | 该怎么处理 |
|---|---|---|
仓库里的 CLAUDE.md、.claude/settings.json hooks、.mcp.json、.claude/rules/、.claude/skills/ | 可以,原因是它们属于仓库 clone 的一部分。2 | 想让 routine 稳定复现,就把规则、skills、agents、commands 提交到 repo。 |
用户级 ~/.claude/CLAUDE.md、本机 ~/.claude/skills/、本机 claude mcp add 加的 MCP server | 不会自动带进云端,因为它们在你的机器上,不在仓库里。2 | 要么改成仓库级 .mcp.json,要么在 claude.ai 侧添加 connector。 |
| setup script 安装的依赖、工具和 Docker image | 可以缓存。setup script 第一次跑完后,Anthropic 会 snapshot 文件系统,后续新 session 从缓存启动;缓存保存文件,不保存正在运行的进程。2 | 把慢安装放 setup script,把每次都要启动的服务放 session 内命令或 SessionStart hook。 |
| 环境变量和 setup script 里的 secret | 能用,但目前没有专用 secrets store;环境变量和 setup script 存在环境配置里,能编辑环境的人可以看到。2 | 少放长期高权限 secret。能用 connector 或 GitHub proxy 的地方,不要自己塞 token。 |
Name:
nightly-docs-drift-check
Prompt:
Read merged pull requests from the last 24 hours.
Identify API, CLI flag, config, or behavior changes that may require docs updates.
Do not modify source code.
If docs are stale, open a PR that updates only docs/ and includes:
- PR links that caused the change
- files changed
- a short reviewer checklist
If no docs update is needed, leave a summary comment and stop.
Repositories:
org/product-repo
org/docs-repo
Environment:
default cloud environment
trusted network access
Triggers:
schedule: weekdays 09:00
GitHub: pull_request.closed, is merged = true, label contains docs-impacttext 字段,它是 freeform text,不会被 routine 当成结构化 JSON 解析。官方示例里,调用方把告警说明放进 text,routine 会把这段内容和保存好的 prompt 一起交给 Claude。1curl -X POST "https://api.anthropic.com/v1/claude_code/routines/trig_xxx/fire" \
-H "Authorization: Bearer $ROUTINE_TOKEN" \
-H "anthropic-beta: experimental-cc-routine-2026-04-01" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{"text":"Sentry alert SEN-4521 fired in prod. Stack trace attached."}'text。例如「只能改 src/payments/ 和 tests/payments/」「必须先复现失败」「只能开 draft PR」这些规则不要依赖告警系统临时传,应该固化在 routine 里。label contains docs-impact,比「所有 PR opened 都跑一遍」更容易控成本,也更少打扰团队。claude/ 前缀的分支,除非你在该 repo 上打开 unrestricted branch pushes。1 这条默认值很重要,建议不要轻易关。Outcome: changed | no_change | blocked
Inputs inspected:
- PR: #1234
- Files: src/api/client.ts, docs/api.md
Actions taken:
- Opened draft PR: <url>
Blocked because:
- missing staging API token
Next human action:
- add token to environment or mark this run ignoredCLAUDE_CODE_REMOTE_SESSION_ID 读到自己的 session ID;从 v2.1.179 起,web session 创建的 commit 会带 Claude-Session: trailer,PR body 也会包含 session URL。2 这能让 reviewer 回到原始运行记录里查它为什么这么改。claude/ 分支限制先保留,unrestricted branch pushes 只有在非常明确的维护任务里再考虑。changed / no_change / blocked 这类状态,让人能一眼知道它到底完成了什么。docs.anthropic.com
docs.anthropic.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.