用途
Prompt Templating 用于把带有占位符的提示词模板转换为完整提示词。它从当前任务上下文中提取变量值,填充到模板的占位符中,从而保证提示词的一致性、减少重复,并校验所有必需变量是否都已提供。
主要能力
- 加载带有 {variable_name} 这类占位符的提示词模板。
- 用当前上下文中的值填充占位符。
- 区分必需变量与可选变量。
- 为可选变量提供默认值。
- 在缺少必需变量时向用户发出警告。
- 校验并清理变量值。
模板语法
基本占位符:
{variable_name}
带默认值的可选变量:
{variable_name:default_value}
语法规则:
- 变量名:仅限小写字母、数字和下划线。
- 花括号内不能有空格:{name} 正确,{ name } 错误。
- 不支持嵌套花括号。
- 用反斜杠转义字面花括号:{not_a_variable}。
使用方式
工作流程如下:
- 识别模板需求:询问使用哪个模板文件(或新建一个),确定需要填充哪些变量,以及哪些是必需、哪些是可选。
- 加载模板:从 .claude/skills/prompt-templating/templates/(共享模板)或用户指定路径(自定义模板)读取模板文件。示例模板包括 code-review.txt(代码审查提示词)、summarization.txt(文档摘要)、analysis.txt(通用分析任务)、bug-report.txt(缺陷调查提示词)。
- 解析模板:扫描模板中的占位符,提取所有 {variable_name} 模式,识别必需变量(无默认值)与可选变量(带 :default),构建所需变量列表。
- 收集变量:从用户明确指令、当前任务上下文、文件内容(若被引用)、先前对话上下文以及可选变量的默认值中收集变量值。
- 校验变量:若任何必需变量缺少值,则停止,不继续填充模板;清晰列出所有缺失的必需变量;请用户提供缺失变量的值;若上下文有线索可建议合理值;等待用户确认后再继续。
- 填充模板:先处理必需变量,为未提供的可选变量应用默认值,从左到右执行替换,保留格式与缩进,处理转义花括号(不替换 {...})。
- 输出结果:展示完整渲染后的提示词,说明使用了哪些默认值,适当时与用户确认,如被要求则保存到文件。
变量提取示例:
- 从用户消息:用户说“用 'John Smith' 作为作者名” → {author_name} = "John Smith"。
- 从上下文:正在处理文件 src/components/Header.tsx → {file_path} = "src/components/Header.tsx",{file_name} = "Header.tsx",{component_name} = "Header"。
- 从代码分析:正在审查的函数 calculateTotal() → {function_name} = "calculateTotal"。
适用场景
- 在多个相似任务中创建一致的提示词。
- 为摘要、分析或代码审查构建可复用的提示词模式。
- 确保关键上下文变量始终被包含。
- 维护标准化提示词库。
- 减少重复提示任务中的复制粘贴错误。
示例场景一:代码审查模板。模板文件 templates/code-review.txt,用户请求“审查 Header.tsx 的缺陷”。流程为加载模板、提取变量(file_path、focus_area_1、focus_area_2 可选、focus_area_3 可选、code_content、reviewer_name)、从上下文收集(file_path = "src/components/Header.tsx",focus_area_1 = "bugs",code_content 从文件读取),发现缺少 reviewer_name,发出警告并询问用户,待所有值齐备后填充模板。
示例场景二:分析摘要。模板 templates/summarization.txt,用户显式提供所有变量,立即填充并输出。
最佳实践
- 使用清晰的变量名:如 {analysis_type}、{target_audience}、{code_file_path},避免 {x}、{temp}、{var1}。
- 为可选变量提供合理默认值:{tone:professional}、{max_length:500}、{format:markdown}。
- 为每个模板编写文档:头部注释说明用途、必需变量列表、带默认值的可选变量列表、示例用法。
- 尽早校验:在填充模板之前检查缺失变量,避免产生不完整输出。
- 清理输入:在安全敏感场景中转义特殊字符、校验变量格式(邮箱、路径等)、对可能不安全的取值发出警告。
错误处理
- 缺少必需变量:报错提示必需变量 '{variable_name}' 未提供,说明该变量代表什么,请用户提供值后继续。
- 模板中变量名无效:警告在位置 X 发现无效变量语法 '{INVALID NAME}',变量必须仅使用小写字母、数字和下划线。
- 模板文件未找到:报错提示模板文件未找到 {path},并列出可用模板。
高级特性(可选)
- 条件区块:{?if:variable_name} ... {?endif},仅当提供 variable_name 时出现该区块。
- 重复区块:{?foreach:item in items} - {item} {?endforeach},用于列表。
注意:这些高级特性是可选增强,建议从基本占位符替换开始。
参考文件
- templates/:预置模板文件。
- examples/:完整使用示例。
- reference/variables.md:常用变量定义。
- reference/template-syntax.md:详细语法指南。
限制
资料未提供关于收费、价格、平台支持范围、性能指标或效果保证的信息。