@doubao-apps/ai 0.0.26 → 0.0.27

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 (91) hide show
  1. package/README.md +21 -0
  2. package/dist/994.js +3 -3
  3. package/dist/contexts/doubao-apps-dev/.ai/examples/common-patterns.md +600 -0
  4. package/dist/contexts/doubao-apps-dev/.ai/examples/component-basics.md +509 -0
  5. package/dist/contexts/doubao-apps-dev/.ai/guides/best-practices.md +571 -0
  6. package/dist/contexts/doubao-apps-dev/.ai/guides/component-development.md +857 -0
  7. package/dist/contexts/doubao-apps-dev/.ai/guides/performance-optimization.md +404 -0
  8. package/dist/contexts/doubao-apps-dev/.ai/guides/system-prompt.md +331 -0
  9. package/dist/contexts/doubao-apps-dev/.ai/guides/troubleshooting.md +291 -0
  10. package/dist/contexts/doubao-apps-dev/.ai/reference/components-quick-ref.md +103 -0
  11. package/dist/contexts/doubao-apps-dev/.ai/reference/framework-api-quick-ref.md +537 -0
  12. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api/01-/345/237/272/347/241/200-/350/264/246/345/217/267-/347/263/273/347/273/237.md +699 -0
  13. package/dist/{skills/doubao-apps-dev/.ai/reference/open-api/02-storage.md → contexts/doubao-apps-dev/.ai/reference/open-api/02-/345/255/230/345/202/250.md} +13 -21
  14. package/dist/{skills/doubao-apps-dev/.ai/reference/open-api/03-router.md → contexts/doubao-apps-dev/.ai/reference/open-api/03-/350/267/257/347/224/261.md} +9 -9
  15. package/dist/{skills/doubao-apps-dev/.ai/reference/open-api/04-ui- → contexts/doubao-apps-dev/.ai/reference/open-api/04-/347/225/214/351/235/242-}/344/272/244/344/272/222.md +12 -12
  16. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api/05-/347/225/214/351/235/242-/350/276/223/345/205/245.md +42 -0
  17. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api/06-/347/275/221/347/273/234.md +148 -0
  18. package/dist/{skills/doubao-apps-dev/.ai/reference/open-api/07-media.md → contexts/doubao-apps-dev/.ai/reference/open-api/07-/345/252/222/344/275/223.md} +8 -8
  19. package/dist/{skills/doubao-apps-dev/.ai/reference/open-api/08-open- → contexts/doubao-apps-dev/.ai/reference/open-api/08-/345/274/200/346/224/276/350/203/275/345/212/233-}/344/270/232/345/212/241/350/203/275/345/212/233.md +83 -14
  20. package/dist/{skills/doubao-apps-dev/.ai/reference/open-api/09-device-bluetooth.md → contexts/doubao-apps-dev/.ai/reference/open-api/09-/350/256/276/345/244/207-/350/223/235/347/211/231.md} +22 -46
  21. package/dist/{skills/doubao-apps-dev/.ai/reference/open-api/10-device-wi-fi.md → contexts/doubao-apps-dev/.ai/reference/open-api/10-/350/256/276/345/244/207-wi-fi.md} +9 -9
  22. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api/11-/350/256/276/345/244/207-/345/212/240/351/200/237/345/272/246/350/256/241.md +104 -0
  23. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api/12-/350/256/276/345/244/207-ibeacon.md +148 -0
  24. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api/13-/350/256/276/345/244/207-/347/275/227/347/233/230.md +82 -0
  25. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api/14-/350/256/276/345/244/207-/350/256/276/345/244/207/346/226/271/345/220/221.md +70 -0
  26. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api/15-/350/256/276/345/244/207-/351/231/200/350/236/272/344/273/252.md +104 -0
  27. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api/16-ui-/350/276/223/345/205/245.md +65 -0
  28. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api/17-/350/256/276/345/244/207-/347/275/221/347/273/234.md +164 -0
  29. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api/18-/350/256/276/345/244/207-/347/237/255/344/277/241.md +62 -0
  30. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api/19-/350/256/276/345/244/207-/346/227/240/351/232/234/347/242/215.md +43 -0
  31. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api/20-/350/256/276/345/244/207-/347/224/265/346/261/240.md +83 -0
  32. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api/21-/350/256/276/345/244/207-/346/227/245/345/216/206.md +215 -0
  33. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api/22-/350/256/276/345/244/207-/345/211/252/350/264/264/346/235/277.md +70 -0
  34. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api/23-/350/256/276/345/244/207-/350/201/224/347/263/273/344/272/272.md +270 -0
  35. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api/24-/350/256/276/345/244/207-/345/212/240/345/257/206.md +56 -0
  36. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api/25-/350/256/276/345/244/207-/347/224/265/350/257/235.md +41 -0
  37. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api/26-/350/256/276/345/244/207-/346/211/253/347/240/201.md +100 -0
  38. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api/27-/350/256/276/345/244/207-/345/261/217/345/271/225.md +173 -0
  39. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api/28-/350/256/276/345/244/207-/351/234/207/345/212/250.md +66 -0
  40. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api/README.md +36 -0
  41. package/dist/contexts/doubao-apps-dev/.ai/reference/open-api.md +326 -0
  42. package/dist/contexts/doubao-apps-dev/.ai/rules/dos-and-donts.md +390 -0
  43. package/dist/{skills → contexts}/doubao-apps-dev/AGENTS.md +54 -31
  44. package/dist/manifest.json +45 -0
  45. package/dist/skills/doubao-apps-dev/.ai/examples/common-patterns.md +53 -43
  46. package/dist/skills/doubao-apps-dev/.ai/examples/component-basics.md +0 -17
  47. package/dist/skills/doubao-apps-dev/.ai/guides/component-development.md +96 -214
  48. package/dist/skills/doubao-apps-dev/.ai/guides/system-prompt.md +14 -14
  49. package/dist/skills/doubao-apps-dev/.ai/reference/framework-api-quick-ref.md +46 -85
  50. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/01-/345/237/272/347/241/200-/350/264/246/345/217/267-/347/263/273/347/273/237.md +13 -13
  51. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/02-/345/255/230/345/202/250.md +409 -0
  52. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/03-/350/267/257/347/224/261.md +165 -0
  53. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/04-/347/225/214/351/235/242-/344/272/244/344/272/222.md +432 -0
  54. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/05-/347/225/214/351/235/242-/350/276/223/345/205/245.md +42 -0
  55. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/06-/347/275/221/347/273/234.md +148 -0
  56. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/07-/345/252/222/344/275/223.md +346 -0
  57. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/08-/345/274/200/346/224/276/350/203/275/345/212/233-/344/270/232/345/212/241/350/203/275/345/212/233.md +546 -0
  58. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/09-/350/256/276/345/244/207-/350/223/235/347/211/231.md +961 -0
  59. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/10-/350/256/276/345/244/207-wi-fi.md +277 -0
  60. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/11-/350/256/276/345/244/207-/345/212/240/351/200/237/345/272/246/350/256/241.md +104 -0
  61. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/12-/350/256/276/345/244/207-ibeacon.md +148 -0
  62. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/13-/350/256/276/345/244/207-/347/275/227/347/233/230.md +82 -0
  63. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/14-/350/256/276/345/244/207-/350/256/276/345/244/207/346/226/271/345/220/221.md +70 -0
  64. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/15-/350/256/276/345/244/207-/351/231/200/350/236/272/344/273/252.md +104 -0
  65. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/16-ui-/350/276/223/345/205/245.md +65 -0
  66. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/17-/350/256/276/345/244/207-/347/275/221/347/273/234.md +164 -0
  67. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/18-/350/256/276/345/244/207-/347/237/255/344/277/241.md +62 -0
  68. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/19-/350/256/276/345/244/207-/346/227/240/351/232/234/347/242/215.md +43 -0
  69. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/20-/350/256/276/345/244/207-/347/224/265/346/261/240.md +83 -0
  70. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/21-/350/256/276/345/244/207-/346/227/245/345/216/206.md +215 -0
  71. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/22-/350/256/276/345/244/207-/345/211/252/350/264/264/346/235/277.md +70 -0
  72. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/23-/350/256/276/345/244/207-/350/201/224/347/263/273/344/272/272.md +270 -0
  73. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/24-/350/256/276/345/244/207-/345/212/240/345/257/206.md +56 -0
  74. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/25-/350/256/276/345/244/207-/347/224/265/350/257/235.md +41 -0
  75. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/26-/350/256/276/345/244/207-/346/211/253/347/240/201.md +100 -0
  76. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/27-/350/256/276/345/244/207-/345/261/217/345/271/225.md +173 -0
  77. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/28-/350/256/276/345/244/207-/351/234/207/345/212/250.md +66 -0
  78. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/README.md +27 -11
  79. package/dist/skills/doubao-apps-dev/.ai/reference/open-api.md +282 -166
  80. package/dist/skills/doubao-apps-dev/.ai/rules/dos-and-donts.md +50 -37
  81. package/dist/skills/doubao-apps-dev/SKILL.md +55 -27
  82. package/dist/skills/douyin-to-doubao/SKILL.md +2 -2
  83. package/dist/skills/h5-to-doubao/SKILL.md +2 -2
  84. package/dist/skills/uniapp-to-doubao/SKILL.md +2 -2
  85. package/dist/skills/weixin-to-doubao/SKILL.md +2 -2
  86. package/package.json +4 -2
  87. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/05-ui-/350/276/223/345/205/245.md +0 -95
  88. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/06-network.md +0 -298
  89. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/11-device-/344/274/240/346/204/237/345/231/250.md +0 -372
  90. package/dist/skills/doubao-apps-dev/.ai/reference/open-api/12-device-/346/234/254/345/234/260/350/203/275/345/212/233.md +0 -1005
  91. /package/dist/{skills → contexts}/doubao-apps-dev/CLAUDE.md +0 -0
