安装项目级 dev-memory skill
把「记忆放在哪、开工前怎么读、收尾时派谁写」写进当前项目的宿主 skill 目录,随仓库提交。 触发点挂在项目的指令文件里——每次会话必读。
跨宿主约定
只执行当前宿主对应的 skill、子代理和指令文件分支。
模板资源先用 $PLUGIN_ROOT,为空再用 $CLAUDE_PLUGIN_ROOT;两者都为空时,先把 SKILL_DIR
设为当前已加载的这个 SKILL.md 的绝对父目录(不是项目工作目录),再按相对路径定位。执行写入前先确定:
if [ -n "${PLUGIN_ROOT:-}" ]; then
SETUP_ROOT="$PLUGIN_ROOT"
elif [ -n "${CLAUDE_PLUGIN_ROOT:-}" ]; then
SETUP_ROOT="$CLAUDE_PLUGIN_ROOT"
else
SETUP_ROOT="${SKILL_DIR:?先将 SKILL_DIR 设为当前 SKILL.md 的绝对父目录}/../.."
fi
TEMPLATE_DIR="$SETUP_ROOT/skills/dev-memory/template"
RENDER_AGENT="$SETUP_ROOT/scripts/render-codex-agent.py"
步骤
定记忆目录:项目已有的记忆目录(如
docs/dev-memory/)就沿用,没有则用docs/dev-memory/。写入 skill:Claude Code 先看
.claude/skills/dev-memory/SKILL.md,Codex 先看.agents/skills/dev-memory/SKILL.md;目标已在就转「已存在时」,不要执行下面的cp——它会直接覆盖项目自己改过的那份。# Claude Code mkdir -p .claude/skills/dev-memory cp "$TEMPLATE_DIR/dev-memory.md" .claude/skills/dev-memory/SKILL.md # Codex mkdir -p .agents/skills/dev-memory cp "$TEMPLATE_DIR/dev-memory.md" .agents/skills/dev-memory/SKILL.md对齐项目:记忆目录不是
docs/dev-memory/时把新文件里的路径全部改成实际目录; 项目另有与通用规则不同的约定,就地补写进去。建索引:记忆目录缺
README.md就建一个只有标题和空索引的骨架,不要预填占位记忆。装写记忆的子代理:
# Claude Code mkdir -p .claude/agents cp -n "$TEMPLATE_DIR/agents/memory-writer.md" .claude/agents/ # Codex mkdir -p .codex/agents "$RENDER_AGENT" --output-dir .codex/agents "$TEMPLATE_DIR/agents/memory-writer.md"Markdown 是唯一模板源。Codex 安装时由共享脚本机械提取
name、description与完整正文, 组装成.toml,并按代理职责写入 Codex 的模型与 reasoning effort;不直接照搬 Claude Code 的model、effort,也不改写正文。 两种宿主都装进项目目录,不是用户级配置目录。写入前发现同名文件就转「已存在时」,不要覆盖。挂触发点:Claude Code 在项目根目录的
CLAUDE.md、Codex 在AGENTS.md里写明开工前调用dev-memory读记忆、 开发收尾时派memory-writer子代理沉淀。 已有指向记忆目录的说法改成指向 skill,@前缀一并去掉。 只写触发时机——读法留在 skill 里,判断标准与写法留在memory-writer的定义里, 不要复制成第二份。告知用户:项目中安装后的
.claude/skills/dev-memory/与.claude/agents/memory-writer.md, 或.agents/skills/dev-memory/与.codex/agents/memory-writer.toml都要提交进版本库; 记忆目录是否提交、要不要进.gitignore由用户自己判断,不要替他决定,也不要主动改.gitignore。 Claude Code 装好后用/dev-memory调用;Codex 由当前环境按已安装 skill 发现机制加载。当前会话没生效时重启对应宿主。
已存在时
宿主目标 skill 已存在时不要直接覆盖:与模板逐节比对,补齐模板有而它没有的规则, 保留项目自己加的内容和改过的路径。Codex 子代理与 Markdown 模板转换后的字段逐项比对, 不要另找或创建一份 TOML 模板。要动的地方超过补充规则的范围时,先把打算怎么改告诉用户。
现状与预期不符时
要写入的路径不是普通文件 / 目录时停下来问用户,不要照写。最常见的是软链:
cp 会写到它指向的地方,而 mkdir -p 在软链上仍然静默成功,表面看不出异常。