diff --git a/README.md b/README.md index ab4f8d4..eb270b0 100644 --- a/README.md +++ b/README.md @@ -183,7 +183,7 @@ Open the part relevant to your current question. Use the resource links above fo
Optional hooks: installation, coverage, and limits -

OPTIONAL CONTINUITY + CHECKPOINTS · NO MERGE GUARD

Choose continuity for compact recovery, checkpoints for commit/review reminders, or both. Both are off by default. Checkpoints advises; it does not enforce commits or certify readiness. Protocol tests do not establish native event delivery or model compliance. The agent does not dynamically register its own hooks.

Choose your optional presets

./structured-coding/scripts/install codex --project /path/to/project --hooks checkpoints --dry-run
+

OPTIONAL CONTINUITY + CHECKPOINTS + STANDARDS · NO MERGE GUARD

Choose continuity for compact recovery, checkpoints for commit/review reminders, standards to run your declared checks after a commit, or any combination. Both are off by default. Checkpoints advises; it does not enforce commits or certify readiness. Protocol tests do not establish native event delivery or model compliance. The agent does not dynamically register its own hooks.

Choose your optional presets

./structured-coding/scripts/install codex --project /path/to/project --hooks checkpoints --dry-run
 ./structured-coding/scripts/install codex --project /path/to/project --hooks checkpoints
 ./structured-coding/scripts/install codex --project /path/to/project --hooks continuity checkpoints
 ./structured-coding/scripts/install codex --project /path/to/project --check-hooks
diff --git a/README.zh-CN.md b/README.zh-CN.md
index 5810ce3..21d4f29 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -183,7 +183,7 @@ scope 按工具分别设置,因为正确答案本来就因工具而异:只
 
可选 hook:安装、覆盖范围和限制 -

可选 CONTINUITY + CHECKPOINTS · 尚无 MERGE GUARD

需要 compact 恢复可选 continuity,需要 commit/review 提醒可选 checkpoints,也可同时安装。默认都不开。Checkpoints 提供建议,不拦截 commit,也不证明已达到交付条件。Protocol 测试不能证明 native 事件送达或模型遵守了提示。agent 不会动态注册自己的 hook。

选择需要的 preset

./structured-coding/scripts/install codex --project /path/to/project --hooks checkpoints --dry-run
+

可选 CONTINUITY + CHECKPOINTS + STANDARDS · 无 MERGE GUARD

需要 compact 恢复可选 continuity,需要 commit/review 提醒可选 checkpoints,需要在 commit 后跑你声明的检查可选 standards,也可任意组合。默认都不开。Checkpoints 提供建议,不拦截 commit,也不证明已达到交付条件。Protocol 测试不能证明 native 事件送达或模型遵守了提示。agent 不会动态注册自己的 hook。

选择需要的 preset

./structured-coding/scripts/install codex --project /path/to/project --hooks checkpoints --dry-run
 ./structured-coding/scripts/install codex --project /path/to/project --hooks checkpoints
 ./structured-coding/scripts/install codex --project /path/to/project --hooks continuity checkpoints
 ./structured-coding/scripts/install codex --project /path/to/project --check-hooks
diff --git a/dist/claude-code/structured-coding/README.md b/dist/claude-code/structured-coding/README.md
index b910af7..2666d71 100644
--- a/dist/claude-code/structured-coding/README.md
+++ b/dist/claude-code/structured-coding/README.md
@@ -232,7 +232,7 @@ On resume, reload the current design, filled contract, and full execution rules;
 
 ## Optional hooks: installation, coverage, and limits
 
-Choose continuity for compact recovery, checkpoints for commit/review reminders, or both. Both are off by default. Checkpoints advises; it does not enforce commits or certify readiness. Protocol tests do not establish native event delivery or model compliance. The agent does not dynamically register its own hooks.
+Choose continuity for compact recovery, checkpoints for commit/review reminders, standards to run your declared checks after a commit, or any combination. Both are off by default. Checkpoints advises; it does not enforce commits or certify readiness. Protocol tests do not establish native event delivery or model compliance. The agent does not dynamically register its own hooks.
 
 ```sh
 ./structured-coding/scripts/install codex --project /path/to/project --hooks checkpoints --dry-run
diff --git a/dist/claude-code/structured-coding/README.zh-CN.md b/dist/claude-code/structured-coding/README.zh-CN.md
index bdedf05..82ad56f 100644
--- a/dist/claude-code/structured-coding/README.zh-CN.md
+++ b/dist/claude-code/structured-coding/README.zh-CN.md
@@ -232,7 +232,7 @@ Compact 是 host 为腾出 context 而压缩聊天历史的过程,不是新建
 
 ## 可选 hook:安装、覆盖范围和限制
 
-需要 compact 恢复可选 continuity,需要 commit/review 提醒可选 checkpoints,也可同时安装。默认都不开。Checkpoints 提供建议,不拦截 commit,也不证明已达到交付条件。Protocol 测试不能证明 native 事件送达或模型遵守了提示。agent 不会动态注册自己的 hook。
+需要 compact 恢复可选 continuity,需要 commit/review 提醒可选 checkpoints,需要在 commit 后跑你声明的检查可选 standards,也可任意组合。默认都不开。Checkpoints 提供建议,不拦截 commit,也不证明已达到交付条件。Protocol 测试不能证明 native 事件送达或模型遵守了提示。agent 不会动态注册自己的 hook。
 
 ```sh
 ./structured-coding/scripts/install codex --project /path/to/project --hooks checkpoints --dry-run
diff --git a/dist/claude-code/structured-coding/VERSION b/dist/claude-code/structured-coding/VERSION
new file mode 100644
index 0000000..6e8bf73
--- /dev/null
+++ b/dist/claude-code/structured-coding/VERSION
@@ -0,0 +1 @@
+0.1.0
diff --git a/dist/claude-code/structured-coding/references/hook-contract.md b/dist/claude-code/structured-coding/references/hook-contract.md
index ca700a4..bd37038 100644
--- a/dist/claude-code/structured-coding/references/hook-contract.md
+++ b/dist/claude-code/structured-coding/references/hook-contract.md
@@ -1,6 +1,6 @@
 # Hook behavior contract
 
-Status: **BEHAVIOR SPECIFICATION — optional [continuity preset](continuity.md) implements mechanical H4 checks, H5 snapshot attempts, and the H6 recovery-instruction subset.** It is not registered by default. The optional [checkpoints preset](checkpoints.md) adds H2 commit-preparation advice and an H7 review-intent notice, with zero automatic continuations. Full H1/H2/H3/H7 enforcement and H6 mutation enforcement remain unimplemented. The requirements below remain the complete target, not a claim of full adapter coverage.
+Status: **BEHAVIOR SPECIFICATION — optional [continuity preset](continuity.md) implements mechanical H4 checks, H5 snapshot attempts, and the H6 recovery-instruction subset.** It is not registered by default. The optional [checkpoints preset](checkpoints.md) adds H2 commit-preparation advice and an H7 review-intent notice, with zero automatic continuations. Full H1/H2/H3/H7 enforcement and H6 mutation enforcement remain unimplemented. The optional [standards preset](standards.md) is **not** an adapter for anything specified here: it reports a project's own declared checks and review conventions after a direct `git commit`, which is a different axis from the freeze, merge and continuity behaviour this contract describes, and it blocks nothing. The requirements below remain the complete target, not a claim of full adapter coverage.
 
 This contract translates the workflow's freeze, merge, and context-continuity requirements into observable behavior. Event names below describe the workflow; actual host adapters are separate work. Supported host events and their sources are listed in [platforms.md](platforms.md).
 
