Skip to content

Commit e4d5e3b

Browse files
committed
docs: split AGENTS.md into per-package files
1 parent 3d1171d commit e4d5e3b

5 files changed

Lines changed: 81 additions & 0 deletions

File tree

AGENTS.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# AGENTS
2+
3+
## 仓库结构
4+
5+
monorepo,包含以下子包:
6+
7+
| 目录 | 包名 | 语言 | 定位 |
8+
|------|------|------|------|
9+
| `packages/dart/` | `quanttide_project` | Dart | 数据模型(参考实现) |
10+
| `packages/python/` | `quanttide-project` | Python | 数据模型(Pydantic) |
11+
| `packages/fastapi/` | `fastapi-quanttide-project` | Python | FastAPI CRUD 路由 |
12+
| `packages/flutter/` | `flutter_quanttide_project` | Dart/Flutter | 看板 UI 组件 |
13+
14+
语言/包特定约定见各子包 `AGENTS.md`
15+
16+
## 提交消息
17+
18+
- `feat:` — 新功能
19+
- `chore:` — 版本号变更、配置更新
20+
- `docs:` — 文档更新
21+
- `fix:` — 修 bug
22+
23+
## 发布流程
24+
25+
遵循 `.agents/skills/devops-release/SKILL.md`,关键流程:
26+
27+
1. **更新版本号** → 改 `pyproject.toml`,跑 `uv lock` 同步 lock 文件
28+
2. **写 CHANGELOG** → 子模块用 `packages/<name>/CHANGELOG.md`,主仓库用 `CHANGELOG.md`
29+
3. **提交** → 分两次 commit:`chore: bump <name> to vX.Y.Z` + `docs: update CHANGELOG for vX.Y.Z`
30+
4. **预检查** → 工作区干净、版本号格式、CHANGELOG 存在、tag 不重复
31+
5. **用户确认**
32+
6. **打 tag + Release**
33+
34+
### Tag 命名规则
35+
36+
- **主仓库**: `vX.Y.Z`
37+
- **子模块**: `<name>/vX.Y.Z`(如 `fastapi/v0.2.0``python/v0.1.1`
38+
- 注意:主仓库 tag 和子模块 tag 不可混淆。子模块 tag 不推送时 CI 不会触发 PyPI 发布
39+
40+
### CI 自动发布
41+
42+
Python/FastAPI 包的 PyPI 发布由 GitHub Release `published` 事件触发,workflow 内以 `startsWith(github.ref, 'refs/tags/<name>/')` 过滤。
43+
44+
### 从 CHANGELOG 提取 Release Notes
45+
46+
```bash
47+
NOTES=$(sed -n "/^## \[${VNUM}\]/,/^## \[/p" CHANGELOG.md | sed '1d;$d')
48+
```
49+
50+
## 文档同步
51+
52+
子包文档(`packages/<name>/docs/`)与根文档(`docs/`)各自独立。新功能说明需同步更新到两层,例如 FastAPI camelCase 同时更新了:
53+
- `packages/fastapi/docs/user/index.md` + `api.md`
54+
- `docs/user/index.md`

packages/dart/AGENTS.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# AGENTS — dart
2+
3+
Dart 包是数据模型参考实现,新字段先在 dart 包定义,其他语言对照实现。

packages/fastapi/AGENTS.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# AGENTS — fastapi
2+
3+
## 开发注意事项
4+
5+
- JSON I/O 使用 camelCase(`createdAt`),Python 代码保持 snake_case(`created_at`),通过 `CamelCaseModel``response_model_by_alias=True` 实现
6+
-`pyproject.toml` 版本号后必须跑 `uv lock`,否则 lock 文件与 pyproject 不一致
7+
- `ModelRouter` 自动推导 Create/Update/Response Schema,新增字段无需改 router 代码

packages/flutter/AGENTS.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# AGENTS — flutter
2+
3+
## 代码风格
4+
5+
- 遵循 `flutter_lints/flutter.yaml` 规则
6+
- analysis_options.yaml 继承 `package:flutter_lints/flutter.yaml`
7+
- 纯 UI 组件,不包含数据模型,通过外部传入数据渲染

packages/python/AGENTS.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# AGENTS — python
2+
3+
## 代码风格
4+
5+
- 不写注释(除非被明确要求)
6+
- ruff lint,target-version = py310
7+
- ruff select = `["E", "F", "I", "N", "W"]`
8+
- hatchling 构建
9+
- pytest:testpaths = `["tests"]`,pythonpath = `["src"]`
10+
- 遵循现有代码约定,模仿邻接文件风格

0 commit comments

Comments
 (0)