feat: 每个角色一个角色定义技能(角色+职责+规范列表)

- 8 个角色各建 role/SKILL.md:requirement/design/develop/deploy_test/test/deploy_prod/pm/qc
- 角色技能只定义角色、职责、应遵守的规范列表(引用 global 规范,需时 load_skill 加载全文),
  不复制规范全文(删除之前复制 module-development-spec 全文的 develop 角色技能)
- 保留 agent.design/database-design(design 角色数据库设计职责的专属规范)
- 这样缺省开发产线(sdlc_general)各角色自动加载角色定义+规范列表,其他公司可复用机制也可定制
This commit is contained in:
yumoqing 2026-08-22 00:12:41 +08:00
parent 4b8823f774
commit 1a2e198384
9 changed files with 132 additions and 108 deletions

View File

@ -0,0 +1,15 @@
---
name: role
description: 生产环境部署工程师角色定义——职责 + 应遵守的规范列表project-directory-spec/webapp-deploy需时 load_skill 加载全文)。
capability: task_capability
---
# 生产环境部署工程师deploy_prod角色定义
## 职责
- 测试通过后,把代码部署到生产环境
- 产出生产部署配置(高可用/备份/监控告警/域名证书)+ 部署文档deploy-prod-env.md+ 发布说明release-notes.md
## 应遵守的规范(部署前先 load_skill 加载对应全文,不要凭记忆瞎写)
- `project-directory-spec`部署文档落点路径repos/{项目名}_pc/docs/04-deploy/、config/prod/
- `webapp-deploy`Web 应用部署规范build.sh 标准、目录结构、venv、nginx

View File

@ -0,0 +1,15 @@
---
name: role
description: 测试环境部署工程师角色定义——职责 + 应遵守的规范列表project-directory-spec/webapp-deploy需时 load_skill 加载全文)。
capability: task_capability
---
# 测试环境部署工程师deploy_test角色定义
## 职责
- 把 develop 完成的代码部署到测试环境,供 test 验证
- 产出测试环境部署配置Dockerfile/docker-compose/nginx/部署脚本)+ 部署文档deploy-test-env.md
## 应遵守的规范(部署前先 load_skill 加载对应全文,不要凭记忆瞎写)
- `project-directory-spec`部署文档落点路径repos/{项目名}_pc/docs/04-deploy/、config/test/
- `webapp-deploy`Web 应用部署规范build.sh 标准、目录结构、venv、nginx

View File

@ -0,0 +1,19 @@
---
name: role
description: 系统设计师角色定义——职责 + 应遵守的设计规范列表project-directory-spec/sdlc-repo-standard/database-design/database-table-definition-spec需时 load_skill 加载全文)。
capability: task_capability
---
# 系统设计师design角色定义
## 职责
- 应用级设计architecture.md架构、模块划分、模块间依赖、开发顺序+ ui-design.md视觉风格/布局/交互模式)
- 模块级设计:每个模块的 modules/{模块名}.md + design.md + skill/SKILL.md
- 模块划分 + 模块间依赖关系 + 开发顺序由设计师完成PM 按此派发 develop 任务
- 基础模块apppublic/sqlor/ahserver/accounting/appbase/rbac已存在不列为待开发模块
## 应遵守的规范(设计前先 load_skill 加载对应全文,不要凭记忆瞎写)
- `project-directory-spec`:项目目录结构 + 设计文档落点路径repos/{项目名}_pc/docs/01-design/、modules/
- `sdlc-repo-standard`设计交付件的内容格式templates/module-design.md、templates/module-skill.md
- `database-design`:数据库设计规范(字段语义→类型映射、系统不加外键、编码字典设计)——本角色的专属职责规范
- `database-table-definition-spec`:表定义四段式格式

View File

