用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/Steffen025/pai-opencode --skill prompting命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | Prompting |
| description | Meta-prompting for prompt generation. USE WHEN meta-prompting, template generation, prompt optimization. |
Before executing, check for user customizations at:
~/.opencode/PAI/USER/SKILLCUSTOMIZATIONS/Prompting/
If this directory exists, load and apply any PREFERENCES.md, configurations, or resources found there. These override default behavior. If the directory does not exist, proceed with skill defaults.
Invoke when: meta-prompting, template generation, prompt optimization, programmatic prompt composition, creating dynamic agents, generating structured prompts from data.
The Prompting skill owns ALL prompt engineering concerns:
This is the "standard library" for prompt engineering - other skills reference these resources when they need to generate or optimize prompts.
Complete prompt engineering documentation based on:
Key Topics:
When executing a workflow, do BOTH:
Send voice notification:
curl -s -X POST http://localhost:8888/notify \
-H "Content-Type: application/json" \
-d '{"message": "Running the WORKFLOWNAME workflow from the Prompting skill"}' \
> /dev/null 2>&1 &
Output text notification:
Running the **WorkflowName** workflow from the **Prompting** skill...
The templating system enables prompts that write prompts - dynamic composition where structure is fixed but content is parameterized.
Directory Structure:
Templates/
├── Primitives/ # Five core template patterns
│ ├── Roster.hbs # Agent/skill definitions from data
│ ├── Voice.hbs # Personality calibration settings
│ ├── Structure.hbs # Multi-step workflow patterns
│ ├── Briefing.hbs # Agent context handoff
│ └── Gate.hbs # Validation checklists
├── Examples/ # Sample data and usage
└── (Evals/) # Eval-specific templates (from Evals skill)
The Five Primitives:
| Primitive | Purpose | Use Case |
|---|---|---|
| ROSTER | Data-driven definitions | 32 RedTeam agents, 83 skills, voice configs |
| VOICE | Personality calibration | Voice parameters, rate, archetype mapping |
| STRUCTURE | Workflow patterns | Phased analysis, round-based debate, pipelines |
| BRIEFING | Agent context handoff | Research queries, delegation, task assignment |
| GATE | Validation checklists | Quality gates, completion checks, verification |
RenderTemplate.ts - Core rendering engine
bun run ~/.opencode/skills/Prompting/Tools/RenderTemplate.ts \
--template Primitives/Briefing.hbs \
--data path/to/data.yaml \
--output path/to/output.md
ValidateTemplate.ts - Template syntax checker
bun run ~/.opencode/skills/Prompting/Tools/ValidateTemplate.ts \
--template Primitives/Briefing.hbs \
--data path/to/sample-data.yaml
The system uses Handlebars notation (Anthropic's official syntax):
| Syntax | Purpose | Example |
|---|---|---|
{{variable}} | Simple interpolation | Hello {{name}} |
{{object.property}} | Nested access | {{agent.voice_id}} |
{{#each items}}...{{/each}} | Iteration | List generation |
{{#if condition}}...{{/if}} | Conditional | Optional sections |
{{> partial}} | Include partial | Reusable components |
// skills/Agents/Tools/AgentFactory.ts
import { renderTemplate } from '~/.opencode/skills/Prompting/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' }
});
# 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
// Generate specialized agent with appropriate voice
const agent = composeAgent(['security', 'skeptical', 'thorough'], task, traits);
// Returns: { name, traits, voice: 'default', voiceId: 'VOICE_ID...' }
Templates/Primitives/Briefing.hbs for agent context handoffRenderTemplate.ts to compose dynamic agentsAgents/Templates/DynamicAgent.hbsRenderTemplate.ts for eval prompt generationEvals/Templates/ but use Prompting's engineStandards.md for prompt best practicesStructure.hbs for workflow patternsGate.hbs for validation checklistsThe templating system eliminated ~35,000 tokens (65% reduction) across PAI:
| Area | Before | After | Savings |
|---|---|---|---|
| SKILL.md Frontmatter | 20,750 | 8,300 | 60% |
| Agent Briefings | 6,400 | 1,900 | 70% |
| Voice Notifications | 6,225 | 725 | 88% |
| Workflow Steps | 7,500 | 3,000 | 60% |
| TOTAL | ~53,000 | ~18,000 | 65% |
Primary Documentation:
Standards.md - Complete prompt engineering guideTemplates/README.md - Template system overview (if preserved)Tools/RenderTemplate.ts - Implementation detailsResearch Foundation:
Related Skills:
Philosophy: Prompts that write prompts. Structure is code, content is data. Meta-prompting enables dynamic composition where the same template with different data generates specialized agents, workflows, and evaluation frameworks. This is core PAI DNA - programmatic prompt generation at scale.