关于 await-widget
面向 AI 编码 Agent 的路由技能,用于构建 Await 小组件。它引导 Agent 查阅已安装的运行时声明和任务相关指南,并说明 iOS 渲染模型中的时间线机制与限制。
主要功能
- 01按任务导向设计与资源指南
- 02以运行时类型声明为 API 依据
- 03说明 iOS 小组件时间线回调
- 04介绍 TSX 组件与宿主桥接 API
- 05强调精简视图树和时间线
适用场景
- 01借助 AI 编码 Agent 构建 Await 小组件
- 02查找小组件布局与可读性指南
- 03选择本地 SVG、图像或音频资源
- 04避免使用不支持的 API 或过多时间线条目
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ await-widget/ skills --skill await-widget安装后在 Claude Code 中输入/await-widget确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.gitignoredocs-source/index.mddocs-source/guides/connection.mdcreate-a-widget.mddesign.mdpanels.mdresources.mdtimeline.mdwidget-button.mdexamples/package.jsonexamples/2048/index.tsxexamples/Activity Timer/index.tsxexamples/Calendar/index.tsxexamples/Checklist/index.tsxexamples/Drum Pad/index.tsxexamples/Flip Album/index.tsxexamples/Flip Clock/index.tsxexamples/Health/index.tsxexamples/Icon Shuffle/index.tsxsimple-icons.jsonexamples/Image/index.tsxexamples/Link/index.tsxexamples/Location/index.tsxexamples/Music Pad/index.tsxexamples/Music Player/index.tsxexamples/Panels/index.tsxexamples/Piano/assets/add.svgfall.svgleft.svglift.svg详细介绍
安装 Skill
本文档与 await-widget Skill 配套,用于借助 AI 编码 Agent 构建 Await 小组件。开始之前,请先安装此 Skill:
npx skills add await-widget/skills
使用时更新
如果此 Skill 是通过 npx skills add 安装的,请在每次调用开始时检查更新。全局安装时,运行 npx skills update await-widget -g;项目安装时,在安装项目的根目录运行 npx skills update await-widget -p。命令完成后,重新阅读已安装的 SKILL.md,并在任务剩余过程中遵循其中的当前说明。
路由
将此 Skill 视为路由层,而非完整参考资料。
将其与用户已安装的 @await-widget/runtime 声明,以及此 Skill 的 docs-source/ 目录中针对具体任务的文档结合使用。请相对于此 SKILL.md 文件解析这些路径,而非相对于用户的工作区。请参阅 docs-source/index.md,找到指南目录,然后只阅读当前任务所需的指南。
docs-source/guides/design.md 涵盖小组件尺寸、布局规则、易读性与内容、动画稳定性和按钮。docs-source/guides/resources.md 涵盖本地 SVG、图像和音频资源。
概览
Await 小组件使用 TSX 语法和 SwiftUI 风格的命名,但它们并不是 React、DOM 或 SwiftUI。语法和命名借鉴自这些技术,但 API 契约完全由 @await-widget/runtime 类型定义。
Await 向 iOS 提供两个回调函数:widgetTimeline() 返回带日期的条目,widget(entry) 返回 iOS 指定条目的视图。iOS 决定何时调用这些函数,并可能为节省电量而拒绝过于频繁的时间线刷新请求。
[1] iOS decides when to update the widget
│
▼ calls
[2] widgetTimeline()
│
▼ returns Entry[]
[3] { entry@09:00, entry@09:01, entry@09:02, ... }
│
▼ iOS specifies entry@09:01, calls
[4] widget(entry)
│
▼ returns the widget view
核心规则
- 所有可用的 API 和类型都定义在
node_modules/@await-widget/runtime/types/*.d.ts中。请将这些文件视为唯一可信来源。不要使用这些声明之外的任何 API 或功能,包括 HTML DOM、浏览器和 Node API(包括fetch)、CSS 或 React 风格的钩子和状态。 - TSX 组件从
await模块导入(例如import {Text, ZStack} from 'await';)。组件、属性和修饰符的定义位于node_modules/@await-widget/runtime/types/await.d.ts。 - 桥接 API 是宿主提供的全局变量(
Await、AwaitStore、AwaitNetwork、AwaitMusic等)。请直接使用,不要导入。其签名位于node_modules/@await-widget/runtime/types/bridge.d.ts。 - 组件属性分为初始化属性和修饰符。修饰符可以在同一组件上重复使用,并且顺序很重要——与 SwiftUI 修饰符一样。当 TSX 元素需要多次使用同一修饰符时,请在属性名称后添加唯一后缀(例如
frame_或frame_1),以避免 TSX 语法错误。 - 保持小组件视图树精简:不要添加不必要的视图、嵌套或时间线条目。iOS 小组件受严格的内存限制。小组件开销大致与
timeline entries * view tree node count成正比,因此除非小组件必须随时间显示明显不同的状态,否则优先使用单个时间线条目。