名称: phx:init 描述: 在项目中初始化Elixir/Phoenix插件。将自动激活规则安装到CLAUDE.md中,用于复杂度检测、面试模式、Iron Laws强制执行和引用自动加载。 参数提示: [–update]
插件初始化
将Elixir/Phoenix插件的行为指令安装到项目的CLAUDE.md中。
使用方法
/phx:init # 首次安装
/phx:init --update # 用最新规则更新现有安装
工作流程
步骤 1: 检查现有 CLAUDE.md
# 检查CLAUDE.md是否存在
ls -la CLAUDE.md 2>/dev/null
# 检查现有插件安装
grep -q "ELIXIR-PHOENIX-PLUGIN:START" CLAUDE.md 2>/dev/null
步骤 2: 检测项目栈
扫描项目以定制注入的指令:
# Phoenix版本
grep -oP 'phoenix.*"~> \\K[0-9.]+' mix.exs 2>/dev/null || echo "unknown"
# Ecto版本
grep -oP 'ecto.*"~> \\K[0-9.]+' mix.exs 2>/dev/null || echo "unknown"
# Oban检测
grep -q '\"oban\"' mix.exs && echo "oban"
grep -q '\"oban_pro\"' mix.exs && echo "oban_pro"
# 框架检测
grep -q '\"ash\"' mix.exs && echo "ash"
grep -q '\"surface\"' mix.exs && echo "surface"
# Tidewave检测
grep -q '\"tidewave\"' mix.exs && echo "tidewave"
# 项目大小
find lib -name "*.ex" 2>/dev/null | wc -l
步骤 3: 处理安装模式
模式 A: 全新安装 (没有CLAUDE.md或没有标记)
- 创建/追加到CLAUDE.md
- 在标记之间插入完整行为指令
- 仅包括基于检测栈的相关部分
模式 B: 更新 (--update 标志或标记存在)
- 找到
<!-- ELIXIR-PHOENIX-PLUGIN:START -->和<!-- ELIXIR-PHOENIX-PLUGIN:END -->之间的内容 - 用最新行为指令替换
- 保留标记外的所有内容
步骤 4: 生成内容
<!-- ELIXIR-PHOENIX-PLUGIN:START -->
<!-- Last updated: {date} | Plugin version: 1.0 | Stack: Phoenix {version}, Ecto {version}, {optional: Oban, Tidewave} -->
# Elixir/Phoenix Plugin - Auto-Activation Rules
{Include all sections from the Content Template below, filtered by detected stack}
<!-- ELIXIR-PHOENIX-PLUGIN:END -->
步骤 5: 输出摘要
✅ Elixir/Phoenix插件已初始化
检测到的栈:
- Phoenix {version}
- Ecto {version}
- {Oban标准 | Oban Pro | 未检测}
- {Tidewave ✓ | Tidewave未检测}
- {Ash框架检测到 - Ecto模式禁用 | 未检测}
添加到CLAUDE.md:
- 自动激活规则(复杂度检测、面试模式)
- 代理触发模式({n} 个代理可用)
- 引用自动加载({n} 个引用文档)
- Iron Laws强制执行({n} 条法律)
- 验证规则
运行 /phx:init --update 以在插件更新后更新。
运行 /phx:audit 以进行完整项目健康检查。
内容模板
要注入的确切内容在 references/injectable-template.md 中。
关键结构:
- 7步强制程序 — Claude Code 必须在每次响应前执行
- Iron Laws — 在违规时停止行为
- 条件部分 — 根据检测到的栈包括:
{OBAN_SECTION}— 如果检测到Oban(非Pro){OBAN_PRO_SECTION}— 如果检测到Oban Pro{ASH_SECTION}— 如果检测到Ash框架{TIDEWAVE_SECTION}— 如果检测到Tidewave
- 验证 — 代码更改后强制进行
- 快速参考 — 技能路由表
占位符替换:
| 占位符 | 来源 |
|---|---|
{DATE} |
当前日期 |
{PHOENIX_VERSION} |
来自mix.exs |
{ECTO_VERSION} |
来自mix.exs |
{OPTIONAL_STACK} |
检测到的可选依赖 |
有关所有占位符和条件部分的完整模板,请参阅 references/injectable-template.md。
验证
运行 /phx:init 后:
- 检查CLAUDE.md是否包含标记
- 验证检测到的栈与实际项目匹配
- 新会话应该:
- 在给定任务时自动检测复杂度
- 在Iron Law违规时停止
- 基于任务提供相关工作流程
错误处理
| 场景 | 操作 |
|---|---|
| CLAUDE.md只读 | 错误:“无法修改CLAUDE.md - 检查权限” |
| 标记损坏 | 警告,提供删除并重新安装的选项 |
| Phoenix版本未知 | 使用保守默认值(启用所有功能) |
| 不是Elixir项目 | 错误:“未找到mix.exs - 这是一个Elixir项目吗?” |
与其他命令的关系
| 命令 | 何时使用 |
|---|---|
/phx:init |
首次使用,或插件更新后 |
/phx:audit |
定期项目健康检查 |
/phx:verify |
代码更改后 |