Compare commits

...
2 Commits
Author SHA1 Message Date
QiuSW c6f353cbbb docs: 归档任务 #6 2026-08-08 10:18:09 +08:00
QiuSW 2adb30ada2 refactor: 优化 Claude Code 规则入口 (#6) 2026-08-08 10:15:24 +08:00
5 changed files with 125 additions and 20 deletions
+5 -20
View File
@@ -1,24 +1,9 @@
# Claude Code 项目入口
本仓库的完整开发规则以 [AGENTS.md](AGENTS.md) 为唯一事实来源。
@AGENTS.md
Claude Code 开始任何工作前,必须按顺序阅读:
## Claude Code 专用说明
1. 根目录的 `AGENTS.md`;
2. Gitea Wiki 的项目档案;Wiki 不可用时读取 `docs/00-project-profile.md` 镜像并明确其 revision;
3. Gitea Wiki 的架构与代码地图、业务规则,以及任务直接涉及的主题页;
4. 任务涉及目录中更具体的 `AGENTS.md`;
5. 当前 Gitea 工单及其父级 MVP、Epic 工单。
必须遵守以下入口规则:
- 方案经用户确认并建立单元任务工单后,才能修改产品代码。
- 只修改当前工单范围内的文件,保留用户已有和无关的改动。
- 在单元任务中明确文档影响;入口、命令、配置、数据、业务规则或排错方式变化时先更新对应 Wiki。
- 严格遵守 `AGENTS.md` 的效率与范围控制:优先真实反馈、复用未失效的检查结果、完成必要闭环后停止,但不得省略安全和最终验收。
- 实现、测试、Git 提交、待验收、Wiki 任务归档、导出本地镜像和关闭工单的顺序不得跳过。
- 长期文档先修改 Wiki,再导出 `docs/`;不得直接编辑镜像作为最终结果。
- 未经用户明确验收,不得关闭工单。
- 不得把密码、令牌、Cookie、私钥或生产数据写入代码、日志、工单和文档。
不要在本文件复制完整工作流。流程发生变化时只更新 `AGENTS.md`,本文件保持为 Claude Code 的稳定入口,防止两套规则不一致。
- 上方导入的 `AGENTS.md` 是所有编码 Agent 的共同规则事实来源,Claude Code 必须完整遵守。
- 本文件只记录 Claude Code 特有的入口或工具差异;当前没有额外的项目专用差异。
- 共同规则变化时只修改 `AGENTS.md`,不要在本文件重复维护。
+21
View File
@@ -85,6 +85,7 @@ CORE_DOCUMENT_REQUIREMENTS = {
}
REQUIRED_FILES = (
"AGENTS.md",
"CLAUDE.md",
"README.md",
"docs/00-project-profile.md",
"docs/01-workflow.md",
@@ -191,6 +192,25 @@ def check_agent_efficiency_rules(errors: list[str], root: Path = ROOT) -> None:
errors.append(f"AGENTS.md 缺少:{section}")
def check_claude_code_entry(errors: list[str], root: Path = ROOT) -> None:
"""检查 Claude Code 入口直接复用共同 Agent 规则。"""
path = root / "CLAUDE.md"
if not path.is_file():
return
content = path.read_text(encoding="utf-8")
lines = {line.strip() for line in content.splitlines()}
if "@AGENTS.md" not in lines:
errors.append("CLAUDE.md 缺少独立的 @AGENTS.md 导入")
required = (
"共同规则事实来源",
"只记录 Claude Code 特有",
"只修改 `AGENTS.md`",
)
for section in missing_sections(content, required):
errors.append(f"CLAUDE.md 缺少:{section}")
def core_mapping_errors(configured_mappings: dict[str, str]) -> list[str]:
errors: list[str] = []
for page, expected_path in CORE_PAGE_PATHS.items():
@@ -258,6 +278,7 @@ def main() -> int:
check_core_documents(errors)
check_task_template(errors)
check_agent_efficiency_rules(errors)
check_claude_code_entry(errors)
check_archives(errors)
for warning in warnings:
@@ -0,0 +1,76 @@
<!-- gitea-wiki-mirror:start -->
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
wiki_page: Task-6-优化ClaudeCode规则入口
wiki_url: http://ilaer.eicp.net:8418/opc/dev_harness/wiki/Task-6-%E4%BC%98%E5%8C%96ClaudeCode%E8%A7%84%E5%88%99%E5%85%A5%E5%8F%A3.-
wiki_revision: 42be5a8acfb2e31f57efbb2d0809b89f3a7c0665
synchronized_at: 2026-08-08T02:17:30Z
<!-- gitea-wiki-mirror:end -->
# 6 优化 Claude Code 规则入口
- 类型:重构
- 所属 Epic:无
- 所属 MVP / 版本:无
- 状态:待验收
- 日期:2026-08-08
- Gitea 工单:http://ilaer.eicp.net:8418/opc/dev_harness/issues/6
- Wiki 页面:Task-6-优化ClaudeCode规则入口
- Wiki revision:见本地镜像头
## 背景与目标
仓库原有 `CLAUDE.md` 已声明 `AGENTS.md` 是共同规则来源,但仍手工复制了阅读顺序、安全、工单、Wiki、Git 和验收等多条共同规则。两处同时维护容易产生内容漂移。
本任务把 `CLAUDE.md` 优化为 Claude Code 的轻量入口:使用官方支持的 `@AGENTS.md` 语法直接导入共同规则,仅在本文件记录 Claude Code 专用差异。
## 最终方案
- 在根目录 `CLAUDE.md` 中使用独立的 `@AGENTS.md` 导入行。
- 删除原先重复的共同流程清单,仅保留三条入口说明。
- 明确 `AGENTS.md` 是共同规则事实来源,共同规则只在其中维护。
- 当前没有 Claude Code 特有的项目规则;以后只有平台或工具差异才写入 `CLAUDE.md`。
- 将 `CLAUDE.md` 加入 Harness 必需文件。
- 新增入口检查,要求精确的独立导入行和事实来源说明。
- 新增自动化测试,覆盖正常入口和缺失导入两种情况。
- 稳定流程语义未变化,因此没有修改稳定 Wiki 主题页。
实施结果与建单方案一致。
## 修改文件
- `CLAUDE.md`:改为导入式 Claude Code 入口,删除重复共同规则。
- `dev_scripts/check_harness.py`:增加必需文件和 Claude Code 入口检查。
- `tests/test_harness_docs.py`:增加入口正向测试和缺失导入失败测试。
- `wiki-docs.json`:登记本任务 Wiki 归档镜像。
- `docs/task/6-优化ClaudeCode规则入口.md`:本页的自动导出镜像。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| 根目录文件名为 `CLAUDE.md` | 通过 |
| 使用 `@AGENTS.md` 导入共同规则 | 通过 |
| 不再复制大段共同流程 | 通过,由 24 行精简为 9 行 |
| 共同规则只维护在 `AGENTS.md` | 通过 |
| Harness 检测缺失入口或导入 | 通过 |
| 测试、严格检查和 Wiki 镜像检查 | 通过 |
| 实现和归档提交分离 | 通过 |
## 测试
- 执行命令:`python -m unittest discover -s tests -v`
- 结果:19/19 通过。
- 执行命令:`python dev_scripts/check_harness.py --strict`
- 结果:通过。
- 执行命令:`python dev_scripts/sync_wiki_docs.py --check`
- 结果:归档前 15/15 映射一致;归档后将重新检查 16/16。
- 执行命令:`python -m compileall -q dev_scripts tests`
- 结果:通过。
- 执行命令:`git diff --check`
- 结果:通过。
- **未验证部分**:未启动 Claude Code 交互会话执行 `/memory`;导入语法依据 Claude Code 官方文档,并由仓库检查保证格式。
## 相关提交
- `2adb30a` `refactor: 优化 Claude Code 规则入口 (#6)`
- 归档提交哈希在提交后回写 Gitea 工单,避免归档自引用。
+19
View File
@@ -1,6 +1,7 @@
from __future__ import annotations
import sys
import tempfile
import unittest
from pathlib import Path
@@ -12,6 +13,7 @@ from check_harness import ( # noqa: E402
CORE_DOCUMENT_REQUIREMENTS,
CORE_PAGE_PATHS,
REQUIRED_FILES,
check_claude_code_entry,
check_core_documents,
check_agent_efficiency_rules,
check_task_template,
@@ -62,6 +64,23 @@ class AgentRuleTests(unittest.TestCase):
check_agent_efficiency_rules(errors)
self.assertEqual(errors, [])
def test_claude_code_entry_imports_shared_rules(self) -> None:
errors: list[str] = []
check_claude_code_entry(errors)
self.assertEqual(errors, [])
def test_claude_code_entry_requires_exact_import_line(self) -> None:
with tempfile.TemporaryDirectory() as directory:
root = Path(directory)
(root / "CLAUDE.md").write_text(
"共同规则事实来源\n只记录 Claude Code 特有\n"
"共同规则只修改 `AGENTS.md`\n",
encoding="utf-8",
)
errors: list[str] = []
check_claude_code_entry(errors, root)
self.assertIn("CLAUDE.md 缺少独立的 @AGENTS.md 导入", errors)
if __name__ == "__main__":
unittest.main()
+4
View File
@@ -63,6 +63,10 @@
{
"page": "Task-5-Simplify-Agents",
"path": "docs/task/5-精简AGENTS重复说明.md"
},
{
"page": "Task-6-优化ClaudeCode规则入口",
"path": "docs/task/6-优化ClaudeCode规则入口.md"
}
]
}