draftgo-cli 3.0.1 → 3.0.33
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.
- package/LICENSE +21 -0
- package/README.md +73 -124
- package/package.json +21 -8
- package/resources/skill/SKILL.md +62 -89
- package/resources/skill/init/SKILL.md +18 -67
- package/resources/skill/manifest.json +27 -0
- package/resources/skill/pull/SKILL.md +18 -44
- package/resources/skill/push/SKILL.md +30 -247
- package/resources/skill/references/aihub.md +86 -0
- package/resources/skill/references/api-endpoints.md +178 -0
- package/resources/skill/references/api.json +20248 -0
- package/resources/skill/{quickref → references}/app-api.md +44 -14
- package/resources/skill/{core → references}/architecture.md +6 -26
- package/resources/skill/references/chat-sdk.md +201 -0
- package/resources/skill/references/custom-services.md +308 -0
- package/resources/skill/references/data.md +298 -0
- package/resources/skill/references/db-relations.md +227 -0
- package/resources/skill/references/frontend.md +788 -0
- package/resources/skill/references/modules.md +66 -0
- package/resources/skill/references/parallel.md +48 -0
- package/resources/skill/{specs → references}/runtime.md +31 -1
- package/resources/skill/{specs → references}/security.md +3 -3
- package/resources/skill/references/ui-protocol.md +99 -0
- package/resources/skill/scripts/draftgo_delete.py +0 -2
- package/resources/skill/scripts/draftgo_init.py +15 -3
- package/resources/skill/scripts/draftgo_pull.py +154 -87
- package/resources/skill/scripts/draftgo_push.py +440 -183
- package/resources/skill/story/SKILL.md +13 -23
- package/src/cli.js +22 -7
- package/src/commandRegistry.js +34 -0
- package/src/commands/api.js +204 -0
- package/src/commands/autoPush.js +41 -0
- package/src/commands/check.js +27 -17
- package/src/commands/delete.js +6 -4
- package/src/commands/deploy.js +31 -0
- package/src/commands/help.js +41 -28
- package/src/commands/init.js +34 -20
- package/src/commands/local.js +9 -3
- package/src/commands/map.js +18 -7
- package/src/commands/sync.js +11 -4
- package/src/commands/update.js +39 -52
- package/src/commands/verifyUi.js +199 -0
- package/src/index.js +13 -46
- package/src/localdev/compose.js +48 -197
- package/src/localdev/index.js +116 -216
- package/src/localdev/mysqlClient.js +12 -9
- package/src/localdev/services.js +163 -0
- package/src/platforms.js +3 -3
- package/src/projectConfig.js +12 -2
- package/src/projectMap.js +240 -68
- package/src/skill.js +113 -29
- package/src/updateCheck.js +37 -15
- package/resources/skill/core/modules.md +0 -54
- package/resources/skill/practices/anti-patterns.md +0 -70
- package/resources/skill/practices/best-practices.md +0 -41
- package/resources/skill/practices/dev-declaration.md +0 -94
- package/resources/skill/quickref/api-endpoints.md +0 -130
- package/resources/skill/quickref/api.json +0 -17675
- package/resources/skill/quickref/dg-components.md +0 -198
- package/resources/skill/rules/dev-workflow.md +0 -652
- package/resources/skill/rules/frontend.md +0 -210
- package/resources/skill/rules/parallel.md +0 -263
- package/resources/skill/specs/data.md +0 -108
- package/resources/skill/specs/ui-protocol.md +0 -68
- package/src/commands/doctor.js +0 -54
- package/src/commands/new.js +0 -183
- package/src/commands/projectScript.js +0 -37
- /package/resources/skill/{rules → references}/debugging-syntax.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
|
@@ -11,23 +11,25 @@
|
|
|
11
11
|
|
|
12
12
|
## DraftGo Next v3 基线
|
|
13
13
|
|
|
14
|
-
DraftGo Next 前端基线为 React + Vite
|
|
14
|
+
DraftGo Next 前端基线为 React + Vite。draftgo-cli v3 的定位是 DraftGo 工作台 CLI:负责本地运行环境、资源同步、开发检查、push/pull 闭环和 AI 工具 skill 分发。
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
数据库页面以 HTML 为核心,默认使用 Tailwind CSS 和页面级 CSS。
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
核心命令为 `draftgo init/update/status/map/check/connect/local setup`;工作台命令如下:
|
|
19
19
|
|
|
20
20
|
| 命令 | 说明 |
|
|
21
21
|
|---|---|
|
|
22
|
-
| `draftgo local
|
|
23
|
-
| `draftgo local
|
|
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
|
|
27
|
-
| `draftgo
|
|
28
|
-
| `draftgo
|
|
27
|
+
| `draftgo check` | 本地资源检查:发现页面未绑定入口、页面/导航 HTML 解析问题、未登记到 `index.json` 的本地资源文件;不启动或构建底座。 |
|
|
28
|
+
| `draftgo verify-ui <url>` | 使用 Playwright 执行单视口 UI smoke check;默认按 Git 变更判断,失败时才截图。 |
|
|
29
|
+
| `draftgo api <keyword>` | 检索 DraftGo 底座内置 OpenAPI,并展示请求字段、响应结构与鉴权信息。自定义服务端点由 `app.Route` 动态注册,不在此索引中。 |
|
|
29
30
|
| `draftgo pull` | 包装随 skill 分发的 `draftgo_pull.py`,默认 `--all` 拉取资源。 |
|
|
30
31
|
| `draftgo push` | 包装随 skill 分发的 `draftgo_push.py`,推送页面、导航、DB meta 等资源。 |
|
|
32
|
+
| `draftgo deploy` | 显式执行 check → push;支持 `--delivery local|preview|deploy`。 |
|
|
31
33
|
|
|
32
34
|
## 安装
|
|
33
35
|
|
|
@@ -55,12 +57,14 @@ draftgo init all # 所有支持的工具
|
|
|
55
57
|
| 命令 | 说明 |
|
|
56
58
|
|---|---|
|
|
57
59
|
| `draftgo init [target]...` | 安装 skill。不传 target 时自动识别;`all` 表示全部。 |
|
|
58
|
-
| `draftgo update [target]...` |
|
|
60
|
+
| `draftgo update [target]...` | 完整更新:先更新全局 CLI,再用新版原子刷新已安装或检测到的 AI 工具 skill。离线时仍会用当前 CLI 刷新 skill。 |
|
|
59
61
|
| `draftgo uninstall [target]...` | 移除指定 AI 工具的 skill 目录(含入口文件 + 子技能 + scripts)。加 `--purge` 会连 `.draftgo/` 一起删。 |
|
|
60
62
|
| `draftgo status` | 查看当前项目装了哪些 AI 工具入口、skill 版本。 |
|
|
61
|
-
| `draftgo
|
|
62
|
-
| `draftgo
|
|
63
|
-
| `draftgo
|
|
63
|
+
| `draftgo map` | 输出本地 DraftGo 资源地图:页面、导航、DB、脚本、AIHub、文档、系统配置、入口引用,帮助 AI 快速进入项目。 |
|
|
64
|
+
| `draftgo check` | 本地资源检查:页面未绑定入口、页面/导航 HTML 解析问题、未登记到 `index.json` 的本地资源文件。 |
|
|
65
|
+
| `draftgo verify-ui <url>` | 浏览器 smoke check;支持 `--mobile-check auto|always|never` 和失败截图。 |
|
|
66
|
+
| `draftgo api <keyword>` | 查询 DraftGo 底座内置 OpenAPI 端点,输出请求字段、响应结构与鉴权信息;自定义服务端点需从 `app.Route` 推导。 |
|
|
67
|
+
| `draftgo deploy [type] [id...]` | 显式交付;`local` 只检查,`preview` dry-run,`deploy` 推送。 |
|
|
64
68
|
| `draftgo list-targets` | 列出支持的 AI 工具名。 |
|
|
65
69
|
| `draftgo --version` | 打印 CLI 版本。 |
|
|
66
70
|
| `draftgo --help` | 查看帮助。 |
|
|
@@ -69,24 +73,27 @@ draftgo init all # 所有支持的工具
|
|
|
69
73
|
|
|
70
74
|
- `--project <dir>`:对指定目录操作(默认当前工作目录)。
|
|
71
75
|
- `--force`:`init/update` 时强制覆盖已存在的 AI 工具 skill 目录。
|
|
72
|
-
- `--skip-update-check`:`update` 时不去 npm 查最新版,直接用当前 CLI
|
|
76
|
+
- `--skip-update-check`:`update` 时不去 npm 查最新版,直接用当前 CLI 刷新 skill。
|
|
73
77
|
- `--purge`:`uninstall` 时连 `.draftgo/`(含 config / 日志 / 本地缓存)一起删。
|
|
74
78
|
- `--output json`:`map/check` 输出机器可读 JSON。
|
|
75
79
|
- `--strict`:`check` 将提醒项也视为失败。
|
|
80
|
+
- `--mobile-check auto|always|never`:控制 `verify-ui` 是否执行,默认 `auto`。
|
|
81
|
+
- `--screenshot on-failure|always|never`:控制 UI 截图,默认仅失败时生成。
|
|
82
|
+
- `--delivery local|preview|deploy`:控制 `deploy` 的交付级别。
|
|
76
83
|
|
|
77
|
-
|
|
84
|
+
版本查询结果缓存 24 小时。可以通过环境变量 `DRAFTGO_NO_UPDATE_CHECK=1` 全局关闭版本检查(离线、CI 等场景)。
|
|
78
85
|
|
|
79
86
|
### 机器可读输出
|
|
80
87
|
|
|
81
|
-
`draftgo map --output json` 会输出本地资源地图,适合 Agent 在开发前快速读取上下文;覆盖 pages、navigations、db_meta、custom_scripts、aihub、
|
|
88
|
+
`draftgo map --output json` 会输出本地资源地图,适合 Agent 在开发前快速读取上下文;覆盖 pages、navigations、db_meta、custom_scripts、aihub、docs、doc_categories、system_config、roles 和入口引用。AIHub 条目会包含常用配置摘要:
|
|
82
89
|
|
|
83
90
|
- `type=model`:模型数量、`supports_response_format`、`supports_json_schema`、图片生成诊断摘要。
|
|
84
91
|
- `type=agent`:`mode`、主模型/备用模型、`output_format`、用户选模型配置、工具来源摘要。
|
|
85
92
|
- `type=mcp`:传输协议、已发现工具数量。
|
|
86
93
|
|
|
87
|
-
|
|
94
|
+
文档会摘要 `slug/category/content_file/status`,系统配置只展示 `config_key/category/value_type/is_sensitive/status`,避免把敏感值直接暴露给 Agent 输出。
|
|
88
95
|
|
|
89
|
-
`draftgo check --output json` 会输出 `{ map, errors, warnings }
|
|
96
|
+
`draftgo check --output json` 会输出 `{ map, errors, warnings, warningDetails }`,其中 `warningDetails` 带规则编号与置信度。当前只检查页面入口绑定、页面/导航 HTML 解析,以及未登记到 `index.json` 的本地资源文件;`--strict` 会把 warnings 也视为失败。
|
|
90
97
|
|
|
91
98
|
## 更新
|
|
92
99
|
|
|
@@ -95,32 +102,54 @@ cd <your-project>
|
|
|
95
102
|
draftgo update
|
|
96
103
|
```
|
|
97
104
|
|
|
98
|
-
|
|
105
|
+
`update` 是唯一的完整更新命令:
|
|
99
106
|
|
|
100
|
-
- 如果 CLI 已是最新 →
|
|
101
|
-
- 如果
|
|
107
|
+
- 如果 CLI 已是最新 → 原子替换每个目标的 skill 资源
|
|
108
|
+
- 如果 npm 有新版 → 先全局更新 CLI,再由新版刷新 skill
|
|
109
|
+
- 如果 npm 暂不可达 → 保留当前 CLI,并刷新 skill
|
|
102
110
|
|
|
103
111
|
整个过程中,你本地的 `.draftgo/config.json`、`changelog.md`、`lessons/`、`Task/` 等运行时数据都不会被动到。
|
|
104
112
|
|
|
105
113
|
## 内置 Skill 文档约定
|
|
106
114
|
|
|
115
|
+
内置 Skill 同时提供 `resources/skill/manifest.json`:这是 DraftGo 的机器可读元数据(版本、入口、能力和声明权限),为自研宿主或未来平台适配提供统一入口;各 AI 工具仍使用各自的安装入口文件。
|
|
116
|
+
|
|
107
117
|
CLI 随包分发的 DraftGo skill 会同步基座 API 约定。集合写入统一为:
|
|
108
118
|
|
|
109
119
|
- 创建:`POST /api/<resource>` 支持单个对象或对象数组。
|
|
110
120
|
- 批量更新:`PATCH /api/<resource>/batch`,请求体为带 `id` 的对象数组。
|
|
111
121
|
- 动态 DB 因为资源带 `type`,批量更新路径是 `PATCH /api/db/{type}/batch`。
|
|
122
|
+
- GET 列表请求不传 `page` / `page_size` 时全量返回且无数量上限;任一分页参数传入时正常分页,缺失项按 `page=1` / `page_size=20` 兜底。
|
|
112
123
|
|
|
113
124
|
前端资源约定:
|
|
114
125
|
|
|
115
126
|
- DraftGo 基座内置 SVG 图标库,运行时路径为 `/assets/icons/{name}.svg`。
|
|
116
127
|
- 图标文件统一使用 `kebab-case.svg` 命名;完整映射见 `/assets/icons/manifest.json`。
|
|
117
128
|
- 页面或导航栏需要单色图标时,优先用 CSS mask + `currentColor`,可自动适配深浅主题。
|
|
129
|
+
- html2canvas 1.4.1 已内置,页面需要截图 / 导出图片时优先使用本地路径 `/assets/vendor/html2canvas/html2canvas.min.js`;确需 CDN 时优先使用国内镜像引入。
|
|
130
|
+
|
|
131
|
+
Go 自定义服务通过 `draftgo.DB.CreateMany(...)` 与 `draftgo.DB.UpdateMany(...)` 批量写入动态数据。
|
|
132
|
+
|
|
133
|
+
自定义服务(Custom Scripts)约定:
|
|
118
134
|
|
|
119
|
-
|
|
135
|
+
- 自定义服务使用 Go:导入内置 `draftgo/sdk`,实现 `Register(app *sdk.App)`,调用 `app.Route`、`app.On` 或 `app.Schedule` 后即可自动注册。服务在独立 Go 子进程中构建和执行;标准库与 `go.mod` 中声明的兼容依赖可用。
|
|
136
|
+
- 本地资源在 `.draftgo/custom_scripts/`;元数据写在 `index.json`,代码文件以每条记录的 `code_file` 为准。推送时 `draftgo_push.py custom_scripts` 只读取 `code_file` 指向的文件。
|
|
137
|
+
- 新服务使用 `mode=mixed`,`Register` 内的 `app.Route`、`app.On`、`app.Schedule` 会自动形成完整触发器清单;旧 `triggers` 字段不参与 Go 注册。
|
|
138
|
+
- `slug=<slug>` 是服务命名空间;`app.Route("GET", "/items", handler)` 映射为 `GET /api/x/<slug>/items`。一个服务可同时注册多个路由、事件和定时任务。
|
|
139
|
+
- Go handler 签名为 `func handler(draftgo *sdk.Context) (any, error)`;普通值直接返回,需要状态码或响应头时使用 `draftgo.Respond(...)`。
|
|
140
|
+
- 第三方依赖写在同一条 index 元数据的 `go_mod` / `go_sum`;推送后应真实请求无副作用 GET 端点验证,不要只看 `OK script_id=...`。
|
|
141
|
+
- `app.On("user.registered", handler)` 可重复声明;同一服务既能监听多个事件,也能为同一事件注册多个 handler。
|
|
142
|
+
- Route 输入在 `draftgo.Input`(`body`、`query_params`、`headers`、`method`、`path_params`);当前用户用 `draftgo.Auth.CurrentUser()` 获取。普通值可直接返回,需要状态码或响应头时用 `draftgo.Respond(...)`。
|
|
143
|
+
- 动态数据使用 `draftgo.DB.Query(type, sdk.QueryOptions{...})`;完整 Go SDK 见 `references/custom-services.md`。
|
|
144
|
+
- 管理面按 `scripts:read/create/update/delete/execute` 接入角色 RBAC;获得创建/编辑权限的用户属于可信代码编辑者。调用面仍由每个 route 的 `permission` 与 `config.route_security` 独立控制,管理权限不会绕过调用权限。
|
|
145
|
+
- 服务可用 `config.max_concurrency` / `queue_timeout_ms` 设置并发退避;出站请求使用 `draftgo.HTTP`,饱和 Route 返回 HTTP 429。
|
|
146
|
+
- 完整 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)。
|
|
120
147
|
|
|
121
148
|
AIHub Agent 用户选模型约定:
|
|
122
149
|
|
|
123
|
-
-
|
|
150
|
+
- 新页面的 AI 对话 UI 先引入 `/assets/draftgo-chat.js`,再使用 `<dg-chat protocol="draftgo-agent" agent-id="AGENT_ID">` 或 `DraftGoChat.create()`;完整规则见 `resources/skill/references/chat-sdk.md`。
|
|
151
|
+
- `DraftGoAI.chat/images/getSelectableModels` 是同一脚本提供的旧兼容门面,不由壳层默认注入,也不应替代新页面的 `<dg-chat>` 对话 UI。
|
|
152
|
+
- 管理端在 Agent 的 `data.spec.model_selection.user_selectable=true` 后,页面可通过 Chat SDK 模型选择器,或兼容接口 `DraftGoAI.getSelectableModels(agentId)` 获取 `{ user_selectable, models }`。
|
|
124
153
|
- `models` 是该 Agent 的主模型 + 备用模型白名单,不是供应商全量模型列表。
|
|
125
154
|
- 调用 `DraftGoAI.chat(...)` 或 `DraftGoAI.images(...)` 时,可在 `options.model` 中传入用户选择的模型;后端会继续按 Agent 白名单校验。
|
|
126
155
|
|
|
@@ -178,7 +207,7 @@ AIHub Agent JSON 输出约定:
|
|
|
178
207
|
|
|
179
208
|
## 产物结构
|
|
180
209
|
|
|
181
|
-
每个 AI
|
|
210
|
+
每个 AI 工具拿到完整的核心说明(SKILL.md + 子技能 + rules + scripts)。大型 OpenAPI 快照只在 `.draftgo/skill-shared/` 保存一份,避免多个工具重复复制;也可直接用 `draftgo api <keyword>` 查询。
|
|
182
211
|
|
|
183
212
|
```
|
|
184
213
|
<project>/
|
|
@@ -189,6 +218,7 @@ AIHub Agent JSON 输出约定:
|
|
|
189
218
|
│ ├── Task/ # 每个开发任务一个 md,含需求 / 设计 / 任务标记
|
|
190
219
|
│ ├── lessons/ # 开发经验、踩坑记录、基座局限场景
|
|
191
220
|
│ ├── pages/ navigations/ ... # init 拉取的本地缓存
|
|
221
|
+
│ ├── skill-shared/references/api.json # 多 AI 工具共享的 OpenAPI 快照
|
|
192
222
|
│ └── .version # CLI 写入:当前已装 skill 的版本
|
|
193
223
|
│
|
|
194
224
|
└── (AI 工具 skill 目录,按需写入;每份都是完整副本)
|
|
@@ -202,33 +232,29 @@ AIHub Agent JSON 输出约定:
|
|
|
202
232
|
.github/prompts/draftgo.prompt.md + .github/prompts/draftgo/{...}
|
|
203
233
|
```
|
|
204
234
|
|
|
235
|
+
`config.json` 的 `auto_push` 默认是 `false`。AI 在每次完成本地验证后调用 `draftgo auto-push`;仅当你将该值改为 `true` 时,命令才会继续执行 `check → push`。直接执行 `draftgo push` 或 `draftgo deploy` 仍属于显式推送,不受此开关限制。
|
|
236
|
+
|
|
205
237
|
> 渲染时 SKILL.md 中的 `{{SKILL_DIR}}` / `{{SKILL_SCRIPTS}}` 会被替换成当前 AI 工具自身的目录,确保子技能、rules、scripts 引用永远指向同一个工具的副本。CLI **不会** 改写你的 `AGENTS.md` / `GEMINI.md`。
|
|
206
238
|
|
|
207
239
|
---
|
|
208
240
|
|
|
209
|
-
##
|
|
241
|
+
## v3.0.30 升级要点(自定义服务 AI SDK)
|
|
210
242
|
|
|
211
|
-
|
|
243
|
+
- 内置 Skill 补齐 AIHub 推理、Embedding、Agent/Prompt/Skill/MCP 资产 CRUD,以及供应商、模型路由和运行记录接口。
|
|
244
|
+
- 增加知识库、文档、Chunk、长期记忆的 Go SDK 说明,包含文件上传、检索、重建索引和管理员同构入口。
|
|
245
|
+
- 记录 `config.aihub` 推理开关与 Agent/模型白名单,并为全部新 SDK 能力增加文档契约测试。
|
|
212
246
|
|
|
213
|
-
|
|
247
|
+
## v3.0.28 升级要点(同步可靠性)
|
|
214
248
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
标准功能:轻量确认 → 内部短计划 → 执行闭环
|
|
219
|
-
高风险:完整 Story / 计划 / 验证 / 人工确认
|
|
220
|
-
```
|
|
249
|
+
- 修复导航 pull:列表元数据会逐条获取详情 HTML,避免空内容覆盖本地导航。
|
|
250
|
+
- 指定 ID 的 pull 改为合并索引;请求失败、详情缺失或响应不完整时返回非零,保留本地缓存。
|
|
251
|
+
- `draftgo push` 支持默认全量推送;`deploy --delivery preview` 使用无副作用的 dry-run 预览。
|
|
221
252
|
|
|
222
|
-
|
|
223
|
-
- `.draftgo/Task/`:每个开发任务一个 Markdown 文件,含需求纪要 / 设计 / 任务清单 / ⬜🟡✅❌⏸ 标记 / 完成回顾
|
|
253
|
+
## v3.0.27 升级要点(自动推送与索引恢复)
|
|
224
254
|
|
|
225
|
-
|
|
226
|
-
-
|
|
227
|
-
-
|
|
228
|
-
|
|
229
|
-
**前端 UI 能力调用**:DraftGo 平台前端默认采用 React + shadcn/ui + Tailwind CSS;数据库 HTML 页面使用 `dg-*` 表达 shadcn 组件能力,`dg-*` 不是自研 UI 协议。若本地 Agent 环境存在 shadcn / 前端 UI 相关 Skills,前端界面开发时优先调用。DraftGo-CLI 提供运行时、资源、数据、路由、入口绑定和验证方法,并在规范中声明 shadcn/Tailwind 已引入。
|
|
230
|
-
|
|
231
|
-
完整规范见各 AI 工具自身 skill 目录下的 `rules/dev-workflow.md`,例如 `.claude/skills/draftgo/rules/dev-workflow.md`。
|
|
255
|
+
- 新增 `draftgo auto-push`:始终先运行本地 `check`,仅在 `.draftgo/config.json` 的 `auto_push: true` 时继续推送;关闭时保留验证并返回未推送信息。
|
|
256
|
+
- 支持 `draftgo auto-push --batch`,并行任务也受同一开关约束。
|
|
257
|
+
- 指定资源缺少 `index.json` 条目时,push 会回读云端;资源存在则补齐元数据并继续推送本地文件,资源不存在则提示清理本地孤儿文件。
|
|
232
258
|
|
|
233
259
|
---
|
|
234
260
|
|
|
@@ -241,7 +267,7 @@ CLI v2.0.3 补充操作型页面的空间模型,重点解决后台管理 / 表
|
|
|
241
267
|
- **工作台布局原则**:后台管理、表格、列表、审批、配置、内容维护等操作型页面,优先让页面根容器占满可用视口 / iframe 内容区。
|
|
242
268
|
- **稳定控制区**:顶部筛选、搜索、标题操作区保持稳定高度,底部分页、批量操作栏、保存栏等流程控制区保持在工作区底部或稳定位置。
|
|
243
269
|
- **数据区承接剩余空间**:主体数据区使用 `flex:1; min-height:0; overflow:auto` 等结构承接剩余空间,数据少时保留工作区空白,数据多时优先让数据区内部滚动。
|
|
244
|
-
- **工作台结构同步**:`
|
|
270
|
+
- **工作台结构同步**:`references/frontend.md` 补充操作型页面的空间方法,基座对应文档为 `docs/frontend/rules.md`,避免分页跟随 1-2 条数据上浮。
|
|
245
271
|
|
|
246
272
|
---
|
|
247
273
|
|
|
@@ -251,7 +277,7 @@ CLI v2.0.2 进一步完善 `draftgo update` 的目标识别逻辑,避免只修
|
|
|
251
277
|
|
|
252
278
|
**核心变化:**
|
|
253
279
|
|
|
254
|
-
- **平台定义成为单一信号源**:每个 AI 工具的入口文件、skill 目录和项目级探测信号统一维护在 `platforms.js`,`init / update /
|
|
280
|
+
- **平台定义成为单一信号源**:每个 AI 工具的入口文件、skill 目录和项目级探测信号统一维护在 `platforms.js`,`init / update / status` 共用同一份识别依据。
|
|
255
281
|
- **update 覆盖所有检测到的工具**:不传 target 时,`draftgo update` 会合并“已安装 skill 的目标”和“项目中检测到的 AI 工具信号”,并刷新全部命中的工具。
|
|
256
282
|
- **全平台测试覆盖**:单测现在会同时模拟 Claude Code、Cursor、Windsurf、Antigravity、Kiro、GitHub Copilot、Codex、Gemini 的项目级信号,防止后续再出现只命中部分工具的问题。
|
|
257
283
|
|
|
@@ -280,21 +306,6 @@ CLI v2.0.0 删除了内置 `resources/skill/reference/` 基座参考副本,进
|
|
|
280
306
|
|
|
281
307
|
---
|
|
282
308
|
|
|
283
|
-
## v1.6.2 升级要点(开发效率轻量化)
|
|
284
|
-
|
|
285
|
-
CLI v1.6.2 进一步降低开发流程摩擦:保留真实落地闭环、页面绑定和平台禁区,同时让小修和轻功能更快进入实现。
|
|
286
|
-
|
|
287
|
-
**核心变化:**
|
|
288
|
-
|
|
289
|
-
- **小修渐进读取**:小修优先只读目标资源和最小必要规则,不再默认展开完整规则链路。
|
|
290
|
-
- **新增轻功能档**:简单页面能力、单入口交互、小型数据联动可走“范围复述 → 直接做 → 凭证据闭环”,不强制创建 Task。
|
|
291
|
-
- **计划字段按需**:`depends / resource_lock / wave` 只在多任务、多资源冲突或准备并行时强制;单人串行小计划不再为字段服务。
|
|
292
|
-
- **并行按收益启用**:只有任务数足够、边界清晰、资源不冲突且并行收益大于协调成本时才启用并行。
|
|
293
|
-
- **取消 80 行硬限制**:改为“复杂或高风险代码分段实现并验证”,避免机械分批拖慢前端开发。
|
|
294
|
-
- **验证按影响分层**:小修验证改动点,轻功能验证入口引用和主路径;标准功能按实际影响覆盖四态、数据、跳转和同步证据。
|
|
295
|
-
|
|
296
|
-
---
|
|
297
|
-
|
|
298
309
|
## v1.6.1 升级要点(前端规则收敛)
|
|
299
310
|
|
|
300
311
|
CLI v1.6.1 继续优化开发效果:减少前端规则中过细的“适合 / 不适合”和固定模板描述,让 AI 在满足平台硬约束的前提下,根据页面目标和业务复杂度做实现判断。
|
|
@@ -315,12 +326,12 @@ CLI v1.6.0 强化了 skill 对“开发任务规划”的判断力,重点解
|
|
|
315
326
|
**核心变化:**
|
|
316
327
|
|
|
317
328
|
- **用户意图翻译**:当用户用非技术语言描述“案例库、新闻中心、产品中心、预约、资料下载”等业务目标时,AI 会先识别它是页面、多页面还是完整功能模块,而不是要求用户说出 CRUD、API、路由等开发术语。
|
|
318
|
-
- **页面默认完整功能**:用户说“做一个页面”时,默认按可真实使用的页面功能处理;只有明确说“静态 / 纯页面 /
|
|
329
|
+
- **页面默认完整功能**:用户说“做一个页面”时,默认按可真实使用的页面功能处理;只有明确说“静态 / 纯页面 / 原型 / 先看效果”时,才按静态页处理。
|
|
319
330
|
- **用户路径链路**:功能规划从“用户打开官网 / 系统入口 → 看见入口 → 点击进入 → 操作 → 反馈 → 后台维护 → 前台展示更新”这一整条链路倒推页面、导航、数据和权限。
|
|
320
331
|
- **新增页面绑定**:创建页面后必须绑定到导航栏、首页入口、后台菜单或相关页面按钮之一;只创建页面文件、无法从正常路径点击进入,不算完成。
|
|
321
332
|
- **真实落地闭环**:按钮、表单、搜索、筛选、分页、保存、删除、发布等交互默认要真实有效;需要可维护内容时,优先规划后台管理和同一份真实数据,追求高可用。
|
|
322
333
|
|
|
323
|
-
|
|
334
|
+
这些规则已改为按事实触发:资源关系不清时 map,页面改动检查入口和 HTML,数据/API/服务只读取对应契约,运行和布局改变才做浏览器验证。Task 和 Story 仅在需要产品决策沉淀或跨资源交接时使用。
|
|
324
335
|
|
|
325
336
|
---
|
|
326
337
|
|
|
@@ -340,71 +351,9 @@ python .claude/skills/draftgo/scripts/draftgo_push.py db_meta [meta_id]
|
|
|
340
351
|
|
|
341
352
|
更推荐的用法:在 AI 工具里说「初始化 draftgo 项目」或「同步页面 123」,skill 会自动触发对应脚本。
|
|
342
353
|
|
|
343
|
-
##
|
|
344
|
-
|
|
345
|
-
CLI v1.4.0 引入 **Story System**,解决 Vibe Coding 时代最大的痛点:每次新对话 AI 都不知道"这个系统为什么存在、不做什么、做过什么取舍"。
|
|
346
|
-
|
|
347
|
-
**核心机制:Story Context / Gate**
|
|
348
|
-
|
|
349
|
-
开发任务开始时,AI 按任务级别处理 `.draftgo/story.yaml`:
|
|
350
|
-
- 小修 → 不强制触发 Story
|
|
351
|
-
- 功能 → 存在则静默加载,不存在不阻塞开发,收尾提醒补 Story
|
|
352
|
-
- 高风险 → 不存在则暂存请求,进入 Story 构建流程(对话式采集,不是填表);存在则静默加载并做冲突检测
|
|
353
|
-
|
|
354
|
-
**Story 文件结构(三层):**
|
|
355
|
-
|
|
356
|
-
```yaml
|
|
357
|
-
# .draftgo/story.yaml
|
|
358
|
-
meta:
|
|
359
|
-
version: 1
|
|
360
|
-
created: 2026-05-17
|
|
361
|
-
last_touched: 2026-05-17
|
|
362
|
-
maturity: seed # seed | growing | stable
|
|
363
|
-
|
|
364
|
-
identity:
|
|
365
|
-
what: "一句话讲清这是什么"
|
|
366
|
-
why: "解决什么痛点,给谁用"
|
|
367
|
-
not:
|
|
368
|
-
- "不是 XX"
|
|
369
|
-
- "不变成 YY"
|
|
370
|
-
|
|
371
|
-
design:
|
|
372
|
-
overview: "核心流转逻辑:用户从哪进来 → 经过什么 → 得到什么价值"
|
|
373
|
-
modules:
|
|
374
|
-
- name: "模块名"
|
|
375
|
-
role: "这个模块在系统里的定位(核心/辅助/基座)"
|
|
376
|
-
decisions:
|
|
377
|
-
- id: D001
|
|
378
|
-
date: 2026-05-17
|
|
379
|
-
chose: "选了什么"
|
|
380
|
-
over: "拒绝了什么"
|
|
381
|
-
because: "原因"
|
|
382
|
-
status: active
|
|
383
|
-
|
|
384
|
-
now:
|
|
385
|
-
focus: "当前在做什么"
|
|
386
|
-
next: "下一步方向"
|
|
387
|
-
open_questions:
|
|
388
|
-
- "悬而未决的事"
|
|
389
|
-
```
|
|
390
|
-
|
|
391
|
-
**运行时行为:**
|
|
392
|
-
- **冲突检测**:当开发请求与 Story 的 `identity.not` 或 active 决策矛盾时,AI 会显式摊牌,给出"想法变了 / 双轨并行 / 只是特例"三个选项
|
|
393
|
-
- **主动沉淀**:检测到方向性决策时,AI 主动提议记入 decisions
|
|
394
|
-
- **now 更新**:对话结束时提议更新 focus/next
|
|
395
|
-
|
|
396
|
-
**开发流程升级为分级门禁:**
|
|
397
|
-
|
|
398
|
-
```
|
|
399
|
-
小修:直接定位 → 改 → 轻量证据
|
|
400
|
-
轻功能:范围复述 → 直接做 → 凭证据闭环
|
|
401
|
-
标准功能:轻量确认 → 内部短计划 → 执行闭环
|
|
402
|
-
高风险:Story → 完整确认 → 计划 → 人工确认 / 回读验证
|
|
403
|
-
```
|
|
404
|
-
|
|
405
|
-
**注意:** `.draftgo/story.yaml` 不在 `draftgo init` 中创建。它由 AI 在首次开发对话时通过与开发者交流后生成,确保内容有意义而不是空模板。
|
|
354
|
+
## Story
|
|
406
355
|
|
|
407
|
-
|
|
356
|
+
`.draftgo/story.yaml` 用于沉淀会影响后续取舍的产品定位与决策。已有 Story 且请求触及定位或既有决策时读取;用户要求建立、更新或冲突检查时调用 `story/SKILL.md`。
|
|
408
357
|
|
|
409
358
|
---
|
|
410
359
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "draftgo-cli",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.33",
|
|
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": [
|
|
@@ -28,11 +31,7 @@
|
|
|
28
31
|
"gemini",
|
|
29
32
|
"kiro"
|
|
30
33
|
],
|
|
31
|
-
"author":
|
|
32
|
-
"name": "draftgo",
|
|
33
|
-
"email": "cabinai@163.com",
|
|
34
|
-
"url": "https://github.com/draftgo"
|
|
35
|
-
},
|
|
34
|
+
"author": "draftgo <cabinai@163.com> (https://github.com/draftgo)",
|
|
36
35
|
"license": "MIT",
|
|
37
36
|
"homepage": "https://github.com/draftgo/draftgo-cli#readme",
|
|
38
37
|
"bugs": {
|
|
@@ -43,6 +42,20 @@
|
|
|
43
42
|
"url": "git+https://github.com/draftgo/draftgo-cli.git"
|
|
44
43
|
},
|
|
45
44
|
"scripts": {
|
|
46
|
-
"
|
|
47
|
-
|
|
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",
|
|
50
|
+
"test:e2e": "node tests/e2e.js"
|
|
51
|
+
},
|
|
52
|
+
"dependencies": {
|
|
53
|
+
"@grpc/grpc-js": "1.14.1",
|
|
54
|
+
"parse5": "6.0.1",
|
|
55
|
+
"playwright-core": "1.61.1"
|
|
56
|
+
},
|
|
57
|
+
"directories": {
|
|
58
|
+
"test": "tests"
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {}
|
|
48
61
|
}
|
package/resources/skill/SKILL.md
CHANGED
|
@@ -1,104 +1,77 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
2
|
name: draftgo
|
|
3
|
-
description: Use this skill when
|
|
4
|
-
version: 2.0.0
|
|
3
|
+
description: Use this skill when developing, maintaining, debugging, synchronizing, or delivering a DraftGo-based application, including DraftGo pages, navigation, dynamic DB, base APIs, Go custom services, AIHub, knowledge bases, Skill/MCP assets, roles, and local resources.
|
|
5
4
|
---
|
|
6
5
|
|
|
7
6
|
# DraftGo 开发助手
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
## 开发前置检查
|
|
8
|
+
## 执行方法
|
|
12
9
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
1. **建立资源图**:从用户路径列出角色、入口、页面、操作、数据、服务、运营维护和验证证据,并标记资源间的依赖。
|
|
11
|
+
2. **确定共享契约**:从当前 `db_meta`、底座 API、自定义服务、权限、路由和导航中确认被多个资源共同依赖的契约,再展开依赖它们的实现。
|
|
12
|
+
3. **并行独立资源**:按依赖关系划分 wave。独立页面、管理页、文档和服务并行处理;共享 schema、导航、HTML 文件或调用链按依赖顺序处理。每个工作单元携带资源范围和验证方式,交付动作由汇总阶段统一执行。具体字段见 `references/parallel.md`。
|
|
13
|
+
4. **汇总接线**:连接入口、页面跳转、真实数据读写、角色可见性、加载/空/错误/成功状态和运营维护路径,随后回放关键用户路径。
|
|
14
|
+
5. **验证与交付**:按资源类型取得证据。完成本地验证后,根据用户交付意图或项目自动同步配置执行 `push`、`deploy` 或 `auto-push`。
|
|
17
15
|
|
|
18
|
-
|
|
16
|
+
## CLI 与场景路由
|
|
19
17
|
|
|
20
|
-
|
|
18
|
+
调用 `draftgo` CLI 完成工具动作;`scripts/` 下的脚本是 CLI 内部实现,不作为 Agent 的调用入口。
|
|
21
19
|
|
|
22
|
-
|
|
|
20
|
+
| 场景 | DraftGo 动作 |
|
|
23
21
|
|---|---|
|
|
24
|
-
|
|
|
25
|
-
|
|
|
26
|
-
|
|
|
27
|
-
|
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
|
22
|
+
| 查看 Skill 安装状态或支持目标 | 运行 `draftgo status`;需要目标列表时运行 `draftgo list-targets`。 |
|
|
23
|
+
| 安装、完全更新或移除 Skill | 分别运行 `draftgo init [target...]`、`draftgo update [target...]`、`draftgo uninstall <target\|all>`。 |
|
|
24
|
+
| 连接已有基座 | 运行 `draftgo connect`,写入项目连接并拉取初始上下文。 |
|
|
25
|
+
| 首次建立本地 Docker 基座 | 运行 `draftgo local setup`;后续使用 `draftgo local start\|stop\|logs\|status` 管理。兼容命令:`draftgo local-dev`、`draftgo local up`、`draftgo local down`。 |
|
|
26
|
+
| 陌生项目、跨资源或入口不清 | 运行 `draftgo map`,再读取相关 index 和资源文件。 |
|
|
27
|
+
| 本地资源缺失、过期或需要云端版本 | 使用 `pull/SKILL.md`,运行 `draftgo pull [type] [id...]`。 |
|
|
28
|
+
| 新建资源 | 在对应 index 中登记不带 `id` 的完整条目并创建其引用文件;运行 `draftgo check` 后,通过 `draftgo push <type>` 创建并回读写回的 `id` 和文件路径。 |
|
|
29
|
+
| 删除资源 | 确认目标 `id` 和引用后运行 `draftgo delete <type> <id>`;该命令同时删除云端资源和本地登记,随后重新运行 `map` 与 `check`。 |
|
|
30
|
+
| 页面、导航、交互或布局 | 读取 `references/frontend.md`;页面运行和布局证据使用 `draftgo verify-ui <url> --mobile-check auto`。 |
|
|
31
|
+
| 页面或导航 HTML | 运行 `draftgo check`,验证入口、HTML 解析和资源登记;语法异常读取 `references/debugging-syntax.md`。 |
|
|
32
|
+
| 动态 DB、filters 或 order_by | 先读对应 `db_meta` schema 和 `references/data.md`。 |
|
|
33
|
+
| DraftGo 底座 API | 运行 `draftgo api <keyword>`,确认请求字段、响应结构和鉴权。 |
|
|
34
|
+
| 自定义服务 | 读取 `references/custom-services.md`;其中包含 AIHub、知识库、Memory、Skill/MCP 的完整 Go SDK;端点从 `slug + app.Route` 推导为 `/api/x/<slug><route-path>`。 |
|
|
35
|
+
| App 对象方法 | 读取 `references/app-api.md`。 |
|
|
36
|
+
| AI Agent(配置、调用、工具/子智能体/记忆/持续对话、观测) | 读取 `references/aihub.md`;页面对话 UI、协议、事件与扩展读取 `references/chat-sdk.md`;App 与旧兼容门面见 `references/app-api.md`。 |
|
|
37
|
+
| 平台架构、能力边界或安全限制 | 读取 `references/architecture.md`、`references/modules.md` 或 `references/security.md`。 |
|
|
38
|
+
| 同步已确认的本地改动 | 使用 `push/SKILL.md`,运行 `draftgo push <type> [id...]`。 |
|
|
39
|
+
| 交付前需要结构检查或预演 | 运行 `draftgo deploy [type] [id...] --delivery local\|preview\|deploy`。 |
|
|
40
|
+
| 项目明确启用自动同步 | 运行 `draftgo auto-push [type] [id...]`;批量资源使用 `--batch`,未启用 `config.auto_push` 时命令只检查并跳过推送。 |
|
|
41
|
+
| 项目已有 `.draftgo/story.yaml`,且请求可能改变产品定位或既有决定 | 读取并检查冲突;需要新建或维护 Story 时调用 `story/SKILL.md`。 |
|
|
42
|
+
|
|
43
|
+
## DraftGo 契约
|
|
44
|
+
|
|
45
|
+
- **分页**:完整候选集、配置、资源或导出数据同时省略 `page` 和 `page_size`;真实分页列表同时传入 `page` 与 `page_size`。
|
|
46
|
+
- **响应信封**:调用基座 API 时先检查 `res.code !== 200`,再读取 `res.data`。
|
|
47
|
+
- **时间**:用户展示按用户/浏览器时区;存储、统计、定时和自然日边界按 `system_timezone` 计算。
|
|
48
|
+
- **数据 schema**:字段名、类型、必填、searchable 和权限以 `.draftgo/db_meta/index.json` 为准;筛选和排序前确认字段与操作符兼容。
|
|
49
|
+
- **自定义服务**:使用 `package main`、`Register(app *sdk.App)` 和 `func handler(draftgo *sdk.Context) (any, error)`;普通身份使用 `draftgo.Auth.CurrentUser()`,需要管理能力时逐次显式调用 `draftgo.Admin.*`。AI 能力使用 `draftgo.AIHub`、`draftgo.Knowledge`、`draftgo.Memory`;Route 权限和脚本管理权限是两层独立控制。
|
|
50
|
+
- **系统资源**:登录、设置、权限、用户和系统配置属于基座资源;修改前确认影响范围并保留原有系统能力。
|
|
51
|
+
|
|
52
|
+
## 资源验证
|
|
53
|
+
|
|
54
|
+
| 资源 | 证据 |
|
|
37
55
|
|---|---|
|
|
38
|
-
|
|
|
39
|
-
|
|
|
40
|
-
|
|
|
41
|
-
|
|
|
42
|
-
|
|
|
43
|
-
| 标准功能 / 高风险 · 意图模糊 | `practices/dev-declaration.md` — 开发声明协议 |
|
|
44
|
-
|
|
45
|
-
## 快速决策树
|
|
46
|
-
|
|
47
|
-
```
|
|
48
|
-
要开发什么?
|
|
49
|
-
├── 页面 / 导航 / 交互 → 读 rules/frontend.md
|
|
50
|
-
├── 数据结构 / 动态 DB → 读 specs/data.md
|
|
51
|
-
├── API 速查 → quickref/api-endpoints.md
|
|
52
|
-
├── App 方法忘了 → quickref/app-api.md
|
|
53
|
-
├── dg-* 组件用法 → quickref/dg-components.md
|
|
54
|
-
├── 了解平台架构 → core/architecture.md
|
|
55
|
-
├── 选择开发方案 → core/modules.md
|
|
56
|
-
└── 查开发禁区 → specs/security.md
|
|
57
|
-
```
|
|
56
|
+
| 页面、导航、新资源 | 运行 `draftgo check`,并确认入口引用。 |
|
|
57
|
+
| 页面运行、交互或布局 | 运行 `draftgo verify-ui <url>`。 |
|
|
58
|
+
| 基座 API、动态 DB | 真实请求或回读关键状态、字段和错误处理。 |
|
|
59
|
+
| 自定义服务 | 调用目标 Route 或无副作用健康端点,确认状态码与响应;涉及管理员调用时确认审计。 |
|
|
60
|
+
| 删除资源 | 重新运行 `draftgo map` 与 `draftgo check`,确认入口、引用和本地文件已闭合。 |
|
|
58
61
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
- 存储于 `.draftgo/config.json`(已加入 .gitignore)
|
|
62
|
-
- 运行 `/draftgo init` 时写入
|
|
63
|
-
|
|
64
|
-
## 核心原则(硬性)
|
|
65
|
-
|
|
66
|
-
- **开发分级**:任何任务先读 `rules/dev-workflow.md` 分级,再执行
|
|
67
|
-
- **真实闭环**:不用假数据/伪交互充当完成;无法实现则停止并说明
|
|
68
|
-
- **入口绑定**:新增页面必须绑定导航/首页/菜单至少一处
|
|
69
|
-
- **dg-* = shadcn**:`dg-*` 是 shadcn 的 HTML 协议表达,不是其他 UI 库
|
|
70
|
-
- **Story 冲突**:发现与 `.draftgo/story.yaml` 冲突必须显式提示,不可静默执行
|
|
71
|
-
- **changelog**:影响可见功能/跨资源/已 push 时写入 `.draftgo/changelog.md`
|
|
72
|
-
|
|
73
|
-
## 本地数据目录
|
|
74
|
-
|
|
75
|
-
| 目录 | 内容 |
|
|
76
|
-
|---|---|
|
|
77
|
-
| `.draftgo/pages/` | index.json + .html 文件 |
|
|
78
|
-
| `.draftgo/navigations/` | index.json + .html 文件 |
|
|
79
|
-
| `.draftgo/db_meta/` | index.json(含 schema/permission) |
|
|
80
|
-
| `.draftgo/custom_scripts/` | index.json + 脚本文件 |
|
|
81
|
-
| `.draftgo/external_apis/` | index.json(auth_config 已脱敏) |
|
|
82
|
-
| `.draftgo/aihub/` | index.json |
|
|
83
|
-
| `.draftgo/docs/articles/` | index.json + .md 文件 |
|
|
84
|
-
| `.draftgo/system_config/` | index.json |
|
|
85
|
-
| `.draftgo/changelog.md` | 更新日志 |
|
|
86
|
-
| `.draftgo/lessons/` | 开发经验(YYYY-MM-DD-主题.md) |
|
|
87
|
-
| `.draftgo/Task/` | 任务文档(仅跨资源/高风险任务) |
|
|
62
|
+
`draftgo check` 覆盖页面入口、页面/导航 HTML 解析和本地资源登记;运行证据由对应资源的验证动作提供。
|
|
88
63
|
|
|
89
|
-
##
|
|
64
|
+
## 本地资源
|
|
90
65
|
|
|
91
|
-
|
|
|
66
|
+
| 路径 | 内容 |
|
|
92
67
|
|---|---|
|
|
93
|
-
|
|
|
94
|
-
|
|
|
95
|
-
|
|
|
96
|
-
|
|
|
97
|
-
|
|
|
98
|
-
|
|
|
99
|
-
|
|
|
100
|
-
|
|
|
101
|
-
|
|
|
102
|
-
|
|
|
103
|
-
| `quickref/api-endpoints.md` | 后端端点速查 |
|
|
104
|
-
| `quickref/dg-components.md` | dg-* 组件代码示例 |
|
|
68
|
+
| `.draftgo/pages/` | 页面索引与 HTML |
|
|
69
|
+
| `.draftgo/navigations/` | 导航索引与 HTML |
|
|
70
|
+
| `.draftgo/db_meta/` | 数据 schema 与权限 |
|
|
71
|
+
| `.draftgo/custom_scripts/` | 自定义服务元数据与 Go 代码 |
|
|
72
|
+
| `.draftgo/aihub/` | AIHub 资源 |
|
|
73
|
+
| `.draftgo/docs/articles/` | 文档元数据与 HTML |
|
|
74
|
+
| `.draftgo/doc_categories/` | 文档分类 |
|
|
75
|
+
| `.draftgo/system_config/` | 系统配置 |
|
|
76
|
+
| `.draftgo/roles/`、`.draftgo/users/` | 角色与用户 |
|
|
77
|
+
| `.draftgo/story.yaml` | 产品身份、设计和长期决策 |
|