Files
core/skills/SKILL.md
T

5.9 KiB
Raw Blame History

name, description
name description
dever-language 开发、检查、测试或维护 Dever 语言应用(.dever、.dever.md),创建新项目,安装或更新 dever 命令,编写 App、Domain、Model、API、CMD、Job、Port/Adapter,接入 Dever Package 或 Python/JS/Go Lib 时使用。也用于 Dever 应用目录、权限、租户和命名约束检查。不要用于 Go Dever 框架、dever-go 或普通 Go 组件开发。

Dever 语言开发

Dever 是独立语言。应用源码使用 .dever 或 .dever.md,不沿用 Go Dever 的 service、Page JSON 或 Provider 目录;第三方语言实现经 Port/Adapter 接入。

先确定版本和范围

  1. 读取用户项目的 AGENTS.md、现有目录和 config/setting.json。回答、分析、诊断只做只读检查;用户要求修改时再实施,不擅自安装软件、改服务或改全局命令。
  2. 若已安装机器版 Dever,新项目运行 dever skill path,已有项目运行 dever skill path <project-root>,读取返回目录中的 SKILL.md 与本次需要的参考文件。已经在那个目录读取本 skill 时不再递归加载。它由 dever update 与核心一起更新;已有项目按其可选 dever.version 选择对应指引,不能把活动版本新增语法强加给旧项目。
  3. 尚无 dever 时按 安装与更新 引导安装;不能把 dever-go 当作 Dever 语言命令。公开发行包缺失时如实说明,不编造成功、不自动编译一套缺少 runtime 的开发二进制。
  4. 新项目使用 dever new <new-directory>;Markdown 项目加 --markdown。不要手工猜模板,不覆盖已有目录。项目模板的用途和检查命令见 项目开发。

开发、重构或审查应用代码前,必须读取 项目开发 中的文件与函数组织、配置与硬编码、禁止绕过检查、验证范围。安装或纯语法问答只加载与请求相关的参考。

按需要阅读

工作 先读
新项目、目录、命名、测试与交付 development.md
类型、分句、函数、集合、失败和并发 language.md
HTTP/CMD、Model、权限、租户、Job application.md
标准能力、外部生态、Package libraries.md
Markdown 源码 markdown.md
安装命令、安装 skill、更新 install.md

只加载当前任务相关参考。当前版本的编译器检查和已验证模板决定语法;参考中没有的调用先查官方对应版本源码,不能按其它语言习惯杜撰方法。

必须遵守的应用边界

  • 配置只在 config/setting.json;不通过环境变量读取配置、密码、数据库 URL 或选择工具链。不要把 Dever 的官方仓库地址、更新配置写入业务项目。
  • 应用目录是 module/<component>/<domain>/<role>.dever;role 只有 app/domain/model/port/adapter/api/job。复杂职责再按主题拆分,不机械地每个函数建一个文件,不建 common/utils/helper/base/service 杂物目录。
  • 不写 package/import/exposes/main。应用入口由 API、CMD、Job 声明生成。App 是对外领域能力;跨领域只调用目标 App,不直接调用其私有 Model、Domain、Adapter。
  • API 只声明绑定或 REST,App 编排,Domain 保存内聚的业务规则,Model 声明持久化合同,Port/Adapter 隔离外部 I/O。已有标准能力直接复用,禁止重复手写 ID 解析、分页裁剪、JSON 拼装等碎片函数。
  • 函数使用命名输出和互斥、穷尽的相邻分句;没有 if/else/switch/match/return、任意循环或递归。不要靠分句顺序隐藏重叠规则。
  • HTTP 默认有权限,匿名入口才写 public。不添加 auth.require、客户端自报身份/权限或每个 API 重复鉴权。站点按配置里的 API 目录匹配,租户按数据库隔离。
  • 测试放在 test/<component>/<domain>/<topic>.dever,入口为文件同名 topic() ()。外部调用使用 case-local Port fake,不在普通测试启动真实 Lib 或访问真实业务数据库。
  • run/build 离线。依赖准备使用显式 dever package / dever lib 命令;已有锁在新机器用 dever lib install,ARM 应用目标用 dever target add linux-aarch64。这些命令按需准备机器共享资源,不扫描宿主 Python、Node、Go 或 PATH 来充当运行环境。

工作方式

  1. 修改前查相关领域、实际调用链、标准能力和既有实现。对非平凡改动简要说明缺少什么行为、应该由哪一层负责、哪些文件需要改变;已有实现满足要求时保留它。
  2. 实施时以完整业务职责组织文件和函数。抽取须有业务含义、明确不变量、实际复用或降低复杂流程理解成本的作用;不按行数或函数个数机械拆分。只清理本次引入或废弃的重复与死代码,保留无关改动。
  3. 完成后审查新增调用链、公开合同、配置与可信身份来源,检查本次引入的诊断并执行范围内验证。禁止假调用、吞错、假成功、擅自修改接口基线或弱化测试来通过检查;详见开发指引。

fmt --check、check、test 和 run/build 的覆盖范围不同。check 与 run/build 共用应用入口可达性和冗余硬检查,保持静态、离线,不执行应用;具体见 验证范围。dever test 没有筛选参数,已有大项目不擅自全量测试;新模板的小套件可完整验证。已有授权覆盖的验证直接执行,启动服务、接真实数据库或更改系统安装须遵守用户的范围限制。

交付说明实际改动、验证结果与未验证边界。规则写入 skill 不等于新增编译器检查,能编译不等于业务验收、性能验收或已发布。