devAlice
← AI Agents

Prompt Templates — Reuse AI Tasks You Do Daily

Stop briefing the AI from scratch — code review, debugging, refactor, test, doc templates.

After a week with an AI agent you repeat the same kinds of requests daily — "review this code," "trace this bug," "write tests." Instead of re-stating context each time, reusable prompt templates save time, increase consistency, and lift result quality together.

This guide covers five daily templates (code review, debugging, refactor, test, documentation) and how to store them.

TL;DR

  1. Template = context + task + output format + constraints
  2. Storage: ~/.prompts/ or chezmoi-managed
  3. Macro tools: Raycast Snippets, Cursor @docs, Claude Code slash commands
  4. Four elements of a good template: role / inputs / output format / prohibitions

1. Four Elements of a Good Prompt

Placeholders shown as [...] (to avoid MDX/JSX conflicts).

You are a [role].

Context: [context]

Task: [what to do]

Output format: [how to respond]

Constraints:

  • [prohibition 1]
  • [prohibition 2]

Four clear sections let the model separate "what to answer" from "what to ignore."

2. Template 1 — Code Review

You are a senior code reviewer for [language] projects.

Context:

  • Code under review: [paste code or @file]
  • Project conventions: [link or paste relevant style guide / .cursorrules]
  • Reviewer focus: [correctness | security | performance | readability]

Task: Review the code. Identify:

  1. Bugs or logic errors (severity: critical / major / minor)
  2. Security issues (input validation, secrets, auth)
  3. Performance concerns (only if obvious O(n^2) or memory)
  4. Style violations against project conventions
  5. Suggestions for clarity

Output format: SUMMARY: [one-paragraph overall verdict] [CRITICAL] (line N): [issue] -> [fix] [MAJOR] ... [MINOR] ... [STYLE] ... [SUGGESTION] ...

Constraints:

  • Do not rewrite the entire file. Point and suggest.
  • Do not nitpick style if .cursorrules don't enforce it.
  • If no issues found at a level, omit that section.

Usage

Cursor side chat — @code-review.md + @src/auth/login.ts + focus: security.

Claude Code: store the template at .claude/commands/review.md, invoke with /review src/auth/login.ts.

3. Template 2 — Bug Debugging

You are a debugging assistant.

Context:

  • Error message: [paste full stacktrace]
  • Code where it occurs: [paste minimal repro or @file]
  • What I tried: [hypotheses ruled out]
  • Expected behavior: [what should happen]

Task:

  1. Identify the most likely root cause (not just symptoms)
  2. Suggest a fix
  3. Suggest a test to prevent regression

Output format: ROOT CAUSE: [one sentence] EXPLANATION: [2-3 paragraphs of why] FIX: [patched code] REGRESSION TEST: [test code]

Constraints:

  • Do not guess. If you need more info (logs, full file), ask.
  • If 2+ hypotheses are equally likely, present both with discriminating signals.
  • Do not just say "try X" — explain the model.

The "What I tried" section is critical — prevents the model from re-suggesting things you already eliminated.

4. Template 3 — Refactor

You are a refactoring assistant for [language].

Context:

  • Current code: [paste or @file]
  • Pain point: [readability | duplication | testability | performance]
  • Constraints:
    • Must preserve public API
    • Must not break existing tests

Task: Refactor while preserving behavior. Show:

  1. The refactored code
  2. Diff vs original
  3. Tradeoffs of this approach vs at most 1 alternative

Output format: REFACTOR: [new code] DIFF:

  • Removed: [what]
  • Added: [what]
  • Renamed: [old -> new] TRADEOFF: [this approach]: [pros/cons] [alternative]: [pros/cons] RECOMMENDATION: [which and why]

Constraints:

  • Do not change behavior. If you think behavior should change, flag it separately.
  • Keep test compatibility — show how existing tests still pass.
  • Don't introduce new dependencies without explicit ask.

5. Template 4 — Test Writing

You are a test writer for [language] (Vitest, Jest, Pytest, etc.).

Context:

  • Code to test: [paste or @file]
  • Existing test style: [paste sample test or @file]
  • Coverage focus: [happy path | edge cases | failure modes | all]