diff --git a/dist/claude-code/structured-coding/references/platforms.md b/dist/claude-code/structured-coding/references/platforms.md
index a14f482..3047d1d 100644
--- a/dist/claude-code/structured-coding/references/platforms.md
+++ b/dist/claude-code/structured-coding/references/platforms.md
@@ -31,11 +31,11 @@ From the cloned repository, use the exact project Git root (quote paths with spa
 ./scripts/install codex --project /path/to/project --remove-hooks
 ```
 
-Use `claude-code` for Claude Code. Python 3.9+, Git and macOS/Linux/WSL are required. Current conservative host floors are Codex 0.153.4 and Claude Code 2.1.261; host delivery needs separate native verification. Restart the host and inspect `/hooks` after changes; the installer does not grant trust or enable disabled hooks.
+Use `claude-code` for Claude Code. Python 3.9+, Git and macOS/Linux/WSL are required. Current conservative host floors are Codex 0.153.4 and Claude Code 2.1.261; host delivery needs separate native verification. Restart the host and inspect `/hooks` after changes; the installer does not grant trust or enable disabled hooks. The installed copy carries its release in `VERSION`, and `--check-hooks` reports it, so you can tell which one a project has.
 
 Codex requires trust at **two** levels, and a registration is inert until both are given. First the project: until it is trusted, Codex loads no project-local hooks at all and says so on stderr, naming the file it wants the entry in. That entry must live in the `config.toml` under `CODEX_HOME`; a `-c projects."".trust_level="trusted"` override on the command line does **not** satisfy it, which is the failure that looks like hooks being delivered but ignored. Second, each hook definition is trusted by its own content hash, so changing a command asks again. Both are Codex's own mechanism; neither is granted by this installer. Claude Code has no equivalent second level.
 
-Installation is additive. Standards alone registers shared SessionStart and PostToolUse, and is the only preset that runs anything; its PostToolUse hook carries a 60-second budget rather than 12, because a check is slower than a notice. Checkpoints alone registers shared SessionStart, PreToolUse and Stop, without compact handlers. Continuity alone registers shared SessionStart and manual/automatic PreCompact. Both use five groups, with SessionStart exactly once. Removing one keeps the other usable. Bare `--remove-hooks` removes all owned presets and preserves the skill and session data. Repeating a selection is a byte-preserving no-op; duplicate/unknown names are rejected.
+Installation is additive. Standards alone registers shared SessionStart and PostToolUse, and is the only preset that runs anything; its PostToolUse hook carries a 60-second budget rather than 12, because a check is slower than a notice. Checkpoints alone registers shared SessionStart, PreToolUse and Stop, without compact handlers. Continuity alone registers shared SessionStart and manual/automatic PreCompact. All three together register six groups, with SessionStart exactly once. Removing one keeps the other usable. Bare `--remove-hooks` removes all owned presets and preserves the skill and session data. Repeating a selection is a byte-preserving no-op; duplicate/unknown names are rejected.
 
 One aggregate receipt owns the original settings backup. Legacy continuity receipts remain readable and migrate only on an explicit state change; check, preview and unchanged reinstall do not rewrite them. Existing customized runtime dependencies are never overwritten: compare/back up the installed skill and explicitly update it first. Missing, changed or duplicate owned groups, unknown receipt schemas, and redirected/unverifiable paths cause refusal. New installations register commands that contain no machine-specific path, so a registration committed to a shared settings file works on a teammate's machine; each machine still reviews and trusts the hooks itself. An installation made by an older release keeps its absolute commands, stays inspectable and removable, and is rewritten only by `--upgrade-registration`, which changes every command and therefore requires trusting the hooks again. `--check-hooks` says whether a registration is portable, and names the recorded interpreter only for an absolute one.
 
diff --git a/dist/claude-code/structured-coding/references/platforms.zh-CN.md b/dist/claude-code/structured-coding/references/platforms.zh-CN.md
index 8b66fc9..af19c8d 100644
--- a/dist/claude-code/structured-coding/references/platforms.zh-CN.md
+++ b/dist/claude-code/structured-coding/references/platforms.zh-CN.md
@@ -31,11 +31,11 @@ Codex 的目录和调用方式依据 [OpenAI 官方 skills 文档](https://learn
 ./scripts/install codex --project /path/to/project --remove-hooks
 ```
 
-Claude Code 用户把 `codex` 换成 `claude-code`。需要 Python 3.9+、Git 和 macOS/Linux/WSL。目前保守的宿主版本下限是 Codex 0.153.4 和 Claude Code 2.1.261;实际事件送达还需要独立的 native 验证。修改后重启 host 并检查 `/hooks`;installer 不授予信任,也不会打开被禁用的 hook。
+Claude Code 用户把 `codex` 换成 `claude-code`。需要 Python 3.9+、Git 和 macOS/Linux/WSL。目前保守的宿主版本下限是 Codex 0.153.4 和 Claude Code 2.1.261;实际事件送达还需要独立的 native 验证。修改后重启 host 并检查 `/hooks`;installer 不授予信任,也不会打开被禁用的 hook。安装后的副本在 `VERSION` 里带着自己的发布版本,`--check-hooks` 会报告它,所以你能知道某个项目装的是哪一版。
 
 Codex 的信任分**两层**,两层都给到之前注册都是空转的。第一层是项目:在项目被信任之前,Codex 根本不加载任何 project-local hook,并会在 stderr 上说明,同时指出它要求写入的文件。那条记录必须写在 `CODEX_HOME` 下的 `config.toml` 里;命令行上的 `-c projects."".trust_level="trusted"` 覆盖**不满足**这一条,而这种失败看起来像是 hook 被送达却被忽略了。第二层是每个 hook 定义按自身内容 hash 单独信任,所以改动命令会重新询问。两层都是 Codex 自己的机制,installer 都不会替你授予。Claude Code 没有对应的第二层。
 
-安装是追加操作。单装 standards 会注册共享 SessionStart 和 PostToolUse,它是唯一会真正运行东西的 preset;它的 PostToolUse hook 预算是 60 秒而不是 12 秒,因为跑一次检查比发一条提示慢。单装 checkpoints 会注册共享 SessionStart、PreToolUse 和 Stop,不注册 compact handler。单装 continuity 会注册共享 SessionStart 和手动/自动 PreCompact。组合安装共五个 group,SessionStart 只出现一次。移除一个后另一个仍可用。裸 `--remove-hooks` 移除全部自有 preset,保留 skill 和 session 数据。重复安装同一选择不会改变文件字节;重复或未知名称会被拒绝。
+安装是追加操作。单装 standards 会注册共享 SessionStart 和 PostToolUse,它是唯一会真正运行东西的 preset;它的 PostToolUse hook 预算是 60 秒而不是 12 秒,因为跑一次检查比发一条提示慢。单装 checkpoints 会注册共享 SessionStart、PreToolUse 和 Stop,不注册 compact handler。单装 continuity 会注册共享 SessionStart 和手动/自动 PreCompact。三个一起安装共六个 group,SessionStart 只出现一次。移除一个后另一个仍可用。裸 `--remove-hooks` 移除全部自有 preset,保留 skill 和 session 数据。重复安装同一选择不会改变文件字节;重复或未知名称会被拒绝。
 
 一份 aggregate receipt 保存原始设置备份。旧 continuity receipt 仍可读取,仅在明确改变安装状态时迁移;检查、预览和未改变选择的重装都不改写它。installer 不覆盖定制过的 runtime 依赖:先比较、备份已有 skill,再明确升级。自有 group 缺失、被修改或重复,receipt schema 未知,以及路径被重定向或无法核验,都会导致拒绝。新安装注册的命令不含任何机器相关路径,因此提交到共享设置文件里的注册在同事的机器上同样有效;每台机器仍需自己审阅并信任这些 hook。旧版本装出来的注册保留其绝对路径命令,仍可检查、仍可移除,只有 `--upgrade-registration` 会重写它;重写会改变每一条命令,因此需要重新信任这些 hook。`--check-hooks` 会说明注册是否可移植,并且只对绝对路径的注册报告记录的 interpreter。
 
diff --git a/dist/codex/structured-coding/README.md b/dist/codex/structured-coding/README.md
index b910af7..2666d71 100644
--- a/dist/codex/structured-coding/README.md
+++ b/dist/codex/structured-coding/README.md
@@ -232,7 +232,7 @@ On resume, reload the current design, filled contract, and full execution rules;
 
 ## Optional hooks: installation, coverage, and limits
 
-Choose continuity for compact recovery, checkpoints for commit/review reminders, or both. Both are off by default. Checkpoints advises; it does not enforce commits or certify readiness. Protocol tests do not establish native event delivery or model compliance. The agent does not dynamically register its own hooks.
+Choose continuity for compact recovery, checkpoints for commit/review reminders, standards to run your declared checks after a commit, or any combination. Both are off by default. Checkpoints advises; it does not enforce commits or certify readiness. Protocol tests do not establish native event delivery or model compliance. The agent does not dynamically register its own hooks.
 
 ```sh
 ./structured-coding/scripts/install codex --project /path/to/project --hooks checkpoints --dry-run
diff --git a/dist/codex/structured-coding/README.zh-CN.md b/dist/codex/structured-coding/README.zh-CN.md
index bdedf05..82ad56f 100644
--- a/dist/codex/structured-coding/README.zh-CN.md
+++ b/dist/codex/structured-coding/README.zh-CN.md
@@ -232,7 +232,7 @@ Compact 是 host 为腾出 context 而压缩聊天历史的过程,不是新建
 
 ## 可选 hook:安装、覆盖范围和限制
 
-需要 compact 恢复可选 continuity,需要 commit/review 提醒可选 checkpoints,也可同时安装。默认都不开。Checkpoints 提供建议,不拦截 commit,也不证明已达到交付条件。Protocol 测试不能证明 native 事件送达或模型遵守了提示。agent 不会动态注册自己的 hook。
+需要 compact 恢复可选 continuity,需要 commit/review 提醒可选 checkpoints,需要在 commit 后跑你声明的检查可选 standards,也可任意组合。默认都不开。Checkpoints 提供建议,不拦截 commit,也不证明已达到交付条件。Protocol 测试不能证明 native 事件送达或模型遵守了提示。agent 不会动态注册自己的 hook。
 
 ```sh
 ./structured-coding/scripts/install codex --project /path/to/project --hooks checkpoints --dry-run
diff --git a/dist/codex/structured-coding/VERSION b/dist/codex/structured-coding/VERSION
new file mode 100644
index 0000000..6e8bf73
--- /dev/null
+++ b/dist/codex/structured-coding/VERSION
@@ -0,0 +1 @@
+0.1.0
diff --git a/dist/codex/structured-coding/references/hook-contract.md b/dist/codex/structured-coding/references/hook-contract.md
index ca700a4..bd37038 100644
--- a/dist/codex/structured-coding/references/hook-contract.md
+++ b/dist/codex/structured-coding/references/hook-contract.md
@@ -1,6 +1,6 @@
 # Hook behavior contract
 
-Status: **BEHAVIOR SPECIFICATION — optional [continuity preset](continuity.md) implements mechanical H4 checks, H5 snapshot attempts, and the H6 recovery-instruction subset.** It is not registered by default. The optional [checkpoints preset](checkpoints.md) adds H2 commit-preparation advice and an H7 review-intent notice, with zero automatic continuations. Full H1/H2/H3/H7 enforcement and H6 mutation enforcement remain unimplemented. The requirements below remain the complete target, not a claim of full adapter coverage.
+Status: **BEHAVIOR SPECIFICATION — optional [continuity preset](continuity.md) implements mechanical H4 checks, H5 snapshot attempts, and the H6 recovery-instruction subset.** It is not registered by default. The optional [checkpoints preset](checkpoints.md) adds H2 commit-preparation advice and an H7 review-intent notice, with zero automatic continuations. Full H1/H2/H3/H7 enforcement and H6 mutation enforcement remain unimplemented. The optional [standards preset](standards.md) is **not** an adapter for anything specified here: it reports a project's own declared checks and review conventions after a direct `git commit`, which is a different axis from the freeze, merge and continuity behaviour this contract describes, and it blocks nothing. The requirements below remain the complete target, not a claim of full adapter coverage.
 
 This contract translates the workflow's freeze, merge, and context-continuity requirements into observable behavior. Event names below describe the workflow; actual host adapters are separate work. Supported host events and their sources are listed in [platforms.md](platforms.md).
 
diff --git a/dist/codex/structured-coding/references/platforms.md b/dist/codex/structured-coding/references/platforms.md
index a14f482..3047d1d 100644
--- a/dist/codex/structured-coding/references/platforms.md
+++ b/dist/codex/structured-coding/references/platforms.md
@@ -31,11 +31,11 @@ From the cloned repository, use the exact project Git root (quote paths with spa
 ./scripts/install codex --project /path/to/project --remove-hooks
 ```
 
-Use `claude-code` for Claude Code. Python 3.9+, Git and macOS/Linux/WSL are required. Current conservative host floors are Codex 0.153.4 and Claude Code 2.1.261; host delivery needs separate native verification. Restart the host and inspect `/hooks` after changes; the installer does not grant trust or enable disabled hooks.
+Use `claude-code` for Claude Code. Python 3.9+, Git and macOS/Linux/WSL are required. Current conservative host floors are Codex 0.153.4 and Claude Code 2.1.261; host delivery needs separate native verification. Restart the host and inspect `/hooks` after changes; the installer does not grant trust or enable disabled hooks. The installed copy carries its release in `VERSION`, and `--check-hooks` reports it, so you can tell which one a project has.
 
 Codex requires trust at **two** levels, and a registration is inert until both are given. First the project: until it is trusted, Codex loads no project-local hooks at all and says so on stderr, naming the file it wants the entry in. That entry must live in the `config.toml` under `CODEX_HOME`; a `-c projects."".trust_level="trusted"` override on the command line does **not** satisfy it, which is the failure that looks like hooks being delivered but ignored. Second, each hook definition is trusted by its own content hash, so changing a command asks again. Both are Codex's own mechanism; neither is granted by this installer. Claude Code has no equivalent second level.
 
-Installation is additive. Standards alone registers shared SessionStart and PostToolUse, and is the only preset that runs anything; its PostToolUse hook carries a 60-second budget rather than 12, because a check is slower than a notice. Checkpoints alone registers shared SessionStart, PreToolUse and Stop, without compact handlers. Continuity alone registers shared SessionStart and manual/automatic PreCompact. Both use five groups, with SessionStart exactly once. Removing one keeps the other usable. Bare `--remove-hooks` removes all owned presets and preserves the skill and session data. Repeating a selection is a byte-preserving no-op; duplicate/unknown names are rejected.
+Installation is additive. Standards alone registers shared SessionStart and PostToolUse, and is the only preset that runs anything; its PostToolUse hook carries a 60-second budget rather than 12, because a check is slower than a notice. Checkpoints alone registers shared SessionStart, PreToolUse and Stop, without compact handlers. Continuity alone registers shared SessionStart and manual/automatic PreCompact. All three together register six groups, with SessionStart exactly once. Removing one keeps the other usable. Bare `--remove-hooks` removes all owned presets and preserves the skill and session data. Repeating a selection is a byte-preserving no-op; duplicate/unknown names are rejected.
 
 One aggregate receipt owns the original settings backup. Legacy continuity receipts remain readable and migrate only on an explicit state change; check, preview and unchanged reinstall do not rewrite them. Existing customized runtime dependencies are never overwritten: compare/back up the installed skill and explicitly update it first. Missing, changed or duplicate owned groups, unknown receipt schemas, and redirected/unverifiable paths cause refusal. New installations register commands that contain no machine-specific path, so a registration committed to a shared settings file works on a teammate's machine; each machine still reviews and trusts the hooks itself. An installation made by an older release keeps its absolute commands, stays inspectable and removable, and is rewritten only by `--upgrade-registration`, which changes every command and therefore requires trusting the hooks again. `--check-hooks` says whether a registration is portable, and names the recorded interpreter only for an absolute one.
 
diff --git a/dist/codex/structured-coding/references/platforms.zh-CN.md b/dist/codex/structured-coding/references/platforms.zh-CN.md
index 8b66fc9..af19c8d 100644
--- a/dist/codex/structured-coding/references/platforms.zh-CN.md
+++ b/dist/codex/structured-coding/references/platforms.zh-CN.md
@@ -31,11 +31,11 @@ Codex 的目录和调用方式依据 [OpenAI 官方 skills 文档](https://learn
 ./scripts/install codex --project /path/to/project --remove-hooks
 ```
 
-Claude Code 用户把 `codex` 换成 `claude-code`。需要 Python 3.9+、Git 和 macOS/Linux/WSL。目前保守的宿主版本下限是 Codex 0.153.4 和 Claude Code 2.1.261;实际事件送达还需要独立的 native 验证。修改后重启 host 并检查 `/hooks`;installer 不授予信任,也不会打开被禁用的 hook。
+Claude Code 用户把 `codex` 换成 `claude-code`。需要 Python 3.9+、Git 和 macOS/Linux/WSL。目前保守的宿主版本下限是 Codex 0.153.4 和 Claude Code 2.1.261;实际事件送达还需要独立的 native 验证。修改后重启 host 并检查 `/hooks`;installer 不授予信任,也不会打开被禁用的 hook。安装后的副本在 `VERSION` 里带着自己的发布版本,`--check-hooks` 会报告它,所以你能知道某个项目装的是哪一版。
 
 Codex 的信任分**两层**,两层都给到之前注册都是空转的。第一层是项目:在项目被信任之前,Codex 根本不加载任何 project-local hook,并会在 stderr 上说明,同时指出它要求写入的文件。那条记录必须写在 `CODEX_HOME` 下的 `config.toml` 里;命令行上的 `-c projects."".trust_level="trusted"` 覆盖**不满足**这一条,而这种失败看起来像是 hook 被送达却被忽略了。第二层是每个 hook 定义按自身内容 hash 单独信任,所以改动命令会重新询问。两层都是 Codex 自己的机制,installer 都不会替你授予。Claude Code 没有对应的第二层。
 
-安装是追加操作。单装 standards 会注册共享 SessionStart 和 PostToolUse,它是唯一会真正运行东西的 preset;它的 PostToolUse hook 预算是 60 秒而不是 12 秒,因为跑一次检查比发一条提示慢。单装 checkpoints 会注册共享 SessionStart、PreToolUse 和 Stop,不注册 compact handler。单装 continuity 会注册共享 SessionStart 和手动/自动 PreCompact。组合安装共五个 group,SessionStart 只出现一次。移除一个后另一个仍可用。裸 `--remove-hooks` 移除全部自有 preset,保留 skill 和 session 数据。重复安装同一选择不会改变文件字节;重复或未知名称会被拒绝。
+安装是追加操作。单装 standards 会注册共享 SessionStart 和 PostToolUse,它是唯一会真正运行东西的 preset;它的 PostToolUse hook 预算是 60 秒而不是 12 秒,因为跑一次检查比发一条提示慢。单装 checkpoints 会注册共享 SessionStart、PreToolUse 和 Stop,不注册 compact handler。单装 continuity 会注册共享 SessionStart 和手动/自动 PreCompact。三个一起安装共六个 group,SessionStart 只出现一次。移除一个后另一个仍可用。裸 `--remove-hooks` 移除全部自有 preset,保留 skill 和 session 数据。重复安装同一选择不会改变文件字节;重复或未知名称会被拒绝。
 
 一份 aggregate receipt 保存原始设置备份。旧 continuity receipt 仍可读取,仅在明确改变安装状态时迁移;检查、预览和未改变选择的重装都不改写它。installer 不覆盖定制过的 runtime 依赖:先比较、备份已有 skill,再明确升级。自有 group 缺失、被修改或重复,receipt schema 未知,以及路径被重定向或无法核验,都会导致拒绝。新安装注册的命令不含任何机器相关路径,因此提交到共享设置文件里的注册在同事的机器上同样有效;每台机器仍需自己审阅并信任这些 hook。旧版本装出来的注册保留其绝对路径命令,仍可检查、仍可移除,只有 `--upgrade-registration` 会重写它;重写会改变每一条命令,因此需要重新信任这些 hook。`--check-hooks` 会说明注册是否可移植,并且只对绝对路径的注册报告记录的 interpreter。
 
diff --git a/dist/structured-coding-claude-code.zip b/dist/structured-coding-claude-code.zip
index 4c1e872..0482f69 100644
Binary files a/dist/structured-coding-claude-code.zip and b/dist/structured-coding-claude-code.zip differ
diff --git a/dist/structured-coding-codex.zip b/dist/structured-coding-codex.zip
index 37668e9..9562ba1 100644
Binary files a/dist/structured-coding-codex.zip and b/dist/structured-coding-codex.zip differ
diff --git a/docs/content.en.json b/docs/content.en.json
index 7c03850..f91e693 100644
--- a/docs/content.en.json
+++ b/docs/content.en.json
@@ -313,8 +313,8 @@
   ],
   "compactNote": "On resume, reload the current design, filled contract, and full execution rules; check the repo and existing jobs before editing. A snapshot cannot invent decisions or test results. Automatic compact must not get stuck waiting for a perfect handoff.",
   "hooksTitle": "Optional hooks: installation, coverage, and limits",
-  "hooksStatus": "OPTIONAL CONTINUITY + CHECKPOINTS · NO MERGE GUARD",
-  "hooksIntro": "Choose continuity for compact recovery, checkpoints for commit/review reminders, or both. Both are off by default. Checkpoints advises; it does not enforce commits or certify readiness. Protocol tests do not establish native event delivery or model compliance. The agent does not dynamically register its own hooks.",
+  "hooksStatus": "OPTIONAL CONTINUITY + CHECKPOINTS + STANDARDS · NO MERGE GUARD",
+  "hooksIntro": "Choose continuity for compact recovery, checkpoints for commit/review reminders, standards to run your declared checks after a commit, or any combination. Both are off by default. Checkpoints advises; it does not enforce commits or certify readiness. Protocol tests do not establish native event delivery or model compliance. The agent does not dynamically register its own hooks.",
   "hookInstallTitle": "Choose your optional presets",
   "hookInstallNote": "Run these commands from the same parent directory used for the basic installation. Replace /path/to/project with the target project's exact Git root; use claude-code instead of codex for Claude Code. Preview with --dry-run, then run the installation you chose; this list is a set of alternatives, not a sequence you must run in full. Installation adds selected presets, and removing one leaves the other usable. Bare --remove-hooks removes all hooks owned by this installer. Restart the host and inspect registration and trust in /hooks; the installer does not grant trust. Registered commands contain no path specific to your machine, so a registration committed to a shared settings file also works for your teammates, and each of them still reviews and trusts the hooks on their own machine. A registration made by an older release keeps its absolute paths and stays usable; --upgrade-registration rewrites it, which changes every command and so requires trusting the hooks again. The agent must still bind the current session, inspect staged changes before commit, and explicitly prepare its review handoff. Reminders cannot turn pending, inconclusive, or unrun checks into passes. Existing settings, skill files, and session data are preserved.",
   "hookInstallCommands": "./structured-coding/scripts/install codex --project /path/to/project --hooks checkpoints --dry-run\n./structured-coding/scripts/install codex --project /path/to/project --hooks checkpoints\n./structured-coding/scripts/install codex --project /path/to/project --hooks continuity checkpoints\n./structured-coding/scripts/install codex --project /path/to/project --check-hooks\n./structured-coding/scripts/install codex --project /path/to/project --upgrade-registration\n./structured-coding/scripts/install codex --project /path/to/project --remove-hooks checkpoints\n./structured-coding/scripts/install codex --project /path/to/project --remove-hooks",
diff --git a/docs/content.zh-CN.json b/docs/content.zh-CN.json
index 08ad7e3..43cfb20 100644
--- a/docs/content.zh-CN.json
+++ b/docs/content.zh-CN.json
@@ -180,8 +180,8 @@
   ],
   "compactNote": "恢复时,重新读取当前 design、填好的 contract 和完整 execution rules;改 code 前核对 repo 和已有任务。snapshot 不能编决定或测试结果。自动 compact 不能因为 handoff 不完美就一直卡住。",
   "hooksTitle": "可选 hook:安装、覆盖范围和限制",
