From prompt-engineer
Build production-grade prompts from a short brief. Use whenever the user wants to write, design, draft, scaffold, or refine a prompt for an LLM — including phrases like "write a prompt", "help me prompt", "turn this into a prompt", "system prompt for…", "improve this prompt", "refine this prompt", or any time the user is preparing instructions for another agent (Claude Code subagent, ChatGPT, an API call, an automation). Trigger this even when the user does not say the word "prompt" — if they're describing what they want another LLM to do and asking for the instructions to make it happen, use this skill. The skill runs a short discovery interview, picks an appropriate detail level and structure, then produces a fully-scaffolded prompt with role, context, task, inputs, instructions, output spec, examples, and an optional self-verification block.
How this skill is triggered — by the user, by Claude, or both
Slash command
/prompt-engineer:prompt-engineerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Turn a rough brief into a tight, unambiguous prompt that another agent can execute with minimal guesswork. The skill runs a short interview, generates the prompt, and offers to save or print it.
Turn a rough brief into a tight, unambiguous prompt that another agent can execute with minimal guesswork. The skill runs a short interview, generates the prompt, and offers to save or print it.
Two modes:
If unclear, ask.
references/patterns.md if one matches the user's goal. If nothing fits, build from scratch..prompts/<name>.md (or .prompt.json for JSON format), print to chat, or both.Use the ask_user_input_v0 tool when available so the user can tap answers on mobile. Otherwise ask as a short numbered list.
Ask only those that matter. Skip the rest.
{{customer_email}}, {{source_text}}). Skip if the prompt is self-contained.The user picks one. They differ in length and rigour, not quality — Lean is correct for many tasks.
Use when the task is well-defined and the model already knows how to do it (summarise, classify, rewrite, translate, simple extraction). Includes:
No persona biography, no exhaustive instruction list, no edge-case manual. Trust the model.
Use when the task is novel, high-stakes, ambiguous, multi-step, or feeds a downstream system that breaks on malformed output. Includes everything in Lean, plus:
If the user is unsure which to pick, ask: "Is the cost of a wrong answer high enough to justify a longer prompt?" If yes → Comprehensive. If no → Lean.
If the user wants verification, add a section near the end of the generated prompt that instructs the agent to silently check its output against specific criteria before returning. Tailor the checks to the task. Examples:
The verification block should be specific — "check your work" is useless. List the actual conditions.
The three formats produce different scaffolds. See references/templates.md for full templates.
<role>, <context>, <task>, <inputs>, <instructions>, <output_format>, <examples>, <verification>. Claude is trained on this style and it parses reliably.## Role, ## Task, ## Inputs, etc. Human-readable, version-control friendly, works well for GPT and Gemini.{{placeholder}} strings inside JSON values.If the target model is Claude and the user has no strong preference, use XML. If the target model is GPT/Gemini and no preference, use Markdown.
See references/model-notes.md for full detail. Short version:
Any prose the generated prompt asks the executing agent to produce should default to Australian English spelling and tone, unless the user specifies otherwise. Note this in the generated prompt explicitly (e.g., "Write in Australian English: 'organise' not 'organize', 'colour' not 'color'.") — saying it in the prompt is more reliable than relying on the model to infer.
Every generated prompt ends with a short section (outside the prompt itself, or as a trailing comment) showing one or two example invocations the user can paste in to sanity-check it:
# Test run
Paste this into [target model] to verify:
[example filled-in invocation with sample variables]
Keep it short — one realistic example is enough.
After drafting, ask the user whether to save to .prompts/<descriptive-name>.md (or .prompt.json for JSON format), print to chat, or both. Default file name: derive a short kebab-case name from the goal (e.g., summarise-customer-emails.md). If saving, also offer to add a # <Name> header comment with the goal, target model, and date so the file is self-documenting.
references/patterns.md — read before drafting if the goal matches a common pattern (classification, extraction, agent loop, RAG, code generation, code review, summarisation, rewriting, structured-output generation). The pattern file gives you a proven scaffold to fill in.references/templates.md — read when generating the prompt, to get the exact XML/Markdown/JSON scaffold for the chosen format.references/model-notes.md — read if the target model is one you're less sure about, or if the user mentions reasoning models, small/fast models, or non-Claude/GPT models.When the user pastes an existing prompt and asks to improve it:
Prompt engineering has fashion cycles. Some advice is overstated. Be honest with the user:
If the user asks for one of these techniques and it won't help their case, say so plainly and suggest what would help instead.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub mike-ab/catch-solutions-claude-skills --plugin prompt-engineer