mcpField
P
Prompting

Prompting

github.com/danielmiesslerAgent 工作流19.6k164 次安装1 天前更新
代码仓库

关于 Prompting

Prompting 是用于生成、优化和组合提示词的技能,面向需要程序化构建 Agent、工作流或评估提示词的开发者。它以 Handlebars 模板分离结构与数据,并配有标准指南及渲染、验证工具。

主要功能

  1. 01基于 Handlebars 生成提示词
  2. 02模板与数据分离
  3. 03渲染模板
  4. 04验证模板
  5. 05提供提示词工程标准
  6. 06包含评估提示词模板

适用场景

  1. 01从数据生成 Agent 简报
  2. 02组合分阶段工作流提示词
  3. 03构建评估裁判和评分标准
  4. 04检查提示词模板

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/danielmiessler/lifeos --skill prompting

安装后在 Claude Code 中输入/prompting确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

Standards.md
References/
WritingGreatSkills.md
Templates/
README.md
Templates/Data/
Agents.yaml
VoicePresets.yaml
ValidationGates.yaml
Templates/Evals/
Comparison.hbs
Report.hbs
Judge.hbs
TestCase.hbs
Rubric.hbs
Templates/Primitives/
Briefing.hbs
Gate.hbs
Voice.hbs
Roster.hbs
Structure.hbs
Templates/Tools/
.gitignore
CLAUDE.md
RenderTemplate.ts
README.md
ValidateTemplate.ts
index.ts
bun.lock
package.json
tsconfig.json
Tools/
index.ts
ValidateTemplate.ts
RenderTemplate.ts

详细介绍

自定义

执行前,请检查以下位置是否存在用户自定义设置: ~/.claude/LIFEOS/USER/CUSTOMIZATIONS/SKILLS/Prompting/

如果此目录存在,请加载并应用其中找到的任何 PREFERENCES.md、配置或资源。这些内容会覆盖默认行为。如果目录不存在,则使用技能默认设置。

🚨 强制要求:语音通知(任何操作前必须执行)

调用此技能时,必须先发送此通知,然后才能进行任何其他操作。

  1. 发送语音通知:

    curl -s -X POST http://localhost:31337/notify \
      -H "Content-Type: application/json" \
      -d '{"message": "Running the WORKFLOWNAME workflow in the Prompting skill to ACTION"}' \
      > /dev/null 2>&1 &
    
  2. 输出文本通知:

    Running the **WorkflowName** workflow in the **Prompting** skill to ACTION...
    

此操作不可省略。调用技能后,请立即执行此 curl 命令。

Prompting - 元提示与模板系统

功能

以编程方式生成、优化和组合提示词。它是提示工程的标准库——其他技能在需要构建或改进提示词时会调用它。输出始终是供其他用途使用的提示词,而不是最终内容本身。

**适用于:**元提示、模板生成、提示词优化、以编程方式组合提示词、创建动态 Agent、根据数据生成结构化提示词。

问题

提示工程往往需要在每个相关技能中手动复制粘贴并重写,因此相同的模式逐渐分化,最佳实践也只存在于某个人的脑海中。当你想要根据数据组合提示词——创建自定义 Agent、构建评测判定器、生成分阶段工作流时——却没有一种简洁的方式将结构与内容分离。此技能将结构设为代码,将内容设为数据:一个 Handlebars 模板配合不同的数据,就能生成专用 Agent、工作流和评测框架;工程标准则集中在一处,供每个技能引用。

理想状态提示——默认标准

**此库生成或优化的每条提示词都应阐明理想状态,而非操作步骤。**说明完成后的样子(以可测试的结果表达)、约束条件和可用的高质量工具,然后相信模型能找到实现方式。推理编排(“先分析,再考虑,然后决定”)是违反 BPE 的脚手架:它会限制能力强大的模型,并随着模型改进而过时。理想状态提示更加精确,而非更加含糊——具体性体现在结果上。

有四类合理的实现方式可以保留:安全门控、已验证的陷阱、工具契约、输出格式契约。确定性工具(*.ts)不受此限制。判断任何操作步骤的标准是:更聪明的模型是否会认为这条规则没有必要? 会 → 删除;不会 → 属于可保留类别。完整标准:Standards.md § Ideal-State Prompting。

工作原理

三大支柱支撑这项工作:

  • 标准 - Anthropic 最佳实践、Claude 4.x 模式、实证研究(优先使用 Markdown 的设计、上下文工程、Fabric 模式系统,以及 1,500 多篇提示词优化学术论文)。完整指南见 Standards.md。
  • 模板 - 基于 Handlebars 的程序化提示词生成系统:基元(Briefing、Structure、Gate、Roster、Voice)以及评测模板(Judge、Rubric、TestCase、Comparison、Report)。针对 Agent 的 DynamicAgent.hbs 位于 Agents 技能中(Agents/Templates/DynamicAgent.hbs),不在此处。
  • 工具 - 模板渲染(RenderTemplate.ts)、验证以及数据与内容分离。

工作流路由

库技能——没有 Workflows/ 目录。请求会路由到渲染工具和参考文档:

触发条件工作流文件
渲染模板 / 根据数据组合提示词 / Handlebars 模板RenderTemplate(工具)Tools/RenderTemplate.ts
验证模板ValidateTemplate(工具)Tools/ValidateTemplate.ts
提示工程标准 / 最佳实践 / 提示词优化Standards(参考)Standards.md