-  "hooksStatus": "可选 CONTINUITY + CHECKPOINTS · 尚无 MERGE GUARD",
-  "hooksIntro": "需要 compact 恢复可选 continuity,需要 commit/review 提醒可选 checkpoints,也可同时安装。默认都不开。Checkpoints 提供建议,不拦截 commit,也不证明已达到交付条件。Protocol 测试不能证明 native 事件送达或模型遵守了提示。agent 不会动态注册自己的 hook。",
+  "hooksStatus": "可选 CONTINUITY + CHECKPOINTS + STANDARDS · 无 MERGE GUARD",
+  "hooksIntro": "需要 compact 恢复可选 continuity,需要 commit/review 提醒可选 checkpoints,需要在 commit 后跑你声明的检查可选 standards,也可任意组合。默认都不开。Checkpoints 提供建议,不拦截 commit,也不证明已达到交付条件。Protocol 测试不能证明 native 事件送达或模型遵守了提示。agent 不会动态注册自己的 hook。",
   "hookInstallTitle": "选择需要的 preset",
   "hookInstallNote": "这些命令和上面的普通安装一样,在包含 toolkit 的父目录里运行。/path/to/project 必须换成目标项目准确的 Git root;Claude Code 用户把 codex 换成 claude-code。先用 --dry-run 预览,再运行你选择的安装命令,不需要把每一行都执行一遍。Installation 会添加选中的 preset;只移除一个 preset,另一个仍可继续用。不带名称的 --remove-hooks 会移除本工具拥有的全部 hook。更改后重启 host,并在 /hooks 里检查注册与信任状态,installer 不会替你授予信任。注册的命令不含任何只属于你这台机器的路径,所以提交到共享设置文件里的注册对同事同样有效,而每个人仍然要在自己机器上审阅并信任这些 hook。旧版本装出来的注册保留其绝对路径,仍然可用;--upgrade-registration 会重写它,这会改变每一条命令,因此需要重新信任这些 hook。Agent 还要绑定当前 session,在 commit 前检查 staged diff,并明确准备 review handoff。提醒不能把没运行、没定论或仍在等待的检查变成通过。已有设置、skill 文件和 session 数据会保留。",
   "hookInstallCommands": "./structured-coding/scripts/install codex --project /path/to/project --hooks checkpoints --dry-run\n./structured-coding/scripts/install codex --project /path/to/project --hooks checkpoints\n./structured-coding/scripts/install codex --project /path/to/project --hooks continuity checkpoints\n./structured-coding/scripts/install codex --project /path/to/project --check-hooks\n./structured-coding/scripts/install codex --project /path/to/project --upgrade-registration\n./structured-coding/scripts/install codex --project /path/to/project --remove-hooks checkpoints\n./structured-coding/scripts/install codex --project /path/to/project --remove-hooks",
