Skills 不像传统函数那样接收显式参数,它通过 Claude 的上下文来感知输入信息。
理解这种"隐式参数传递"机制,是写出实用 Skill 的关键。
Skills 如何获取参数
当 Claude 读取一个 Skill 后,整个对话上下文就是这个 Skill 的参数。
这意味着用户说的话、上传的文件、历史对话记录,都可以成为 Skill 的输入来源。
在 SKILL.md 中声明期望输入
SKILL.md 中可以通过自然语言描述,告诉 Claude 需要从上下文中提取哪些信息。
以下是一个处理 CSV 文件的 Skill 示例,演示如何在指令中声明输入预期:
实例
Skill 中的"输入要求"是写给 Claude 自己看的。Claude 会根据这份说明,主动从上下文中提取信息,或在信息不足时向用户追问。
通过脚本接收结构化参数
当 Skill 附带 Python 或 Shell 脚本时,参数通过命令行参数或标准输入传递。
这与普通脚本的参数处理方式完全一致。
Claude 在 SKILL.md 中调用该脚本的写法:
文件路径参数的处理规范
用户上传的文件统一位于 /mnt/user-data/uploads/ 路径下。
在 Skill 脚本中,始终使用绝对路径访问文件,避免路径解析错误。
参数验证:在执行前检查输入
Skill 脚本在执行前,应始终验证关键参数是否合法。
这可以防止因参数缺失或格式错误导致的运行时崩溃。
参数验证的失败信息应清晰说明期望什么和实际得到什么,方便 Claude 向用户反馈具体原因。