使用Zafiro工具包进行Avalonia UI开发的强制技能、约定和行为规则。
技能概述
avalonia-zafiro-development 技能定义了使用Avalonia UI和Zafiro工具包开发跨平台应用程序的强制约定和行为规则。这些规则优先考虑可维护性、正确性和函数式响应式方法。
下载地址:https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/avalonia-zafiro-development
核心支柱
- 函数式响应式MVVM:使用DynamicData和ReactiveUI的纯MVVM逻辑
- 安全性与可预测性:使用Result类型进行显式错误处理,避免使用异常进行流程控制
- 跨平台卓越:严格独立于Avalonia的ViewModel和组合优于继承
- Zafiro优先:利用现有Zafiro抽象和助手避免冗余
指南文档
核心技术与架构
文件:core-technical-skills.md
基本技能和架构原则。
命名与编码标准
文件:naming-standards.md
命名、字段和错误处理的规则。
Avalonia、Zafiro与Reactive规则
文件:avalonia-reactive-rules.md
UI、Zafiro集成和DynamicData管道的具体指南。
Zafiro快捷方式
文件:zafiro-shortcuts.md
常见Rx/Zafiro操作的简洁映射。
常见模式
文件:patterns.md
高级模式,如RefreshableCollection和验证。
编写代码前的程序
- 先搜索:在代码库中搜索类似实现或现有Zafiro助手
- 可重用扩展:如果缺少助手,提出新的可重用扩展方法,而不是内联复杂逻辑
- 响应式管道:确保在适用的情况下使用DynamicData操作符而不是普通Rx
关键原则
函数式响应式MVVM
- 使用ReactiveObject作为ViewModel基类
- 使用WhenAnyValue进行属性依赖
- 使用DynamicData进行集合操作
- 避免命令式代码,优先使用响应式管道
安全性与可预测性
- 使用Result类型返回操作结果
- 避免使用异常进行流程控制
- 显式处理所有错误情况
- 使用不可变数据结构
跨平台卓越
- ViewModel不应引用Avalonia类型
- 使用组合而非继承
- 平台特定代码应在View层
- 使用依赖注入管理依赖
Zafiro优先
- 优先使用Zafiro提供的助手和扩展
- 避免重复造轮子
- 遵循Zafiro的命名约定
- 利用Zafiro的抽象层
最佳实践
- 搜索优先:编写代码前先搜索现有实现
- 可重用性:创建可重用扩展而非内联逻辑
- 响应式管道:使用DynamicData操作符
- 错误处理:使用Result类型
- 独立性:保持ViewModel独立于Avalonia
- 组合模式:优先组合而非继承
- Zafiro利用:充分利用Zafiro工具包
注意事项
限制:
- 仅在任务明确匹配上述范围时使用此技能
- 不要将输出视为环境特定验证、测试或专家审查的替代品
- 如果缺少必需的输入、权限、安全边界或成功标准,请停止并请求澄清