diff --git a/docs/index.html b/docs/index.html
index 1aa9cd6..194d62e 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -34,7 +34,7 @@
 
07

Where you step in.

You do not need to approve every commit. You do need to own the decisions that change the agreement.

  1. 01

    Set the goal

    You explain the goal and limits.

  2. 02

    Approve the design

    You approve this PR's boundaries.

  3. 03

    Review the result

    You review evidence before merge.

After design approval, the agent investigates, implements, validates, reviews, records, and commits. If PR and CI work are authorized, it completes those too without waiting for you to prompt each step.

A material scope change or an action outside existing authorization comes back to you with evidence and a proposal.

08

The details, when you need them.

Open the part relevant to your current question. Use the resource links above for the complete specifications.

What documents does the agent maintain?
OverallIt records the overall goal, requirements, and main steps so each PR has a clear purpose.
StepIt explains which PRs complete this step, their dependencies, and how to observe their integration.
PR designIt records audited code and the commit plan, then keeps decisions, progress, and evidence current during implementation.
Execution contractIt records this PR's approved scope, permitted actions, budget, and stopping conditions.
HandoffIt identifies the current PR, branch and HEAD, running jobs, logs, and the exact next action after recovery.

DESIGN FROZEN protects the requirements you approved, not the entire document. The agent still records discoveries and progress. Implementation, validation, and review stay separate; each item is checked only when that work has actually been completed. If one step needs one PR, expand the step document instead of keeping two copies.

