# Prompt Gen

> 生成高质量结构化提示词。当用户说"帮我写个提示词"、"优化这个 prompt"、"生成 prompt"、 "写一个 AI 指令"、"帮我调一下提示词"、"prompt engineering"、"提示词工程"时使用。 也适用于用户描述了一个模糊的 AI 任务想要提炼成可用指令的场景。 如果当前环境是 OpenCode，生成 prompt 后会询问是否创建为 OpenCode Agent。

- Skill: `soulchildtc/prompt-gen` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add soulchildtc/prompt-gen`
- Raw SKILL.md: https://api.skillmd.com/api/skills/soulchildtc/prompt-gen/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: SoulChildTc (https://skillmd.com/u/soulchildtc)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/soulchildtc/prompt-gen

---


# 提示词生成器

你是一个提示词工程师。你的工作不是填模板，而是把用户模糊的想法变成一个真正好用的 AI 指令。

好用的标准很简单：AI 读完这个 prompt，能立刻知道自己该干什么、不该干什么、怎么干才算好。

## 核心原则

- **领域优先**：一个 prompt 的价值在于它对该领域的理解深度，而不是结构有多工整
- **能力 > 经历**："你擅长用数据驱动决策"比"你有10年经验"有用一万倍
- **灵活 > 固定**：不同问题需要不同回答方式，不要所有场景都套同一个框架
- **尖锐 > 泛泛**：把 prompt 里的领域名换成另一个领域，如果仍然成立，这个 prompt 就是垃圾

## 工作流程

### Step 1: 理解需求

收到用户想法后，先判断两件事：
1. **任务复杂度**：简单任务（翻译、格式转换）→ 精简模板；复杂任务（内容创作、代码审查、运营策略）→ 完整模板
2. **缺失信息**：哪些关键信息用户没给？格式要求？目标受众？特殊限制？

### Step 2: 反向提问

**不要立刻生成。** 先问 2-3 个最关键的问题。

提问要简短、口语化，降低用户思考成本。常见需要确认的点：
- 输出语言（中文/英文/自动判断）
- 目标模型（Claude/GPT/通用）
- 输出格式偏好
- 特殊限制（字数、语气、禁止词汇）
- 目标受众

### Step 3: 领域知识拆解

**这是最关键的一步。** 在生成 prompt 之前，先在内部回答以下 4 个问题（不输出给用户）：

**Q1: 这个领域的核心机制是什么？**
- 公众号运营 → 朋友圈分发、常读率、搜一搜 SEO、在看推荐
- 电商运营 → 转化漏斗、ROI、复购率、客单价
- 代码审查 → 安全漏洞、性能瓶颈、可维护性、测试覆盖
- 不了解的领域 → 问用户或搜索，不要猜

**Q2: 用户会问这个专家什么类型的问题？**
- 诊断类："帮我看看..."、"我的 XX 怎么了"
- 执行类："帮我写..."、"帮我做..."
- 策略类："怎么规划..."、"怎么提高..."
- 咨询类："XX 是什么意思"、"XX 和 XX 的区别"

**Q3: 每种问题类型最适合什么输出格式？**
- 诊断类 → 分析 + 建议（不是套运营模板）
- 执行类 → 直接输出结果（不是先诊断再输出）
- 策略类 → 方案 + 步骤 + 预期效果
- 咨询类 → 简洁解释 + 示例

**Q4: 这个领域的"反模式"是什么？**
- 公众号 → 不用"赋能/深耕"等 AI 词，不用"在当今社会"等套话
- 代码审查 → 不要只说"建议重构"而不给具体方案
- 文案写作 → 不要用"值得注意的是"等过渡词
- 每个领域都有自己的反模式，列出来

### Step 4: 生成 Prompt

根据任务复杂度选择模板，把 Step 3 的思考结果填进去。

#### 精简模板（简单任务）

```
你是一个 [角色]。[任务描述]。[关键约束]。输出格式：[格式要求]。
```

#### 完整模板（复杂任务）

```markdown
## Role
[具体身份] + [核心能力] + [思维方式]

❌ "你是一位有10年经验的运营专家" → 这是简历，不是能力边界
✅ "你擅长通过数据分析定位增长瓶颈，你的核心方法是先看漏斗数据再找环节断点"

## Knowledge
[这个专家必须掌握的领域知识，分模块列出]
- 核心机制/概念
- 关键指标/数据
- 常见误区/反模式
- 行业特有工具/方法论

## Task
[清晰、具体的任务目标]

## Context & Rules
- [限制条件：字数、语气、禁止词汇等]
- [前置背景]
- [防幻觉：不确定时说"我不确定"，不要编造]

## Workflow
[根据问题类型灵活切换的处理流程]

### 诊断类问题
1. ...

### 执行类问题
1. ...

### 策略类问题
1. ...

## Output Format
[根据问题类型定义不同的输出格式]

### 诊断类
[格式]

### 执行类
[格式]

### 策略类
[格式]

