draftgo-cli 3.0.29 → 3.0.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +41 -139
  3. package/package.json +10 -2
  4. package/resources/skill/SKILL.md +61 -184
  5. package/resources/skill/init/SKILL.md +18 -66
  6. package/resources/skill/manifest.json +34 -0
  7. package/resources/skill/pull/SKILL.md +18 -52
  8. package/resources/skill/push/SKILL.md +30 -282
  9. package/resources/skill/references/aihub.md +86 -0
  10. package/resources/skill/{quickref → references}/api-endpoints.md +39 -13
  11. package/resources/skill/references/api.json +20248 -0
  12. package/resources/skill/{quickref → references}/app-api.md +40 -0
  13. package/resources/skill/{core → references}/architecture.md +2 -2
  14. package/resources/skill/references/chat-sdk.md +201 -0
  15. package/resources/skill/references/custom-services.md +308 -0
  16. package/resources/skill/{specs → references}/data.md +5 -5
  17. package/resources/skill/{rules → references}/frontend.md +138 -32
  18. package/resources/skill/{core → references}/modules.md +7 -5
  19. package/resources/skill/references/parallel.md +48 -0
  20. package/resources/skill/{specs → references}/runtime.md +1 -1
  21. package/resources/skill/scripts/draftgo_push.py +80 -12
  22. package/resources/skill/story/SKILL.md +11 -16
  23. package/src/cli.js +13 -7
  24. package/src/commandRegistry.js +34 -0
  25. package/src/commands/api.js +153 -8
  26. package/src/commands/help.js +24 -29
  27. package/src/commands/init.js +17 -18
  28. package/src/commands/local.js +9 -3
  29. package/src/commands/sync.js +1 -1
  30. package/src/commands/update.js +40 -12
  31. package/src/index.js +13 -57
  32. package/src/localdev/compose.js +44 -200
  33. package/src/localdev/index.js +116 -216
  34. package/src/localdev/mysqlClient.js +12 -9
  35. package/src/localdev/services.js +163 -0
  36. package/src/projectConfig.js +1 -1
  37. package/src/projectMap.js +17 -80
  38. package/src/skill.js +1 -1
  39. package/src/updateCheck.js +2 -12
  40. package/resources/skill/practices/anti-patterns.md +0 -80
  41. package/resources/skill/practices/best-practices.md +0 -60
  42. package/resources/skill/practices/dev-declaration.md +0 -114
  43. package/resources/skill/quickref/api.json +0 -17784
  44. package/resources/skill/rules/dev-workflow.md +0 -749
  45. package/resources/skill/rules/parallel.md +0 -263
  46. package/resources/skill/scripts/__pycache__/draftgo_pull.cpython-312.pyc +0 -0
  47. package/resources/skill/scripts/__pycache__/draftgo_push.cpython-312.pyc +0 -0
  48. package/resources/skill/specs/custom-services.md +0 -199
  49. package/src/commands/doctor.js +0 -54
  50. package/src/commands/new.js +0 -186
  51. package/src/commands/projectScript.js +0 -37
  52. package/src/commands/upgrade.js +0 -52
  53. /package/resources/skill/{specs → references}/db-relations.md +0 -0
  54. /package/resources/skill/{rules → references}/debugging-syntax.md +0 -0
  55. /package/resources/skill/{specs → references}/security.md +0 -0
  56. /package/resources/skill/{specs → references}/ui-protocol.md +0 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 DraftGo contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -15,19 +15,18 @@ DraftGo Next 前端基线为 React + Vite。draftgo-cli v3 的定位是 DraftGo
15
15
 
16
16
  数据库页面以 HTML 为核心,默认使用 Tailwind CSS 和页面级 CSS。
17
17
 
18
- 已存在的 `draftgo init/update/status/doctor/map/check/connect/local-dev` 保持兼容;首批工作台命令如下:
18
+ 核心命令为 `draftgo init/update/status/map/check/connect/local setup`;工作台命令如下:
19
19
 
20
20
  | 命令 | 说明 |
21
21
  |---|---|