What happens at compact or resume?

Compact is the host's process of shortening conversation history to free context; it does not create a new PR. A new PR starts in a fresh implementation session, while compact or resume continues the current PR. The optional continuity preset checks recorded mechanical freshness, attempts snapshots, and supplies recovery instructions. The agent still has to keep the design and handoff accurate and actually reconcile state after recovery.

MANUAL COMPACTCheck handoffStale? Sync firstThen compact
AUTOMATIC COMPACTSave snapshot / warningAllow compactRecover actual state

On resume, reload the current design, filled contract, and full execution rules; check the repo and existing jobs before editing. A snapshot cannot invent decisions or test results. Automatic compact must not get stuck waiting for a perfect handoff.

-
Optional hooks: installation, coverage, and limits

OPTIONAL CONTINUITY + CHECKPOINTS · NO MERGE GUARD

Choose continuity for compact recovery, checkpoints for commit/review reminders, or both. Both are off by default. Checkpoints advises; it does not enforce commits or certify readiness. Protocol tests do not establish native event delivery or model compliance. The agent does not dynamically register its own hooks.

Choose your optional presets

./structured-coding/scripts/install codex --project /path/to/project --hooks checkpoints --dry-run
+
Optional hooks: installation, coverage, and limits

OPTIONAL CONTINUITY + CHECKPOINTS + STANDARDS · NO MERGE GUARD

Choose continuity for compact recovery, checkpoints for commit/review reminders, standards to run your declared checks after a commit, or any combination. Both are off by default. Checkpoints advises; it does not enforce commits or certify readiness. Protocol tests do not establish native event delivery or model compliance. The agent does not dynamically register its own hooks.

Choose your optional presets

./structured-coding/scripts/install codex --project /path/to/project --hooks checkpoints --dry-run
 ./structured-coding/scripts/install codex --project /path/to/project --hooks checkpoints
 ./structured-coding/scripts/install codex --project /path/to/project --hooks continuity checkpoints
 ./structured-coding/scripts/install codex --project /path/to/project --check-hooks
diff --git a/docs/index.zh-CN.html b/docs/index.zh-CN.html
index d6395f3..df5c317 100644
--- a/docs/index.zh-CN.html
+++ b/docs/index.zh-CN.html
@@ -34,7 +34,7 @@
 
07

你在哪些地方参与?

