All skills
jeffallan avatar

/prompt-engineer

@efebc44
by jeffallanjeffallan/claude-skills12k stars
1,127

Writes, refactors, and evaluates prompts for LLMs — generating optimized prompt templates, structured output schemas, evaluation rubrics, and test suites. Use when designing prompts for new LLM applications, refactoring existing prompts for better accuracy or token efficiency, implementing chain-of-thought or few-shot learning, creating system prompts with personas and guardrails, building JSON/function-calling schemas, or developing prompt evaluation frameworks to measure and improve model performance.

Use this Skill: https://skilld.dev/gh/jeffallan/claude-skills/prompt-engineer

This session only. Nothing lands on disk.

referencesprompt-patterns.md

≈4k tokens on demand. Your agent reads this file only when SKILL.md points to it.

Prompt Patterns


Pattern Selection Guide

                        ┌─────────────────────────────────────┐
                        │        TASK CHARACTERISTICS         │
                        └─────────────────────────────────────┘
                                         │
           ┌─────────────────────────────┼─────────────────────────────┐
           │                             │                             │
    Simple, Common              Requires Reasoning            Requires Actions
           │                             │                             │
           ▼                             ▼                             ▼
    ┌─────────────┐              ┌─────────────┐              ┌─────────────┐
    │  Zero-Shot  │              │    CoT or   │              │    ReAct    │
    │             │              │  Few-Shot   │              │             │
    └─────────────┘              └─────────────┘              └─────────────┘
Pattern Best For Token Cost Reliability
Zero-shot Simple, well-defined tasks Low Medium
Few-shot Tasks needing format guidance Medium High
Chain-of-Thought Reasoning, math, logic Medium-High High
ReAct Multi-step tasks with tools High Very High
Tree-of-Thoughts Complex problem solving Very High Very High

Zero-Shot Prompting

When to use: Simple classification, extraction, formatting, or generation tasks where the model has strong prior knowledge.

When NOT to use: Complex reasoning, domain-specific formats, or tasks requiring specific output structure.

Basic Structure

<role>You are a [specific role with relevant expertise].</role>

<task>
[Clear, specific instruction]
</task>

<constraints>
- [Constraint 1]
- [Constraint 2]
</constraints>

<input>
{user_content}
</input>

<output_format>
[Expected format description]
</output_format>

Example: Sentiment Classification

You are a sentiment analysis expert.

Classify the following customer review as POSITIVE, NEGATIVE, or NEUTRAL.
Respond with only the classification label.

Review: "{review_text}"

Classification:

Example: Entity Extraction

Extract all company names mentioned in the following text.
Return them as a JSON array of strings.
If no companies are mentioned, return an empty array.

Text: "{input_text}"

Companies:

Zero-Shot Best Practices

  1. Be specific about the task - Avoid ambiguous instructions
  2. Specify output format - Tell the model exactly what to return
  3. Include constraints - What NOT to do is as important as what to do
  4. Use role priming - "You are an expert..." improves quality

Few-Shot Prompting

When to use: Tasks needing specific output format, domain-specific reasoning, or consistent style.

When NOT to use: Simple tasks where examples add unnecessary tokens, or when examples might constrain creativity.

Basic Structure

<task>
[Task description]
</task>

<examples>
Input: [example 1 input]
Output: [example 1 output]

Input: [example 2 input]
Output: [example 2 output]

Input: [example 3 input]
Output: [example 3 output]
</examples>

<input>
{actual_input}
</input>

Output:

Example: Code Review Comments

Generate a constructive code review comment for the given code issue.

Example 1:
Issue: Variable named 'x' in a function calculating total price
Comment: Consider renaming 'x' to 'totalPrice' or 'priceSum' to improve readability. Descriptive variable names help future maintainers understand the code's intent without needing to trace through the logic.

Example 2:
Issue: SQL query built with string concatenation using user input
Comment: This code is vulnerable to SQL injection attacks. Consider using parameterized queries or an ORM to safely handle user input. For example: `cursor.execute("SELECT * FROM users WHERE id = ?", (user_id,))`

Example 3:
Issue: Catch block that silently swallows exceptions
Comment: Empty catch blocks can hide bugs and make debugging difficult. Consider logging the exception or, if the exception is truly expected, add a comment explaining why it's safe to ignore.

Issue: {code_issue}
Comment:

Few-Shot Selection Strategies

Strategy Description Best For
Diverse Cover different cases/categories Classification, categorization
Similar Match examples to input type Consistent formatting
Increasing complexity Start simple, build up Complex reasoning tasks
Edge cases Include boundary cases Robust handling

Example Selection Guidelines

  1. Match the distribution - Examples should represent real inputs
  2. 3-5 examples typically optimal - Balance between guidance and token cost
  3. Order matters - Recent examples have more influence
  4. Include edge cases - Show how to handle unusual inputs
  5. Keep format consistent - All examples should follow the same structure

Dynamic Few-Shot Selection