22
- | `draftgo local up` | 启动 `draftgo local-dev` 生成的 `.draftgo/docker/docker-compose.yaml` 本地栈。 |
23
- | `draftgo local down` | 停止本地栈。 |
22
+ | `draftgo local setup` | 生成 `.draftgo/docker/docker-compose.yaml`,初始化并启动本地 DraftGo 栈。`draftgo local-dev` 保留为兼容入口。 |
23
+ | `draftgo local start` | 启动本地栈。`up` 是兼容别名。 |
24
+ | `draftgo local stop` | 停止本地栈。`down` 是兼容别名。 |
24
25
  | `draftgo local logs` | 查看本地栈日志,默认跟随 `app` 服务。 |
25
26
  | `draftgo local status` | 查看本地栈容器状态。 |
26
- | `draftgo dev` | 运行当前项目 `package.json` 中的 `scripts.dev`。 |
27
- | `draftgo build` | 运行当前项目 `package.json` 中的 `scripts.build`。 |
28
- | `draftgo check` | 本地资源闭环检查,辅助发现入口绑定、缺文件、重复路由、疑似 mock 与颜色/主题风险。 |
27
+ | `draftgo check` | 本地资源检查:发现页面未绑定入口、页面/导航 HTML 解析问题、未登记到 `index.json` 的本地资源文件;不启动或构建底座。 |
29
28
  | `draftgo verify-ui <url>` | 使用 Playwright 执行单视口 UI smoke check;默认按 Git 变更判断,失败时才截图。 |
30
- | `draftgo api <keyword>` | 结构化检索内置 OpenAPI,无需让 AI 读取完整规范文件。 |
29
+ | `draftgo api <keyword>` | 检索 DraftGo 底座内置 OpenAPI,并展示请求字段、响应结构与鉴权信息。自定义服务端点由 `app.Route` 动态注册,不在此索引中。 |
31
30
  | `draftgo pull` | 包装随 skill 分发的 `draftgo_pull.py`,默认 `--all` 拉取资源。 |
32
31
  | `draftgo push` | 包装随 skill 分发的 `draftgo_push.py`,推送页面、导航、DB meta 等资源。 |
33
32
  | `draftgo deploy` | 显式执行 check → push;支持 `--delivery local|preview|deploy`。 |
@@ -58,15 +57,13 @@ draftgo init all # 所有支持的工具
58
57
  | 命令 | 说明 |
59
58
  |---|---|
60
59
  | `draftgo init [target]...` | 安装 skill。不传 target 时自动识别;`all` 表示全部。 |
61
- | `draftgo update [target]...` | 把当前 CLI 内置 skill 原子更新到已安装或检测到的 AI 工具目录;发现新版时只提示,不自动修改全局 CLI。 |
62
- | `draftgo upgrade` | 显式执行全局 CLI 升级,然后使用新版刷新 skill。 |
60
+ | `draftgo update [target]...` | 完整更新:先更新全局 CLI,再用新版原子刷新已安装或检测到的 AI 工具 skill。离线时仍会用当前 CLI 刷新 skill。 |
63
61
  | `draftgo uninstall [target]...` | 移除指定 AI 工具的 skill 目录(含入口文件 + 子技能 + scripts)。加 `--purge` 会连 `.draftgo/` 一起删。 |
64
62
  | `draftgo status` | 查看当前项目装了哪些 AI 工具入口、skill 版本。 |
65
- | `draftgo doctor` | 诊断:Python 是否可用、检测到哪些 AI 工具、各入口状态。 |
66
63
  | `draftgo map` | 输出本地 DraftGo 资源地图:页面、导航、DB、脚本、AIHub、文档、系统配置、入口引用,帮助 AI 快速进入项目。 |
67
- | `draftgo check` | 本地闭环体检:检查 route、入口绑定、文件存在性、重复路由和疑似 mock/伪功能风险。 |
64
+ | `draftgo check` | 本地资源检查:页面未绑定入口、页面/导航 HTML 解析问题、未登记到 `index.json` 的本地资源文件。 |
68
65
  | `draftgo verify-ui <url>` | 浏览器 smoke check;支持 `--mobile-check auto|always|never` 和失败截图。 |
69
- | `draftgo api <keyword>` | 查询内置 OpenAPI 端点。 |
66
+ | `draftgo api <keyword>` | 查询 DraftGo 底座内置 OpenAPI 端点,输出请求字段、响应结构与鉴权信息;自定义服务端点需从 `app.Route` 推导。 |
70
67
  | `draftgo deploy [type] [id...]` | 显式交付;`local` 只检查,`preview` dry-run,`deploy` 推送。 |