@@ -87,19 +87,6 @@ interface UserInfo {
87
87
  }
88
88
 
89
89
  export default defineWidget({
90
- aiMeta: {
91
- id: 'user-card',
92
- name: '用户卡片',
93
- input: {
94
- type: 'object',
95
- properties: {
96
- name: { type: 'string', title: '姓名' },
97
- age: { type: 'number', title: '年龄' },
98
- avatar: { type: 'string', title: '头像' }
99
- },
100
- required: ['name', 'age']
101
- }
102
- },
103
90
  render() {
104
91
  const input = getViewData<UserInfo>();
105
92
  return <view>{input.name}</view>;
@@ -107,6 +94,21 @@ export default defineWidget({
107
94
  });
108
95
  ```
109
96
 
97
+ ```ts
98
+ // ✅ 把 metadata 写到 src/app.config.ts
99
+ import { defineAppConfig } from '@doubao-apps/kit';
100
+
101
+ export default defineAppConfig({
102
+ widgets: {
103
+ 'widgets/user-card': {
104
+ id: 'user-card',
105
+ name: '用户卡片',
106
+ description: '用户信息卡片'
107
+ }
108
+ }
109
+ });
110
+ ```
111
+
110
112
  ```tsx
111
113
  // ❌ 不好的做法
112
114
  export default defineWidget({
@@ -247,20 +249,26 @@ export default definePage({
247
249
  ```
248
250
 
249
251
  ```tsx
250
- // ✅ 正确 - 在生命周期钩子中请求
251
- export default definePage({
252
- data: {
253
- userData: null
254
- },
252
+ // ✅ 推荐 - 使用 Hook 管理请求和状态
253
+ import { useEffect, useState } from '@doubao-apps/framework';
255
254
 
256
- onShow() {
257
- fetch('/api/data').then(data => {
258
- this.setData({ userData: data });
259
- });
260
- },
255
+ function UserPage() {
256
+ const [userData, setUserData] = useState<{ name?: string } | null>(null);
257
+
258
+ useEffect(() => {
259
+ fetch('/api/data')
260
+ .then(res => res.json())
261
+ .then(data => {
262
+ setUserData(data);
263
+ });
264
+ }, []);
261
265
 
266
+ return <view>{userData?.name}</view>;
267
+ }
268
+
269
+ export default definePage({
262
270
  render() {
263
- return <view>{this.data.userData?.name}</view>;
271
+ return <UserPage />;
264
272
  }
265
273
  });
266
274
  ```
@@ -351,21 +359,26 @@ export default defineWidget({
351
359
  ```
352
360
 
353
361
  ```tsx
354
- // ✅ 正确 - 使用实例状态
362
+ // ✅ 推荐 - 使用组件内状态,实例之间互不影响
363
+ import { useState } from '@doubao-apps/framework';
364
+
365
+ function CounterWidget() {
366
+ const [count, setCount] = useState(0);
367
+
368
+ return (
369
+ <view
370
+ onClick={() => {
371
+ setCount(prev => prev + 1);
372
+ }}
373
+ >
374
+ Count: {count}
375
+ </view>
376
+ );
377
+ }
378
+
355
379
  export default defineWidget({
356
- data: {
357
- count: 0
358
- },
359
380
  render() {
360
- return (
361
- <view
362
- onClick={() => {
363
- this.setData({ count: this.data.count + 1 });
364
- }}
365
- >
366
- Count: {this.data.count}
367
- </view>
368
- );
381
+ return <CounterWidget />;
369
382
  }
370
383
  });
371
384
  ```
@@ -7,7 +7,7 @@ description:
7
7
  当用户开发豆包应用、创建页面或卡片组件、调用端能力 API 时使用此技能。
8
8
  ---
9
9
 
10
- # SKILL.md - Doubao Apps SDK AI 开发指南
10
+ # Doubao Apps SDK AI 开发指南
11
11
 
12
12
  本文件专供 AI coding agents(如 Claude、Copilot、Cursor)和开发者使用,提供 Doubao Apps SDK 框架的快速入门、开发规则和文档导航。
13
13
 
@@ -35,12 +35,17 @@ Doubao Apps SDK 是豆包应用开发框架,基于 React Lynx 框架提供完
35
35
  ### 3. 创建项目
36
36
 
37
37
  ```bash
38
+ # 使用 create 创建一个 empty 工程,注意,使用正式的项目文件夹名
39
+ npm create @byted-doubao-apps my-doubao-app -- --template empty -y
40
+
41
+ # 进入项目目录
42
+ cd my-doubao-app
43
+
38
44
  # 安装依赖
39
45
  pnpm install
40
46
 
41
47
  # 启动开发
42
48
  pnpm dev
43
-
44
49
  ```
45
50
 
46
51
  **开发服务器命令**:
@@ -53,7 +58,6 @@ pnpm dev
53
58
 
54
59
  ```
55
60
  my-doubao-app/
56
- ├── doubao.config.ts # 项目配置
57
61
  ├── package.json # 依赖管理
58
62
  ├── pnpm-lock.yaml # 依赖锁定
59
63
  └── src/
@@ -76,9 +80,9 @@ my-doubao-app/
76
80
 
77
81
  - **优先使用 pnpm** 作为包管理器
78
82
  - **分离样式文件**:每个组件使用独立的 `.scss` 文件
79
- - **定义 aiMeta**:为 Page 和 Widget 提供完整的元数据
83
+ - **在 `src/app.config.ts` 中配置 metadata**:为 App、Page 和 Widget 统一配置元数据
80
84
  - **使用生命周期钩子**:合理使用 `onShow`、`onMounted` 等
81
- - **TypeScript 类型**:为 props 和 state 提供类型定义
85
+ - **TypeScript 类型**:使用 `getViewData<T>()`、为 props 和 state 提供类型定义
82
86
  - **错误处理**:处理边界情况和错误状态
83
87
 
84
88
  ### 禁止做法
@@ -102,22 +106,37 @@ my-doubao-app/
102
106
 
103
107
  Page 是全屏 UI 组件,支持九宫格、浮窗等变体。
104
108
 
105
- **基础结构**:
109
+ **metadata 配置**:
110
+ ```ts
111
+ import { defineAppConfig } from '@doubao-apps/kit';
112
+
113
+ export default defineAppConfig({
114
+ pages: {
115
+ 'pages/home': {
116
+ id: 'my-page',
117
+ title: '我的页面',
118
+ description: '页面功能描述'
119
+ }
120
+ }
121
+ });
122
+ ```
123
+
124
+ **页面实现**:
106
125
  ```tsx
107
126
  import { definePage, getViewData } from '@doubao-apps/framework';
108
127
  import './index.scss';
109
128
 
129
+ interface HomePageData {
130
+ title: string;
131
+ }
132
+
110
133
  export default definePage({
111
- aiMeta: {
112
- id: 'my-page',
113
- title: '我的页面',
114
- },
115
134
  onShow() {
116
135
  // 页面显示时触发
117
136
  },
118
137
  render() {
119
- const input = getViewData();
120
- return <view>页面内容</view>;
138
+ const input = getViewData<HomePageData>();
139
+ return <view>{input.title}</view>;
121
140
  }
122
141
  });
123
142
  ```
@@ -128,28 +147,38 @@ export default definePage({
128
147
 
129
148
  Widget 是聊天流中的卡片组件,在对话中展示。
130
149
 
131
- **基础结构**:
150
+ **metadata 配置**:
151
+ ```ts
152
+ import { defineAppConfig } from '@doubao-apps/kit';
153
+
154
+ export default defineAppConfig({
155
+ widgets: {
156
+ 'widgets/my-widget': {
157
+ id: 'my-widget',
158
+ name: '我的卡片',
159
+ description: '卡片功能描述',
160
+ boxType: 'inbox',
161
+ border: true
162
+ }
163
+ }
164
+ });
165
+ ```
166
+
167
+ **卡片实现**:
132
168
  ```tsx
133
169
  import { defineWidget, getViewData } from '@doubao-apps/framework';
134
170
  import './index.scss';
135
171
 
172
+ interface MyWidgetData {
173
+ title: string;
174
+ }
175
+
136
176
  export default defineWidget({
137
- aiMeta: {
138
- id: 'my-widget',
139
- name: '我的卡片',
140
- boxType: 'inbox',
141
- input: {
142
- type: 'object',
143
- properties: {
144
- title: { type: 'string', title: '标题' }
145
- }
146
- }
147
- },
148
177
  onMounted() {
149
178
  // 卡片挂载后触发
150
179
  },
151
180
  render() {
152
- const input = getViewData();
181
+ const input = getViewData<MyWidgetData>();
153
182
  return <view>{input.title}</view>;
154
183
  }
155
184
  });
@@ -218,7 +247,6 @@ API 参考文档
218
247
  - **[组件库](.ai/reference/components-quick-ref.md)** - SDK 内置组件速查
219
248
  - **[Open API](.ai/reference/open-api/README.md)** - 系统能力 API 目录与详细文档
220
249
 
221
-
222
250
  ### 依赖包
223
251
 
224
252
  - **Framework**:`@doubao-apps/framework` - 核心框架
@@ -253,7 +281,7 @@ API 参考文档
253
281
 
254
282
  ```
255
283
  <skill-directory>/
256
- ├── SKILL.md # 主入口文档(AI Agent 必读)
284
+ ├── SKILL.md # 主入口文档(AI Agent 必读)
257
285
  └── .ai/ # 详细文档目录
258
286
  ├── guides/ # 开发指南
259
287
  ├── rules/ # 开发规则
@@ -108,8 +108,8 @@ npx @doubao-apps/ai skills add doubao-apps-dev --agent codex
108
108
  依次检测以下路径,取第一个存在的作为 `$SKILLS_BASE`:
109
109
 
110
110
  ```bash
111
- ls .agents/skills/doubao-apps-dev/AGENTS.md 2>/dev/null && echo "SKILLS_BASE=.agents/skills/doubao-apps-dev"
112
- ls .claude/skills/doubao-apps-dev/AGENTS.md 2>/dev/null && echo "SKILLS_BASE=.claude/skills/doubao-apps-dev"
111
+ ls .agents/skills/doubao-apps-dev/SKILL.md 2>/dev/null && echo "SKILLS_BASE=.agents/skills/doubao-apps-dev"
112
+ ls .claude/skills/doubao-apps-dev/SKILL.md 2>/dev/null && echo "SKILLS_BASE=.claude/skills/doubao-apps-dev"
113
113
  ```
114
114
 
115
115
  **2. 如未安装,执行安装**
@@ -140,10 +140,10 @@ view {
140
140
 
141
141
  ```bash
142
142
  # Claude Code 优先
143
- ls .claude/skills/doubao-apps-dev/AGENTS.md 2>/dev/null && echo "SKILLS_BASE=.claude/skills/doubao-apps-dev"
143
+ ls .claude/skills/doubao-apps-dev/SKILL.md 2>/dev/null && echo "SKILLS_BASE=.claude/skills/doubao-apps-dev"
144
144
 
145
145
  # 其他 Agent(Cursor 等)
146
- ls .agent/skills/doubao-apps-dev/AGENTS.md 2>/dev/null && echo "SKILLS_BASE=.agent/skills/doubao-apps-dev"
146
+ ls .agent/skills/doubao-apps-dev/SKILL.md 2>/dev/null && echo "SKILLS_BASE=.agent/skills/doubao-apps-dev"
147
147
  ```
148
148
 
149
149
  **2. 如未安装,执行安装**:
@@ -109,8 +109,8 @@ npx @doubao-apps/ai skills add doubao-apps-dev --agent codex
109
109
  依次检测以下路径,取第一个存在的作为 `$SKILLS_BASE`:
110
110
 
111
111
  ```bash
112
- ls .agents/skills/doubao-apps-dev/AGENTS.md 2>/dev/null && echo "SKILLS_BASE=.agents/skills/doubao-apps-dev"
113
- ls .claude/skills/doubao-apps-dev/AGENTS.md 2>/dev/null && echo "SKILLS_BASE=.claude/skills/doubao-apps-dev"
112
+ ls .agents/skills/doubao-apps-dev/SKILL.md 2>/dev/null && echo "SKILLS_BASE=.agents/skills/doubao-apps-dev"
113
+ ls .claude/skills/doubao-apps-dev/SKILL.md 2>/dev/null && echo "SKILLS_BASE=.claude/skills/doubao-apps-dev"
114
114
  ```
115
115
 
116
116
  **2. 如未安装,执行安装**
@@ -78,10 +78,10 @@ description: Migrate WeChat Mini Program (微信小程序) projects to Doubao Ap
78
78
 
79
79
  ```bash
80
80
  # Claude Code 优先
81
- ls .claude/skills/doubao-apps-dev/AGENTS.md 2>/dev/null && echo "SKILLS_BASE=.claude/skills/doubao-apps-dev"
81
+ ls .claude/skills/doubao-apps-dev/SKILL.md 2>/dev/null && echo "SKILLS_BASE=.claude/skills/doubao-apps-dev"
82
82
 
83
83
  # 其他 Agent(Cursor 等)
84
- ls .agent/skills/doubao-apps-dev/AGENTS.md 2>/dev/null && echo "SKILLS_BASE=.agent/skills/doubao-apps-dev"
84
+ ls .agent/skills/doubao-apps-dev/SKILL.md 2>/dev/null && echo "SKILLS_BASE=.agent/skills/doubao-apps-dev"
85
85
  ```
86
86
 
87
87
  **2. 如未安装,执行安装**:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@doubao-apps/ai",
3
- "version": "0.0.26",
3
+ "version": "0.0.27",
4
4
  "description": "Doubao Apps SDK AI tools with context and skills management",
5
5
  "type": "module",
6
6
  "bin": {
@@ -16,7 +16,9 @@
16
16
  "import": "./dist/cli.js",
17
17
  "types": "./dist/cli.d.ts"
18
18
  },
19
- "./skills/*": "./dist/skills/*"
19
+ "./manifest": "./dist/manifest.json",
20
+ "./skills/*": "./dist/skills/*",
21
+ "./contexts/*": "./dist/contexts/*"
20
22
  },
21
23
  "files": [
22
24
  "bin.js",
@@ -1,95 +0,0 @@
1
- # Open API: UI / 输入
2
-
3
- 键盘和输入框选区能力。
4
-
5
- [返回目录](./README.md) | [返回速查](../open-api.md)
6
-
7
- ## 速查
8
-
9
- | API | 签名 | 用途 | 参数类型 | 结果类型 | 注意点 |
10
- | --- | --- | --- | --- | --- | --- |
11
- | [`onKeyboardHeightChange`](#onkeyboardheightchange) | `onKeyboardHeightChange(handler): () => void` | 监听键盘高度变化事件 | `handler` | `() => void` | 返回取消监听函数 |
12
- | [`hideKeyboard`](#hidekeyboard) | `hideKeyboard(params?): Promise<object>` | 收起键盘 | `params?` | `Promise<object>` | - |
13
- | [`getSelectedTextRange`](#getselectedtextrange) | `getSelectedTextRange(params?): Promise<GetSelectedTextRangeResult>` | 获取当前输入框的选区范围 | `params?` | `Promise<GetSelectedTextRangeResult>` | - |
14
-
15
- ## API 详情
16
-
17
- <a id="onkeyboardheightchange"></a>
18
- ### onKeyboardHeightChange()
19
-
20
- > **onKeyboardHeightChange**(`handler`): () => `void`
21
-
22
- 监听键盘高度变化事件。
23
-
24
- #### Parameters
25
-
26
- • **handler**
27
-
28
- #### Returns
29
-
30
- `Function`
31
-
32
- ##### Returns
33
-
34
- `void`
35
-
36
- #### Example
37
-
38
- ```typescript
39
- import { onKeyboardHeightChange } from '@doubao-apps/framework/api';
40
-
41
- const unsubscribe = onKeyboardHeightChange(({ height }) => {
42
- console.log('Keyboard height change event:', { height });
43
- });
44
- ```
45
-
46
- <a id="hidekeyboard"></a>
47
- ### hideKeyboard()
48
-
49
- > **hideKeyboard**(`params`?): `Promise`\<`object`\>
50
-
51
- 收起键盘。
52
-
53
- #### Parameters
54
-
55
- • **params?**
56
-
57
- #### Returns
58
-
59
- `Promise`\<`object`\>
60
-
61
- <a id="getselectedtextrange"></a>
62
- ### getSelectedTextRange()
63
-
64
- > **getSelectedTextRange**(`params`?): `Promise`\<[`GetSelectedTextRangeResult`](#getselectedtextrangeresult)\>
65
-
66
- 获取当前输入框的选区范围。
67
-
68
- #### Parameters
69
-
70
- • **params?**
71
-
72
- #### Returns
73
-
74
- `Promise`\<[`GetSelectedTextRangeResult`](#getselectedtextrangeresult)\>
75
-
76
- ## 相关类型
77
-
78
- <a id="getselectedtextrangeresult"></a>
79
- ### GetSelectedTextRangeResult
80
-
81
- 获取输入框选区范围的返回结果。
82
-
83
- #### Properties
84
-
85
- ##### end
86
-
87
- > **end**: `number`
88
-
89
- 选区结束位置。
90
-
91
- ##### start
92
-
93
- > **start**: `number`
94
-
95
- 选区起始位置。