Nox-Lumen AutoNox-Lumen Auto

自定义技能开发

为什么要自定义 Skill

发现团队反复执行某种专业流程时,把它封装成 Skill:

  • 复用 — 团队成员都能按同一方式触发
  • 一致性 — 流程 / 规范 / 约束固化
  • 演进 — 升级 Skill 版本,所有使用者统一生效
  • 治理 — 安全审计、权限管控、使用统计

Skill 目录结构

my-skill/
├── SKILL.md              ← 必须:元数据 + prompt 片段(描述 + 使用规则)
├── skill.manifest.json   ← 可选:安装配置 / 版本 / 依赖
├── tools/                ← 可选:技能专属 Python 工具
│   └── my_tool.py
├── references/           ← 可选:规则 / 模板 / 参考文档(按需懒加载)
│   └── checklist.md
├── tests/                ← 可选:契约测试
│   └── test_contract.py
└── scripts/              ← 可选:安装 / 升级钩子

SKILL.md 写法

Front Matter(元数据)

---
name: my-skill
description: 用一两句话描述「什么情况下触发这个技能」。这是 Agent 决定是否调用的关键依据。
execution_mode: balanced  # precise | balanced | creative
tags: [domain, usecase]
version: 1.0.0
license: proprietary      # proprietary | mit | apache-2.0
entrypoints:
  - name: main
    tools: [tools/my_tool.py:do_it]
---

正文(给 Agent 看的指令)

正文部分会被注入到 Agent 的 system prompt 或 tool hint 里:

# my-skill
 
## 使用时机
- 用户说"做 X"、"处理 Y 文档"时触发
- 不要在只是询问概念时触发
 
## 操作步骤
1. 先读输入文件
2. 调 tools/my_tool.py:do_it
3. 输出结果到指定路径
 
## 严格约束
- 不能修改输入文件
- 超过 10MB 的输入要拒绝并提示

description 决定 Agent 是否触发这个 Skill。写得越精准,误触发越少。

开发流程

1. 构思:用 skill-architect 引导

/skill-architect 帮我设计一个"从 Excel 生成测试报告"的技能

skill-architect 会问 5 个阶段的问题:目标、触发时机、输入输出、约束、风险,生成骨架。

2. 骨架化

combo-cli skill init my-skill
# 交互式填写 name / description / entrypoints

3. 写 SKILL.md

核心是 description。参考已有 Skill(比如 AgentFlow/src/skills/builtin/docx/SKILL.md)。

4. 写专用工具(可选)

tools/ 下写 Python 函数。函数签名会自动被 Agent 识别:

def do_it(input_path: str, output_path: str, mode: str = "fast") -> dict:
    """Process a document.
 
    Args:
        input_path: Source file.
        output_path: Destination.
        mode: fast | accurate.
 
    Returns:
        {"status": "ok", "duration_ms": ...}
    """
    ...

5. 写测试

# tests/test_contract.py
def test_happy_path():
    result = do_it("fixtures/sample.xlsx", "/tmp/out.xlsx")
    assert result["status"] == "ok"
 
def test_too_large():
    # should raise
    ...

6. 本地调试

combo-cli skill run ./my-skill --input "处理 fixtures/sample.xlsx"

7. 发布

combo-cli skill publish ./my-skill --visibility tenant

最佳实践

建议说明
description 精准写明"触发"与"不触发"两种情况
最小权限只暴露必要工具
可回滚写操作留下 dry-run 开关和快照
防滥用输入大小、频率、权限做上限
引用而非内联大段规则放 references/,运行时按需加载,节省 token
幂等同样输入重复运行结果一致
测试覆盖happy path + 至少 2 个异常 path

反模式(不要做)

  • 把大量业务逻辑写在 SKILL.md 正文里(太占 token)
  • 在 Skill 里硬编码凭据
  • 工具函数副作用不可控(写全局、改环境)
  • Skill 之间深度耦合,缺一不可

相关文档

On this page