openyida 2026.7.9 → 2026.7.10
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/package.json +1 -1
- package/scripts/postinstall.js +23 -23
- package/scripts/validate-skills.js +175 -0
- package/yida-skills/SKILL.md +66 -56
- package/yida-skills/references/development-rules.md +2 -2
- package/yida-skills/skills/yida-app/SKILL.md +83 -74
- package/yida-skills/skills/yida-canvas-custom-page/SKILL.md +1 -1
- package/yida-skills/skills/yida-canvas-custom-page/references/canvas-design-system.md +1 -1
- package/yida-skills/skills/yida-chart/SKILL.md +2 -2
- package/yida-skills/skills/yida-chart/references/echarts-bindding-guide.md +1 -1
- package/yida-skills/skills/yida-chart/references/echarts-code-template.md +1 -1
- package/yida-skills/skills/yida-chart/references/echarts-design-spec.md +1 -1
- package/yida-skills/skills/yida-create-process/SKILL.md +2 -2
- package/yida-skills/skills/yida-custom-page/SKILL.md +2 -2
- package/yida-skills/skills/yida-custom-page/references/coding-guide.md +1 -1
- package/yida-skills/skills/yida-custom-page/references/design-system.md +1 -1
- package/yida-skills/skills/yida-dashboard/SKILL.md +1 -1
- package/yida-skills/skills/yida-integration/SKILL.md +1 -1
- package/yida-skills/skills/yida-page-uiux/SKILL.md +1 -1
- package/yida-skills/skills/yida-page-uiux/workflow/step-0-nav-shape.md +2 -2
- package/yida-skills/skills/yida-ppt/SKILL.md +2 -2
- package/yida-skills/skills/yida-ppt-slider/SKILL.md +1 -1
- package/yida-skills/skills/yida-ppt-slider/references/echarts-race-example.md +1 -1
- package/yida-skills/skills/yida-process-rule/SKILL.md +1 -1
- package/yida-skills/skills/yida-publish-page/SKILL.md +2 -2
- package/yida-skills/skills/yida-table-form/references/examples.md +1 -1
- package/yida-skills/skills-index.json +430 -0
|
@@ -6,12 +6,15 @@ description: 宜搭完整应用开发技能。从零到一搭建完整宜搭应
|
|
|
6
6
|
# yida-app — 宜搭完整应用开发编排技能
|
|
7
7
|
|
|
8
8
|
> 本文档是**流程编排层**,描述各子技能的调用时机、决策逻辑和数据流转。
|
|
9
|
-
>
|
|
9
|
+
> 在支持 `use_skill` 的宿主中,只在进入对应阶段前调用 `use_skill("<技能名>", "<本阶段目的>")` 加载该阶段子技能;不要预读未来阶段技能。
|
|
10
|
+
> 如果宿主没有 `use_skill` / `search_skills`,按根技能路由表逐阶段定位子技能,并只读取当前阶段唯一必要的子技能文档;`skills-index.json` 不是普通宿主的运行前置条件。
|
|
10
11
|
|
|
11
12
|
## 严格禁止 (NEVER DO)
|
|
12
13
|
|
|
13
14
|
- 不要跳过 `openyida env` 环境检测直接开始开发
|
|
14
|
-
-
|
|
15
|
+
- 不要在未加载对应阶段子技能的情况下执行该阶段操作
|
|
16
|
+
- 不要用 `Read` / `read_file` / `cat` 读取子技能 `SKILL.md` 路径;支持 `use_skill` 时必须走 `use_skill`
|
|
17
|
+
- 不要在开头预读未来阶段技能,也不要并发批量加载多个子技能
|
|
15
18
|
- 不要编造任何 ID(appType/formUuid/fieldId),必须从命令返回中提取
|
|
16
19
|
- 不要用 shell heredoc、`cat`/`echo`/`printf`/`tee` 或重定向生成 OpenYida 命令输入文件
|
|
17
20
|
|
|
@@ -26,6 +29,22 @@ description: 宜搭完整应用开发技能。从零到一搭建完整宜搭应
|
|
|
26
29
|
- 导航整理完成后,若应用含表单,默认向核心表单灌入 2-3 条覆盖关键维度的示例数据,让看板首屏有真实聚合效果;`DateField`/`CascadeDateField` 用 13 位毫秒时间戳,灌后 `openyida data query` 抽查至少 1 条确认字段值非空(用户明确说"不要示例数据"时才跳过)
|
|
27
30
|
- **本技能不读写 memory**:所有关键 ID(appType、formUuid 等)通过 `.cache/<项目名>-schema.json` 持久化,不依赖跨会话的 memory 状态
|
|
28
31
|
|
|
32
|
+
## 阶段式子技能加载
|
|
33
|
+
|
|
34
|
+
完整应用搭建时,开头只加载 `yida-app` 本编排技能。进入下列阶段前,再加载该阶段唯一必要的子技能:
|
|
35
|
+
|
|
36
|
+
| 阶段 | 加载方式 |
|
|
37
|
+
|------|----------|
|
|
38
|
+
| 创建应用 | `use_skill("yida-create-app", "创建应用并获取 appType")` |
|
|
39
|
+
| 创建表单 | `use_skill("yida-create-form-page", "设计并创建表单字段结构")` |
|
|
40
|
+
| 创建页面 | `use_skill("yida-create-page", "创建自定义页面容器并获取 formUuid")` |
|
|
41
|
+
| 编写页面 | `use_skill("yida-custom-page", "编写宜搭自定义页面 JSX")` |
|
|
42
|
+
| 发布页面 | `use_skill("yida-publish-page", "编译并发布自定义页面")` |
|
|
43
|
+
| 整理导航 | `use_skill("yida-nav-group", "整理应用导航顺序")` |
|
|
44
|
+
| 示例数据 | `use_skill("yida-data-management", "写入和抽查示例数据")` |
|
|
45
|
+
|
|
46
|
+
按需阶段也遵守同一规则:需要流程时再调用 `use_skill("yida-create-process", "创建或配置流程表单")`;需要视觉方向时再调用 `use_skill("yida-page-uiux", "确定自定义页面视觉方向")`;需要报表或图表时,分别在进入报表阶段前调用 `use_skill("yida-report", "创建原生报表")` 或 `use_skill("yida-chart", "创建 ECharts 可视化页面")`。
|
|
47
|
+
|
|
29
48
|
## 适用场景
|
|
30
49
|
|
|
31
50
|
用户说"帮我搭建一个完整应用"、"从零开始创建系统"、"一句话生成应用"时使用。
|
|
@@ -48,14 +67,14 @@ description: 宜搭完整应用开发技能。从零到一搭建完整宜搭应
|
|
|
48
67
|
↓
|
|
49
68
|
[Step 2] 需求分析 → 写入 prd/<项目名>.md
|
|
50
69
|
↓
|
|
51
|
-
[Step 3]
|
|
70
|
+
[Step 3](按需)创建/更新表单 → openyida create-form → 获得 formUuid + fieldId(表单)
|
|
52
71
|
↓
|
|
53
|
-
[Step 4]
|
|
72
|
+
[Step 4] 创建自定义页面 → openyida create-page → 获得 formUuid(自定义页面)
|
|
54
73
|
↓
|
|
55
74
|
[Step 5](按需,需求含「审批」「流程」「申请」「审核」「工单」等关键词时必须执行)
|
|
56
|
-
配置流程 →
|
|
75
|
+
配置流程 → use_skill("yida-create-process", "创建或配置流程表单") → openyida create-process / configure-process
|
|
57
76
|
↓
|
|
58
|
-
[Step 6] 编写自定义页面代码 →
|
|
77
|
+
[Step 6] 编写自定义页面代码 → use_skill("yida-custom-page", "编写宜搭自定义页面 JSX") → pages/src/<项目名>.oyd.jsx
|
|
59
78
|
↓ (首次生成必做:先用 yida-page-uiux 产出「视觉方向决策块」,避免统一灰白圆角的 AI 味模板脸)
|
|
60
79
|
↓ openyida check-page / compile 预检(.oyd.jsx 自动兼容构建)
|
|
61
80
|
↓ (列表/表格类页面:参考 yida-density 技能选择合适的信息密度)
|
|
@@ -71,9 +90,14 @@ description: 宜搭完整应用开发技能。从零到一搭建完整宜搭应
|
|
|
71
90
|
[Step 10] 输出访问链接,用系统浏览器打开
|
|
72
91
|
```
|
|
73
92
|
|
|
74
|
-
###
|
|
93
|
+
### 阶段加载提醒
|
|
75
94
|
|
|
76
|
-
|
|
95
|
+
- 创建应用阶段:先加载 `yida-create-app`。
|
|
96
|
+
- 生成表单 schema 阶段:先加载 `yida-create-form-page`。
|
|
97
|
+
- 创建自定义页面阶段:先加载 `yida-create-page`。
|
|
98
|
+
- 编写自定义页面代码阶段:先加载 `yida-custom-page`;首次生成面向用户页面时,再按需加载 `yida-page-uiux` 产出视觉方向决策块。
|
|
99
|
+
- 发布阶段:先加载 `yida-publish-page`。
|
|
100
|
+
- 导航和示例数据阶段:分别加载 `yida-nav-group`、`yida-data-management`。
|
|
77
101
|
|
|
78
102
|
### 使用模板文件确保一次性成功
|
|
79
103
|
|
|
@@ -85,7 +109,7 @@ description: 宜搭完整应用开发技能。从零到一搭建完整宜搭应
|
|
|
85
109
|
| yida-data-management | `openyida sample yida-data-management form-field-template` | 表单字段定义和数据插入 |
|
|
86
110
|
| yida-create-app | `openyida sample yida-create-app ipd-app-template` | 完整应用创建示例 |
|
|
87
111
|
|
|
88
|
-
表单详情页视觉优化不走 `openyida publish`。当用户要求“详情页美化 / formDetail
|
|
112
|
+
表单详情页视觉优化不走 `openyida publish`。当用户要求“详情页美化 / formDetail 样式优化”时,调用 `use_skill("yida-form-detail", "通过表单 Schema 注入详情页 CSS")`,通过表单 Schema 注入 Html 组件承载 CSS。
|
|
89
113
|
|
|
90
114
|
**代码生成前必须**:
|
|
91
115
|
|
|
@@ -102,9 +126,9 @@ description: 宜搭完整应用开发技能。从零到一搭建完整宜搭应
|
|
|
102
126
|
```
|
|
103
127
|
用户需求
|
|
104
128
|
│
|
|
105
|
-
├── 纯展示 / 静态内容 → 跳过 Step
|
|
129
|
+
├── 纯展示 / 静态内容 → 跳过 Step 3(无需创建表单)
|
|
106
130
|
│
|
|
107
|
-
└── 需要收集 / 存储数据 → Step
|
|
131
|
+
└── 需要收集 / 存储数据 → Step 3 创建表单
|
|
108
132
|
```
|
|
109
133
|
|
|
110
134
|
### 决策 2:是否需要审批流程?
|
|
@@ -112,9 +136,9 @@ description: 宜搭完整应用开发技能。从零到一搭建完整宜搭应
|
|
|
112
136
|
```
|
|
113
137
|
表单创建后
|
|
114
138
|
│
|
|
115
|
-
├── 无审批需求 → 直接进入 Step 6 编写代码
|
|
139
|
+
├── 无审批需求 → 直接进入 Step 4 创建页面 / Step 6 编写代码
|
|
116
140
|
│
|
|
117
|
-
└── 有审批需求 →
|
|
141
|
+
└── 有审批需求 → 加载 yida-create-process 配置流程后再编写代码
|
|
118
142
|
```
|
|
119
143
|
|
|
120
144
|
### 决策 3:是否需要数据可视化报表?
|
|
@@ -122,9 +146,9 @@ description: 宜搭完整应用开发技能。从零到一搭建完整宜搭应
|
|
|
122
146
|
```
|
|
123
147
|
应用功能需求
|
|
124
148
|
│
|
|
125
|
-
├── 标准统计报表 →
|
|
149
|
+
├── 标准统计报表 → 加载 yida-report 创建原生报表
|
|
126
150
|
│
|
|
127
|
-
└── 高级 ECharts 大屏 →
|
|
151
|
+
└── 高级 ECharts 大屏 → 先加载 yida-report 创建数据源,再加载 yida-chart 创建可视化页面
|
|
128
152
|
```
|
|
129
153
|
|
|
130
154
|
### 决策 4:corpId 一致性检查(创建页面前必须执行)
|
|
@@ -147,7 +171,7 @@ description: 宜搭完整应用开发技能。从零到一搭建完整宜搭应
|
|
|
147
171
|
|
|
148
172
|
### Step 1:创建应用
|
|
149
173
|
|
|
150
|
-
|
|
174
|
+
进入本阶段前调用 `use_skill("yida-create-app", "创建应用并获取 appType")`,创建宜搭应用并获取 `appType`:
|
|
151
175
|
|
|
152
176
|
```bash
|
|
153
177
|
openyida create-app "<应用名称>" "[描述]"
|
|
@@ -155,8 +179,6 @@ openyida create-app "<应用名称>" "[描述]"
|
|
|
155
179
|
|
|
156
180
|
**输出**:`appType`(如 `APP_XXXXXX`),自动写入 prd 文档的应用配置表。
|
|
157
181
|
|
|
158
|
-
> 📖 详见 [`skills/yida-create-app/SKILL.md`](../yida-create-app/SKILL.md)
|
|
159
|
-
|
|
160
182
|
---
|
|
161
183
|
|
|
162
184
|
### Step 2:需求分析 → 写入 prd 文档
|
|
@@ -259,25 +281,11 @@ openyida create-app "<应用名称>" "[描述]"
|
|
|
259
281
|
|
|
260
282
|
---
|
|
261
283
|
|
|
262
|
-
### Step 3
|
|
263
|
-
|
|
264
|
-
确认 corpId 一致后,调用 `yida-create-page` 技能:
|
|
265
|
-
|
|
266
|
-
```bash
|
|
267
|
-
openyida create-page <appType> "<页面名称>" [--mode dashboard]
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
**输出**:`formUuid`(如 `FORM-XXXXXX`),写入 `.cache/<项目名>-schema.json`。
|
|
271
|
-
|
|
272
|
-
> 📖 详见 [`skills/yida-create-page/SKILL.md`](../yida-create-page/SKILL.md)
|
|
273
|
-
|
|
274
|
-
---
|
|
275
|
-
|
|
276
|
-
### Step 4:创建表单(按需)
|
|
284
|
+
### Step 3:创建表单(按需)
|
|
277
285
|
|
|
278
|
-
|
|
286
|
+
**当页面需要收集/存储数据时**,进入本阶段前调用 `use_skill("yida-create-form-page", "设计并创建表单字段结构")`。
|
|
279
287
|
|
|
280
|
-
####
|
|
288
|
+
#### 3.1 定义字段,写入 `<projectRoot>/.cache/openyida/<项目名或任务名>/xxx-fields.json`
|
|
281
289
|
|
|
282
290
|
使用 create_file / Write / file edit tool 创建字段定义文件;不要用 shell heredoc 或重定向写 JSON。若从 workspace 根执行命令,路径写作 `project/.cache/openyida/<项目名或任务名>/xxx-fields.json`。
|
|
283
291
|
|
|
@@ -290,7 +298,7 @@ openyida create-page <appType> "<页面名称>" [--mode dashboard]
|
|
|
290
298
|
]
|
|
291
299
|
```
|
|
292
300
|
|
|
293
|
-
####
|
|
301
|
+
#### 3.2 创建表单
|
|
294
302
|
|
|
295
303
|
```bash
|
|
296
304
|
openyida create-form create <appType> "<表单名称>" .cache/openyida/<项目名或任务名>/xxx-fields.json
|
|
@@ -298,7 +306,7 @@ openyida create-form create <appType> "<表单名称>" .cache/openyida/<项目
|
|
|
298
306
|
|
|
299
307
|
**输出**:`formUuid` 和各字段的 `fieldId`(如 `textField_xxxxxxxx`)。
|
|
300
308
|
|
|
301
|
-
####
|
|
309
|
+
#### 3.3 将 Schema ID 写入 `.cache/<项目名>-schema.json`
|
|
302
310
|
|
|
303
311
|
```json
|
|
304
312
|
{
|
|
@@ -320,13 +328,24 @@ openyida create-form create <appType> "<表单名称>" .cache/openyida/<项目
|
|
|
320
328
|
}
|
|
321
329
|
```
|
|
322
330
|
|
|
323
|
-
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
### Step 4:创建自定义页面
|
|
334
|
+
|
|
335
|
+
确认 corpId 一致后,进入本阶段前调用 `use_skill("yida-create-page", "创建自定义页面容器并获取 formUuid")`:
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
openyida create-page <appType> "<页面名称>" [--mode dashboard]
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
**输出**:`formUuid`(如 `FORM-XXXXXX`),写入 `.cache/<项目名>-schema.json`。
|
|
324
342
|
|
|
325
343
|
---
|
|
326
344
|
|
|
327
345
|
### Step 5:配置流程(按需)
|
|
328
346
|
|
|
329
347
|
**当需求含「审批」「流程」「申请」「审核」「工单」等关键词时必须执行**。
|
|
348
|
+
进入本阶段前调用 `use_skill("yida-create-process", "创建或配置流程表单")`。
|
|
330
349
|
|
|
331
350
|
```bash
|
|
332
351
|
openyida create-process <appType> --formUuid <formUuid> .cache/openyida/<项目名或任务名>/process-definition.json
|
|
@@ -334,14 +353,12 @@ openyida create-process <appType> --formUuid <formUuid> .cache/openyida/<项目
|
|
|
334
353
|
|
|
335
354
|
流程定义文件先用结构化文件写入工具创建;从 workspace 根执行命令时路径加 `project/` 前缀。
|
|
336
355
|
|
|
337
|
-
> 📖 详见 [`skills/yida-create-process/SKILL.md`](../yida-create-process/SKILL.md)
|
|
338
|
-
|
|
339
356
|
---
|
|
340
357
|
|
|
341
358
|
### Step 6:编写自定义页面代码
|
|
342
359
|
|
|
343
360
|
**编写前必须**:
|
|
344
|
-
1.
|
|
361
|
+
1. 调用 `use_skill("yida-custom-page", "编写宜搭自定义页面 JSX")`
|
|
345
362
|
2. 执行 `openyida sample yida-custom-page custom-page-template` 获取模板,再用 `read_file` 读取 `.cache/samples/custom-page-template.js`
|
|
346
363
|
3. 读取 prd 文档和 `.cache/<项目名>-schema.json` 获取所有 ID
|
|
347
364
|
|
|
@@ -365,13 +382,11 @@ openyida check-page pages/src/<项目名>.oyd.jsx
|
|
|
365
382
|
openyida compile pages/src/<项目名>.oyd.jsx
|
|
366
383
|
```
|
|
367
384
|
|
|
368
|
-
> 📖 详见 [`skills/yida-custom-page/SKILL.md`](../yida-custom-page/SKILL.md)
|
|
369
|
-
|
|
370
385
|
---
|
|
371
386
|
|
|
372
387
|
### Step 7:发布页面
|
|
373
388
|
|
|
374
|
-
|
|
389
|
+
进入本阶段前调用 `use_skill("yida-publish-page", "编译并发布自定义页面")`,将源码编译并部署到宜搭平台:
|
|
375
390
|
|
|
376
391
|
```bash
|
|
377
392
|
openyida publish <源文件路径> <appType> <formUuid> [--health-check]
|
|
@@ -379,13 +394,11 @@ openyida publish <源文件路径> <appType> <formUuid> [--health-check]
|
|
|
379
394
|
|
|
380
395
|
**发布流程**:Babel 编译 JSX → ES5 → UglifyJS 压缩 → 调用 `saveFormSchema` 保存 Schema
|
|
381
396
|
|
|
382
|
-
> 📖 详见 [`skills/yida-publish-page/SKILL.md`](../yida-publish-page/SKILL.md)
|
|
383
|
-
|
|
384
397
|
---
|
|
385
398
|
|
|
386
399
|
### Step 8:整理导航顺序(含看板/多页面时必做)
|
|
387
400
|
|
|
388
|
-
|
|
401
|
+
首次生成完整应用后,导航是创建时的默认顺序(通常表单在前、看板在后),必须基于业务信息架构重排。进入本阶段前调用 `use_skill("yida-nav-group", "整理应用导航顺序")`:
|
|
389
402
|
|
|
390
403
|
```bash
|
|
391
404
|
openyida nav-group order <appType> <总览看板> <专题看板...> <核心表单...>
|
|
@@ -393,13 +406,11 @@ openyida nav-group order <appType> <总览看板> <专题看板...> <核心表
|
|
|
393
406
|
|
|
394
407
|
**默认原则**:面向决策者的**总览/驾驶舱看板作为应用门面靠前**,数据录入/明细表单在其后;同级多个专题看板按业务优先级排,不要把所有页面无脑堆最前。
|
|
395
408
|
|
|
396
|
-
> 📖 详见 [`skills/yida-nav-group/SKILL.md`](../yida-nav-group/SKILL.md)
|
|
397
|
-
|
|
398
409
|
---
|
|
399
410
|
|
|
400
411
|
### Step 9:灌入示例数据(有表单时默认执行)
|
|
401
412
|
|
|
402
|
-
新建应用的表单默认无数据,看板首屏会空。导航整理完成后,默认向核心表单灌入 **2-3
|
|
413
|
+
新建应用的表单默认无数据,看板首屏会空。导航整理完成后,默认向核心表单灌入 **2-3 条**覆盖关键维度(不同活动/渠道/日期等)的示例记录。进入本阶段前调用 `use_skill("yida-data-management", "写入和抽查示例数据")`:
|
|
403
414
|
|
|
404
415
|
```bash
|
|
405
416
|
openyida data create form <appType> <formUuid> --data-file .cache/openyida/<项目名或任务名>/data-import/sample-record-1.json
|
|
@@ -412,8 +423,6 @@ openyida data create form <appType> <formUuid> --data-file .cache/openyida/<项
|
|
|
412
423
|
- 灌完执行 `openyida data query form <appType> <formUuid>` 抽查至少 1 条,确认 `formData` 字段有实际值。
|
|
413
424
|
- 用户明确说"不要示例数据 / 不要 mock 数据"时才跳过。
|
|
414
425
|
|
|
415
|
-
> 📖 详见 [`skills/yida-data-management/SKILL.md`](../yida-data-management/SKILL.md)
|
|
416
|
-
|
|
417
426
|
---
|
|
418
427
|
|
|
419
428
|
### Step 10:输出访问链接并用系统浏览器打开
|
|
@@ -427,8 +436,8 @@ openyida data create form <appType> <formUuid> --data-file .cache/openyida/<项
|
|
|
427
436
|
| 步骤 | 产出 | 用途 |
|
|
428
437
|
|------|------|------|
|
|
429
438
|
| create-app | `appType` | 所有后续命令的必填参数 |
|
|
430
|
-
| create-page | `pageId` (即 `formUuid`) | 发布自定义页面时指定目标页面 |
|
|
431
439
|
| create-form | `formUuid` + `fieldId` | 自定义页面代码中调用表单 API |
|
|
440
|
+
| create-page | `pageId` (即 `formUuid`) | 发布自定义页面时指定目标页面 |
|
|
432
441
|
| get-schema | `fieldId` 列表 | 公式字段、权限配置、数据查询时引用 |
|
|
433
442
|
|
|
434
443
|
**存储约定**:
|
|
@@ -447,39 +456,39 @@ openyida data create form <appType> <formUuid> --data-file .cache/openyida/<项
|
|
|
447
456
|
### 场景 1:一句话生成应用(如"生日祝福小游戏")
|
|
448
457
|
|
|
449
458
|
```
|
|
450
|
-
1. yida-create-app → 创建应用,获取 appType
|
|
459
|
+
1. 加载子技能 `yida-create-app` → 创建应用,获取 appType
|
|
451
460
|
2. 需求分析 → 写入 prd/birthday-game.md
|
|
452
|
-
3. yida-create-page →
|
|
453
|
-
4. yida-create-
|
|
454
|
-
5. yida-custom-page → 编写游戏页面代码
|
|
455
|
-
6. yida-publish-page → 发布,输出访问链接
|
|
456
|
-
7. yida-nav-group → 按“游戏首页 → 祝福记录表”整理导航
|
|
457
|
-
8. yida-data-management → 向祝福记录表灌 2-3 条示例数据
|
|
461
|
+
3. 加载子技能 `yida-create-form-page` → 创建祝福记录表单,获取 formUuid + fieldId
|
|
462
|
+
4. 加载子技能 `yida-create-page` → 创建自定义页面,获取 pageId
|
|
463
|
+
5. 加载子技能 `yida-custom-page` → 编写游戏页面代码
|
|
464
|
+
6. 加载子技能 `yida-publish-page` → 发布,输出访问链接
|
|
465
|
+
7. 加载子技能 `yida-nav-group` → 按“游戏首页 → 祝福记录表”整理导航
|
|
466
|
+
8. 加载子技能 `yida-data-management` → 向祝福记录表灌 2-3 条示例数据
|
|
458
467
|
```
|
|
459
468
|
|
|
460
469
|
### 场景 2:带审批的 CRM 系统
|
|
461
470
|
|
|
462
471
|
```
|
|
463
|
-
1. yida-create-app → 创建 CRM 应用
|
|
472
|
+
1. 加载子技能 `yida-create-app` → 创建 CRM 应用
|
|
464
473
|
2. 需求分析 → 写入 prd/crm.md
|
|
465
|
-
3. yida-create-form-page → 创建客户信息表、跟进记录表
|
|
466
|
-
4. yida-create-process → 配置客户审批流程
|
|
467
|
-
5. yida-report → 创建销售数据报表
|
|
468
|
-
6. yida-create-page → 创建 CRM 首页
|
|
469
|
-
7. yida-custom-page → 编写首页代码(集成表单 + 报表)
|
|
470
|
-
8. yida-publish-page → 发布
|
|
471
|
-
9. yida-nav-group → 按“CRM 首页/看板 → 客户信息表 → 跟进记录表 → 审批流程/报表”整理导航
|
|
472
|
-
10. yida-data-management → 向客户信息表、跟进记录表灌 2-3 条示例数据
|
|
474
|
+
3. 加载子技能 `yida-create-form-page` → 创建客户信息表、跟进记录表
|
|
475
|
+
4. 加载子技能 `yida-create-process` → 配置客户审批流程
|
|
476
|
+
5. 加载子技能 `yida-report` → 创建销售数据报表
|
|
477
|
+
6. 加载子技能 `yida-create-page` → 创建 CRM 首页
|
|
478
|
+
7. 加载子技能 `yida-custom-page` → 编写首页代码(集成表单 + 报表)
|
|
479
|
+
8. 加载子技能 `yida-publish-page` → 发布
|
|
480
|
+
9. 加载子技能 `yida-nav-group` → 按“CRM 首页/看板 → 客户信息表 → 跟进记录表 → 审批流程/报表”整理导航
|
|
481
|
+
10. 加载子技能 `yida-data-management` → 向客户信息表、跟进记录表灌 2-3 条示例数据
|
|
473
482
|
```
|
|
474
483
|
|
|
475
484
|
### 场景 3:数据大屏(ECharts 可视化)
|
|
476
485
|
|
|
477
486
|
```
|
|
478
|
-
1. yida-create-app → 创建应用
|
|
479
|
-
2. yida-create-form-page → 创建数据录入表单
|
|
480
|
-
3. yida-report → 创建原生报表(作为 ECharts 数据源)
|
|
481
|
-
4. yida-chart → 创建 ECharts 自定义页面(引用原生报表数据)
|
|
482
|
-
5. yida-publish-page → 发布
|
|
487
|
+
1. 加载子技能 `yida-create-app` → 创建应用
|
|
488
|
+
2. 加载子技能 `yida-create-form-page` → 创建数据录入表单
|
|
489
|
+
3. 加载子技能 `yida-report` → 创建原生报表(作为 ECharts 数据源)
|
|
490
|
+
4. 加载子技能 `yida-chart` → 创建 ECharts 自定义页面(引用原生报表数据)
|
|
491
|
+
5. 加载子技能 `yida-publish-page` → 发布
|
|
483
492
|
```
|
|
484
493
|
|
|
485
494
|
---
|
|
@@ -47,7 +47,7 @@ OpenYida CLI 已支持发布 `YidaCodeCanvas` 页面:把 Code Canvas 源码写
|
|
|
47
47
|
|
|
48
48
|
## 视觉方向:先定方向,再写代码
|
|
49
49
|
|
|
50
|
-
写页面前先定视觉方向,避免首次就生成「默认蓝 + 大圆角 + emoji」的 AI 味套版。视觉决策是**栈无关**的,与 native 链路共用决策层技能 `yida-page-uiux
|
|
50
|
+
写页面前先定视觉方向,避免首次就生成「默认蓝 + 大圆角 + emoji」的 AI 味套版。视觉决策是**栈无关**的,与 native 链路共用决策层技能 `yida-page-uiux`:需要视觉方向时调用 `use_skill("yida-page-uiux", "确定 Code Canvas 页面的视觉方向")`,按页面类型(工作台/仪表盘/列表/详情)做 5 维差异化、走去 AI 味清单、严禁 emoji。
|
|
51
51
|
|
|
52
52
|
Canvas 这套栈(React18 + antd + Tailwind)怎么把「主色跟随 App 品牌」落地由 [references/canvas-design-system.md](references/canvas-design-system.md) 负责。一句话记忆:**CSS 变量 `var(--color-brand1-*)` 对普通 DOM / Tailwind 直接可用(Canvas 跑在真 window、节点在宿主树内会级联);antd token 和图表颜色是 JS 消费,需用 `getComputedStyle` 把品牌色解析成真实色值再喂进去。** 语义色(成功/警告/错误)保持固定,不随主题变。
|
|
53
53
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
本文件是 Code Canvas 页面的**实现层**引导:怎么让首次生成的页面跟随宿主 App 的品牌主题色,而不是永远一片 antd 默认蓝。视觉方向怎么定(页面类型、差异化、去 AI 味)是**栈无关**的,走共用的决策层技能 `yida-page-uiux`,本文件只讲 Canvas(React18 + antd + Tailwind)这套栈怎么把主色落地。
|
|
4
4
|
|
|
5
|
-
>
|
|
5
|
+
> 决策层:需要视觉方向时调用 `use_skill("yida-page-uiux", "确定 Code Canvas 页面视觉方向")`(先做 Step 0 导航形态判定,再定工作台/仪表盘/列表/详情、5 维差异化、去 AI 味、禁 emoji)。
|
|
6
6
|
> 实现层:本文件负责把「主色跟随 App 品牌」落到 antd token / Tailwind / 图表。
|
|
7
7
|
|
|
8
8
|
> **前提是导航可见**:跟随品牌主色是为了跟应用框架融合。若页面隐藏了应用导航(`isRenderNav=false`,沉浸/独立/门户/大屏,由 `yida-page-uiux` Step 0 判定),主色相可自立、不必严格跟品牌——此时把下文 `readBrandColor` 的取值换成自定的主色即可(antd `colorPrimary` / 图表色都改喂自定色),**语义色仍固定、去 AI 味红线仍生效**。拿不准就按「跟随品牌」这个更安全的默认走。
|
|
@@ -156,5 +156,5 @@ A:更新 `_customState.filterValueMap`,重新调用报表数据请求函数
|
|
|
156
156
|
| [ECharts 视觉规范](references/echarts-design-spec.md) | 默认风格、配色、卡片、图表模板、多端适配、表格样式 | 设计页面 UI 时必读 |
|
|
157
157
|
| [已有报表绑定指南](references/echarts-bindding-guide.md) | 方案 C、Schema 解析、filterKey、数据源完整性校验 | 用户提供报表 URL 时必读 |
|
|
158
158
|
| [示例](references/examples.md) | 命令示例、页面代码示例、常见图表实现 | 需要参考完整写法时阅读 |
|
|
159
|
-
|
|
|
160
|
-
|
|
|
159
|
+
| `yida-report` 子技能 | 原生报表创建、追加图表、Schema 生成 | 需要先创建或补齐原生报表时调用 `use_skill("yida-report", "创建或补齐原生报表")` |
|
|
160
|
+
| `yida-custom-page` 子技能 | 宜搭 React 16 自定义页面规则 | 不确定页面运行时限制时调用 `use_skill("yida-custom-page", "确认宜搭自定义页面运行时限制")` |
|
|
@@ -90,7 +90,7 @@ openyida create-process "APP_XXX" --formUuid "FORM-YYY" .cache/openyida/order/pr
|
|
|
90
90
|
2. **🔄 跳转规则**:存在回退/循环语义时,自动配置 `routeRules`
|
|
91
91
|
3. **🔀 并行/办理/高级组件**:需要并行会审、办理节点或连接器/数据/消息等官方组件节点时,流程定义格式直接参考 `yida-process-rule`
|
|
92
92
|
|
|
93
|
-
|
|
93
|
+
需要流程规则细节时,调用 `use_skill("yida-process-rule", "配置已有流程节点、分支和字段权限")`。
|
|
94
94
|
|
|
95
95
|
## 异常处理
|
|
96
96
|
|
|
@@ -98,7 +98,7 @@ openyida create-process "APP_XXX" --formUuid "FORM-YYY" .cache/openyida/order/pr
|
|
|
98
98
|
|---------|----------|
|
|
99
99
|
| 命令返回失败 | 检查 appType 和 formUuid 是否正确,确认登录态有效 |
|
|
100
100
|
| processCode 获取失败 | 确认表单已成功转为流程表单类型,重新执行 |
|
|
101
|
-
| 流程定义 JSON 格式错误 |
|
|
101
|
+
| 流程定义 JSON 格式错误 | 加载 `yida-process-rule` 子技能,按其中的 JSON 格式说明修正 |
|
|
102
102
|
| 返回 JSON 中无 processCode | 不要猜测 processCode,重新执行命令获取 |
|
|
103
103
|
| 流程发布失败 | 检查流程定义中的 fieldId 是否为真实 ID(先 get-schema 获取) |
|
|
104
104
|
| 登录态失效 | 执行 `openyida login` 重新登录后再试 |
|
|
@@ -32,7 +32,7 @@ description: 宜搭 native 自定义页面 JSX 开发规范(React 16 宜搭原
|
|
|
32
32
|
|
|
33
33
|
影响代码质量和用户体验:
|
|
34
34
|
|
|
35
|
-
0. **写 UI 前先定视觉方向**:面向用户的页面在动手写 JSX
|
|
35
|
+
0. **写 UI 前先定视觉方向**:面向用户的页面在动手写 JSX 前,调用 `use_skill("yida-page-uiux", "确定自定义页面视觉方向")` 完成「视觉方向决策」(页面类型判定 + 差异化 + 去 AI 味自检),拿到「视觉方向决策块」后再按本技能 `references/design-system.md` 的 token/组件实现;不要直接套用统一灰白底 + 8px 圆角卡片网格的默认模板(那正是 AI 味来源)。
|
|
36
36
|
1. **代码生成前确认功能摘要**:详见 [编码指南 编注 0](references/coding-guide.md)
|
|
37
37
|
2. **pageSize 推荐 50,最大 100**:列表/看板默认 `pageSize: 50`;分页接口 `searchFormDatas` 等的 `pageSize` 最大 100
|
|
38
38
|
3. **didUnmount 清理定时器**:在 `didUnmount` 中清理所有 `setInterval`/`setTimeout`,防止内存泄漏
|
|
@@ -176,7 +176,7 @@ openyida check-page pages/src/home.oyd.jsx --json # 输出机器可读的
|
|
|
176
176
|
| 文档 | 覆盖范围 | 何时阅读 |
|
|
177
177
|
|------|---------|---------|
|
|
178
178
|
| **本技能文档** | | |
|
|
179
|
-
|
|
|
179
|
+
| `yida-page-uiux` 子技能 | 页面类型 playbook、5 维差异化引擎、去 AI 味黑名单/8 问自检、图标策略 | 实现面向用户的 UI 且要求好看/去 AI 味时,调用 `use_skill("yida-page-uiux", "确定自定义页面视觉方向")` 并产出决策块 |
|
|
180
180
|
| [编码指南](references/coding-guide.md) | 文件结构模板、状态管理、生命周期、19 条编码规范 | 编写任何页面代码前必读 |
|
|
181
181
|
| [运行时护栏](references/runtime-guardrails.md) | pageSize、loading 恢复、ECharts DOM 时序、setState 约束、check-page 规则映射 | 编写列表、看板、图表或接口页面前必读 |
|
|
182
182
|
| [设计规范](references/design-system.md) | 色彩/圆角/字体/间距系统、7 类组件样式模板、8 条反模式 | 实现 UI 样式时必读 |
|
|
@@ -526,7 +526,7 @@ setTimeout(function () {
|
|
|
526
526
|
}, 100);
|
|
527
527
|
```
|
|
528
528
|
|
|
529
|
-
> **适用场景**:ECharts 图表初始化、Canvas 绑定、第三方库挂载等需要操作 DOM
|
|
529
|
+
> **适用场景**:ECharts 图表初始化、Canvas 绑定、第三方库挂载等需要操作 DOM 的场景。需要图表级渲染时序规则时,调用 `use_skill("yida-chart", "确认 ECharts 图表渲染时序")`。
|
|
530
530
|
|
|
531
531
|
### 15. 调试技巧
|
|
532
532
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 宜搭自定义页面设计规范
|
|
2
2
|
|
|
3
|
-
> **本文件是 token / 组件实现层(数值层)**:提供色彩/圆角/字体/间距的具体值与组件模板。视觉**方向与差异化**(选哪种气质、如何偏离默认脸、去 AI 味)由
|
|
3
|
+
> **本文件是 token / 组件实现层(数值层)**:提供色彩/圆角/字体/间距的具体值与组件模板。视觉**方向与差异化**(选哪种气质、如何偏离默认脸、去 AI 味)由 `yida-page-uiux` 子技能决定——需要时调用 `use_skill("yida-page-uiux", "确定自定义页面视觉方向")`,**先定方向、再用本文件落地**。直接套用本文件的默认组合(灰白底 + 统一圆角卡片)而不先做方向决策,正是页面「有 AI 味」的根因。
|
|
4
4
|
|
|
5
5
|
> 宜搭自定义页面默认使用 Tailwind utility `className` 组织视觉层,并保留内联 `style` 兜底。不能使用 CSS 文件、CSS Modules、shadcn/ui 或构建期样式方案。
|
|
6
6
|
|
|
@@ -169,7 +169,7 @@ metadata:
|
|
|
169
169
|
|
|
170
170
|
## 与 yida-chart 的协作边界
|
|
171
171
|
|
|
172
|
-
当你在本技能里实现某个具体图表(比如地图、桑基图、雷达图)遇到**图表级技术问题**(渲染不出来、数据结构怎么映射到 series、setOption
|
|
172
|
+
当你在本技能里实现某个具体图表(比如地图、桑基图、雷达图)遇到**图表级技术问题**(渲染不出来、数据结构怎么映射到 series、setOption 闪烁)时,调用 `use_skill("yida-chart", "解决具体 ECharts 图表实现问题")`,不要重复造轮子。
|
|
173
173
|
|
|
174
174
|
本技能只负责:
|
|
175
175
|
- 6 个图表应该画什么(区域营收 / 品牌矩阵 / 客群分布 / 渠道贡献 / NPS / 趋势)
|
|
@@ -57,7 +57,7 @@ Step 0 导航形态判定 → Step 1 页面类型 → Step 2 意图解码 → St
|
|
|
57
57
|
| 文档 | 覆盖范围 | 何时阅读 |
|
|
58
58
|
|------|---------|---------|
|
|
59
59
|
| [视觉决策引擎](references/visual-decision-engine.md) | 5 个风格意图 + 反默认组合表 + 5 个差异化维度 + 强制第二选择 + 差异化自检 | Step 4 做视觉决策时(所有场景共用) |
|
|
60
|
-
|
|
|
60
|
+
| `yida-nav-shell` 子技能 | 页面隐藏应用导航后用 JSX 自建侧边/顶部/混合/浮动/标签导航壳:选型表 + 骨架 + native/Canvas 代码 + 多视图切换 | Step 0 判定导航隐藏、需自建导航壳时调用 `use_skill("yida-nav-shell", "设计页面内自绘导航壳")` |
|
|
61
61
|
| [scene-workbench](references/scenes/workbench.md) | 工作台/门户首页的骨架/密度/焦点/组件套餐/去 AI 味要点 | 页面类型 = 工作台时 |
|
|
62
62
|
| [scene-dashboard](references/scenes/dashboard.md) | 数据看板/驾驶舱 | 页面类型 = 看板时 |
|
|
63
63
|
| [scene-list](references/scenes/list.md) | 列表/管理页 | 页面类型 = 列表时 |
|
|
@@ -26,9 +26,9 @@
|
|
|
26
26
|
- **配置闭环**:只要页面内自绘应用级导航,发布后必须执行 `openyida update-form-config <appType> <formUuid> false "<页面标题>"` 隐藏宜搭原导航,并验证最终 URL 仍带 `isRenderNav=false`。
|
|
27
27
|
- **移动端**:侧边栏在窄屏要能收起为抽屉/底部标签,仍走 `isMobile` 响应式。
|
|
28
28
|
|
|
29
|
-
**导航壳形态选型**:侧边栏 / 顶部 / 顶部+侧边混合 / 浮动胶囊 /
|
|
29
|
+
**导航壳形态选型**:侧边栏 / 顶部 / 顶部+侧边混合 / 浮动胶囊 / 标签页——按顶级模块数量和是否常驻选。需要选型表、每种形态的骨架、选中态、移动端收敛、native + Canvas 代码示例时,调用 `use_skill("yida-nav-shell", "设计页面内自绘导航壳")`。
|
|
30
30
|
|
|
31
|
-
> 导航壳的**视觉方向**仍走 Step 1–6(多为 workbench/门户形态);导航壳的**形态与实现**(选型、多视图切换、URL
|
|
31
|
+
> 导航壳的**视觉方向**仍走 Step 1–6(多为 workbench/门户形态);导航壳的**形态与实现**(选型、多视图切换、URL 拼接)需要调用 `use_skill("yida-nav-shell", "设计页面内自绘导航壳")`,再交 `yida-custom-page` / `yida-canvas-custom-page` 落地。
|
|
32
32
|
|
|
33
33
|
## 产出
|
|
34
34
|
|
|
@@ -25,7 +25,7 @@ metadata:
|
|
|
25
25
|
本技能只保留兼容入口。所有宜搭 PPT / 幻灯片 / 演示文稿开发都应改用:
|
|
26
26
|
|
|
27
27
|
```text
|
|
28
|
-
|
|
28
|
+
use_skill("yida-ppt-slider", "开发宜搭全屏幻灯片页面")
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
## 执行规则
|
|
@@ -43,4 +43,4 @@ metadata:
|
|
|
43
43
|
yida-ppt 已合并到 yida-ppt-slider,我会使用新版 yida-ppt-slider 的对应主题来实现。
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
然后调用 `use_skill("yida-ppt-slider", "开发宜搭全屏幻灯片页面")` 并继续。
|
|
@@ -142,4 +142,4 @@ openyida update-form-config <appType> <formUuid> false "<页面名>"
|
|
|
142
142
|
| [核心示例](references/examples.md) | SLIDES、状态、生命周期、渲染、导航、全屏、i18n、主题、hash | 编写页面代码前必读 |
|
|
143
143
|
| [dark-tech 主题](references/dark-tech-theme.md) | CSS 动画库、转场配置、样式预设、Canvas 粒子、背景层、主框架 | 用户选择 `dark-tech` 时必读 |
|
|
144
144
|
| [ECharts race 示例](references/echarts-race-example.md) | 动态柱状图完整实现、数据结构、插值动画、清理逻辑 | 需要 `echarts-race` 类型时必读 |
|
|
145
|
-
|
|
|
145
|
+
| `yida-custom-page` 子技能 | 宜搭 React 16 页面模式、编码限制、发布前检查 | 不确定页面运行时规则时调用 `use_skill("yida-custom-page", "确认宜搭自定义页面运行时规则")` |
|
|
@@ -8,7 +8,7 @@ description: 为已有流程表单配置审批规则(审批/办理/抄送、
|
|
|
8
8
|
## 严格禁止 (NEVER DO)
|
|
9
9
|
|
|
10
10
|
- 不要在流程定义中使用猜测的 fieldId,必须先用 `yida-get-schema` 获取
|
|
11
|
-
-
|
|
11
|
+
- 不要在未加载本技能内容的情况下编写流程定义 JSON,格式复杂且易出错
|
|
12
12
|
- 不要用此技能创建流程表单,应使用 `yida-create-process`
|
|
13
13
|
- 不要用 shell heredoc、`cat`/`echo`/`printf`/`tee` 或重定向生成流程定义 JSON
|
|
14
14
|
|
|
@@ -7,7 +7,7 @@ description: 将 JSX 源码编译发布到宜搭自定义页面。Babel 转 ES5
|
|
|
7
7
|
|
|
8
8
|
## 严格禁止 (NEVER DO)
|
|
9
9
|
|
|
10
|
-
-
|
|
10
|
+
- 不要在未加载 `yida-custom-page` 子技能的情况下编写 JSX 源码
|
|
11
11
|
- 不要把 AI 生成的普通 React 项目代码直接发布;源码应使用 OpenYida 页面源码格式(推荐 `.oyd.jsx`)并通过 `check-page` / `compile` 预检
|
|
12
12
|
- 不要在宜搭原生 `export function renderJsx()` 页面里手写 Hooks;如确需 `useState/useEffect`,必须使用 `.oyd.jsx` 的 `export default function Page()` authoring 模式,让 OpenYida 兼容编译器降级
|
|
13
13
|
- 不要编造 appType 和 formUuid,必须从已有记录或命令返回中获取
|
|
@@ -112,7 +112,7 @@ body { background-color: #f2f3f5; }
|
|
|
112
112
|
|
|
113
113
|
- 发布目标地址由 `.cache/cookies.json` 中的 `base_url` 决定
|
|
114
114
|
- 碰到组织 corpId 不匹配时,询问用户是否创建新应用发布
|
|
115
|
-
-
|
|
115
|
+
- **编写源码前必须先加载 `yida-custom-page` 子技能**:调用 `use_skill("yida-custom-page", "编写宜搭自定义页面 JSX")`;原生 `renderJsx` 写法不要使用 Hooks,现代 authoring 写法必须走 `.oyd.jsx` 兼容编译
|
|
116
116
|
|
|
117
117
|
## 异常处理
|
|
118
118
|
|