|
1 | | -# Repository Guidelines |
2 | | - |
3 | | -## 项目结构与模块组织 |
4 | | -- `bin/`:CLI 主入口与核心逻辑。`bin/ling-cli.js` 负责命令分发,`bin/core/` 处理构建/转换,`bin/adapters/` 处理 `gemini`/`codex` 目标差异,`bin/utils/` 放通用工具。 |
5 | | -- `scripts/`:维护脚本(如 `clean.js`、`health-check.sh`、`postinstall-check.js`)。 |
6 | | -- `tests/`:Node 内置测试(`*.test.js`),覆盖 CLI、适配器、生成器、清理与健康检查。 |
7 | | -- `docs/` 与 `reference/`:规范文档与参考资料。 |
8 | | -- `web/`:Next.js 文档站(`web/src` 源码,`web/public` 静态资源)。 |
9 | | -- `.agents/`:模板资源源文件(Canonical),供 CLI 投影生成目标项目结构(Gemini -> `.agent/`,Codex -> `.agents/`)。 |
10 | | - |
11 | | -## 构建、测试与开发命令 |
12 | | -- 根项目依赖安装:`npm install`。 |
13 | | -- 运行测试:`npm test`(等价 `node --test tests`)。 |
14 | | -- 健康复检:`npm run health-check`(测试 + CLI 核心链路 + 清理预检)。 |
15 | | -- 清理产物:`npm run clean`,预览清理:`npm run clean:dry-run`。 |
16 | | -- 本地调试 CLI:`node bin/ling.js --version` 或 `node bin/ling.js init --target codex --path ./tmp-workspace`。 |
17 | | -- `web/` 子项目:`cd web && npm install && npm run dev`,发布构建 `npm run build`,代码检查 `npm run lint`。 |
18 | | - |
19 | | -## 代码风格与命名约定 |
| 1 | +# AGENTS.md |
| 2 | + |
| 3 | +## 沟通与执行 |
| 4 | +- 全程使用中文。 |
| 5 | +- 结论必须基于仓库事实、命令输出、测试结果,不凭印象猜测。 |
| 6 | +- 优先做最小必要修改;不要顺手扩大范围。 |
| 7 | +- 不要引入静默降级、假成功路径或仅为过测试而写的硬编码。 |
| 8 | + |
| 9 | +## 仓库结构 |
| 10 | +- `bin/`:CLI 主链路。`bin/ling-cli.js` 负责命令分发;`bin/adapters/` 处理 `gemini` / `antigravity` / `codex` 目标差异;`bin/core/` 负责构建与转换;`bin/utils/` 放原子写入、manifest、托管区块等通用能力。 |
| 11 | +- `.agents/`:仓库内唯一 Canonical 模板源。项目安装时: |
| 12 | + - `gemini` / `antigravity` -> 项目内 `.agent/` |
| 13 | + - `codex` -> 项目内 `.agents/` |
| 14 | +- `.spec/`:Spec 进阶能力的模板、profiles、references 与 skills 源。 |
| 15 | +- `tests/`:Node 内置测试(`*.test.js`)。 |
| 16 | +- `docs/`:对外技术文档。 |
| 17 | +- `reference/`:只保留受管参考资料;当前应跟踪 `reference/official/`、`reference/docs-archive/`,不要重新引入重复镜像目录。 |
| 18 | +- `web/`:Next.js 文档站。仅使用 `npm`,不要重新引入 `bun` 工作流。 |
| 19 | + |
| 20 | +## 关键实现约束 |
| 21 | +- `gemini` 与 `antigravity` 共用 `.agent/`,但逻辑目标身份必须通过项目内 `.ling/install-state.json` 区分;涉及共享 `.agent/` 的逻辑时,不要退回“默认全算 gemini”的旧行为。 |
| 22 | +- `codex` 受管目录是 `.agents/`;遗留 `.codex/` 只作为兼容迁移输入,不再作为主输出。 |
| 23 | +- 全局同步默认目标是 `codex + gemini + antigravity`;`gemini` 与 `antigravity` 不能再互相隐式代管。 |
| 24 | +- 文档、测试、CLI 帮助文本必须与实际命令行为一致;改命令行为时同步更新 `README.md`、`docs/TECH.md`、`docs/PLAN.md` 与相关测试。 |
| 25 | + |
| 26 | +## 构建、测试与验证 |
| 27 | +- 安装依赖:`npm install` |
| 28 | +- 全量测试:`npm test` |
| 29 | +- CI 主链路验证:`npm run ci:verify` |
| 30 | +- 健康检查:`npm run health-check` |
| 31 | +- 清理预检:`npm run clean:dry-run` |
| 32 | +- Web 文档站检查:`cd web && npm run lint` |
| 33 | +- 仅改文档时,至少执行 `git diff --check`;若改 CLI、安装/更新逻辑、状态判定、Spec 或发布链路,必须跑相关测试,默认优先 `npm test`。 |
| 34 | + |
| 35 | +## 代码风格 |
20 | 36 | - 遵循 `.editorconfig`:默认 4 空格缩进,JSON/YAML 2 空格,LF,UTF-8。 |
21 | | -- 根目录 Node 代码以 CommonJS 为主(`require/module.exports`);保持与现有文件风格一致。 |
22 | | -- 文件命名使用 kebab-case(如 `managed-block.js`、`health-check-script.test.js`)。 |
23 | | -- 变更 `web/` 代码时,提交前至少执行一次 `cd web && npm run lint`。 |
24 | | - |
25 | | -## 测试规范 |
26 | | -- 使用 Node 内置 `node:test` + `node:assert`,测试文件放在 `tests/` 且命名为 `*.test.js`。 |
27 | | -- 新功能或修复必须补充对应回归测试,尤其是 CLI 参数、索引写入、目标目录生成等高风险路径。 |
28 | | -- 当前仓库未设置硬性覆盖率阈值;PR 需说明“新增/更新了哪些测试”与“本地执行结果”。 |
29 | | - |
30 | | -## 提交与 PR 规范 |
31 | | -- 建议采用 Conventional Commits:`type(scope): summary`,例如 `feat(cli): ...`、`fix(test): ...`、`docs(readme): ...`。 |
32 | | -- 单次提交尽量聚焦单一主题(功能、修复、文档分离)。 |
33 | | -- PR 需包含:变更背景、核心改动、验证命令与结果;涉及 CLI 行为变化时补充示例命令,涉及 `web/` UI 变更时附截图。 |
34 | | - |
35 | | -## 配置与安全提示 |
36 | | -- 使用 `LING_INDEX_PATH` 可重定向全局工作区索引,便于测试隔离。 |
37 | | -- 测试中如需跳过上游检查,可使用 `LING_SKIP_UPSTREAM_CHECK=1`。 |
38 | | -- 不要提交临时或构建产物(如 `web/.next`、`web/node_modules`、`.temp_ag_kit`);可先执行 `npm run clean:dry-run` 自检。 |
| 37 | +- 根目录 Node 代码保持 CommonJS 风格(`require` / `module.exports`)。 |
| 38 | +- 文件命名使用 kebab-case。 |
| 39 | +- 不要加入 Emoji、花哨 Unicode 装饰符或无意义注释。 |
| 40 | + |
| 41 | +## 测试要求 |
| 42 | +- 新功能或行为修正必须补回归测试,优先覆盖: |
| 43 | + - CLI 参数与默认目标 |
| 44 | + - 工作区状态判定 |
| 45 | + - 全局同步与备份语义 |
| 46 | + - Spec enable/init/doctor |
| 47 | + - 文档与实现的一致性 |
| 48 | +- 当修改 `reference/` 跟踪策略时,同步更新 `tests/standards-compliance.test.js`。 |
| 49 | + |
| 50 | +## 参考资料与忽略规则 |
| 51 | +- 不要提交 `__pycache__/`、`*.pyc`、`.DS_Store`、`.next/`、临时 tarball、临时工作区或其他构建噪声。 |
| 52 | +- `reference/` 使用白名单忽略策略:保留需要受管的官方资料与归档文档,其余快照默认忽略。 |
| 53 | +- 不要重新引入 `reference/official-docs/` 这类重复目录;官方资料只保留一份。 |
| 54 | + |
| 55 | +## 版本与发布 |
| 56 | +- npm 包名:`@mison/ling` |
| 57 | +- 版本源:`package.json` |
| 58 | +- Git 标签格式:`ling-<semver>` |
| 59 | +- 发布前默认检查: |
| 60 | + - `npm test` |
| 61 | + - `npm run ci:verify` |
| 62 | + - `npm run health-check` |
| 63 | + - `cd web && npm run lint` |
| 64 | + - `npm pack --dry-run` |
| 65 | +- 发布时同步更新 `CHANGELOG.md`,内容必须覆盖自上一标签以来的实际提交。 |
| 66 | + |
| 67 | +## 提交规范 |
| 68 | +- 使用 Conventional Commits,例如: |
| 69 | + - `feat(cli): ...` |
| 70 | + - `fix(cli): ...` |
| 71 | + - `chore(reference): ...` |
| 72 | + - `chore(release): ...` |
| 73 | +- 一次提交只做一类事情;功能修正、参考资料清理、版本发布分开提交。 |
0 commit comments