示例

示例 1:使用 Briefing 模板(编写 Agent 简介)
// Render a structured agent brief from data before launching general-purpose
import { renderTemplate } from '${LIFEOS_SKILL_DIR}/Tools/RenderTemplate.ts';

const prompt = renderTemplate('Primitives/Briefing.hbs', {
  briefing: { type: 'research' },
  agent: { id: 'EN-1', name: 'Skeptical Thinker', personality: {...} },
  task: { description: 'Analyze security architecture', questions: [...] },
  output_format: { type: 'markdown' }
});
示例 2:使用结构模板(工作流)
# Data: phased-analysis.yaml
phases:
  - name: Discovery
    purpose: Identify attack surface
    steps:
      - action: Map entry points
        instructions: List all external interfaces...
  - name: Analysis
    purpose: Assess vulnerabilities
    steps:
      - action: Test boundaries
        instructions: Probe each entry point...
bun run RenderTemplate.ts \
  --template Primitives/Structure.hbs \
  --data phased-analysis.yaml
示例 3:根据数据渲染 Agent 简报
// Render a structured agent brief, then launch general-purpose with it
const brief = renderTemplate('Primitives/Briefing.hbs', {
  agent: { name: 'Skeptical Security Reviewer', role: 'auth bypass and input validation' },
  task: { description: 'Review the auth flow', questions: [...] },
});
// Pass `brief` as the prompt to Agent(subagent_type="general-purpose")

与其他技能集成

Agents 技能
  • 使用 Templates/Primitives/Briefing.hbs 进行 Agent 上下文交接
  • 使用 RenderTemplate.ts 组合动态 Agent
  • 维护 Agent 专用模板:Agents/Templates/DynamicAgent.hbs
Evals 技能
  • 使用评测专用模板:Judge、Rubric、TestCase、Comparison、Report
  • 利用 RenderTemplate.ts 生成评测提示词
  • 评测模板可以存储在 Evals/Templates/ 中,但使用 Prompting 的引擎
Development 技能
  • 参考 Standards.md 获取提示词最佳实践
  • 使用 Structure.hbs 编写工作流模式
  • 使用 Gate.hbs 编写验证清单

Token 效率

模板系统在整个 LifeOS 中减少了 约 35,000 个 token(减少 65%):

区域之前之后节省
SKILL.md Frontmatter20,7508,30060%
Agent 简报6,4001,90070%
语音通知6,22572588%
工作流步骤7,5003,00060%
总计~53,000~18,00065%

最佳实践

1. 分离关注点
  • 模板:仅负责结构和格式
  • 数据:内容和参数(YAML/JSON)
  • 逻辑:渲染和验证(TypeScript)
2. DRY 原则
  • 将重复模式提取为局部模板
  • 使用预设处理常见配置
  • 为定义维护单一事实来源
3. 版本控制
  • 将模板和数据保存在不同文件中
  • 独立跟踪更改
  • 支持对结构进行 A/B 测试

参考资料

主要文档:

  • Standards.md - 完整的提示词工程指南
  • Templates/README.md - 模板系统概述
  • Tools/RenderTemplate.ts - 实现细节

**官方锚点(偏差检查):**本技能标准所依据的两个权威 Anthropic 来源:

在编写或审查 Standards.md 时(不包括常规模板渲染),请获取这两个来源,并标记我们的标准与当前官方指南不一致之处——这些页面会随着每个模型系列的发布而变化,基于旧模型编写的标准会在不知不觉中逐渐过时。仅供参考:报告偏差,切勿自动采用;URL 无法访问时,工作也不得因此受阻。

研究基础:

  • Anthropic:《Claude 4.x 最佳实践》(2025 年 11 月)
  • Anthropic:《面向 AI Agent 的有效上下文工程》
  • Anthropic:《提示词模板与变量》
  • Fabric 系统(2024 年 1 月)
  • 《提示词报告》- arXiv:2406.06608
  • 《提示词画布》- arXiv:2412.05127

相关技能:

  • Agents - 动态 Agent 组合
  • Evals - LLM-as-Judge 提示词
  • Development - 规范驱动的开发模式

**理念:**编写提示词的提示词。结构是代码,内容是数据。元提示可实现动态组合:同一模板搭配不同数据,即可生成专用 Agent、工作流和评估框架。这是 LifeOS 的核心基因——大规模程序化生成提示词。

注意事项

  • **元提示生成的是提示词,而非内容。**输出的是供其他地方使用的提示词,而不是最终交付物。
  • **模板应与模型无关。**不要编写依赖特定模型特性的提示词。
  • **在宣布生成的提示词可用之前,先进行测试。**看起来不错的提示词,实际效果可能很差。

执行日志

完成任何工作流后,追加一条 JSONL 记录:

echo '{"ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","skill":"Prompting","workflow":"WORKFLOW_USED","input":"8_WORD_SUMMARY","status":"ok|error","duration_s":SECONDS}' >> ~/.claude/LIFEOS/MEMORY/SKILLS/execution.jsonl

将 WORKFLOW_USED 替换为已执行的工作流,将 8_WORD_SUMMARY 替换为简短的输入描述,并将 SECONDS 替换为大致的实际耗时。若工作流失败,则记录 status: "error"。

评论

支持 Markdown