Maintainer direct instruction to the skills seat (session session_01MoTv7pn338AZ71owsp19gQ, GitHub os-justin), given in that PM session's chat on 2026-09-09 at 13:3xZ and 13:4xZ, verbatim, untranslated:
「看一下 hotcrm 的agents.md 写的太乱了。只留下必要的。包括同时同时审核 hotcrm 的skills 任务,合并派发处理。」
「首先要明确 hotcrm 是元数据应用,平台功能应该在 objectstack中开发。 其次 claude.md 是不是直接让他阅读 agents.md 即可,没必要维护两套。所有仓库都有类似的问题」
Program anchor: #17161 (the shape, the four-axis note and the known cost are recorded there once).
This repo
CLAUDE.md (41 lines on origin/main) restates four prime directives with their hooks. After this card it says one thing: AGENTS.md is the source of truth, read it before anything else — and nothing more (no rule, no hook roster, no digest). The hooks in .claude/hooks/ keep enforcing worktree-first, the stash ban and the process-kill ban exactly as now; AGENTS.md already carries every rule the digest inlined (verify each of the four survives there by grep before deleting; a rule that does not survive is moved into AGENTS.md, not kept in CLAUDE.md).
scripts/pm/check-governed-prose.mjs counts CLAUDE.md as one of two instruction surfaces that must name all five governed surfaces; a pointer file cannot, so the gate adapts in the same PR — a CLAUDE.md that is a pure pointer to AGENTS.md satisfies the check through its target — with the self-test case that pins it and a red case for a CLAUDE.md that carries prose but no pointer. ⛔ Not a weakening: the enforcement moves to the one file that carries the enumeration.
Governed (CLAUDE.md, .claude/** untouched) ⇒ draft PR at the human terminal, skip-changeset. Serial: CLAUDE.md is free (no open PR touches it at filing).
Generated by Claude Code
Maintainer direct instruction to the skills seat (session
session_01MoTv7pn338AZ71owsp19gQ, GitHubos-justin), given in that PM session's chat on 2026-09-09 at 13:3xZ and 13:4xZ, verbatim, untranslated:Program anchor: #17161 (the shape, the four-axis note and the known cost are recorded there once).
This repo
CLAUDE.md(41 lines onorigin/main) restates four prime directives with their hooks. After this card it says one thing:AGENTS.mdis the source of truth, read it before anything else — and nothing more (no rule, no hook roster, no digest). The hooks in.claude/hooks/keep enforcing worktree-first, the stash ban and the process-kill ban exactly as now;AGENTS.mdalready carries every rule the digest inlined (verify each of the four survives there by grep before deleting; a rule that does not survive is moved intoAGENTS.md, not kept inCLAUDE.md).scripts/pm/check-governed-prose.mjscountsCLAUDE.mdas one of two instruction surfaces that must name all five governed surfaces; a pointer file cannot, so the gate adapts in the same PR — aCLAUDE.mdthat is a pure pointer toAGENTS.mdsatisfies the check through its target — with the self-test case that pins it and a red case for aCLAUDE.mdthat carries prose but no pointer. ⛔ Not a weakening: the enforcement moves to the one file that carries the enumeration.Governed (
CLAUDE.md,.claude/**untouched) ⇒ draft PR at the human terminal,skip-changeset. Serial:CLAUDE.mdis free (no open PR touches it at filing).Generated by Claude Code