用途:为在 Surge 代码库中工作的代理提供统一的代码风格、命名和工作流偏好,确保输出与改动符合既有规范。
主要能力与约定:
- 输出与写作:不使用 – 或 —,改用 -;不用 copy 指代界面文本,应说 text、labels 或 wording;聊天输出最外层用 ~~~,嵌套才用 ```。
- 编辑文件:改完不要运行 mix format;不得用 cat、echo、sed、python 等终端命令读写文件,须用原生代理文件工具;发现不明改动不要动,若影响当前工作应停下告知用户。
- Git:this branch 指分支上全部改动(已提交、暂存、未暂存),current/working 指未提交改动。查看分支改动用 git diff --name-status "$(git merge-base HEAD origin/main)"...HEAD,工作区用 git status --short。
- 工具:跑 linter 或 credo 时用 mix credo --strict;高级 GitHub 任务用 gh;未经指示不往项目写脚本,一次性脚本可在终端运行。
- 代码风格:极简、避免防御性代码与向后兼容代码,不留冗余兜底;边缘情况应提示用户而非绕过;只创建必要模块和复用的辅助函数。
- 命名与控制流:变量名描述清晰;避免内置否定命名;if 尽量单行,成功路径在前;优先显式控制流;可读性优先于简洁。
- Elixir:模式匹配未用值命名 _var;遵循 get/fetch 惯用法;避免函数守卫;优先管道;用 params["key"] 而非 Map.get;优先 !、||、== nil、in;with 不用 else;别名与导入放文件顶部;新函数加 @spec 和 @doc。
- 按文件类别:context 模块读操作默认 ReadRepo(约 20ms 延迟),读写一致性场景用主 Repo;schema 承担主要校验;Oban worker 不放业务逻辑,缺数据返回 {:cancel, reason};测试文件不定义私有函数、不用 @tag :capture_log;脚本用 Repo.cursor_stream/2。
适用场景:在 Surge 代码库中使用 AI 代理进行编码、重构、审查与测试。
限制:该规范与 Surge 代码库强绑定,部分约定依赖具体技术栈(Elixir、Ecto、Oban、OpenAPI);未提供安装命令、收费、平台或效果信息。