71
68
  | `draftgo list-targets` | 列出支持的 AI 工具名。 |
72
69
  | `draftgo --version` | 打印 CLI 版本。 |
@@ -76,7 +73,7 @@ draftgo init all # 所有支持的工具
76
73
 
77
74
  - `--project <dir>`:对指定目录操作(默认当前工作目录)。
78
75
  - `--force`:`init/update` 时强制覆盖已存在的 AI 工具 skill 目录。
79
- - `--skip-update-check`:`update` 时不去 npm 查最新版,直接用当前 CLI 执行。
76
+ - `--skip-update-check`:`update` 时不去 npm 查最新版,直接用当前 CLI 刷新 skill。
80
77
  - `--purge`:`uninstall` 时连 `.draftgo/`(含 config / 日志 / 本地缓存)一起删。
81
78
  - `--output json`:`map/check` 输出机器可读 JSON。
82
79
  - `--strict`:`check` 将提醒项也视为失败。
@@ -96,7 +93,7 @@ draftgo init all # 所有支持的工具
96
93
 
97
94
  文档会摘要 `slug/category/content_file/status`,系统配置只展示 `config_key/category/value_type/is_sensitive/status`,避免把敏感值直接暴露给 Agent 输出。
98
95
 
99
- `draftgo check --output json` 会输出 `{ map, errors, warnings, warningDetails }`,其中 `warningDetails` 带规则编号与置信度。`--strict` 会把 warnings 也视为失败。检查会提示明显的硬编码配色风险,要求优先使用系统 `var(--dg-*)` token;自主配色需同时兼容浅色与深色主题。
96
+ `draftgo check --output json` 会输出 `{ map, errors, warnings, warningDetails }`,其中 `warningDetails` 带规则编号与置信度。当前只检查页面入口绑定、页面/导航 HTML 解析,以及未登记到 `index.json` 的本地资源文件;`--strict` 会把 warnings 也视为失败。
100
97
 
101
98
  ## 更新
102
99
 
@@ -105,21 +102,18 @@ cd <your-project>
105
102
  draftgo update