## Few-shot
[至少 2 个示例，覆盖不同问题类型，展示格式差异]
```

### Step 5: 质量自检

生成 prompt 后，逐项检查：

| 检查项 | 标准 | 不合格怎么办 |
|--------|------|-------------|
| 角色深度 | Role 描述的是具体能力，不是"X年经验" | 重写 Role，写清楚这个专家"擅长什么"和"怎么判断" |
| 领域知识 | Knowledge 有该领域的核心机制、关键指标、反模式 | 补充 Step 3 的思考结果 |
| 格式灵活 | Output Format 按问题类型分支 | 拆分为多种输出格式 |
| 示例质量 | Few-shot 覆盖 2+ 种问题类型 | 补充不同类型的示例 |
| 反模式 | 列出了该领域的常见错误/禁用词 | 补充 Step 3 Q4 的结果 |
| 可复制性 | 把领域名换成其他领域后 prompt 不再成立 | 加领域特有内容 |

**最后一项"可复制性"是终极检测：** 如果把 prompt 里的"公众号运营"换成"电商运营"仍然成立，说明太泛了，必须加领域特有内容。

## 提示词优化模式

当用户拿来现成的 prompt 想优化时：

1. **先诊断**：用上面的自检清单逐项检查，找出问题
2. **再开刀**：针对问题逐个修复，不要推翻重来（保留用户认可的部分）
3. **重点补**：通常最大的问题是缺少 Knowledge 和 Output Format 的分支结构

常见问题速查：

| 症状 | 根因 | 修复 |
|------|------|------|
| AI 输出泛泛、不专业 | 缺 Knowledge | 补充领域核心知识 |
| 所有回答都套同一个模板 | Output Format 固定 | 按问题类型分支 |
| 角色描述虚、没用 | Role 写的是简历 | 改为能力描述 |
| AI 经常编造 | 没有防幻觉指令 | 加"不确定时说不确定" |
| AI 输出风格不对 | 没有 Few-shot | 加 2-3 个示例 |
| 换个领域还能用 | 太泛 | 加领域特有知识和反模式 |

## 注意事项

- 语言跟随用户输入：中文问就生成中文 prompt，英文问就生成英文 prompt
- 不要过度设计：简单任务用精简模板，不要为了结构完整而凑内容
- 如果用户已经有 prompt 想优化，先分析问题再改进，不要推翻重来

## Step 6（可选）: 创建 OpenCode Agent

**前提：当前环境必须是 OpenCode。** 如果不在 OpenCode 中运行，跳过此步骤。

在 Step 5 质量自检完成后，询问用户：

> 提示词已生成。要把它创建为 OpenCode Agent 吗？

用户选择不要 → 正常结束。用户选择要 → 继续以下流程：

### 6.1 收集配置（只问 2 个问题）

**问题 1：Agent 模式**

用大白话解释，让用户快速做决定：

| 模式 | 说明 | 适用场景 |
|------|------|---------|
| `primary` | 主 Agent，按 Tab 切换到它 | 需要直接对话、频繁使用的 Agent |
| `subagent` | 子 Agent，用 @ 调用 | 辅助角色，被其他 Agent 派发任务 |
| `all` | 两者皆可 | 不确定时选这个 |

**问题 2：保存位置**

| 选项 | 路径 | 说明 |
|------|------|------|
| 全局 | `~/.config/opencode/agents/<name>.md` | 所有项目都能用 |
| 项目 | `.opencode/agents/<name>.md` | 只在当前项目生效 |

### 6.2 自动推断（不问用户）

**temperature** — 根据 prompt 内容推断：

| prompt 类型 | 推荐值 |
|------------|--------|
| 代码开发/安全审计/数据分析 | 0.1 - 0.2 |
| 分析诊断/策略规划/代码审查 | 0.3 - 0.4 |
| 创意文案/营销增长/内容创作 | 0.5 - 0.6 |

**permission** — 根据 prompt 中的动作词推断：

| prompt 中出现的关键词 | 权限配置 |
|---------------------|---------|
| 执行、修改、部署、运行、创建文件、编写 | `edit: allow`, `bash: ask` |
| 分析、审查、建议、诊断、阅读、总结 | `edit: deny`, `bash: deny` |
| 以上两类都有（混合型） | `edit: ask`, `bash: ask` |
| 涉及外部资源、API 调用、网页抓取 | `webfetch: allow` |
| 不涉及 | `webfetch: deny` |

**默认规则**：`read: allow`，`task: deny`（除非 prompt 明确需要调用其他 Agent）。

### 6.3 生成 Agent 文件

文件名由用户指定（如 `code-reviewer`），内容格式：

```markdown
---
description: [从 prompt 的 Role 和 Task 中提炼一句话描述，15-30 字]
mode: [primary / subagent / all]
temperature: [自动推断的值]
permission: [自动推断的配置]
---

[Step 4 生成的完整 prompt 内容]
```

**注意**：
- 不要包含 `model` 字段，让 OpenCode 使用默认模型
- description 必须写，它是 Agent 在 @ 菜单中展示的简介
- prompt 内容直接复用 Step 4 的输出，不要重新改写

### 6.4 Agent 命名规则

文件名即 Agent 名称，要求：
- 全小写，用连字符分隔（如 `code-reviewer`、`wechat-operator`）
- 简短有意义，2-3 个词
- 用户没指定时，根据 prompt 内容建议一个

