关于 elixir-expert
elixir-expert 是面向 Elixir 开发的技能,涵盖 Phoenix、OTP、LiveView 与 BEAM VM 上的并发和容错系统设计。
主要功能
- 01Elixir 与 Phoenix 开发指导
- 02OTP 模式与监督树设计
- 03LiveView 实时功能指导
- 04Ecto 数据库访问工作流
适用场景
- 01设计 Elixir 应用
- 02构建 Phoenix Web 应用
- 03实现 LiveView 界面
- 04规划容错 OTP 系统
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ 404kidwiz/ claude-supercode-skills --skill elixir-expert安装后在 Claude Code 中输入/elixir-expert确认已加载。
详细介绍
Elixir 专家
用途
提供 Elixir 开发、Phoenix Framework 和 OTP 模式方面的专业知识。涵盖并发编程、使用 LiveView 构建实时功能,以及在 BEAM VM 上构建容错分布式系统。
适用场景
- 构建 Elixir 应用程序
- 开发 Phoenix Web 应用程序
- 使用 LiveView 实现实时功能
- 使用 OTP 模式(GenServer、Supervisor)
- 在 BEAM 上构建分布式系统
- 设计容错架构
- 使用 Ecto 访问数据库
快速开始
在以下情况下调用此技能:
- 构建 Elixir 应用程序
- 开发 Phoenix Web 应用程序
- 使用 LiveView 实现实时功能
- 使用 OTP 模式
- 设计容错系统
以下情况不要调用:
- 构建 Ruby on Rails 应用(使用 rails-expert)
- 构建 Node.js 后端(使用 javascript-pro)
- 构建 Python 后端(使用 python-pro)
- 基础设施自动化(使用 terraform-engineer)
决策框架
Concurrency Pattern:
├── Stateful process → GenServer
├── Async work → Task
├── Background job → Oban or Task.Supervisor
├── Event streaming → GenStage / Broadway
├── Real-time UI → Phoenix LiveView
└── External service → Retry with exponential backoff
Supervision Strategy:
├── Process can crash independently → one_for_one
├── Processes depend on each other → one_for_all
├── Ordered restart needed → rest_for_one
└── Dynamic children → DynamicSupervisor
核心工作流
1. Phoenix 应用程序设置
- 生成 Phoenix 项目
- 使用 Ecto 配置数据库
- 定义架构和迁移
- 创建业务逻辑上下文
- 构建控制器或 LiveView
- 添加身份验证
- 使用 releases 部署
2. OTP 应用程序设计
- 识别有状态组件
- 设计监督树
- 使用 GenServer 管理状态
- 添加适当的错误处理
- 实现平滑关闭
- 测试监督策略
3. 使用 LiveView 实现实时功能
- 生成 LiveView 模块
- 定义 assigns 和状态
- 实现 handle_event 回调
- 使用 pubsub 进行广播
- 使用 temporary_assigns 优化
- 按需添加 JS hooks
最佳实践
- 让它崩溃——为故障恢复而设计
- 使用监督树实现容错
- 尽量精简 GenServer 状态
- 使用上下文组织业务逻辑
- 优先采用不可变数据转换
- 使用 async: true 测试并发代码
反模式
| 反模式 | 问题 | 正确做法 |
|---|---|---|
| GenServer 状态过大 | 内存和序列化开销 | 外部存储、ETS |
| 防御式编码 | 掩盖错误 | 让它崩溃并进行监督 |
| 阻塞 GenServer | 进程瓶颈 | 使用异步任务处理 I/O |
| 没有监督机制 | 崩溃后无法恢复 | 建立合适的监督树 |
| 可变思维模式 | 错误和竞态条件 | 拥抱不可变性 |
评论
支持 Markdown