name: 凤凰技能开发 description: 在 skills/ 目录中开发、精炼和维护技能。用于创建新技能、更新现有技能、添加规则文件或提高技能质量和一致性。 license: Apache-2.0 metadata: author: oss@arize.com version: “1.0.0” internal: true
技能开发
本指南用于在此存储库的 skills/ 目录中创建和精炼技能。技能是打包的指令,用于教 AI 代理如何使用 Phoenix 功能。
目录结构
skills/
{skill-name}/ # kebab-case,前缀为 "phoenix-" 用于 Phoenix 功能
SKILL.md # 必需:技能定义和索引
README.md # 可选:面向人类的概述
rules/ # 可选:详细规则文件
{prefix}-{topic}.md
{prefix}-{topic}-{lang}.md
现有技能
| 技能 | 目的 | 是否有规则 |
|---|---|---|
phoenix-tracing |
OpenInference 检测和跨度类型 | 是 (31 文件) |
phoenix-evals |
评估器开发和验证 | 是 (33 文件) |
phoenix-cli |
CLI 调试和分析 | 否 (单个 SKILL.md) |
创建新技能
1. 规划范围
确定技能是否需要规则文件:
- 单个 SKILL.md (如
phoenix-cli): 自包含主题、命令引用、单工作流工具 - SKILL.md + rules/ (如
phoenix-tracing,phoenix-evals): 多方面主题,具有语言特定指南、多个工作流或广泛参考材料
2. 创建 SKILL.md
每个技能都需要一个 SKILL.md,带有 YAML frontmatter:
---
name: {skill-name}
description: {它做什么。何时使用。包括触发短语。}
license: Apache-2.0
metadata:
author: oss@arize.com
version: "1.0.0"
languages: Python, TypeScript # 如果语言无关,则省略
---
Frontmatter 规则:
name: kebab-case,匹配目录名description: 第三人称,具体,包括触发术语license: 总是Apache-2.0metadata.author: 使用oss@arize.com用于 Phoenix 技能metadata.version: Semver 字符串 (例如,"1.0.0")metadata.languages: 仅当技能有语言特定内容时包括metadata.internal: 设置为true用于不打算公开列出的技能 (例如,在.agents/skills/中的技能)。对于在skills/中的公开技能,省略。
3. 结构化 SKILL.md 主体
SKILL.md 作为索引和入口点。代理首先读取此文件,并根据需要导航到规则文件。
必需部分:
| 部分 | 目的 |
|---|---|
标题 (# 名称) |
技能名称,带有简短描述 |
| 快速参考 | 映射任务到规则文件的表格 |
| 规则类别 | 前缀模式的表格 |
可选部分 (根据相关包括):
| 部分 | 目的 |
|---|---|
| 何时应用 | 触发场景 |
| 工作流程 | 通过规则的逐步路径 |
| 关键原则 | 核心决策指导 |
| 常见属性 | 参考表格 |
| 如何使用 | 导航指导 |
| 参考文献 | 外部文档和 API 链接 |
4. 组织规则文件
命名约定
模式: {prefix}-{topic}[-{language}].md
前缀类别 (跨技能重用这些):
| 前缀 | 目的 | 示例 |
|---|---|---|
setup-* |
安装、配置 | setup-python.md |
fundamentals-* |
核心概念、参考 | fundamentals-overview.md |
instrumentation-* |
自动/手动设置 | instrumentation-auto-python.md |
span-* |
跨度类型规范 | span-llm.md |
evaluators-* |
评估器类型、模式 | evaluators-code-python.md |
experiments-* |
数据集、运行实验 | experiments-running-typescript.md |
production-* |
部署、监控 | production-python.md |
annotations-* |
反馈、评分 | annotations-overview.md |
validation-* |
校准、测试 | validation-calibration-python.md |
语言后缀:
-python.md— Python 特定内容-typescript.md— TypeScript 特定内容- 无后缀 — 语言无关或概述 (例如,
span-llm.md,evaluators-overview.md)
概述文件: 使用 -overview.md 后缀用于概念介绍 (例如,fundamentals-overview.md, production-overview.md)。
扁平结构
所有规则文件直接放在 rules/ 中 — 无子目录。使用前缀进行组织,而不是文件夹。
rules/
setup-python.md # 好:扁平,带有前缀
setup-typescript.md
span-llm.md # 好:无语言后缀 (语言无关)
evaluators-code-python.md # 好:前缀-主题-语言
5. 编写规则文件
标准结构
# 标题
此规则涵盖内容的简短描述。
## 元数据 (可选)
| 字段 | 值 |
| ----- | ----- |
| 优先级 | 1 (关键) |
| 设置时间 | 5 分钟 |
## 快速开始 / 基本模式
最小工作示例。
## 详细部分
带有示例的扩展内容。
## 另请参见
- `related-rule.md` — 简短描述
- [外部文档](https://docs.arize.com/phoenix)
代码示例
- 总是使用带有语言标签的代码块:
python,typescript,bash,json - 显示工作、可复制粘贴的示例
- 包括最小和生产就绪模式,当相关时
交叉引用
- 通过文件名引用其他规则文件:
setup-python.md,span-llm.md - 引用外部文档使用完整 URL
- 保持引用一层深 (SKILL.md → 规则文件,而不是规则 → 规则 → 规则)
精炼现有技能
添加规则文件
- 从上面的表格中选择正确的前缀 (或建立一个新的)
- 遵循命名约定:
{prefix}-{topic}[-{language}].md - 在
SKILL.md的快速参考和规则类别中添加条目 - 在新文件的“另请参见”部分交叉引用相关规则
更新 SKILL.md
当向 SKILL.md 添加内容时,保持其为索引 — 将详细内容移动到规则文件。SKILL.md 应保持在 500 行以下。
提高一致性
精炼时修复的常见问题:
| 问题 | 修复 |
|---|---|
| 缺少元数据表格 | 添加优先级、设置时间,如果适用 |
| 不一致的标题 | 标准化到 ## 快速开始, ## 另请参见 |
| 内联代码转储 | 提取到规则文件,从 SKILL.md 链接 |
| 缺少交叉引用 | 添加 ## 另请参见 与相关规则 |
| 模糊描述 | 使 frontmatter 描述具体,带有触发术语 |
质量检查清单
SKILL.md
- [ ] Frontmatter 具有所有必需字段 (
name,description,license,metadata) - [ ]
metadata.internal: true为在.agents/skills/中的技能设置;为在skills/中的技能省略 - [ ] 描述是第三人称,具体,包括触发术语
- [ ] 快速参考表格映射任务到规则文件
- [ ] 规则类别表格列出所有使用的前缀
- [ ] 少于 500 行
- [ ] 无属于规则文件的详细内容
规则文件
- [ ] 遵循
{prefix}-{topic}[-{language}].md命名 - [ ] 具有清晰的
# 标题和简短描述 - [ ] 包括带有语言标签的工作代码示例
- [ ] 在
## 另请参见中交叉引用相关规则 - [ ] 使用一致的标题结构
整体技能
- [ ] 扁平
rules/目录 (无子目录) - [ ] 所有文件中一致的术语
- [ ] 语言特定内容拆分为
-python.md/-typescript.md文件 - [ ] 语言无关内容无语言后缀
- [ ] 无时间敏感信息 (无日期、版本说明)
反模式
在 SKILL.md 中放太多内容。 SKILL.md 是索引。如果一个部分超过约 30 行内容,提取它到规则文件。
深引用链。 规则文件不应需要阅读其他规则文件才能有用。每个规则应足够自包含,可以独立行动。
通用规则名称。 使用 evaluators-code-python.md 而不是 code-eval.md。前缀使通过 ls rules/{prefix}-* 发现可能。
在一个文件中混合语言。 拆分为 -python.md 和 -typescript.md,除非内容真正语言无关。
忘记 SKILL.md 更新。 每个新规则文件必须在 SKILL.md 的快速参考和规则类别表格中反映。
工作流程摘要
1. 规划范围 → 单个 SKILL.md 或 SKILL.md + rules/?
2. 创建目录: skills/{skill-name}/
3. 编写 SKILL.md,带有 frontmatter 和索引
4. 创建 rules/ 目录 (如果需要)
5. 编写规则文件,遵循命名约定
6. 更新 SKILL.md 索引以引用所有规则
7. 运行质量检查清单