def select_examples(query: str, example_pool: list, k: int = 3) -> list:
    """Select most relevant examples using embedding similarity."""
    query_embedding = embed(query)

    scored = []
    for example in example_pool:
        score = cosine_similarity(query_embedding, example.embedding)
        scored.append((score, example))

    # Return top-k most similar examples
    scored.sort(reverse=True)
    return [ex for _, ex in scored[:k]]

Chain-of-Thought (CoT) Prompting

When to use: Math problems, logical reasoning, multi-step analysis, debugging, planning.

When NOT to use: Simple factual recall, creative generation, or tasks where reasoning steps aren't helpful.

Zero-Shot CoT

Simply add "Let's think step by step" or similar phrase:

Solve the following problem step by step:

{problem}

Let's work through this systematically:

Structured CoT

Analyze the following problem and solve it step by step.

Problem: {problem}

## Step 1: Understand the problem
[What are we trying to find?]

## Step 2: Identify relevant information
[What data do we have?]

## Step 3: Plan the approach
[What method will we use?]

## Step 4: Execute the solution
[Work through the calculations/logic]

## Step 5: Verify the answer
[Check if the answer makes sense]

Final Answer:

Example: Debugging with CoT

Debug the following code by analyzing it step by step.

Code:
```python
def calculate_average(numbers):
    total = 0
    for num in numbers:
        total += num
    return total / len(numbers)
```

Error: ZeroDivisionError when called with empty list

## Analysis

### Step 1: Trace the execution path
Let me trace what happens when `numbers = []`:
1. `total = 0` - total is initialized to 0
2. `for num in numbers:` - loop doesn't execute (empty list)
3. `return total / len(numbers)` - returns `0 / 0`

### Step 2: Identify the root cause
The function doesn't handle the edge case of an empty list.
`len([])` returns 0, causing division by zero.

### Step 3: Propose fix
Add a check for empty input before division.

### Fixed Code:
```python
def calculate_average(numbers):
    if not numbers:
        return 0  # or raise ValueError("Cannot average empty list")
    total = sum(numbers)
    return total / len(numbers)
```

CoT Variants

Variant Technique Use Case
Zero-shot CoT "Think step by step" Quick reasoning tasks
Manual CoT Explicit step examples Complex domain problems
Self-consistency Generate multiple paths, vote High-stakes decisions
Least-to-most Decompose into subproblems Complex multi-part problems

ReAct Pattern (Reasoning + Acting)

When to use: Tasks requiring external tools, information retrieval, or iterative problem solving.

When NOT to use: Pure text generation, simple Q&A, or tasks with no action component.

ReAct Structure

You are an assistant that solves problems by thinking and taking actions.

Available tools:
- search(query): Search the web for information
- calculate(expression): Evaluate a mathematical expression
- lookup(term): Look up a definition or fact

Respond in this format:
Thought: [Your reasoning about what to do next]
Action: [tool_name(parameters)]
Observation: [Result from the tool - provided by system]
... (repeat Thought/Action/Observation as needed)
Thought: I now have enough information to answer.
Answer: [Final answer]

Question: {user_question}

Example: ReAct for Research

Question: What is the current market cap of the company that created ChatGPT?

Thought: I need to find out which company created ChatGPT, then look up their market cap.
Action: search("company that created ChatGPT")
Observation: ChatGPT was created by OpenAI, an AI research company.

Thought: Now I need to find OpenAI's current market cap.
Action: search("OpenAI market cap 2025")
Observation: OpenAI's valuation reached $157 billion in 2024 after their latest funding round.

Thought: I now have the information needed to answer.
Answer: ChatGPT was created by OpenAI, which has a valuation of approximately $157 billion (as of their 2024 funding round). Note: OpenAI is a private company, so this is a valuation rather than a public market cap.

ReAct Implementation Pattern

def react_loop(question: str, tools: dict, max_iterations: int = 10) -> str:
    """Execute a ReAct reasoning loop."""
    context = f"Question: {question}\n\n"

    for i in range(max_iterations):
        # Get next thought and action from LLM
        response = llm.complete(REACT_PROMPT + context)

        # Parse thought and action
        thought, action = parse_react_response(response)
        context += f"Thought: {thought}\n"

        if action.startswith("Answer:"):
            return action.replace("Answer:", "").strip()

        # Execute action and get observation
        tool_name, params = parse_action(action)
        observation = tools[tool_name](*params)

        context += f"Action: {action}\n"
        context += f"Observation: {observation}\n\n"

    return "Max iterations reached without answer."

Tree-of-Thoughts (ToT)

When to use: Complex problems requiring exploration of multiple solution paths, creative problem solving, strategic planning.

When NOT to use: Simple tasks, time-sensitive operations, or when token budget is limited.

ToT Structure

Problem: {complex_problem}

## Generate Candidate Approaches

### Approach A: [First strategy]
- Pros: [advantages]
- Cons: [disadvantages]
- Estimated success: [low/medium/high]

### Approach B: [Second strategy]
- Pros: [advantages]
- Cons: [disadvantages]
- Estimated success: [low/medium/high]

### Approach C: [Third strategy]
- Pros: [advantages]
- Cons: [disadvantages]
- Estimated success: [low/medium/high]

## Evaluate and Select

Based on the analysis, Approach [X] is most promising because [reasoning].

## Execute Selected Approach

[Detailed execution of chosen approach]

## Verify Solution

[Check if solution meets requirements]

ToT for Code Architecture

Design a caching system for a high-traffic API endpoint.

## Candidate Architectures

### Option A: In-Memory Cache (Redis)
Thought: Use Redis for distributed caching
Evaluation:
- Latency: ~1ms (excellent)
- Scalability: Horizontal scaling supported
- Complexity: Low - well-established pattern
- Risk: Cache invalidation complexity
Score: 8/10

### Option B: CDN Edge Caching
Thought: Cache at CDN level for static/semi-static content
Evaluation:
- Latency: ~10-50ms (good)
- Scalability: Excellent - distributed globally
- Complexity: Medium - cache headers management
- Risk: Stale content for dynamic data
Score: 6/10

### Option C: Multi-Layer Cache
Thought: Combine L1 (local) + L2 (Redis) + L3 (CDN)
Evaluation:
- Latency: <1ms for hot data
- Scalability: Excellent
- Complexity: High - multiple invalidation points
- Risk: Consistency challenges
Score: 7/10

## Decision
Option A (Redis) selected for initial implementation:
- Lowest complexity for team's current expertise
- Sufficient performance for projected load
- Clear upgrade path to Option C if needed

## Implementation Plan
[Detailed implementation steps...]

Pattern Comparison Quick Reference

┌────────────────┬──────────────┬──────────────┬──────────────┬──────────────┐
│    Pattern     │   Tokens     │  Complexity  │  Reliability │   Best For   │
├────────────────┼──────────────┼──────────────┼──────────────┼──────────────┤
│   Zero-shot    │     Low      │     Low      │    Medium    │ Simple tasks │
├────────────────┼──────────────┼──────────────┼──────────────┼──────────────┤
│   Few-shot     │    Medium    │    Medium    │     High     │Format/style  │
├────────────────┼──────────────┼──────────────┼──────────────┼──────────────┤
│      CoT       │    Medium    │    Medium    │     High     │  Reasoning   │
├────────────────┼──────────────┼──────────────┼──────────────┼──────────────┤
│     ReAct      │     High     │     High     │  Very High   │ Tool usage   │
├────────────────┼──────────────┼──────────────┼──────────────┼──────────────┤
│      ToT       │  Very High   │  Very High   │  Very High   │Complex solve │
└────────────────┴──────────────┴──────────────┴──────────────┴──────────────┘

Combining Patterns

Patterns can be combined for more powerful prompts:

Few-Shot + CoT

Solve math word problems by showing your work.

Example 1:
Problem: If a train travels 60 mph for 2.5 hours, how far does it go?
Solution:
- Distance = Speed × Time
- Distance = 60 mph × 2.5 hours
- Distance = 150 miles
Answer: 150 miles

Example 2:
Problem: A store has a 20% off sale. If an item costs $45, what's the sale price?
Solution:
- Discount = Original × Discount Rate
- Discount = $45 × 0.20 = $9
- Sale Price = Original - Discount
- Sale Price = $45 - $9 = $36
Answer: $36

Problem: {new_problem}
Solution:

ReAct + CoT

Thought: Let me break this down step by step.
First, I need to understand what information I'm looking for...
[reasoning]
Based on this analysis, I should search for...
Action: search("specific query based on reasoning")

Related Skills

  • RAG Architect - Retrieval patterns for grounding prompts
  • Fine-Tuning Expert - When prompting isn't enough
  • LLM Architect - System-level prompt orchestration

Source: SKILL.md on GitHub

1 alert17d5 checks · Risk CRITICAL
  • Gen Agent Trust Hub17d

    This skill is a comprehensive reference guide for prompt engineering. While it contains numerous strings associated with prompt injection (such as jailbreak attempts and instructions to ignore previous rules), these are explicitly used as examples for defensive design and automated security testing. All external links point to the author's own infrastructure or well-known service providers.

  • Socket17d

    No alerts

  • Snyk17d

    Risk: MEDIUM · 1 issue

  • Runlayer6mo

    2/6 files flagged

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at efebc44. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 2 months ago.

Steadyupdated 5 months ago
Other metadata
metadata
{
  "author": "https://github.com/Jeffallan",
  "version": "1.2.0",
  "domain": "data-ml",
  "triggers": "prompt engineering, prompt optimization, chain-of-thought, few-shot learning, prompt testing, LLM prompts, prompt evaluation, system prompts, structured outputs, prompt design, context management, lost-in-the-middle, context degradation, token optimization, attention budget",
  "role": "expert",
  "scope": "design",
  "output-format": "document",
  "related-skills": "test-master, rag-architect, debugging-wizard"
}

README badge

README badge for jeffallan/claude-skills/prompt-engineer