Overview
Designs, tests, and iterates high-quality LLM prompts. Covers prompt anatomy (role, context, instructions, examples, output format), few-shot example selection and ordering, chain-of-thought triggering, structured output (JSON mode, Pydantic, grammar), prompt injection defenses, systematic evaluation, and 10 reusable prompt patterns that have proven effective across many tasks.
When to Use This Skill
- Building or improving system prompts for agents, chatbots, or tools.
- The user wants reliable, structured output from an LLM.
- Debugging inconsistent or low-quality LLM responses.
- Creating few-shot examples or chain-of-thought prompts.
Prerequisites
- Access to one or more LLMs (via API or local).
- A clear task definition and success criteria.
- Evaluation data (even 10-20 examples is useful to start).
Steps
Define the task precisely:
- What is the input?
- What is the desired output (format, content, constraints)?
- What are the failure modes to avoid?
Prompt anatomy (use this structure):
- Role / persona.
- Context / background.
- Task instructions (clear, numbered, imperative).
- Constraints and rules.
- Few-shot examples (2-6 high-quality ones).
- Output format (JSON schema, bullet list, specific template).
- Reasoning encouragement ("Think step by step").
Few-shot best practices:
- Choose diverse, representative, high-quality examples.
- Order matters — put the most similar or most important first.
- Include both positive and "edge" examples when helpful.
Chain-of-Thought (CoT):
- "Let's think step by step."
- Or more specific: "First identify X, then Y, then produce Z."
- For complex reasoning, use "ReAct" style (Thought → Action → Observation).
Structured output:
- Use model
response_format: {type: "json_object"} (OpenAI) or equivalent.
- Provide a Pydantic model or JSON Schema in the prompt.
- Validate the output in code and retry with error feedback if invalid.
Defense against prompt injection:
- Clearly separate instructions from user content (e.g., XML tags, "User input starts here:").
- Instruct the model to ignore instructions inside user content.
- Validate and sanitize output.
Evaluation & iteration:
- Create a small golden set (10-30 examples) with expected outputs.
- Score outputs (exact match, fuzzy, LLM-as-judge).
- A/B test prompt variants.
- Track regression when changing models or prompts.
Output:
- The full system prompt + user template.
- 3-6 few-shot examples.
- Evaluation script or rubric.
- Notes on which model(s) it works best with.
- Version history of the prompt.
Examples
10 reusable prompt patterns (Classification, Extraction, Summarization, Reasoning, Tool Use, Critique, etc.) with full prompts and example inputs/outputs are included, plus a complete worked example for "Extract structured customer feedback from free-text reviews" with JSON schema, CoT, and evaluation.
Edge Cases & Error Handling
- Model refuses or hallucinates: Add explicit "If you cannot answer from the provided context, say 'I don't have enough information'."
- Output not parseable: Always validate + retry loop with the error message fed back to the model.
- Context length: Summarize or chunk long context; use RAG when appropriate.
Verification
- Run the prompt on the golden set — success rate meets the target (e.g., >90% on key fields).
- Test with adversarial or edge-case inputs — model behaves as specified.
- Structured output is always valid JSON that passes Pydantic validation.
- Changing the model (within the same family) still produces good results (or you have noted model-specific tuning).
- Success: The prompt is reliable enough to use in production or as part of an agent, with known limitations documented.
References
1---2name: prompt-engineer3description: Designs, tests, and iterates on LLM prompts for accuracy, reliability, and performance. Use when crafting system prompts, few-shot examples, chain-of-thought prompts, or output format instructions.4license: Apache-2.05---67## Overview89Designs, tests, and iterates high-quality LLM prompts. Covers prompt anatomy (role, context, instructions, examples, output format), few-shot example selection and ordering, chain-of-thought triggering, structured output (JSON mode, Pydantic, grammar), prompt injection defenses, systematic evaluation, and 10 reusable prompt patterns that have proven effective across many tasks.1011## When to Use This Skill1213- Building or improving system prompts for agents, chatbots, or tools.14- The user wants reliable, structured output from an LLM.15- Debugging inconsistent or low-quality LLM responses.16- Creating few-shot examples or chain-of-thought prompts.1718## Prerequisites1920- Access to one or more LLMs (via API or local).21- A clear task definition and success criteria.22- Evaluation data (even 10-20 examples is useful to start).2324## Steps25261. **Define the task precisely**:27 - What is the input?28 - What is the desired output (format, content, constraints)?29 - What are the failure modes to avoid?30312. **Prompt anatomy** (use this structure):32 - Role / persona.33 - Context / background.34 - Task instructions (clear, numbered, imperative).35 - Constraints and rules.36 - Few-shot examples (2-6 high-quality ones).37 - Output format (JSON schema, bullet list, specific template).38 - Reasoning encouragement ("Think step by step").39403. **Few-shot best practices**:41 - Choose diverse, representative, high-quality examples.42 - Order matters — put the most similar or most important first.43 - Include both positive and "edge" examples when helpful.44454. **Chain-of-Thought (CoT)**:46 - "Let's think step by step."47 - Or more specific: "First identify X, then Y, then produce Z."48 - For complex reasoning, use "ReAct" style (Thought → Action → Observation).49505. **Structured output**:51 - Use model `response_format: {type: "json_object"}` (OpenAI) or equivalent.52 - Provide a Pydantic model or JSON Schema in the prompt.53 - Validate the output in code and retry with error feedback if invalid.54556. **Defense against prompt injection**:56 - Clearly separate instructions from user content (e.g., XML tags, "User input starts here:").57 - Instruct the model to ignore instructions inside user content.58 - Validate and sanitize output.59607. **Evaluation & iteration**:61 - Create a small golden set (10-30 examples) with expected outputs.62 - Score outputs (exact match, fuzzy, LLM-as-judge).63 - A/B test prompt variants.64 - Track regression when changing models or prompts.65668. **Output**:67 - The full system prompt + user template.68 - 3-6 few-shot examples.69 - Evaluation script or rubric.70 - Notes on which model(s) it works best with.71 - Version history of the prompt.7273## Examples747510 reusable prompt patterns (Classification, Extraction, Summarization, Reasoning, Tool Use, Critique, etc.) with full prompts and example inputs/outputs are included, plus a complete worked example for "Extract structured customer feedback from free-text reviews" with JSON schema, CoT, and evaluation.7677## Edge Cases & Error Handling7879- **Model refuses or hallucinates**: Add explicit "If you cannot answer from the provided context, say 'I don't have enough information'."80- **Output not parseable**: Always validate + retry loop with the error message fed back to the model.81- **Context length**: Summarize or chunk long context; use RAG when appropriate.8283## Verification84851. Run the prompt on the golden set — success rate meets the target (e.g., >90% on key fields).862. Test with adversarial or edge-case inputs — model behaves as specified.873. Structured output is always valid JSON that passes Pydantic validation.884. Changing the model (within the same family) still produces good results (or you have noted model-specific tuning).895. Success: The prompt is reliable enough to use in production or as part of an agent, with known limitations documented.9091## References9293- [OpenAI Prompt Engineering Guide](https://platform.openai.com/docs/guides/prompt-engineering)94- [Anthropic Prompt Engineering](https://docs.anthropic.com/claude/docs/prompt-engineering)95- [Prompt Engineering Guide (DAIR.AI)](https://www.promptingguide.ai/)96- [ReAct Paper](https://arxiv.org/abs/2210.03629)97- [JSON Mode & Structured Outputs](https://platform.openai.com/docs/guides/structured-outputs)