draftgo-cli 3.0.38 → 3.0.41
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/README.md +59 -13
- package/package.json +4 -2
- package/resources/skill/SKILL.md +53 -15
- package/resources/skill/init/SKILL.md +5 -3
- package/resources/skill/manifest.json +4 -2
- package/resources/skill/push/SKILL.md +2 -0
- package/resources/skill/references/architecture.md +1 -1
- package/resources/skill/references/checkout.md +3 -2
- package/resources/skill/references/frontend.md +18 -287
- package/resources/skill/references/mcp.md +4 -0
- package/resources/skill/references/parallel.md +11 -6
- package/resources/skill/references/runtime.md +1 -1
- package/resources/skill/references/ui-protocol.md +1 -1
- package/resources/skill/scripts/README.md +2 -0
- package/src/changelog.js +276 -0
- package/src/cli.js +1 -0
- package/src/commandRegistry.js +2 -0
- package/src/commands/changelog.js +24 -0
- package/src/commands/context.js +41 -0
- package/src/commands/help.js +12 -1
- package/src/commands/update.js +16 -1
- package/src/context/index.js +368 -0
- package/src/mcp/tools.js +12 -2
- package/src/skill.js +65 -3
- package/src/worktree/backend.js +114 -38
|
@@ -9,10 +9,10 @@ version: 2.0.0
|
|
|
9
9
|
> 根 `SKILL.md` 是完整核心规则源;本文件只展开前端实现方法。若表述冲突,以根 `SKILL.md` 为准,不额外叠加固定验收动作。
|
|
10
10
|
|
|
11
11
|
> 本文件只规定前端**操作性规则**,已剥离的内容见:
|
|
12
|
-
> 架构原理 → `
|
|
13
|
-
> App API / Token / 路由 / 运行时 → `
|
|
14
|
-
> 动态 DB / filters → `
|
|
15
|
-
> 开发禁区 → `
|
|
12
|
+
> 架构原理 → `references/architecture.md`
|
|
13
|
+
> App API / Token / 路由 / 运行时 → `references/runtime.md` · `references/app-api.md`
|
|
14
|
+
> 动态 DB / filters → `references/data.md`
|
|
15
|
+
> 开发禁区 → `references/security.md`
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
@@ -27,177 +27,11 @@ version: 2.0.0
|
|
|
27
27
|
- 业务模块尽量不要复制大量同构工作台;列表、详情、编辑、管理页优先按任务差异设计结构、密度和操作区
|
|
28
28
|
- 无法实现真实闭环时停止开发,向用户说明阻塞点;确认为平台限制、可复用经验或连续排查失败时再写入 `.draftgo/lessons/`
|
|
29
29
|
|
|
30
|
-
###
|
|
30
|
+
### 数据型页面可用性约束(强制)
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
```css
|
|
34
|
-
.workbench-page { min-height:100vh; display:flex; flex-direction:column; overflow:hidden; }
|
|
35
|
-
.workbench-toolbar { flex-shrink:0; }
|
|
36
|
-
.workbench-body { flex:1; min-height:0; display:flex; flex-direction:column; }
|
|
37
|
-
.workbench-data { flex:1; min-height:0; overflow:auto; }
|
|
38
|
-
.workbench-footer { flex-shrink:0; }
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
- 分页/操作栏/保存栏固定在工作区底部,不随数据量上浮
|
|
42
|
-
- 滚动发生在数据区,不是整页
|
|
43
|
-
|
|
44
|
-
### 表格工作区布局
|
|
45
|
-
|
|
46
|
-
所有数据表格页面,无论使用原生表格、AntD 或其他组件库,都遵守同一布局契约:
|
|
47
|
-
|
|
48
|
-
- 页面根容器占满可用视口或 iframe 内容区,使用 `height: 100%`、`height: 100vh` 或已知导航高度的 `calc(...)`;不能由表格内容决定页面高度。
|
|
49
|
-
- 表格内容区占据工具栏和底部控制区以外的所有剩余空间:`flex: 1; min-height: 0`。
|
|
50
|
-
- 纵向和横向滚动只能发生在表格内容区。横向滚动条必须紧贴在分页或批量操作栏上方,不能落在长列表的末尾。
|
|
51
|
-
- 分页、批量操作栏、保存栏等底部控制区使用 `flex-shrink: 0`,始终停在工作区底部;数据只有一行或没有数据时也不向上漂移。
|
|
52
|
-
- 禁止使用 `min-height` 加自然文档流模拟该布局,也不要让 `body`、页面根和表格内容区同时滚动。
|
|
53
|
-
|
|
54
|
-
通用骨架:
|
|
55
|
-
|
|
56
|
-
```html
|
|
57
|
-
<main class="table-workspace">
|
|
58
|
-
<header class="table-toolbar">...</header>
|
|
59
|
-
<section class="table-viewport">
|
|
60
|
-
<table>...</table>
|
|
61
|
-
</section>
|
|
62
|
-
<footer class="table-footer">...</footer>
|
|
63
|
-
</main>
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
```css
|
|
67
|
-
.table-workspace {
|
|
68
|
-
height: 100%;
|
|
69
|
-
min-height: 0;
|
|
70
|
-
display: flex;
|
|
71
|
-
flex-direction: column;
|
|
72
|
-
overflow: hidden;
|
|
73
|
-
}
|
|
74
|
-
.table-toolbar,
|
|
75
|
-
.table-footer { flex-shrink: 0; }
|
|
76
|
-
.table-viewport {
|
|
77
|
-
flex: 1;
|
|
78
|
-
min-height: 0;
|
|
79
|
-
overflow: auto; /* X scrollbar remains immediately above .table-footer */
|
|
80
|
-
}
|
|
81
|
-
.table-viewport > table { min-width: max-content; }
|
|
82
|
-
```
|
|
32
|
+
数据型页面必须保证主要操作可达、滚动边界清晰,并使分页、批量操作或保存控件在空数据、少量数据和长列表状态下始终可用。横向溢出不能把核心操作藏到不可达区域,加载态、空态、错误态和成功态都必须保持页面结构稳定。
|
|
83
33
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
当页面主体是表格、日志列表、后台数据管理页时,必须先做固定高度的 flex column 容器,再放表格。不要让分页跟随表格内容高度往下跑,也不要让整页滚动。
|
|
87
|
-
|
|
88
|
-
参考骨架:
|
|
89
|
-
|
|
90
|
-
```css
|
|
91
|
-
/* 整页表格页 */
|
|
92
|
-
.table-page {
|
|
93
|
-
height: 100vh;
|
|
94
|
-
min-height: 0;
|
|
95
|
-
display: flex;
|
|
96
|
-
flex-direction: column;
|
|
97
|
-
overflow: hidden;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/* 如果页面外已有顶部导航,用实际导航高度替换 56px */
|
|
101
|
-
.table-page.with-top-nav {
|
|
102
|
-
height: calc(100vh - 56px);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
.table-toolbar {
|
|
106
|
-
flex-shrink: 0;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
.table-shell {
|
|
110
|
-
flex: 1;
|
|
111
|
-
min-height: 0;
|
|
112
|
-
display: flex;
|
|
113
|
-
flex-direction: column;
|
|
114
|
-
overflow: hidden;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
.table-data {
|
|
118
|
-
flex: 1;
|
|
119
|
-
min-height: 0;
|
|
120
|
-
overflow: auto;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
.table-pagination {
|
|
124
|
-
flex-shrink: 0;
|
|
125
|
-
margin-top: auto;
|
|
126
|
-
}
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
AntD Table 示例结构:
|
|
130
|
-
|
|
131
|
-
```javascript
|
|
132
|
-
h('div', { className: 'table-page' },
|
|
133
|
-
toolbar && h('div', { className: 'table-toolbar' }, toolbar),
|
|
134
|
-
h('div', { className: 'table-shell' },
|
|
135
|
-
h('div', { className: 'table-data' },
|
|
136
|
-
h(antd.Table, {
|
|
137
|
-
rowKey: 'id',
|
|
138
|
-
columns,
|
|
139
|
-
dataSource: items,
|
|
140
|
-
loading,
|
|
141
|
-
pagination: false,
|
|
142
|
-
scroll: { x: 1100 },
|
|
143
|
-
onChange: handleTableChange,
|
|
144
|
-
})
|
|
145
|
-
),
|
|
146
|
-
h('div', { className: 'table-pagination' },
|
|
147
|
-
h(antd.Pagination, {
|
|
148
|
-
current: page,
|
|
149
|
-
pageSize,
|
|
150
|
-
total,
|
|
151
|
-
showSizeChanger: true,
|
|
152
|
-
onChange: loadPage,
|
|
153
|
-
})
|
|
154
|
-
)
|
|
155
|
-
)
|
|
156
|
-
)
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
如果表格列很多,横向滚动条必须固定在分页上方,而不是藏在长数据列表底部。做法是让 antd Table 自己生成 `.ant-table-body` 滚动区:外层 `.table-data` 只负责 flex 占位和 `overflow:hidden`,Table 设置 `pagination:false`、`scroll:{ x: 1100, y: '100%' }`,再用 CSS 让 `.ant-table-body` 填满剩余高度。
|
|
160
|
-
|
|
161
|
-
```css
|
|
162
|
-
.table-data {
|
|
163
|
-
flex: 1;
|
|
164
|
-
min-height: 0;
|
|
165
|
-
overflow: hidden;
|
|
166
|
-
display: flex;
|
|
167
|
-
flex-direction: column;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
.table-data .ant-table-wrapper,
|
|
171
|
-
.table-data .ant-spin-nested-loading,
|
|
172
|
-
.table-data .ant-spin-container,
|
|
173
|
-
.table-data .ant-table,
|
|
174
|
-
.table-data .ant-table-container {
|
|
175
|
-
flex: 1;
|
|
176
|
-
min-height: 0;
|
|
177
|
-
min-width: 0;
|
|
178
|
-
display: flex;
|
|
179
|
-
flex-direction: column;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
.table-data .ant-table-header { flex-shrink: 0; }
|
|
183
|
-
.table-data .ant-table-body {
|
|
184
|
-
flex: 1 1 0;
|
|
185
|
-
min-height: 0;
|
|
186
|
-
max-height: none !important;
|
|
187
|
-
overflow: auto !important;
|
|
188
|
-
}
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
```javascript
|
|
192
|
-
h(antd.Table, {
|
|
193
|
-
rowKey: 'id',
|
|
194
|
-
columns,
|
|
195
|
-
dataSource: items,
|
|
196
|
-
loading,
|
|
197
|
-
pagination: false,
|
|
198
|
-
scroll: { x: 1100, y: '100%' },
|
|
199
|
-
})
|
|
200
|
-
```
|
|
34
|
+
具体信息架构、DOM、组件、布局和视觉风格由 Agent 根据任务目标、受众、数据规模和现有资源自主设计。CLI 与 Skill 不提供页面骨架,也不指定工作台、表格页或其他固定页面结构。
|
|
201
35
|
|
|
202
36
|
### 文本与图标换行控制(强制)
|
|
203
37
|
|
|
@@ -225,119 +59,16 @@ h(antd.Table, {
|
|
|
225
59
|
|
|
226
60
|
移动端适配是产品与受众判断,不是所有页面的固定验收门。公众页面、用户可能从手机访问的业务页面、已有响应式断点,或本次修改涉及布局/CSS/导航/弹窗时,应认真处理窄屏;明确的桌面工作台、仅改文案/数据逻辑、后端或脚本任务,不要机械增加移动端检查。需要窄屏布局时,可以先保证小屏可用,再在宽屏增强信息密度。
|
|
227
61
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
#### 1. 容器宽度:禁止固定像素,用流式布局
|
|
231
|
-
|
|
232
|
-
内容容器宽度必须随可用空间伸缩,永远不要写死像素宽度:
|
|
233
|
-
|
|
234
|
-
```css
|
|
235
|
-
/* ✅ */
|
|
236
|
-
.container { width: 100%; max-width: 960px; margin: 0 auto; padding: 0 16px; }
|
|
237
|
-
|
|
238
|
-
/* ❌ 窄屏必然横向溢出 */
|
|
239
|
-
.container { width: 1200px; }
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
Tailwind:`w-full max-w-4xl mx-auto px-4`
|
|
62
|
+
响应式实现只规定结果,不提供固定配方:
|
|
243
63
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
```css
|
|
251
|
-
/* 窄屏纵向,768px+ 横排 */
|
|
252
|
-
.layout { display: flex; flex-direction: column; gap: 16px; }
|
|
253
|
-
@media (min-width: 768px) {
|
|
254
|
-
.layout { flex-direction: row; }
|
|
255
|
-
.sidebar { width: 240px; flex-shrink: 0; }
|
|
256
|
-
.main { flex: 1; min-width: 0; } /* min-width:0 防长内容撑破父容器 */
|
|
257
|
-
}
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
Tailwind:`flex flex-col md:flex-row gap-4`,主内容区加 `flex-1 min-w-0`。
|
|
261
|
-
|
|
262
|
-
多列卡片 / 统计块,让列数随宽度自动伸缩:
|
|
263
|
-
|
|
264
|
-
```css
|
|
265
|
-
.cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 16px; }
|
|
266
|
-
```
|
|
267
|
-
|
|
268
|
-
Tailwind 固定列数降级写法:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4`
|
|
269
|
-
|
|
270
|
-
---
|
|
271
|
-
|
|
272
|
-
#### 3. 可点击区域:触控友好
|
|
273
|
-
|
|
274
|
-
手指触摸区域不能太小,按钮、链接、导航项应结合页面密度提供足够内边距和间距,相邻元素避免误触:
|
|
275
|
-
|
|
276
|
-
```css
|
|
277
|
-
.btn { padding: 8px 16px; display: inline-flex; align-items: center; }
|
|
278
|
-
.nav-item { display: flex; align-items: center; padding: 8px 12px; }
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
---
|
|
282
|
-
|
|
283
|
-
#### 4. 文字:正文不缩,标题宽屏再放大
|
|
284
|
-
|
|
285
|
-
正文 16px 在任何屏幕都合适,不需要响应式。大标题在手机上不要过大,宽屏再逐步放大:
|
|
286
|
-
|
|
287
|
-
```css
|
|
288
|
-
.title { font-size: 20px; }
|
|
289
|
-
@media (min-width: 1024px) { .title { font-size: 28px; } }
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
Tailwind:`text-xl lg:text-3xl`
|
|
293
|
-
|
|
294
|
-
---
|
|
295
|
-
|
|
296
|
-
#### 5. 超宽内容(表格、代码):容器内横滚,不让整页横滚
|
|
297
|
-
|
|
298
|
-
表格列多时,不能让整个页面出现横向滚动条,必须在容器层限制:
|
|
299
|
-
|
|
300
|
-
```html
|
|
301
|
-
<div style="overflow-x: auto;">
|
|
302
|
-
<table style="min-width: 640px; width: 100%;">...</table>
|
|
303
|
-
</div>
|
|
304
|
-
```
|
|
305
|
-
|
|
306
|
-
antd Table 加 `scroll={{ x: 'max-content' }}`,无需额外包裹。
|
|
307
|
-
|
|
308
|
-
---
|
|
309
|
-
|
|
310
|
-
#### 6. 间距:小屏收紧,大屏舒展
|
|
311
|
-
|
|
312
|
-
```css
|
|
313
|
-
.page { padding: 16px; }
|
|
314
|
-
@media (min-width: 768px) { .page { padding: 24px 32px; } }
|
|
315
|
-
```
|
|
316
|
-
|
|
317
|
-
Tailwind:`p-4 md:p-6 lg:p-8`
|
|
318
|
-
|
|
319
|
-
---
|
|
320
|
-
|
|
321
|
-
#### 7. 弹窗与抽屉:宽度跟屏幕走
|
|
322
|
-
|
|
323
|
-
```css
|
|
324
|
-
.modal { width: min(90vw, 520px); } /* 窄屏自动收缩 */
|
|
325
|
-
.modal-body { max-height: 60vh; overflow-y: auto; } /* 内容多时内部滚动 */
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
antd Modal:`width="min(90vw, 520px)"`;抽屉窄屏优先 `placement="bottom"`。
|
|
329
|
-
|
|
330
|
-
---
|
|
331
|
-
|
|
332
|
-
#### 按需验收参考
|
|
333
|
-
|
|
334
|
-
| 参考宽度 | 适用时的观察项 |
|
|
335
|
-
|---|---|
|
|
336
|
-
| **390px** | 面向手机用户时,观察横向溢出、核心操作和文字截断 |
|
|
337
|
-
| **768px** | 涉及平板或断点切换时,观察重叠和挤压 |
|
|
338
|
-
| **1440px** | 桌面工作台或宽屏页面,观察信息密度和空间利用 |
|
|
64
|
+
- 内容使用可用空间并避免整页横向溢出;容器宽度、断点和边距沿用现有设计系统,或根据真实内容和目标设备确定。
|
|
65
|
+
- 并排区域必须在目标窄屏上保持阅读顺序、核心操作和导航可达;是否堆叠、隐藏次要信息或调整密度由 Agent 自主设计。
|
|
66
|
+
- 按钮、链接和导航项应提供适合目标设备的操作区域,相邻操作避免误触。
|
|
67
|
+
- 字体、标题层级和间距在目标视口保持清晰且不遮挡内容,不预设统一字号或间距尺度。
|
|
68
|
+
- 表格、代码和其他超宽内容应在合理边界内可访问,不能让核心操作因溢出而不可达。
|
|
69
|
+
- 弹窗和抽屉在目标视口内完整可用,长内容有明确滚动边界。
|
|
339
70
|
|
|
340
|
-
|
|
71
|
+
CLI 与 Skill 不预选容器宽度、断点、侧栏尺寸、卡片列数、标题字号、页面间距或弹窗宽度。不要为了收尾机械遍历无关视口;需要浏览器证据时按页面受众和现有断点运行 `draftgo verify-ui <url> --mobile-check auto`。只有必须依赖用户现有登录会话、浏览器扩展或真实桌面状态时才考虑 computer use。
|
|
341
72
|
|
|
342
73
|
---
|
|
343
74
|
|
|
@@ -355,11 +86,11 @@ antd Modal:`width="min(90vw, 520px)"`;抽屉窄屏优先 `placement="bottom"
|
|
|
355
86
|
- 公开页 → 顶部/侧边导航、首页入口、相关按钮之一
|
|
356
87
|
- 后台页 → 后台导航、管理菜单或现有后台入口
|
|
357
88
|
- 多页面功能:列表/详情/新建/编辑/管理必须互相走通
|
|
358
|
-
- 用户明确要求"隐藏页/草稿页"
|
|
89
|
+
- 用户明确要求"隐藏页/草稿页"才可不绑定,并在 Task 记录原因;changelog 只记录最终完成结果
|
|
359
90
|
|
|
360
91
|
### `page_1_root.html` 首页特例(强制)
|
|
361
92
|
|
|
362
|
-
- 仍是默认内置首页 →
|
|
93
|
+
- 仍是默认内置首页 → 根据用户目标、受众和现有资源自主决定改造方式;CLI 不指定官网、工作台或其他页面结构
|
|
363
94
|
- 已被用户改过 → 只做要求范围内的修改,不强制重做
|
|
364
95
|
- 判断依据:看 HTML 内容是否保留 DraftGo 默认文案/系统介绍/未定制品牌,不要只凭文件名判断
|
|
365
96
|
|
|
@@ -861,4 +592,4 @@ const dbRes = await App.get('db/order', params);
|
|
|
861
592
|
const q = (window.__DG_ROUTE_CONTEXT__ || window.__DG_GET_ROUTE_CONTEXT__?.() || App?.getCurrentRouteContext?.() || { query: {} }).query;
|
|
862
593
|
```
|
|
863
594
|
|
|
864
|
-
完整 API 表 → `
|
|
595
|
+
完整 API 表 → `references/app-api.md`
|
|
@@ -12,6 +12,8 @@ DraftGo MCP 用于实时发现、结构化查询和普通 API 操作。完整 pa
|
|
|
12
12
|
MCP tool result 或参数传输;需要全文时使用 `draftgo checkout`,提交时使用 `draftgo commit`。MCP 返回
|
|
13
13
|
`artifact` / `omitted` 时保留该语义,不要尝试重新展开长内容。
|
|
14
14
|
|
|
15
|
+
`draftgo context` 是注册在 CLI 的确定性编排命令,不是 MCP 工具,也不得在 MCP 服务端新增同名或等价的聚合工具。它先精确读取任务路由中的本地 Reference 章节,再复用一个 MCP 会话并行查询项目、资源、API 和数据结构,原样输出结构化结果及来源。context 完成后,Agent 仍可按需继续直接调用任意现有 MCP 工具。
|
|
16
|
+
|
|
15
17
|
标准发现顺序:
|
|
16
18
|
|
|
17
19
|
1. `draftgo_project_overview`
|
|
@@ -26,12 +28,14 @@ MCP tool result 或参数传输;需要全文时使用 `draftgo checkout`,提
|
|
|
26
28
|
## CLI
|
|
27
29
|
|
|
28
30
|
```bash
|
|
31
|
+
draftgo context --task frontend --output json
|
|
29
32
|
draftgo mcp setup [target...]
|
|
30
33
|
draftgo mcp status [target...]
|
|
31
34
|
draftgo mcp test
|
|
32
35
|
draftgo mcp serve
|
|
33
36
|
```
|
|
34
37
|
|
|
38
|
+
- `context` 是开发任务的一次性准备入口;不保存业务镜像,不传输完整正文。
|
|
35
39
|
- `setup` 写入项目级宿主配置,只替换 `draftgo` MCP 条目并保留其他配置。
|
|
36
40
|
- `status` 检查配置是否存在、格式是否有效,以及是否误写了凭据或远端 URL。
|
|
37
41
|
- `test` 从 `.draftgo/config.json` 读取连接,验证 initialize、tools/list 和关键 tools/call。
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# DraftGo 并行执行
|
|
2
2
|
|
|
3
|
+
主 Agent 在任务开始时只执行一次 `draftgo context --task <task> --output json`,随后维护共享契约和资源 owner。并行是按依赖和资源边界选择的执行方式,不是每个任务的固定要求。
|
|
4
|
+
|
|
3
5
|
## 资源依赖
|
|
4
6
|
|
|
5
7
|
先为每个工作单元记录:
|
|
@@ -13,10 +15,12 @@
|
|
|
13
15
|
| 资源关系 | 执行顺序 |
|
|
14
16
|
|---|---|
|
|
15
17
|
| 多个实现依赖同一 schema、API、权限或路由 | 先确定共享契约,再并行实现消费者。 |
|
|
16
|
-
|
|
|
18
|
+
| 多个工作单元涉及同一文件或 DraftGo 资源 | 全程分配给同一个修改 owner;其他 Agent 只能只读分析并回传建议。 |
|
|
17
19
|
| 页面与对应导航入口 | 页面 route 确定后接入导航。 |
|
|
18
20
|
| 不同文件且没有数据或接口依赖 | 放入同一 wave 并行执行。 |
|
|
19
21
|
|
|
22
|
+
单页面、强依赖任务,或拆分后仍共享主要文件/资源的任务由一个 Agent 完成,不强行并行。
|
|
23
|
+
|
|
20
24
|
## 工作单元
|
|
21
25
|
|
|
22
26
|
分发内容包括:
|
|
@@ -29,17 +33,18 @@ evidence: 返回的检查或运行证据
|
|
|
29
33
|
delivery_owner: main
|
|
30
34
|
```
|
|
31
35
|
|
|
32
|
-
|
|
36
|
+
工作单元返回修改结果、验证证据和阻塞信息。主 Agent 独占资源 owner 分配、共享契约维护、wave 推进、汇总回读、统一验证、commit 和 changelog 职责;子 Agent 不写 changelog。
|
|
33
37
|
|
|
34
38
|
## Wave 执行
|
|
35
39
|
|
|
36
|
-
1.
|
|
40
|
+
1. 主 Agent 执行一次 context,确定 schema、服务端点、权限、route 和导航结构等共享契约,并建立唯一资源 owner 表。
|
|
37
41
|
2. 将 `depends` 已满足且 `resource_lock` 不冲突的工作单元放入同一 wave。
|
|
38
42
|
3. 并行执行当前 wave,汇总后回读所有变更资源。
|
|
39
43
|
4. 处理接口接线和入口绑定,再启动依赖已满足的下一 wave。
|
|
40
|
-
5.
|
|
44
|
+
5. 主 Agent 统一运行一次 `draftgo check` 和必要的 API/UI 验证;只对已 checkout 的 pages/nav/docs 执行 commit,结构化资源通过 MCP 实时 API 交付。
|
|
45
|
+
6. 全部验证和交付成功后,由主 Agent 执行一次 `draftgo changelog add "<完成结果>"`。
|
|
41
46
|
|
|
42
|
-
|
|
47
|
+
某个工作单元失败时,其依赖项等待处理;其余独立分支继续汇总。发现资源锁冲突时,将相关实现重新归并给既有唯一 owner,不得通过移动到后续 wave 改由另一个 Agent 修改。
|
|
43
48
|
|
|
44
49
|
已 checkout 长正文的批量交付示例:
|
|
45
50
|
|
|
@@ -48,4 +53,4 @@ draftgo commit pages 1 2 3
|
|
|
48
53
|
draftgo commit nav 4
|
|
49
54
|
```
|
|
50
55
|
|
|
51
|
-
不同类型分开提交。发生 409/412 时当前 wave
|
|
56
|
+
不同类型分开提交。发生 409/412 时当前 wave 必须停止并保留冲突材料,不得继续自动提交后续依赖项。统一验证失败、409/412 或任何交付失败时都不得执行 `changelog add`。
|
|
@@ -36,7 +36,7 @@ read_when: 需要理解运行时机制时 · 处理 token/路由/事件相关问
|
|
|
36
36
|
|
|
37
37
|
`app` 组成:`api.js`(请求)+ `feedback.js`(弹窗/Toast)+ `runtime.js`(路由/主题)+ `i18n.js`(国际化)+ state(currentUser/isAdmin/config/theme)
|
|
38
38
|
|
|
39
|
-
完整 API 见 `
|
|
39
|
+
完整 API 见 `references/app-api.md`
|
|
40
40
|
|
|
41
41
|
---
|
|
42
42
|
|
|
@@ -74,7 +74,7 @@ data-ui 节点 → DraftGo bridge 挂载真实 shadcn/Radix
|
|
|
74
74
|
|
|
75
75
|
## Tailwind 规则
|
|
76
76
|
|
|
77
|
-
Page 资产仍然以 Tailwind HTML 为主。完整页面需要任意 Tailwind
|
|
77
|
+
Page 资产仍然以 Tailwind HTML 为主。完整页面需要任意 Tailwind 原子类时使用本地 `/assets/tailwindcss.js`;修改既有页面时保留其已验证的本地资源引用。禁止外部 CDN。
|
|
78
78
|
|
|
79
79
|
bridge 注入的 CSS 只保证 `data-ui` 组件需要的 shadcn/Tailwind 样式,不负责动态编译数据库 HTML 中任意 Tailwind class。
|
|
80
80
|
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
DraftGo execution is provided by the installed `draftgo` CLI. Legacy Python pull, push, init, and delete helpers were
|
|
4
4
|
removed because they depended on full local mirrors and bypassed the MCP plus checkout/commit safety model.
|
|
5
5
|
|
|
6
|
+
Context orchestration belongs to the registered `draftgo context` CLI command. Do not duplicate it in Skill scripts and do not add an aggregate MCP tool for it.
|
|
7
|
+
|
|
6
8
|
Do not add a script that downloads `.draftgo/*/index.json`, embeds SAT credentials, sends full pages/nav/docs content
|
|
7
9
|
through MCP, or retries version conflicts with force. Reusable helpers added here must preserve the workflows in
|
|
8
10
|
`references/mcp.md` and `references/checkout.md`.
|