Skip to content

[program] CLAUDE.md is a pointer to AGENTS.md in every repo — no second instruction set to maintain (maintainer 2026-09-09) #17161

Description

@os-justin

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

CLAUDE.md in every repository becomes a pointer to AGENTS.md and carries nothing else — one instruction set per repo, maintained once. Each repo is one sub-issue (规则 2: a cross-repo change is never one dispatch); this card is the coordination node and is never dispatched.

repo sub-issue state on 2026-09-09
objectstack filed below CLAUDE.md 41 lines: pointer + inlined never-miss rules with hook pointers; scripts/pm/check-governed-prose.mjs counts it as an instruction surface that must name the five governed surfaces
objectui filed below CLAUDE.md 25 lines: pointer + two inlined rules with hook pointers; check-governed-queue-guard.mjs lists it as governed
hotcrm filed below (folded into the AGENTS.md trim) no CLAUDE.md at all; .github/copilot-instructions.md is already the pointer model
cloud · objectos · www.objectos.ai filed below not readable from this session at filing; the sub-issue's first step is to measure whether a CLAUDE.md / AGENTS.md pair exists

Fixed shape for every sub-issue: the file says where the truth lives and that the reader must read it, in the repo's own instruction language; ⛔ no rule is restated in it, no hook list, no digest. Hooks and gates keep enforcing what they enforce (the never-miss rules live in AGENTS.md and in the hooks, not in the pointer). A gate that reads CLAUDE.md as an instruction surface adapts to the pointer form in the same PR. CLAUDE.md is a governed surface in every repo ⇒ draft PR, human merge, skip-changeset where the repo has it.

Governing text: the maintainer instruction above; AGENTS.md (each repo) as the single source it points to. Four-axis note recorded once here for all sub-issues: 实际业务需求 — the maintainer measured the cost directly (two sets to maintain, drift between them); 长远 — one source; 防 AI 犯错 — an agent that reads only CLAUDE.md today gets a digest that can lag AGENTS.md, and a pointer cannot lag; 不扩散 — deletion, no new surface. The known cost, stated: Claude Code loads CLAUDE.md automatically and AGENTS.md only through the pointer, so a session that skips the pointer has no rules until a hook fires — the hooks are the floor that makes this acceptable.


Generated by Claude Code

Activity

  1. added theissue type on Sep 9, 2026
  2. os-justin commented on Sep 9, 2026

    @os-justin
    CollaboratorAuthor

    Carried findings (program carrier), recorded by the skills seat at 2026-09-09T14:08Z from objectui PR #8848's ## Acceptance notes — noted, not filed as cards; the sub-issue that reaches the file decides:

    1. objectui AGENTS.md:249 names guard-main-checkout.sh and enumerates Edit/Write/NotebookEdit but never names guard-main-checkout-bash.sh, which guards the same writes performed through Bash; after PR http-dispatcher: DELETE / PATCH / POST on /metadata/:type/:name are answered as READS — the same fall-through #8842 closed for PUT, on a different trigger #8848 no document in that repo names the hook. The rule survives intact and the hook keeps firing — an incomplete enforcement roster, not a lost rule. Reader who meets it: whoever next edits objectui AGENTS.md 〈9. Operational Rules〉.
    2. objectui .github/workflows/hook-selftests.yml:8 (a comment) cites 「the rule both CLAUDE.md files state as binding … see those files' ⛔ sections」; those sections are gone in objectui and objectstack#17162 removes them in objectstack, so the citation is stale on both sides once this program lands. It reads nothing and gates nothing. Reader who meets it: the next edit to that workflow, or the objectstack sub-issue's dev if the same workflow exists there (measure).

    Generated by Claude Code

  3. os-justin commented on Sep 9, 2026

    @os-justin
    CollaboratorAuthor

    Carried finding (program carrier), recorded by the skills seat at 2026-09-09T14:28Z from PR #17168's ## Acceptance notes: eight objectstack script/agent comments cite CLAUDE.md as the place a rule is STATED — scripts/check-vendor-version-stamps.mjs :226 and :911, scripts/check-docs-single-h1.mjs :109 and :117, scripts/import-prerequisite.mjs :12 and :382, scripts/pm/ci-failure.mjs :215, .claude/agents/os-dev.md :35, .claude/workflows/docs-accuracy-audit.js :41. After #17162 those rules are stated in AGENTS.md; every citation still routes a reader there through the pointer (one hop longer, never a dead end) and no gate reads them. Reader who meets it: whoever lands the last sub-issue of this program does the one re-pointing pass across repos (objectui's hook-selftests.yml:8 comment, recorded above, joins that pass).


    Generated by Claude Code

  4. os-justin commented on Sep 9, 2026

    @os-justin
    CollaboratorAuthor

    Program status at 2026-09-09T16:0xZ (skills seat, session session_01MoTv7pn338AZ71owsp19gQ): 2 of 5 repos landed. objectstack — #17162 / PR #17168 MERGED 15:55Z (d18b7607, CLAUDE.md 41 → 5 lines); hotcrm — folded into #1823 / PR #1830 MERGED 15:33Z (06b9bb327bb0, 6-line pointer). Still at the human terminal: objectui#8840 / PR #8848 (draft, needs-user-decision, no review yet). Queued and undispatchable until their repos are attached to a session with push credentials: objectstack-ai/cloud#2521 (cloud) · #17164 (objectos) · #17165 (www.objectos.ai) — the maintainer was asked whether this seat attaches and dispatches them (round-2 report). Carried notes from 5603238728 unchanged: objectui AGENTS.md :249's hook roster omits guard-main-checkout-bash.sh; objectstack hook-selftests.yml:8 cites both CLAUDE.md files' ⛔ sections and is stale now that objectstack's file is a pointer — that citation is a follow-up on the objectstack side once objectui's PR lands (file it then, one card, not a rider).


    Generated by Claude Code

  5. os-justin commented on Sep 10, 2026

    @os-justin
    CollaboratorAuthor

    Program status at 2026-09-10T01:3xZ (skills seat, session session_01MoTv7pn338AZ71owsp19gQ): 3 of 5 repos landed. objectstack — #17162 / PR #17168 MERGED 2026-09-09T15:55Z; hotcrm — #1823 / PR #1830 MERGED 15:33Z; objectui — #8840 / PR #8848 MERGED 2026-09-10T01:24Z (157028ac, CLAUDE.md 25 → 3 lines, merged_by os-zhuang). Still queued and undispatchable until their repos are attached to a session with push credentials: objectstack-ai/cloud#2521 (cloud) · #17164 (objectos) · #17165 (www.objectos.ai) — the maintainer has been asked in every round report since round 2. Carried note discharged now that both CLAUDE.md files are pointers: objectstack .github/workflows/hook-selftests.yml cites the two files' ⛔ sections — measured and filed separately by this seat if stale.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions