Skip to content
Development
Skill

/prompt-engineering

Prompt engineering patterns including structured prompts, chain-of-thought, few-shot learning, and system prompt design

From plugin
rohitg00-claude-code-toolkit
2.5k40 skills138 agents199 commands
Install
$ npx -y skills add rohitg00/awesome-claude-code-toolkit --skill prompt-engineering --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/prompt-engineering

Context preview

The summary Claude sees to decide when to auto-load this skill.

Prompt engineering patterns including structured prompts, chain-of-thought, few-shot learning, and system prompt design

SKILL.md

prompt-engineering.SKILL.md
name: prompt-engineering
description: Prompt engineering patterns including structured prompts, chain-of-thought, few-shot learning, and system prompt design

Prompt Engineering

Structured System Prompt

You are a senior code reviewer. Your role is to analyze pull requests for:
1. Correctness - logic errors, edge cases, off-by-one errors
2. Security - injection, authentication, data exposure
3. Performance - N+1 queries, unnecessary allocations, missing indexes
4. Maintainability - naming, complexity, test coverage

For each issue found, respond with:
- Severity: critical | warning | suggestion
- File and line reference
- What is wrong
- How to fix it (with code snippet)

If the code is well-written, say so briefly. Do not invent problems.

Structure system prompts with role, scope, output format, and constraints. Be explicit about what the model should NOT do.

Chain-of-Thought

Analyze this database query for performance issues.

Think step by step:
1. Identify the tables and joins involved
2. Check if appropriate indexes exist for the WHERE and JOIN conditions
3. Look for full table scans or cartesian products
4. Estimate the row count at each step
5. Suggest specific index creation or query restructuring

Query:
SELECT o.*, u.name, p.title
FROM orders o
JOIN users u ON o.user_id = u.id
JOIN products p ON o.product_id = p.id
WHERE o.created_at > '2024-01-01'
AND u.country = 'US'
ORDER BY o.created_at DESC
LIMIT 50;

Chain-of-thought prompting improves accuracy on reasoning tasks by forcing the model to show intermediate steps.

Few-Shot Examples

Convert natural language to SQL. Follow these examples:

Input: "How many orders were placed last month?"
Output: SELECT COUNT(*) FROM orders WHERE created_at >= DATE_TRUNC('month', CURRENT_DATE - INTERVAL '1 month') AND created_at < DATE_TRUNC('month', CURRENT_DATE);

Input: "Top 5 customers by total spending"
Output: SELECT customer_id, SUM(total_amount) AS total_spent FROM orders GROUP BY customer_id ORDER BY total_spent DESC LIMIT 5;

Input: "Products that have never been ordered"
Output: SELECT p.* FROM products p LEFT JOIN order_items oi ON p.id = oi.product_id WHERE oi.id IS NULL;

Now convert:
Input: "Average order value per country for the last quarter"

Provide 3-5 diverse examples that demonstrate the expected format and edge cases.

Tool Use / Function Calling

{
  "tools": [
    {
      "name": "search_codebase",
      "description": "Search for code patterns across the repository. Use when you need to find implementations, usages, or definitions.",
      "parameters": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Regex pattern or keyword to search for"
          },
          "file_type": {
            "type": "string",
            "description": "File extension filter (e.g., 'ts', 'py')"
          }
        },
        "required": ["query"]
      }
    }
  ]
}

Write tool descriptions that explain WHEN to use the tool, not just what it does.

Prompt Template Pattern

def build_review_prompt(diff: str, context: str, rules: list[str]) -> str:
    rules_text = "\n".join(f"- {rule}" for rule in rules)

    return f"""Review this code diff against the following rules:
{rules_text}

Context about the codebase:
{context}

Diff to review:

{diff}


Respond with a JSON array of findings. If no issues, return an empty array.
Each finding: {{"severity": "critical|warning|info", "line": number, "message": "string", "suggestion": "string"}}"""

Anti-Patterns

  • Vague instructions like "be helpful" or "do your best"
  • Asking the model to "be creative" when you need deterministic output
  • Not specifying output format (JSON, markdown, plain text)
  • Stuffing too many unrelated tasks into a single prompt
  • Using negations ("don't do X") without saying what to do instead
  • Not testing prompts with adversarial or edge-case inputs

Checklist

  • [ ] System prompt defines role, scope, format, and constraints
  • [ ] Chain-of-thought used for multi-step reasoning tasks
  • [ ] Few-shot examples cover typical and edge cases
  • [ ] Output format explicitly specified (JSON schema, markdown, etc.)
  • [ ] Tool descriptions explain when and why to use each tool
  • [ ] Prompts tested with adversarial inputs
  • [ ] Temperature and top_p set appropriately for the task
  • [ ] Prompt templates are parameterized, not hardcoded strings
Read more
Ships withrohitg00-claude-code-toolkit

The most comprehensive toolkit for Claude Code -- 135 agents, 35 curated skills (+400,000 via SkillKit), 42 commands, 176+ plugins, 20 hooks, 15 rules, 7 templates, 15 MCP configs, 26 companion apps, 53 ecosystem entries, and more.

Get the whole plugin