不用每次 commit 都点头。但会改变约定的决定,得由你来做。

  1. 01

    定目标

    你说清楚目标和限制。

  2. 02

    批准设计

    你确认这次允许改什么。

  3. 03

    review 结果

    你检查证据,再决定 merge。

设计批准以后,agent 自己调查、实现、验证、review、记录并 commit。PR 和 CI 工作如果已经授权,它也会继续做完,不用你一步一步催。

遇到实质性范围变化,或者现有授权以外的操作,agent 带着证据和方案回来找你。

08

细节,用到时再展开。

按你现在的问题往下看。完整 specification 可以从上面的资源链接打开。

agent 到底维护哪些文档?
Overall它记录整体目标、需求和主要步骤,让后面的 PR 知道在完成哪件事。
Step它说明当前步骤要拆成哪些 PR、谁依赖谁,以及怎样观察到它们配合起来了。
PR design它记录检查过的 code、commit plan,以及实施中持续更新的决定、进度和证据。
Execution contract它记录当前 PR 允许改什么、允许执行哪些操作、预算和停止条件是什么。
Handoff它记录当前 PR、branch 和 HEAD、仍在运行的 job、log 位置,以及恢复后具体接着做什么。

DESIGN FROZEN 固定的是你批准的要求,不是整份文档。Agent 仍要记录新发现和进度。Implementation、validation 和 review 分开记录,只有对应工作真的完成了才能打勾。如果一个 step 只有一个 PR,就展开原 step doc,不必复制成两份。

compact 或 resume 时,怎么接着干?

Compact 是 host 为腾出 context 而压缩聊天历史的过程,不是新建一个 PR。新 PR 要开新的 implementation 会话;compact 或 resume 则继续原来的 PR。可选 continuity preset 检查已记录的机械状态是否仍然匹配、尝试保存 snapshot,并提供恢复指令。Design 和 handoff 写得是否准确、恢复时有没有真正核对清楚,仍由 agent 负责。

手动 COMPACT检查 handoff过时?先同步再 compact
自动 COMPACT保存 snapshot / 警告允许 compact恢复真实状态

恢复时,重新读取当前 design、填好的 contract 和完整 execution rules;改 code 前核对 repo 和已有任务。snapshot 不能编决定或测试结果。自动 compact 不能因为 handoff 不完美就一直卡住。

-
可选 hook:安装、覆盖范围和限制

可选 CONTINUITY + CHECKPOINTS · 尚无 MERGE GUARD

需要 compact 恢复可选 continuity,需要 commit/review 提醒可选 checkpoints,也可同时安装。默认都不开。Checkpoints 提供建议,不拦截 commit,也不证明已达到交付条件。Protocol 测试不能证明 native 事件送达或模型遵守了提示。agent 不会动态注册自己的 hook。

选择需要的 preset

./structured-coding/scripts/install codex --project /path/to/project --hooks checkpoints --dry-run
+
可选 hook:安装、覆盖范围和限制

可选 CONTINUITY + CHECKPOINTS + STANDARDS · 无 MERGE GUARD

需要 compact 恢复可选 continuity,需要 commit/review 提醒可选 checkpoints,需要在 commit 后跑你声明的检查可选 standards,也可任意组合。默认都不开。Checkpoints 提供建议,不拦截 commit,也不证明已达到交付条件。Protocol 测试不能证明 native 事件送达或模型遵守了提示。agent 不会动态注册自己的 hook。

选择需要的 preset

./structured-coding/scripts/install codex --project /path/to/project --hooks checkpoints --dry-run
 ./structured-coding/scripts/install codex --project /path/to/project --hooks checkpoints
 ./structured-coding/scripts/install codex --project /path/to/project --hooks continuity checkpoints
 ./structured-coding/scripts/install codex --project /path/to/project --check-hooks
