From 60220342b695345c9c254fb189fb753303b0a5d2 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 25 Jul 2026 19:07:12 +0000 Subject: [PATCH 1/2] ums: don't record an identifier that appears nowhere else From ai-config#727's own review round. That PR's `memories/github.md` bullet named `mcp__github__list_commits`, which appeared exactly once in the corpus with no registry entry. The reviewer's point generalizes: a lone mention reads identically whether it is correct or hallucinated, so a later session has nothing to check it against, and the guidance is only actionable if the name is right. Worth stating because the obvious defense doesn't survive: the tool name *was* verified, by actually calling it in the session being written up. That evidence is real but dies with the session, so it can't anchor anything for a later reader. Registering the identifier can. Adds it as an anti-pattern, with the concrete routing (a cross-model tool goes in `tool-mappings.yml`; anything else cites where it was confirmed). Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01JCwW1H9AFVc8J1eRcobG32 --- skills/ums/SKILL.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/skills/ums/SKILL.md b/skills/ums/SKILL.md index 10b123279..6b6eb7371 100644 --- a/skills/ums/SKILL.md +++ b/skills/ums/SKILL.md @@ -285,6 +285,17 @@ add a review gate for the cases that need one. - ❌ `git add -A` — it sweeps unrelated in-flight edits (the user's work, other draft skills) into your commit/PR. Stage the specific files you touched. - ❌ Creating `memories/repo/.md` for any repo — this pattern is retired. +- ❌ Naming a tool, flag, or API identifier that appears **nowhere else in the + corpus** without anchoring it somewhere checkable. A lone mention reads + identically whether it is correct or hallucinated, so a later session has + nothing to verify it against --- and the guidance is only actionable if the + name is right. When the identifier is a cross-model tool, add it to + `tool-mappings.yml` (then regenerate) rather than leaving the memory bullet + as its only home; otherwise cite where you confirmed it. Having *used* it + successfully in the session you're writing up is good evidence, but that + evidence dies with the session. (ai-config#727: `mcp__github__list_commits` + was flagged in review as unanchored; it was genuinely verified by use, and + the fix was registering it as the `LIST_COMMITS` operation.) Put repo-specific lore in the repo's own agent docs (`.github/agents/`, `CLAUDE.md`, `.github/instructions/`, `.github/copilot-instructions.md`, or checked-in `.claude/memories/`) via a PR; From 0507d1a6b0594236c4e6add2fc4a81655a603a2e Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 25 Jul 2026 19:13:45 +0000 Subject: [PATCH 2/2] Move the new bullet past the preceding one's full extent The insertion landed between the `memories/repo/.md` bullet's opening line and its eight-line continuation, so Markdown re-parented that continuation onto the new bullet. The repo-lore guidance is the remediation for the retired `memories/repo/` pattern and has nothing to do with identifier anchoring. This is precisely the pitfall the *next* bullet in the same list describes, added after review caught the same mistake on ai-config#335. Its stated remedy -- read the lines around the insertion point, or place the bullet after the complete enclosing item -- is what should have run here. Reading only a fixed window below the target's first line is what missed it: the continuation sat past the end of that window. The diff against main is now purely additive (11 insertions, 0 deletions), which is the mechanical check that no existing bullet was disturbed. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01JCwW1H9AFVc8J1eRcobG32 --- skills/ums/SKILL.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/skills/ums/SKILL.md b/skills/ums/SKILL.md index 6b6eb7371..1e05dc587 100644 --- a/skills/ums/SKILL.md +++ b/skills/ums/SKILL.md @@ -285,6 +285,14 @@ add a review gate for the cases that need one. - ❌ `git add -A` — it sweeps unrelated in-flight edits (the user's work, other draft skills) into your commit/PR. Stage the specific files you touched. - ❌ Creating `memories/repo/.md` for any repo — this pattern is retired. + Put repo-specific lore in the repo's own agent docs (`.github/agents/`, + `CLAUDE.md`, `.github/instructions/`, `.github/copilot-instructions.md`, or + checked-in `.claude/memories/`) via a PR; + if the repo has no agent-doc infrastructure yet, this session's own local + project-memory mechanism (Claude Code: `~/.claude/projects//memory/` + — substitute the equivalent for a non-Claude agent) is short-lived staging + only — hand off that a PR adding those agent docs is still required. See the checklist + item above and `memories/preferences.md` for the full rule. - ❌ Naming a tool, flag, or API identifier that appears **nowhere else in the corpus** without anchoring it somewhere checkable. A lone mention reads identically whether it is correct or hallucinated, so a later session has @@ -296,14 +304,6 @@ add a review gate for the cases that need one. evidence dies with the session. (ai-config#727: `mcp__github__list_commits` was flagged in review as unanchored; it was genuinely verified by use, and the fix was registering it as the `LIST_COMMITS` operation.) - Put repo-specific lore in the repo's own agent docs (`.github/agents/`, - `CLAUDE.md`, `.github/instructions/`, `.github/copilot-instructions.md`, or - checked-in `.claude/memories/`) via a PR; - if the repo has no agent-doc infrastructure yet, this session's own local - project-memory mechanism (Claude Code: `~/.claude/projects//memory/` - — substitute the equivalent for a non-Claude agent) is short-lived staging - only — hand off that a PR adding those agent docs is still required. See the checklist - item above and `memories/preferences.md` for the full rule. - ❌ Inserting a new bullet into any memory file with nested lists (including `github-actions.md`, `preferences.md`) without checking the surrounding indentation first. These files mix 0-indent top-level bullets with 2-/4-indent sub-bullets and