106
103
  ```
107
104
 
108
- `update` 会用当前版本刷新 skill,并查询 npm 最新版:
105
+ `update` 是唯一的完整更新命令:
109
106
 
110
107
  - 如果 CLI 已是最新 → 原子替换每个目标的 skill 资源
111
- - 如果 CLI 过时提示运行 `draftgo upgrade`,本次仍使用当前版本完成刷新
112
-
113
- 需要升级 CLI 时显式运行:
114
-
115
- ```bash
116
- draftgo upgrade
117
- ```
108
+ - 如果 npm 有新版先全局更新 CLI,再由新版刷新 skill
109
+ - 如果 npm 暂不可达 → 保留当前 CLI,并刷新 skill
118
110
 
119
111
  整个过程中,你本地的 `.draftgo/config.json`、`changelog.md`、`lessons/`、`Task/` 等运行时数据都不会被动到。
120
112
 
121
113
  ## 内置 Skill 文档约定
122
114
 
115
+ 内置 Skill 同时提供 `resources/skill/manifest.json`:这是 DraftGo 的机器可读元数据(版本、入口、能力和声明权限),为自研宿主或未来平台适配提供统一入口;各 AI 工具仍使用各自的安装入口文件。
116
+
123
117
  CLI 随包分发的 DraftGo skill 会同步基座 API 约定。集合写入统一为:
124
118
 
125
119
  - 创建:`POST /api/<resource>` 支持单个对象或对象数组。
@@ -129,12 +123,15 @@ CLI 随包分发的 DraftGo skill 会同步基座 API 约定。集合写入统
129
123
 
130
124
  前端资源约定:
131
125
 
126
+ - 壳层源码使用 React 19 + Vite 8 + Tailwind CSS 4;数据库页面和导航使用原生 HTML,不可写入 TSX、ESM import 或 npm 构建产物。数据库页面需要 React 时使用内置 React 18 UMD。
127
+ - 内置组件库:Ant Design 5.29.3(React 18 UMD)、Basecoat UI 1.0.2(HTML + CSS/JS)、Oat UI 0.7.0(Web Components)。组件清单、运行方式和资源路径见 `resources/skill/references/frontend.md`;该文档不规定选型。
128
+ - `/assets/adapters/draftgo-ui.js` 提供 `window.DraftGoUI` 和 `DraftGoUI.load(name)`;Basecoat/Oat 的主题适配资源为 `/assets/adapters/draftgo-theme.css`,加载顺序见 `resources/skill/references/frontend.md`。
132
129
  - DraftGo 基座内置 SVG 图标库,运行时路径为 `/assets/icons/{name}.svg`。
133
130
  - 图标文件统一使用 `kebab-case.svg` 命名;完整映射见 `/assets/icons/manifest.json`。
134
131
  - 页面或导航栏需要单色图标时,优先用 CSS mask + `currentColor`,可自动适配深浅主题。
135
132
  - html2canvas 1.4.1 已内置,页面需要截图 / 导出图片时优先使用本地路径 `/assets/vendor/html2canvas/html2canvas.min.js`;确需 CDN 时优先使用国内镜像引入。
136
133
 
137
- Go 自定义服务通过 `ctx.DB.CreateMany(...)` 与 `ctx.DB.UpdateMany(...)` 批量写入动态数据。
134
+ Go 自定义服务通过 `draftgo.DB.CreateMany(...)` 与 `draftgo.DB.UpdateMany(...)` 批量写入动态数据。
138
135
 
139
136
  自定义服务(Custom Scripts)约定:
140
137
 
@@ -142,18 +139,20 @@ Go 自定义服务通过 `ctx.DB.CreateMany(...)` 与 `ctx.DB.UpdateMany(...)`
142
139
  - 本地资源在 `.draftgo/custom_scripts/`;元数据写在 `index.json`,代码文件以每条记录的 `code_file` 为准。推送时 `draftgo_push.py custom_scripts` 只读取 `code_file` 指向的文件。
143
140
  - 新服务使用 `mode=mixed`,`Register` 内的 `app.Route`、`app.On`、`app.Schedule` 会自动形成完整触发器清单;旧 `triggers` 字段不参与 Go 注册。
144
141
  - `slug=<slug>` 是服务命名空间;`app.Route("GET", "/items", handler)` 映射为 `GET /api/x/<slug>/items`。一个服务可同时注册多个路由、事件和定时任务。
145
- - Go handler 签名为 `func handler(ctx *sdk.Context) (any, error)`;普通值直接返回,需要状态码或响应头时使用 `ctx.Respond(...)`。
142
+ - Go handler 签名为 `func handler(draftgo *sdk.Context) (any, error)`;普通值直接返回,需要状态码或响应头时使用 `draftgo.Respond(...)`。
146
143
  - 第三方依赖写在同一条 index 元数据的 `go_mod` / `go_sum`;推送后应真实请求无副作用 GET 端点验证,不要只看 `OK script_id=...`。
147
144
  - `app.On("user.registered", handler)` 可重复声明;同一服务既能监听多个事件,也能为同一事件注册多个 handler。
148
- - Route 输入在 `ctx.Input`(`body`、`query_params`、`headers`、`method`、`path_params`);当前用户用 `ctx.Auth.CurrentUser()` 获取。普通值可直接返回,需要状态码或响应头时用 `ctx.Respond(...)`。
149
- - 动态数据使用 `ctx.DB.Query(type, sdk.QueryOptions{...})`;完整 Go SDK 见 `specs/custom-services.md`。
145
+ - Route 输入在 `draftgo.Input`(`body`、`query_params`、`headers`、`method`、`path_params`);当前用户用 `draftgo.Auth.CurrentUser()` 获取。普通值可直接返回,需要状态码或响应头时用 `draftgo.Respond(...)`。
146
+ - 动态数据使用 `draftgo.DB.Query(type, sdk.QueryOptions{...})`;完整 Go SDK 见 `references/custom-services.md`。
150
147
  - 管理面按 `scripts:read/create/update/delete/execute` 接入角色 RBAC;获得创建/编辑权限的用户属于可信代码编辑者。调用面仍由每个 route 的 `permission` 与 `config.route_security` 独立控制,管理权限不会绕过调用权限。
151
- - 服务可用 `config.max_concurrency` / `queue_timeout_ms` 设置并发退避;出站请求使用 `ctx.HTTP`,饱和 Route 返回 HTTP 429。
152
- - 完整 SDK(users/db/auth/notify/http/cache/config/aihub/log)、各触发类型 ctx、管理 API 和部署限制见 [`resources/skill/specs/custom-services.md`](resources/skill/specs/custom-services.md)。
148
+ - 服务可用 `config.max_concurrency` / `queue_timeout_ms` 设置并发退避;出站请求使用 `draftgo.HTTP`,饱和 Route 返回 HTTP 429。
149
+ - 完整 SDK(users/db/auth/notify/http/cache/config/log,以及 AIHub/知识库/Memory/Skill/MCP 的推理与 CRUD)、各触发类型 `draftgo`、管理 API 和部署限制见 [`resources/skill/references/custom-services.md`](resources/skill/references/custom-services.md)。
153
150
 
154
151
  AIHub Agent 用户选模型约定:
155
152
 
156
- - 管理端在 Agent `data.spec.model_selection.user_selectable=true` 后,页面可调用 `DraftGoAI.getSelectableModels(agentId)` 获取 `{ user_selectable, models }`。
153
+ - 新页面的 AI 对话 UI 先引入 `/assets/draftgo-chat.js`,再使用 `<dg-chat protocol="draftgo-agent" agent-id="AGENT_ID">` `DraftGoChat.create()`;完整规则见 `resources/skill/references/chat-sdk.md`。
154
+ - `DraftGoAI.chat/images/getSelectableModels` 是同一脚本提供的旧兼容门面,不由壳层默认注入,也不应替代新页面的 `<dg-chat>` 对话 UI。
155
+ - 管理端在 Agent 的 `data.spec.model_selection.user_selectable=true` 后,页面可通过 Chat SDK 模型选择器,或兼容接口 `DraftGoAI.getSelectableModels(agentId)` 获取 `{ user_selectable, models }`。
157
156
  - `models` 是该 Agent 的主模型 + 备用模型白名单,不是供应商全量模型列表。
158
157
  - 调用 `DraftGoAI.chat(...)` 或 `DraftGoAI.images(...)` 时,可在 `options.model` 中传入用户选择的模型;后端会继续按 Agent 白名单校验。
159
158
 
@@ -222,7 +221,7 @@ AIHub Agent JSON 输出约定:
222
221
  │ ├── Task/ # 每个开发任务一个 md,含需求 / 设计 / 任务标记
223
222
  │ ├── lessons/ # 开发经验、踩坑记录、基座局限场景
224
223
  │ ├── pages/ navigations/ ... # init 拉取的本地缓存
225
- │ ├── skill-shared/quickref/api.json # 多 AI 工具共享的 OpenAPI 快照
224
+ │ ├── skill-shared/references/api.json # 多 AI 工具共享的 OpenAPI 快照
226
225
  │ └── .version # CLI 写入:当前已装 skill 的版本
227
226
 
228
227
  └── (AI 工具 skill 目录,按需写入;每份都是完整副本)
@@ -242,6 +241,12 @@ AIHub Agent JSON 输出约定:
242
241
 
243
242
  ---
244
243
 
244
+ ## v3.0.30 升级要点(自定义服务 AI SDK)
245
+
246
+ - 内置 Skill 补齐 AIHub 推理、Embedding、Agent/Prompt/Skill/MCP 资产 CRUD,以及供应商、模型路由和运行记录接口。
247
+ - 增加知识库、文档、Chunk、长期记忆的 Go SDK 说明,包含文件上传、检索、重建索引和管理员同构入口。
248
+ - 记录 `config.aihub` 推理开关与 Agent/模型白名单,并为全部新 SDK 能力增加文档契约测试。
249
+
245
250
  ## v3.0.28 升级要点(同步可靠性)
246
251
 
247
252
  - 修复导航 pull:列表元数据会逐条获取详情 HTML,避免空内容覆盖本地导航。
@@ -256,32 +261,6 @@ AIHub Agent JSON 输出约定:
256
261
 
257
262
  ---
258
263
 
259
- ## v1.2.0 升级要点(高质量开发规范)
260
-
261
- CLI v1.2.0 在 skill 包里追加了一套**分级开发流程规范**(`rules/dev-workflow.md`),目标是让 AI 在做 DraftGo 项目开发时"小修不拖慢、功能有计划、高风险有门禁、质量靠证据"。
262
-
263
- **分级流程**:
264
-
265
- ```
266
- 小修:直接定位 → 改 → 轻量证据
267
- 轻功能:范围复述 → 直接做 → 凭证据闭环
268
- 标准功能:轻量确认 → 内部短计划 → 执行闭环
269
- 高风险:完整 Story / 计划 / 验证 / 回读证据
270
- ```
271
-
272
- **新增本地目录**:
273
- - `.draftgo/Task/`:每个开发任务一个 Markdown 文件,含需求纪要 / 设计 / 任务清单 / ⬜🟡✅❌⏸ 标记 / 完成回顾
274
-
275
- **经验记录(lessons)**:
276
- - `.draftgo/lessons/` 统一记录开发过程中的阻碍、踩坑、框架运行时问题、基座能力局限和可复用经验。
277
- - 文件按 `YYYY-MM-DD-主题关键词.md` 命名,便于后续回顾和沉淀为开发规范。
278
-
279
- **前端 UI 能力**:DraftGo 平台前端默认采用 React + Tailwind CSS。若本地 Agent 环境存在前端 UI 相关 Skills,前端界面开发时优先调用。DraftGo-CLI 提供运行时、资源、数据、路由、入口绑定和验证方法。
280
-
281
- 完整规范见各 AI 工具自身 skill 目录下的 `rules/dev-workflow.md`,例如 `.claude/skills/draftgo/rules/dev-workflow.md`。
282
-
283
- ---
284
-
285
264
  ## v2.0.3 升级要点(操作型页面空间利用)
286
265
 
287
266
  CLI v2.0.3 补充操作型页面的空间模型,重点解决后台管理 / 表格 / 列表页面按普通文档流布局时,数据少导致分页、保存栏、批量操作区上浮,页面空间利用不足的问题。
@@ -291,7 +270,7 @@ CLI v2.0.3 补充操作型页面的空间模型,重点解决后台管理 / 表
291
270
  - **工作台布局原则**:后台管理、表格、列表、审批、配置、内容维护等操作型页面,优先让页面根容器占满可用视口 / iframe 内容区。
292
271
  - **稳定控制区**:顶部筛选、搜索、标题操作区保持稳定高度,底部分页、批量操作栏、保存栏等流程控制区保持在工作区底部或稳定位置。
293
272
  - **数据区承接剩余空间**:主体数据区使用 `flex:1; min-height:0; overflow:auto` 等结构承接剩余空间,数据少时保留工作区空白,数据多时优先让数据区内部滚动。
294
- - **工作台结构同步**:`rules/frontend.md` 补充操作型页面的空间方法,基座对应文档为 `docs/frontend/rules.md`,避免分页跟随 1-2 条数据上浮。
273
+ - **工作台结构同步**:`references/frontend.md` 补充操作型页面的空间方法,基座对应文档为 `docs/frontend/rules.md`,避免分页跟随 1-2 条数据上浮。
295
274
 
296
275
  ---
297
276
 
@@ -301,7 +280,7 @@ CLI v2.0.2 进一步完善 `draftgo update` 的目标识别逻辑,避免只修
301
280
 
302
281
  **核心变化:**
303
282
 
304
- - **平台定义成为单一信号源**:每个 AI 工具的入口文件、skill 目录和项目级探测信号统一维护在 `platforms.js`,`init / update / doctor` 共用同一份识别依据。
283
+ - **平台定义成为单一信号源**:每个 AI 工具的入口文件、skill 目录和项目级探测信号统一维护在 `platforms.js`,`init / update / status` 共用同一份识别依据。
305
284
  - **update 覆盖所有检测到的工具**:不传 target 时,`draftgo update` 会合并“已安装 skill 的目标”和“项目中检测到的 AI 工具信号”,并刷新全部命中的工具。
306
285
  - **全平台测试覆盖**:单测现在会同时模拟 Claude Code、Cursor、Windsurf、Antigravity、Kiro、GitHub Copilot、Codex、Gemini 的项目级信号,防止后续再出现只命中部分工具的问题。
307
286
 
@@ -330,21 +309,6 @@ CLI v2.0.0 删除了内置 `resources/skill/reference/` 基座参考副本,进
330
309
 
331
310
  ---
332
311
 
333
- ## v1.6.2 升级要点(开发效率轻量化)
334
-
335
- CLI v1.6.2 进一步降低开发流程摩擦:保留真实落地闭环、页面绑定和平台禁区,同时让小修和轻功能更快进入实现。
336
-
337
- **核心变化:**
338
-
339
- - **小修渐进读取**:小修优先只读目标资源和最小必要规则,不再默认展开完整规则链路。
340
- - **新增轻功能档**:简单页面能力、单入口交互、小型数据联动可走“范围复述 → 直接做 → 凭证据闭环”,不强制创建 Task。
341
- - **计划字段按需**:`depends / resource_lock / wave` 只在多任务、多资源冲突或准备并行时强制;单人串行小计划不再为字段服务。
342
- - **并行按收益启用**:只有任务数足够、边界清晰、资源不冲突且并行收益大于协调成本时才启用并行。
343
- - **取消 80 行硬限制**:改为“复杂或高风险代码分段实现并验证”,避免机械分批拖慢前端开发。
344
- - **验证按影响分层**:小修验证改动点,轻功能验证入口引用和主路径;标准功能按实际影响覆盖四态、数据、跳转和同步证据。
345
-
346
- ---
347
-
348
312
  ## v1.6.1 升级要点(前端规则收敛)
349
313
 
350
314
  CLI v1.6.1 继续优化开发效果:减少前端规则中过细的“适合 / 不适合”和固定模板描述,让 AI 在满足平台硬约束的前提下,根据页面目标和业务复杂度做实现判断。
@@ -365,12 +329,12 @@ CLI v1.6.0 强化了 skill 对“开发任务规划”的判断力,重点解
365
329
  **核心变化:**
366
330
 
367
331
  - **用户意图翻译**:当用户用非技术语言描述“案例库、新闻中心、产品中心、预约、资料下载”等业务目标时,AI 会先识别它是页面、多页面还是完整功能模块,而不是要求用户说出 CRUD、API、路由等开发术语。
368
- - **页面默认完整功能**:用户说“做一个页面”时,默认按可真实使用的页面功能处理;只有明确说“静态 / 纯页面 / demo / 先看效果”时,才按静态页处理。
332
+ - **页面默认完整功能**:用户说“做一个页面”时,默认按可真实使用的页面功能处理;只有明确说“静态 / 纯页面 / 原型 / 先看效果”时,才按静态页处理。
369
333
  - **用户路径链路**:功能规划从“用户打开官网 / 系统入口 → 看见入口 → 点击进入 → 操作 → 反馈 → 后台维护 → 前台展示更新”这一整条链路倒推页面、导航、数据和权限。
370
334
  - **新增页面绑定**:创建页面后必须绑定到导航栏、首页入口、后台菜单或相关页面按钮之一;只创建页面文件、无法从正常路径点击进入,不算完成。
371
335
  - **真实落地闭环**:按钮、表单、搜索、筛选、分页、保存、删除、发布等交互默认要真实有效;需要可维护内容时,优先规划后台管理和同一份真实数据,追求高可用。
372
336
 
373
- 这些规则保持轻量:小修直接定位 轻量证据;轻功能不强制 Task;普通标准功能使用内部短计划;跨资源、多页面协作、并行或高风险时才落 Task。
337
+ 这些规则已改为按事实触发:资源关系不清时 map,页面改动检查入口和 HTML,数据/API/服务只读取对应契约,运行和布局改变才做浏览器验证。Task Story 仅在需要产品决策沉淀或跨资源交接时使用。
374
338
 
375
339
  ---
376
340
 
@@ -390,71 +354,9 @@ python .claude/skills/draftgo/scripts/draftgo_push.py db_meta [meta_id]
390
354
 
391
355
  更推荐的用法:在 AI 工具里说「初始化 draftgo 项目」或「同步页面 123」,skill 会自动触发对应脚本。
392
356
 
393
- ## v1.4.0 升级要点(Story System — 系统灵魂档案)
394
-
395
- CLI v1.4.0 引入 **Story System**,解决 Vibe Coding 时代最大的痛点:每次新对话 AI 都不知道"这个系统为什么存在、不做什么、做过什么取舍"。
396
-
397
- **核心机制:Story Context / Gate**
398
-
399
- 开发任务开始时,AI 按任务级别处理 `.draftgo/story.yaml`:
400
- - 小修 → 不强制触发 Story
401
- - 功能 → 存在则静默加载,不存在不阻塞开发,收尾提醒补 Story
402
- - 高风险 → 不存在则暂存请求,进入 Story 构建流程(对话式采集,不是填表);存在则静默加载并做冲突检测
403
-
404
- **Story 文件结构(三层):**
405
-
406
- ```yaml
407
- # .draftgo/story.yaml
408
- meta:
409
- version: 1
410
- created: 2026-05-17
411
- last_touched: 2026-05-17
412
- maturity: seed # seed | growing | stable
413
-
414
- identity:
415
- what: "一句话讲清这是什么"
416
- why: "解决什么痛点,给谁用"
417
- not:
418
- - "不是 XX"
419
- - "不变成 YY"
420
-
421
- design:
422
- overview: "核心流转逻辑:用户从哪进来 → 经过什么 → 得到什么价值"
423
- modules:
424
- - name: "模块名"
425
- role: "这个模块在系统里的定位(核心/辅助/基座)"
426
- decisions:
427
- - id: D001
428
- date: 2026-05-17
429
- chose: "选了什么"
430
- over: "拒绝了什么"
431
- because: "原因"
432
- status: active
433
-
434
- now:
435
- focus: "当前在做什么"
436
- next: "下一步方向"
437
- open_questions:
438
- - "悬而未决的事"
439
- ```
440
-
441
- **运行时行为:**
442
- - **冲突检测**:当开发请求与 Story 的 `identity.not` 或 active 决策矛盾时,AI 会显式摊牌,给出"想法变了 / 双轨并行 / 只是特例"三个选项
443
- - **主动沉淀**:检测到方向性决策时,AI 主动提议记入 decisions
444
- - **now 更新**:对话结束时提议更新 focus/next
445
-
446
- **开发流程升级为分级门禁:**
447
-
448
- ```
449
- 小修:直接定位 → 改 → 轻量证据
450
- 轻功能:范围复述 → 直接做 → 凭证据闭环
451
- 标准功能:轻量确认 → 内部短计划 → 执行闭环
452
- 高风险:Story → 完整确认 → 计划 → 回读验证 / 影响说明
453
- ```
454
-
455
- **注意:** `.draftgo/story.yaml` 不在 `draftgo init` 中创建。它由 AI 在首次开发对话时通过与开发者交流后生成,确保内容有意义而不是空模板。
357
+ ## Story
456
358
 
457
- 完整规范见各 AI 工具自身 skill 目录下的 `story/SKILL.md`,例如 `.claude/skills/draftgo/story/SKILL.md`。
359
+ `.draftgo/story.yaml` 用于沉淀会影响后续取舍的产品定位与决策。已有 Story 且请求触及定位或既有决策时读取;用户要求建立、更新或冲突检查时调用 `story/SKILL.md`。
458
360
 
459
361
  ---
460
362
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "draftgo-cli",
3
- "version": "3.0.29",
3
+ "version": "3.0.35",
4
4
  "description": "Install and manage the DraftGo skill across AI coding agents (Claude Code, Codex, Cursor, Windsurf, Antigravity, Copilot, Gemini, Kiro).",
5
5
  "bin": {
6
6
  "draftgo": "bin/draftgo.js"
@@ -13,6 +13,9 @@
13
13
  "bin/",
14
14
  "src/",
15
15
  "resources/",
16
+ "!resources/**/__pycache__/**",
17
+ "!resources/**/*.py[cod]",
18
+ "LICENSE",
16
19
  "README.md"
17
20
  ],
18
21
  "keywords": [
@@ -39,10 +42,15 @@
39
42
  "url": "git+https://github.com/draftgo/draftgo-cli.git"
40
43
  },
41
44
  "scripts": {
42
- "test": "node tests/unit.js && node tests/e2e.js",
45
+ "lint": "node scripts/check-syntax.js",
46
+ "validate:skill": "node scripts/validate-skill.js",
47
+ "verify:package": "node scripts/verify-package.js",
48
+ "test": "npm run lint && npm run validate:skill && npm run verify:package && node tests/unit.js && node tests/e2e.js",
49
+ "test:unit": "node tests/unit.js",
43
50
  "test:e2e": "node tests/e2e.js"
44
51
  },
45
52
  "dependencies": {
53
+ "@grpc/grpc-js": "1.14.1",
46
54
  "parse5": "6.0.1",
47
55
  "playwright-core": "1.61.1"
48
56
  },