diff --git a/scripts/build_packages.py b/scripts/build_packages.py
index 406a8ea..3272c44 100644
--- a/scripts/build_packages.py
+++ b/scripts/build_packages.py
@@ -20,6 +20,7 @@
 # Adding a new source file requires an explicit publication decision here.
 PUBLISHED_FILES = {
     "SKILL.md",
+    "VERSION",
     "README.md",
     "README.zh-CN.md",
     "agents/openai.yaml",
diff --git a/scripts/hook_install.py b/scripts/hook_install.py
index faca660..0647992 100644
--- a/scripts/hook_install.py
+++ b/scripts/hook_install.py
@@ -685,6 +685,8 @@ def doctor(host, project):
     record, presets = validate_record(read(receipt), host, project, skill, config)
     validate_owned(current, record["groups"])
     verify_skill({"skill": skill, "presets": presets})
+    declared = read(safe(skill, "VERSION"))
+    installed = declared.decode().strip() if declared else "unknown"
     portability = (
         "Commands are portable across machines."
         if shape_for_schema(record["schema"]) == WRITE_SHAPE
@@ -693,7 +695,7 @@ def doctor(host, project):
         "registration portable."
     )
     return (
-        f"Installed presets: {', '.join(presets)}. Registration and runtime files match "
-        f"({host} {version_string}). {portability} "
+        f"Installed presets: {', '.join(presets)}. Skill version {installed}. "
+        f"Registration and runtime files match ({host} {version_string}). {portability} "
         "Trust/enabled state and real host delivery still require /hooks verification."
     )
diff --git a/scripts/test_hook_presets.py b/scripts/test_hook_presets.py
index b26bd03..1836853 100644
--- a/scripts/test_hook_presets.py
+++ b/scripts/test_hook_presets.py
@@ -95,6 +95,8 @@ def test_every_preset_coexists_and_any_one_can_be_removed(self):
                     expected = set().union(*(self.EVENTS[p] for p in survivors))
                     self.assertEqual(set(json.loads(config.read_bytes())["hooks"]), expected)
                     report = hooks.doctor(host, self.project)
+                    # A user must be able to tell which release they installed.
+                    self.assertIn("Skill version 0.1.0", report)
                     for survivor in survivors:
                         self.assertIn(survivor, report)
                     data = self.state(host) / "retained.json"
diff --git a/scripts/test_standards.py b/scripts/test_standards.py
index f7ef889..27b8272 100644
--- a/scripts/test_standards.py
+++ b/scripts/test_standards.py
@@ -259,6 +259,17 @@ def test_command_is_refused_where_it_makes_no_sense(self):
                 self.assertIn(expected, str(caught.exception))
 
 
+class VersionTests(unittest.TestCase):
+    def test_the_shipped_version_is_a_plain_release_string(self):
+        import build_packages
+        text = (build_packages.SOURCE / "VERSION").read_text()
+        self.assertRegex(text.strip(), r"\A\d+\.\d+\.\d+\Z")
+        self.assertEqual(text, text.strip() + "\n")
+        self.assertIn("VERSION", build_packages.PUBLISHED_FILES)
+        for host in build_packages.HOSTS:
+            self.assertIn("VERSION", build_packages.source_files(host))
+
+
 class PackagingTests(unittest.TestCase):
     def test_a_stray_bytecode_cache_does_not_break_packaging(self):
         """Importing an installed helper must not make the skill unpublishable."""
diff --git a/structured-coding/README.md b/structured-coding/README.md
index b910af7..2666d71 100644
--- a/structured-coding/README.md
+++ b/structured-coding/README.md
@@ -232,7 +232,7 @@ On resume, reload the current design, filled contract, and full execution rules;
 
 ## Optional hooks: installation, coverage, and limits
 
-Choose continuity for compact recovery, checkpoints for commit/review reminders, or both. Both are off by default. Checkpoints advises; it does not enforce commits or certify readiness. Protocol tests do not establish native event delivery or model compliance. The agent does not dynamically register its own hooks.
+Choose continuity for compact recovery, checkpoints for commit/review reminders, standards to run your declared checks after a commit, or any combination. Both are off by default. Checkpoints advises; it does not enforce commits or certify readiness. Protocol tests do not establish native event delivery or model compliance. The agent does not dynamically register its own hooks.
 
 ```sh
 ./structured-coding/scripts/install codex --project /path/to/project --hooks checkpoints --dry-run
diff --git a/structured-coding/README.zh-CN.md b/structured-coding/README.zh-CN.md
index bdedf05..82ad56f 100644
--- a/structured-coding/README.zh-CN.md
+++ b/structured-coding/README.zh-CN.md
@@ -232,7 +232,7 @@ Compact 是 host 为腾出 context 而压缩聊天历史的过程,不是新建
 
 ## 可选 hook:安装、覆盖范围和限制
 
-需要 compact 恢复可选 continuity,需要 commit/review 提醒可选 checkpoints,也可同时安装。默认都不开。Checkpoints 提供建议,不拦截 commit,也不证明已达到交付条件。Protocol 测试不能证明 native 事件送达或模型遵守了提示。agent 不会动态注册自己的 hook。
+需要 compact 恢复可选 continuity,需要 commit/review 提醒可选 checkpoints,需要在 commit 后跑你声明的检查可选 standards,也可任意组合。默认都不开。Checkpoints 提供建议,不拦截 commit,也不证明已达到交付条件。Protocol 测试不能证明 native 事件送达或模型遵守了提示。agent 不会动态注册自己的 hook。
 
 ```sh
 ./structured-coding/scripts/install codex --project /path/to/project --hooks checkpoints --dry-run
diff --git a/structured-coding/VERSION b/structured-coding/VERSION
new file mode 100644
index 0000000..6e8bf73
--- /dev/null
+++ b/structured-coding/VERSION
@@ -0,0 +1 @@
+0.1.0
diff --git a/structured-coding/references/hook-contract.md b/structured-coding/references/hook-contract.md
index ca700a4..bd37038 100644
--- a/structured-coding/references/hook-contract.md
+++ b/structured-coding/references/hook-contract.md
@@ -1,6 +1,6 @@
 # Hook behavior contract
 
-Status: **BEHAVIOR SPECIFICATION — optional [continuity preset](continuity.md) implements mechanical H4 checks, H5 snapshot attempts, and the H6 recovery-instruction subset.** It is not registered by default. The optional [checkpoints preset](checkpoints.md) adds H2 commit-preparation advice and an H7 review-intent notice, with zero automatic continuations. Full H1/H2/H3/H7 enforcement and H6 mutation enforcement remain unimplemented. The requirements below remain the complete target, not a claim of full adapter coverage.
+Status: **BEHAVIOR SPECIFICATION — optional [continuity preset](continuity.md) implements mechanical H4 checks, H5 snapshot attempts, and the H6 recovery-instruction subset.** It is not registered by default. The optional [checkpoints preset](checkpoints.md) adds H2 commit-preparation advice and an H7 review-intent notice, with zero automatic continuations. Full H1/H2/H3/H7 enforcement and H6 mutation enforcement remain unimplemented. The optional [standards preset](standards.md) is **not** an adapter for anything specified here: it reports a project's own declared checks and review conventions after a direct `git commit`, which is a different axis from the freeze, merge and continuity behaviour this contract describes, and it blocks nothing. The requirements below remain the complete target, not a claim of full adapter coverage.
 
 This contract translates the workflow's freeze, merge, and context-continuity requirements into observable behavior. Event names below describe the workflow; actual host adapters are separate work. Supported host events and their sources are listed in [platforms.md](platforms.md).
 
diff --git a/structured-coding/references/platforms.md b/structured-coding/references/platforms.md
index a14f482..3047d1d 100644
--- a/structured-coding/references/platforms.md
+++ b/structured-coding/references/platforms.md
@@ -31,11 +31,11 @@ From the cloned repository, use the exact project Git root (quote paths with spa
 ./scripts/install codex --project /path/to/project --remove-hooks
 ```
 
-Use `claude-code` for Claude Code. Python 3.9+, Git and macOS/Linux/WSL are required. Current conservative host floors are Codex 0.153.4 and Claude Code 2.1.261; host delivery needs separate native verification. Restart the host and inspect `/hooks` after changes; the installer does not grant trust or enable disabled hooks.
+Use `claude-code` for Claude Code. Python 3.9+, Git and macOS/Linux/WSL are required. Current conservative host floors are Codex 0.153.4 and Claude Code 2.1.261; host delivery needs separate native verification. Restart the host and inspect `/hooks` after changes; the installer does not grant trust or enable disabled hooks. The installed copy carries its release in `VERSION`, and `--check-hooks` reports it, so you can tell which one a project has.
 
 Codex requires trust at **two** levels, and a registration is inert until both are given. First the project: until it is trusted, Codex loads no project-local hooks at all and says so on stderr, naming the file it wants the entry in. That entry must live in the `config.toml` under `CODEX_HOME`; a `-c projects."".trust_level="trusted"` override on the command line does **not** satisfy it, which is the failure that looks like hooks being delivered but ignored. Second, each hook definition is trusted by its own content hash, so changing a command asks again. Both are Codex's own mechanism; neither is granted by this installer. Claude Code has no equivalent second level.
 
-Installation is additive. Standards alone registers shared SessionStart and PostToolUse, and is the only preset that runs anything; its PostToolUse hook carries a 60-second budget rather than 12, because a check is slower than a notice. Checkpoints alone registers shared SessionStart, PreToolUse and Stop, without compact handlers. Continuity alone registers shared SessionStart and manual/automatic PreCompact. Both use five groups, with SessionStart exactly once. Removing one keeps the other usable. Bare `--remove-hooks` removes all owned presets and preserves the skill and session data. Repeating a selection is a byte-preserving no-op; duplicate/unknown names are rejected.
+Installation is additive. Standards alone registers shared SessionStart and PostToolUse, and is the only preset that runs anything; its PostToolUse hook carries a 60-second budget rather than 12, because a check is slower than a notice. Checkpoints alone registers shared SessionStart, PreToolUse and Stop, without compact handlers. Continuity alone registers shared SessionStart and manual/automatic PreCompact. All three together register six groups, with SessionStart exactly once. Removing one keeps the other usable. Bare `--remove-hooks` removes all owned presets and preserves the skill and session data. Repeating a selection is a byte-preserving no-op; duplicate/unknown names are rejected.
 
 One aggregate receipt owns the original settings backup. Legacy continuity receipts remain readable and migrate only on an explicit state change; check, preview and unchanged reinstall do not rewrite them. Existing customized runtime dependencies are never overwritten: compare/back up the installed skill and explicitly update it first. Missing, changed or duplicate owned groups, unknown receipt schemas, and redirected/unverifiable paths cause refusal. New installations register commands that contain no machine-specific path, so a registration committed to a shared settings file works on a teammate's machine; each machine still reviews and trusts the hooks itself. An installation made by an older release keeps its absolute commands, stays inspectable and removable, and is rewritten only by `--upgrade-registration`, which changes every command and therefore requires trusting the hooks again. `--check-hooks` says whether a registration is portable, and names the recorded interpreter only for an absolute one.
 
diff --git a/structured-coding/references/platforms.zh-CN.md b/structured-coding/references/platforms.zh-CN.md
index 8b66fc9..af19c8d 100644
--- a/structured-coding/references/platforms.zh-CN.md
+++ b/structured-coding/references/platforms.zh-CN.md
@@ -31,11 +31,11 @@ Codex 的目录和调用方式依据 [OpenAI 官方 skills 文档](https://learn
 ./scripts/install codex --project /path/to/project --remove-hooks
 ```
 
-Claude Code 用户把 `codex` 换成 `claude-code`。需要 Python 3.9+、Git 和 macOS/Linux/WSL。目前保守的宿主版本下限是 Codex 0.153.4 和 Claude Code 2.1.261;实际事件送达还需要独立的 native 验证。修改后重启 host 并检查 `/hooks`;installer 不授予信任,也不会打开被禁用的 hook。
+Claude Code 用户把 `codex` 换成 `claude-code`。需要 Python 3.9+、Git 和 macOS/Linux/WSL。目前保守的宿主版本下限是 Codex 0.153.4 和 Claude Code 2.1.261;实际事件送达还需要独立的 native 验证。修改后重启 host 并检查 `/hooks`;installer 不授予信任,也不会打开被禁用的 hook。安装后的副本在 `VERSION` 里带着自己的发布版本,`--check-hooks` 会报告它,所以你能知道某个项目装的是哪一版。
 
 Codex 的信任分**两层**,两层都给到之前注册都是空转的。第一层是项目:在项目被信任之前,Codex 根本不加载任何 project-local hook,并会在 stderr 上说明,同时指出它要求写入的文件。那条记录必须写在 `CODEX_HOME` 下的 `config.toml` 里;命令行上的 `-c projects."".trust_level="trusted"` 覆盖**不满足**这一条,而这种失败看起来像是 hook 被送达却被忽略了。第二层是每个 hook 定义按自身内容 hash 单独信任,所以改动命令会重新询问。两层都是 Codex 自己的机制,installer 都不会替你授予。Claude Code 没有对应的第二层。
 
-安装是追加操作。单装 standards 会注册共享 SessionStart 和 PostToolUse,它是唯一会真正运行东西的 preset;它的 PostToolUse hook 预算是 60 秒而不是 12 秒,因为跑一次检查比发一条提示慢。单装 checkpoints 会注册共享 SessionStart、PreToolUse 和 Stop,不注册 compact handler。单装 continuity 会注册共享 SessionStart 和手动/自动 PreCompact。组合安装共五个 group,SessionStart 只出现一次。移除一个后另一个仍可用。裸 `--remove-hooks` 移除全部自有 preset,保留 skill 和 session 数据。重复安装同一选择不会改变文件字节;重复或未知名称会被拒绝。
+安装是追加操作。单装 standards 会注册共享 SessionStart 和 PostToolUse,它是唯一会真正运行东西的 preset;它的 PostToolUse hook 预算是 60 秒而不是 12 秒,因为跑一次检查比发一条提示慢。单装 checkpoints 会注册共享 SessionStart、PreToolUse 和 Stop,不注册 compact handler。单装 continuity 会注册共享 SessionStart 和手动/自动 PreCompact。三个一起安装共六个 group,SessionStart 只出现一次。移除一个后另一个仍可用。裸 `--remove-hooks` 移除全部自有 preset,保留 skill 和 session 数据。重复安装同一选择不会改变文件字节;重复或未知名称会被拒绝。
 
 一份 aggregate receipt 保存原始设置备份。旧 continuity receipt 仍可读取,仅在明确改变安装状态时迁移;检查、预览和未改变选择的重装都不改写它。installer 不覆盖定制过的 runtime 依赖:先比较、备份已有 skill,再明确升级。自有 group 缺失、被修改或重复,receipt schema 未知,以及路径被重定向或无法核验,都会导致拒绝。新安装注册的命令不含任何机器相关路径,因此提交到共享设置文件里的注册在同事的机器上同样有效;每台机器仍需自己审阅并信任这些 hook。旧版本装出来的注册保留其绝对路径命令,仍可检查、仍可移除,只有 `--upgrade-registration` 会重写它;重写会改变每一条命令,因此需要重新信任这些 hook。`--check-hooks` 会说明注册是否可移植,并且只对绝对路径的注册报告记录的 interpreter。
 
diff --git a/translations.json b/translations.json
index 62bd365..67c19bf 100644
--- a/translations.json
+++ b/translations.json
@@ -3,15 +3,15 @@
   "presentation_source_pair": {
     "english": "docs/content.en.json",
     "chinese": "docs/content.zh-CN.json",
-    "english_sha256": "8db93e6522744e63cef3d46f214034f6237002ffc86b2b0cdfd5f45d4500255e",
-    "chinese_sha256": "aca9fcad8ead24426e8d64b08cb1645cc0eb1438afc68c0d721e972c5d9eb56d"
+    "english_sha256": "134e958f2c914435b757584b16169141427c2a9ad1f4091e024c6c19d5927451",
+    "chinese_sha256": "a8eee06738196a2000f7016cd822cb7c172c0ccade49b5a9011d25f99714e526"
   },
   "pairs": [
     {
       "english": "README.md",
       "chinese": "README.zh-CN.md",
-      "english_sha256": "04f659d3634cbdb4c0613aa7e479eab0e495470c7a23f821c5ce839390214674",
-      "chinese_sha256": "b09bc57d9c97cab448023537efe777e186a5540719f7304dc4dd8a956b1822a4"
+      "english_sha256": "7e4fcb667638ec5d3300db5ae269d9f4b2c2eab6544c9c73c2d59cc4eeb1cb39",
+      "chinese_sha256": "d54503afa062fcb488bb55bdbc1af463455a2d44d7baf62424878cb5a55483c4"
     },
     {
       "english": "TUTORIAL.md",
@@ -22,8 +22,8 @@
     {
       "english": "structured-coding/README.md",
       "chinese": "structured-coding/README.zh-CN.md",
-      "english_sha256": "e953396c0b59ac68fd94aa5e70ead11cecf9123f7bcb75d0df5bf7687ee4883a",
-      "chinese_sha256": "34570f05a25eaee49a145da9332424bc7207a76a92506addc4c0ad146c8ed9ed"
+      "english_sha256": "1cd4b7df7a6dfbfe32c0f694d7a07fa9cc2c98e9a2bb210d51838fbdeec09d8e",
+      "chinese_sha256": "7f7ccbeaef3aa966b4a7b7cf6de4590b94554dc906a7b48dbcad618cc5e14dac"
     },
     {
       "english": "structured-coding/references/agent-workflow.md",
@@ -40,8 +40,8 @@
     {
       "english": "structured-coding/references/platforms.md",
       "chinese": "structured-coding/references/platforms.zh-CN.md",
-      "english_sha256": "c38c3a4029f8aa81fceff307fe0bf9d2053a4258104448ee3eb0231ececa1524",
-      "chinese_sha256": "b57aa667541f6d86712158cc2cf1ddfbce8be1bf06d2f7d23ee6a04f33ffd4ac"
+      "english_sha256": "337dcccc731d825606d58955e86f20fc34d5749da2c7f41e6e19f6723a5e3d74",
+      "chinese_sha256": "8391e94bb9fa9d48315288414080392bb6ab00499562368e394eeebb07e51469"
     }
   ],
   "specification_sha256": {
@@ -49,6 +49,6 @@
     "structured-coding/prompts/implementation-working-rules.md": "7caa1d829fcdb0741b3b621918d6058352adcacf6c8bfee5267e37d2850debcf",
     "structured-coding/prompts/pr-design-requirements.md": "dc5d654ee5e4e2d7a7558726823eb3452167f551d7841403ac8a98c862972baa",
     "structured-coding/prompts/test-ci-gate-rules.md": "ace549262e04880577248189f8ae460f18c13a6b2ecf6280d600566c2cd003e1",
-    "structured-coding/references/hook-contract.md": "37ecc2b092669dd3253556564f1cb4086a4309937d573dd7bf5a52342179ad75"
+    "structured-coding/references/hook-contract.md": "bb4aeec01af96ea42d0fb4248e9b9e3ccf54cae8f7266f523eed57031a68d81f"
   }
 }