Skip to main content

Prompt Engineering for Coding

The difference between mediocre and exceptional AI assistance

Good prompts are the key to getting great results from AI coding tools. This section provides battle-tested templates and best practices.

🚀 Quick Start Templates

🐛 Debugging

I'm getting this error: [ERROR MESSAGE]

In this file: [FILE PATH]

Here's the relevant code:
[CODE BLOCK]

Context: [WHAT YOU WERE TRYING TO DO]

Help me understand what's wrong and how to fix it.

🔄 Refactoring

Refactor this code to be more [maintainable/performant/readable]:

[CODE BLOCK]

Requirements:
- Keep the same functionality
- Follow [LANGUAGE/FRAMEWORK] best practices
- Add comments explaining changes

📝 Documentation

Write comprehensive documentation for this code:

[CODE BLOCK]

Include:
- Function/class purpose
- Parameter descriptions
- Return value explanation
- Usage examples
- Edge cases

🧪 Testing

Write unit tests for this function using [TESTING FRAMEWORK]:

[CODE BLOCK]

Cover:
- Happy path
- Edge cases
- Error handling
- Boundary conditions

View all 50+ templates →


🎯 Prompt Engineering Principles

1. Be Specific

Bad: "Fix this code" Good: "Refactor this React component to use hooks instead of class components, maintaining the same functionality"

2. Provide Context

Bad: "Add error handling" Good: "Add try-catch error handling with user-friendly messages for API calls in this Next.js page"

3. Show Examples

Bad: "Write a function" Good: "Write a function like this example: [EXAMPLE], but for my use case: [YOUR CASE]"

4. Iterate

Start broad, then refine:

  1. "Create a login form"
  2. "Add validation for email and password"
  3. "Add loading states and error messages"
  4. "Make it responsive and accessible"

📚 Template Categories

By Task Type


🎓 Best Practices

✅ Do's

  • Provide full context and relevant code
  • Specify the technology stack
  • Ask for explanations, not just code
  • Request multiple approaches when uncertain
  • Save and reuse successful prompts

❌ Don'ts

  • Copy-paste without understanding
  • Skip error messages or logs
  • Use vague language ("better", "faster")
  • Forget to specify constraints
  • Ignore warnings about best practices

🔥 Advanced Techniques

Chain of Thought Prompting

Let's solve this step by step:

1. First, analyze the requirements
2. Then, design the architecture
3. Next, implement the core logic
4. Finally, add error handling and tests

[YOUR PROBLEM]

Role-Based Prompting

Act as a senior [ROLE] with expertise in [TECHNOLOGY].

Review this code and provide:
- Security concerns
- Performance issues
- Best practice violations

[CODE]

Constraint-Driven Prompting

Write a [COMPONENT] with these constraints:
- Must support [BROWSER/VERSION]
- No external dependencies
- Maximum 100 lines
- Follow [STYLE GUIDE]

[REQUIREMENTS]

💡 Real Examples

Example 1: React Component Refactoring

Before (vague):

Make this better

After (specific):

Refactor this React class component to:
1. Use functional components with hooks
2. Extract custom hooks for data fetching
3. Add TypeScript types
4. Follow React 19 best practices
5. Improve accessibility

Result: Much better AI output with clear requirements

Example 2: Bug Investigation

Before (incomplete):

This doesn't work

After (complete):

I'm getting "Cannot read property 'map' of undefined" in this React component:

[COMPONENT CODE]

Steps to reproduce:
1. Navigate to /dashboard
2. Click "Load Data"
3. Error appears

Expected: Data should display in a list
Actual: Error appears and app crashes

Environment: React 19, Next.js 15, Node 20

Result: Precise diagnosis and solution


🛠️ Tools Integration

For Cursor

Save frequently used prompts as .cursorrules files in your project root.

For Claude Code

Create a prompts/ directory with markdown files for each template.

For ChatGPT/Claude

Use the "Custom Instructions" feature to set default behavior.


📖 Learn More


🤝 Contribute Your Prompts

Found a prompt that works great? Share it with the community →