Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Designs, refines, and systematically evaluates LLM prompts using structure, role framing, few-shot examples, explicit output contracts, and reasoning scaffolds. Use this skill when the user wants to write or improve a prompt, build a system prompt, craft few-shot examples, reduce hallucination or refusals, enforce a JSON/structured output, design an LLM-as-judge or eval rubric, debug inconsistent or low-quality model outputs, or compare prompt variants ("optimize this prompt", "why is the model
.claude/skills/jayrha-prompt-engineer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-14 | ✗→✓ | ▲ Improved | 40% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 91% | 0% |
| case-06 | ✓→✓ | = Same ✓ | 364% | 0% |
| case-07 | ✓→✓ | = Same ✓ | 43% | 0% |
| case-08 | ✓→✓ | = Same ✓ | 47% | 0% |
This skill turns vague intent into a precise, testable prompt and provides a repeatable loop for measuring and improving prompt quality. It covers prompt anatomy, role/system framing, few-shot example selection, output contracts (JSON/schema), reasoning scaffolds (chain-of-thought, decomposition), and rigorous evaluation (golden sets, rubrics, LLM-as-judge, pairwise comparison).
Keywords: prompt engineering, system prompt, few-shot, chain-of-thought, output format, JSON mode, structured output, hallucination, refusal, LLM-as-judge, eval rubric, prompt optimization, A/B prompt, temperature, prompt template.
Use this skill whenever the user is authoring, debugging, or comparing prompts — not when they need a finished answer to the underlying question itself.
Follow these steps in order. Skip a step only with a stated reason.
references/patterns.md (extraction, classification, generation, transformation, agentic/tool-use, judge). The pattern dictates structure and which scaffolds matter.references/output-contracts.md.references/few-shot.md.references/patterns.md.scripts/eval_prompts.py to run variants and compute pass rates. See references/evaluation.md.templates/prompt-spec.md.Put these in roughly this order; omit sections that don't apply.
<document>...</document> so data can't be confused with instructions (also reduces prompt-injection surface).templates/prompt-spec.md).scripts/eval_prompts.py on a golden set.references/patterns.md — task→pattern mapping, per-pattern templates, decoding params, anti-injection notes.references/output-contracts.md — enforcing JSON/schema, common failure fixes, validation strategy.references/few-shot.md — how many examples, selection, ordering, formatting.references/evaluation.md — building golden sets, scoring methods, LLM-as-judge, statistical sanity.templates/prompt-spec.md — fill-in spec capturing the prompt, params, and eval results.examples/email-classifier.md — full worked example from vague request to evaluated prompt.scripts/eval_prompts.py — runnable harness that scores prompt variants against a golden set (exact-match and pluggable scorers).| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 16,191 | 13,370 | -17% | 1 | 1 | 0% | 3,174 | 4,193 | +32% | 0 | 0 | — |
case-02 | fail→fail | 27,921 | 26,252 | -6% | 1 | 1 | 0% | 5,605 | 6,728 | +20% | 0 | 0 | — |
case-03 | fail→fail | 8,871 | 10,257 | +16% | 1 | 1 | 0% | 1,398 | 3,313 | +137% | 0 | 0 | — |
case-04 | fail→fail | 2,188 | 7,928 | +262% | 1 | 1 | 0% | 319 | 2,961 | +828% | 0 | 0 | — |
case-05 | pass→pass | 6,284 | 3,844 | -39% | 1 | 1 | 0% | 1,309 | 2,500 | +91% | 0 | 0 | — |
case-06 | pass→pass | 2,206 | 1,951 | -12% | 1 | 1 | 0% | 402 | 1,865 | +364% | 0 | 0 | — |
case-07 | pass→pass | 13,684 | 10,918 | -20% | 1 | 1 | 0% | 2,651 | 3,796 | +43% | 0 | 0 | — |
case-08 | pass→pass | 15,146 | 13,808 | -9% | 1 | 1 | 0% | 2,751 | 4,048 | +47% | 0 | 0 | — |
case-09 | pass→pass | 13,996 | 8,508 | -39% | 1 | 1 | 0% | 2,177 | 2,961 | +36% | 0 | 0 | — |
case-10 | pass→pass | 8,075 | 26,702 | +231% | 1 | 1 | 0% | 1,325 | 2,869 | +117% | 0 | 0 | — |
case-21 | pass→pass | 12,141 | 9,169 | -24% | 1 | 1 | 0% | 1,943 | 3,093 | +59% | 0 | 0 | — |
case-11 | pass→pass | 8,232 | 7,840 | -5% | 1 | 1 | 0% | 1,329 | 2,961 | +123% | 0 | 0 | — |
case-12 | pass→pass | 9,797 | 17,173 | +75% | 1 | 1 | 0% | 1,728 | 3,212 | +86% | 0 | 0 | — |
case-13 | pass→pass | 13,072 | 9,287 | -29% | 1 | 1 | 0% | 2,449 | 3,206 | +31% | 0 | 0 | — |
case-14 | fail→pass | 12,521 | 9,162 | -27% | 1 | 1 | 0% | 2,181 | 3,046 | +40% | 0 | 0 | — |
case-15 | pass→pass | 9,810 | 14,289 | +46% | 1 | 1 | 0% | 1,619 | 3,080 | +90% | 0 | 0 | — |
case-16 | pass→pass | 7,083 | 6,190 | -13% | 1 | 1 | 0% | 1,261 | 2,600 | +106% | 0 | 0 | — |
case-17 | pass→pass | 15,073 | 12,238 | -19% | 1 | 1 | 0% | 2,621 | 3,713 | +42% | 0 | 0 | — |
case-18 | pass→pass | 11,935 | 8,146 | -32% | 1 | 1 | 0% | 2,194 | 3,028 | +38% | 0 | 0 | — |
case-19 | pass→pass | 11,758 | 9,227 | -22% | 1 | 1 | 0% | 1,950 | 3,167 | +62% | 0 | 0 | — |
case-20 | pass→pass | 9,154 | 9,848 | +8% | 1 | 1 | 0% | 1,470 | 3,216 | +119% | 0 | 0 | — |
case-22 | pass→pass | 9,728 | 6,288 | -35% | 1 | 1 | 0% | 1,688 | 2,620 | +55% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +5 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/3/2026 | +4% |
Other measured skills in the registry, with their headline benchmark lift.