Task: Write tests that:

  1. Cover the happy path
  2. Cover at least 3 edge cases (boundary values, empty input, error cases)
  3. Are deterministic (no flaky time/network without mock)
  4. Follow the existing test style

Output format: a single test file in [language].

Constraints:

  • Use the same assertion library as existing tests
  • Mock external dependencies (don't hit real network/DB)
  • Keep each test focused (one assertion topic per test)
  • Name tests descriptively: "returns X when Y"
  • Do NOT write tests that just mirror implementation. Test behavior.

6. Template 5 — Documentation

You are a technical writer.

Context:

  • Code: [paste or @file]
  • Audience: [beginner | intermediate | expert]
  • Doc type: [README section | JSDoc | tutorial | reference]

Task: Write documentation that:

  1. States the purpose in 1 sentence
  2. Shows minimal usage example
  3. Lists parameters/returns with types
  4. Notes edge cases or gotchas (if any)

Output format: markdown or specific JSDoc/TypeDoc format.

Constraints:

  • No filler. Be direct.
  • Code examples must be runnable / pasteable
  • If the API is complex, link to deeper reference rather than dumping
  • For library/framework specifics, prefer official terminology

7. Storage / Management

Option A — Claude Code slash commands

Save templates to ~/.claude/commands/review.md. CLI: /review src/foo.ts injects the system prompt automatically.

Option B — Cursor @docs

Cursor → Settings → Features → Docs → Add → URL/local path. In chat: @my-review-template.

Option C — Raycast Snippets

Via mac/productivity's Raycast Snippets:

  • Add Snippet: paste the full template
  • Keyword: !review
  • In any text field, !review → expands

Option D — Simple directory + alias

Save each template as .md in ~/.prompts/. .zshrc:

alias prompt='ls ~/.prompts'

prompt → list → cat ~/.prompts/review.md | pbcopy → paste anywhere.

chezmoi Integration

Add ~/.prompts/ to your dotfiles chezmoi tree. Available on any new machine immediately.

8. Template Evolution

Your first template is 70% quality. Improve as you use:

  1. Results often get too long → add "Keep under N lines" or "Output only diff"
  2. AI keeps drifting → strengthen Constraints (concrete prohibitions)
  3. Context missing → add explicit input slots like "What I tried"
  4. Outputs inconsistent → show an example in Output format
  5. Too conservative → "Recommend the best option, not all options"

End-of-phase one-line memo. Over a year, your patterns codify into an asset.

9. Antipatterns

Too Abstract

❌ "Be a good code reviewer." ✅ "You are a senior reviewer. Identify bugs / security / style. Output in format X."

Vague Goal

❌ "Make this better." ✅ "Make this more readable. Don't change behavior. Show diff."

Missing Output Format

Each model produces a different shape; comparison/automation suffers.

Too Long — "Insurance" Constraints

"And also X. And maybe Y. Don't forget Z." → model loses priority. Keep 3–5 essentials.

Always Korean

Korean prompts on an English codebase are token-inefficient. If the code context is English, English prompts produce better results.

Verification

  1. Review the same code with vs without the template — compare consistency / completeness
  2. Apply chezmoi on a new machine → ~/.prompts/ immediately available
  3. Raycast !review trigger → expands anywhere
  4. Claude Code /review file.ts → same response shape
  5. After a week of use, evolve one template per week (one-line note)

Troubleshooting

AI Ignores the Template

  • Long templates make the model forget mid-instructions. Keep under 200 lines
  • Re-state the most important constraint at the end (recency bias)
  • Cursor @docs may compress context — extract essentials

Slash Command Not Working

  • Claude Code: file name/location at ~/.claude/commands/foo.md
  • Cursor: slash commands depend on the model

Output Format Breaks

Show an explicit format example. "Use this exact format:" or similar strong wording.

Answers Too Long

"Maximum N lines." or "Only the diff, no explanation."

Language Mixed

State both prompt and output language. "Respond in Korean." or "Respond in English."

References

Changelog

  • 2026-05-12: First draft. Five templates + four storage options + evolution + five antipatterns + five troubleshooting cases.

Comments