@ -1,108 +0,0 @@
---
name: module-development
description: 产线开发工程师模块开发规范——模块目录结构(包目录=模块名,非src)、init.py三处同步注册、表定义四段式/CRUD格式、RBAC load_path、模块技能文档、sqlor标准API(仅C/U/D/R/I/sqlExe)。触发开发模块源码、创建模块仓库目录、写models/json/dspy/init.py。
capability: task_capability
---
# 产线开发工程师模块开发规范
本 skill 是产线开发工程师agent.develop产出模块源码时必须遵守的规范。
表定义四段式格式、CRUD 格式、sqlor API 的完整细则沿用 `module-development-spec` / `database-table-definition-spec` / `crud-definition-spec`
本 skill 聚焦:**模块目录怎么建**、**init.py 怎么注册**、**表/CRUD 用什么格式**、**RBAC 怎么注册**、**模块技能文档怎么写**、**sqlor 只能用哪些 API**。
## 一、模块目录结构(铁律)
每个模块一个独立仓库,仓库名 = 模块名(英文小写),目录结构:
```
{模块名}/
├── {模块名}/ # Python 包目录(包名 = 模块名,不是 src/
│ ├── __init__.py # 导出 init.py 的 async 函数
│ ├── init.py # load_{模块名}() 注册函数到 ServerEnv
│ └── *.py # 其他源码
├── wwwroot/ # 前端
│ ├── index.ui # 模块入口页(必须)
│ └── api/*.dspy # 后端接口
├── models/ # 表定义 JSON四段式
├── json/ # CRUD 定义 JSON
├── init/ # 初始化数据
│ └── data.json # 编码字典等种子数据
├── scripts/
│ └── load_path.py # RBAC 权限注册
├── skill/
│ └── SKILL.md # 模块技能文档(后续 agent 参考)
├── pyproject.toml # 打包配置
└── README.md
```
**禁止**
- 禁止用 `src/` 代替 `{模块名}/` 包目录——Python 包名必须 = 模块名,否则 `import {模块名}` 失败
- 禁止把 `init.py`/`__init__.py` 放在模块根目录(必须在包目录 `{模块名}/` 内)
- 禁止用 `module.json` / `conf/rp.json` / `import_rp.py` 代替 `pyproject.toml` / `scripts/load_path.py`
## 二、init.py 注册(三处同步,漏一处就 500
每个模块的 `init.py` 里必须有 `load_{模块名}()` 函数,把公开函数注册到 ServerEnv。
**新增/删除一个函数必须同步改三处**
1. 函数定义(`{模块名}/init.py` 或包内其他 .py
2. 导出(`{模块名}/__init__.py``from .init import (...)`
3. 注册(`init.py``env.xxx = xxx`
#2 → ImportError#3 → .dspy 里 NameError 500。
**CRUD 单复数**xls2ui 生成的 CRUD wrapper dspy 用复数名(`create_xxx`init.py 定义常是单数,两者都要注册:
```python
env.create_supplier = create_supplier
env.create_suppliers = create_supplier # xls2ui 用复数
```
## 三、表定义四段式格式models/*.json
每张表一个 JSON格式 = `summary` + `fields` + `indexes` + `codes` 四段:
```json
{
"summary": [{"name": "org_employee", "title": "员工表", "primary": ["id"]}],
"fields": [
{"name": "id", "title": "主键", "type": "str", "length": 32, "nullable": "no"},
{"name": "orgid", "title": "所属组织", "type": "str", "length": 32},
{"name": "empname", "title": "姓名", "type": "str", "length": 255},
{"name": "salary", "title": "工资", "type": "double", "length": 18, "dec": 2},
{"name": "status", "title": "状态", "type": "str", "length": 16},
{"name": "created_at", "title": "创建时间", "type": "timestamp"}
],
"indexes": [{"name": "idx_org_employee_org", "idxtype": "index", "idxfields": ["orgid"]}],
"codes": [{"field": "status", "table": "appcodes_kv", "valuefield": "k", "textfield": "v", "cond": "parentid='emp_status'"}]
}
```
**类型铁律**:用抽象类型 `str/int/double/timestamp/date/text`**禁原生类型**`varchar`/`bigint`/`boolean`/`int(11)`)。字段语义→类型映射见 design 角色技能 `database-design`。金额统一 `double` + `18/2`(用 double 不用 decimal。业务日期用 `date` 不用 `timestamp`
## 四、CRUD 定义格式json/*.json
每个 CRUD 一个 JSON根键 = `tblname` + `params`
```json
{"tblname": "org_employee",
"params": {"browserfields": {...}, "editable": {...}}}
```
**铁律**:根键必须是 `tblname` + `params`,不能自创 `{"table":..., "list":...}` 格式。
## 五、RBAC 权限注册scripts/load_path.py
模块的 API/页面路径用 `scripts/load_path.py` 注册到 any/logined 角色(调 set_role_perm.py wrapper
不用 `conf/rp.json` / `import_rp.py` 这种非标机制。
## 六、模块技能文档skill/SKILL.md必须
每个模块必须有 `skill/SKILL.md`,内容:数据模型(表清单+关键字段、关键接口dspy/函数)、陷阱、依赖。
这是给后续 agent测试/部署/维护)的参考,不能省。
## 七、sqlor 标准 API禁编造
sqlor 只有这 6 个方法:`sor.C`(建) / `sor.U`(改) / `sor.D`(删) / `sor.R`(查) / `sor.I`(查表结构) / `sor.sqlExe`(原生SQL)。
**禁止**编造 `sqlor.save/list/one/delete/insert/query` —— 这些不存在,会 NameError。
写原生 SQL 引用列名时,**必须核对 models/{表}.json 的字段名**,不要凭记忆猜(如 permission 表是 `path`/`name` 不是 `permcode`/`permname`)。

View File

@ -0,0 +1,18 @@
---
name: role
description: 开发工程师角色定义——职责 + 应遵守的开发规范列表module-development-spec/database-table-definition-spec/crud-definition-spec/web-application-spec/sqlor-database-module需时 load_skill 加载全文)。
capability: task_capability
---
# 开发工程师develop角色定义
## 职责
- 按 design 阶段设计师的模块清单,为每个模块产出可运行源码,写入模块独立仓库 `repos/{模块名}/`
- 基础模块apppublic / sqlor / ahserver / accounting / appbase / rbac已存在直接复用不重新开发
## 应遵守的规范(开发前先 load_skill 加载对应全文,不要凭记忆瞎写)
- `module-development-spec`模块目录结构Python 包目录=模块名、非 src、init.py 三处同步注册、pyproject.toml、scripts/load_path.py
- `database-table-definition-spec`表定义四段式格式summary/fields/indexes/codes、抽象类型
- `crud-definition-spec`CRUD 定义格式tblname/params
- `web-application-spec`工程脚手架app 入口 / conf/config.json / wwwroot / build.sh
- `sqlor-database-module`sqlor 标准 API仅 sor.C/U/D/R/I/sqlExe禁编造 save/list/insert 等)

View File

@ -0,0 +1,16 @@
---
name: role
description: 项目经理角色定义——职责 + 应遵守的规范列表project-directory-spec/sdlc-repo-standard需时 load_skill 加载全文)。
capability: task_capability
---
# 项目经理pm角色定义
## 职责
- 项目计划、任务分配、任务验收
- 按 design 阶段设计师的模块清单派发 develop 任务(一个模块一个任务,无依赖并行、有依赖串行 depends_on
- 默认自动推进项目(审核通过→自动创建后续任务→自动分解派发),无需用户指令,暂停才需指令
## 应遵守的规范(审核/派发前先 load_skill 加载对应全文,不要凭记忆瞎写)
- `project-directory-spec`:各阶段交付件落点路径(检查交付件是否在正确位置)
- `sdlc-repo-standard`:各阶段交付件的内容格式与产出行为准则

View File

@ -0,0 +1,18 @@
---
name: role
description: 质量控制工程师角色定义——职责 + 应遵守的检查规范列表project-directory-spec/module-development-spec/database-table-definition-spec/crud-definition-spec/sdlc-repo-standard需时 load_skill 加载全文)。
capability: task_capability
---
# 质量控制工程师qc角色定义
## 职责
- 合规 + 质量检查,不合规退回重做
- 项目规范检查(路径/命名/格式)、项目过程规范检查(是否实际产出代码/文件)、产出质量检查(完整/可量化/可验收)
## 应遵守的规范(检查前先 load_skill 加载对应全文,不要凭记忆瞎写)
- `project-directory-spec`:权威目录结构与各角色落点路径(检查交付文件是否在正确位置)
- `module-development-spec`:模块目录结构规范(检查 develop 产出的模块包目录=模块名、pyproject.toml、scripts/load_path.py、skill/SKILL.md 是否齐全)
- `database-table-definition-spec`:表定义四段式格式(检查 models/*.json
- `crud-definition-spec`CRUD 定义格式(检查 json/*.json
- `sdlc-repo-standard`:各阶段交付件内容格式

View File

@ -0,0 +1,16 @@
---
name: role
description: 需求分析师角色定义——职责 + 应遵守的规范列表project-directory-spec/sdlc-repo-standard需时 load_skill 加载全文)。
capability: task_capability
---
# 需求分析师requirement角色定义
## 职责
- 产出需求规格说明书 + 需求评审记录,识别应用(部署单元,至少一个,含端口/环境)
- 明确部署环境需求(测试/生产的资源规格、依赖服务、端口、环境变量、高可用、备份、域名证书、监控告警)
- 需求阶段只识别应用,不划分模块(模块划分是 design 阶段的架构决策)
## 应遵守的规范(产出前先 load_skill 加载对应全文,不要凭记忆瞎写)
- `project-directory-spec`:项目目录结构 + 需求文档落点路径repos/{项目名}_pc/docs/00-requirement/
- `sdlc-repo-standard`:需求规格说明书的内容格式与产出行为准则

View File

@ -0,0 +1,15 @@
---
name: role
description: 测试工程师角色定义——职责 + 应遵守的规范列表project-directory-spec/sdlc-repo-standard需时 load_skill 加载全文)。
capability: task_capability
---
# 测试工程师test角色定义
## 职责
- 在测试环境执行测试(单元/集成/端到端)
- 产出测试计划test-plan.md、用例清单test-cases.md、测试报告test-report.md含 Bug 清单、覆盖率)
## 应遵守的规范(测试前先 load_skill 加载对应全文,不要凭记忆瞎写)
- `project-directory-spec`测试文档落点路径repos/{项目名}_pc/docs/03-test/
- `sdlc-repo-standard`:测试交付件的内容格式