Syntic
← All skills
EngineeringFreeCommunityv1.0.0

senior-prompt-engineer

Use when optimizing a prompt, building an eval set, measuring RAG retrieval quality, designing few-shot examples, or reviewing an agent config for tool-use risk.

About this skill

Use when optimizing a prompt, building an eval set, measuring RAG retrieval quality, designing few-shot examples, or reviewing an agent config for tool-use risk.

SKILL.md

senior-prompt-engineer.SKILL.md

Place it in your Syntic skills folder. For Syntic Code, install in your local skills directory, review the contents and run it in a controlled environment first.

SKILL.md
---
name: senior-prompt-engineer
description: Use when optimizing a prompt, building an eval set, measuring RAG retrieval quality, designing few-shot examples, or reviewing an agent config for tool-use risk.
category: Engineering
version: 1.0.0
tools: []
---

# Senior Prompt Engineer

Eval-driven prompt engineering, RAG quality measurement, and agent workflow validation — model-agnostic: techniques are framed by what they do, not which model generation they were observed on. Always ask the user for their provider's current per-token pricing before quoting dollar figures; never trust a remembered price table.

## Operating rules

1. **Never change a prompt without a baseline.** Capture clarity/structure metrics first, then compare every iteration against that baseline.
2. **Build the eval set before optimizing.** 10–20 representative cases with expected outputs, minimum. If none exists, build one with the user before touching the prompt — optimizing against vibes is the number-one failure mode.
3. **Prefer platform features over prompt hacks.** If the provider offers native structured outputs / JSON schema enforcement, tool-use APIs, or prompt caching, use those instead of "respond ONLY with JSON" instructions — prompt-level format enforcement is the fallback, not the default.
4. **Current-generation models need less scaffolding.** Don't add chain-of-thought boilerplate, role framing, or few-shot examples reflexively — frontier models often do worse with redundant scaffolding. Add each element only when the eval set shows it helps.
5. **Cost numbers are always user-supplied**, looked up fresh, never assumed.

## Prompt optimization (eval-gated)

1. Establish a baseline: token estimate, a clarity/structure score, and flag ambiguity or redundancy in the current prompt.
2. Diagnose from the baseline: ambiguous verbs ("analyze," "handle"), redundant blocks, a missing output contract, or token waste.
3. Apply one change at a time, in order of leverage:
   - Malformed/unparseable output → native structured outputs / JSON schema if the API supports it, explicit schema-in-prompt otherwise.
   - Inconsistent answers across runs → tighten instructions and add 2–3 contrastive examples, including one near-miss showing what NOT to do.
   - Misses edge cases → enumerate them explicitly, add a "when uncertain, do X" rule.
   - Token bloat on repeated calls → move the stable prefix (system rules, examples) first so prompt caching applies; trim redundancy.
   - Wrong reasoning on hard cases → ask for stepwise reasoning in a scratch field the consumer ignores, or use the provider's extended-thinking mode.
4. Re-analyze the revision and compare it against the baseline.
5. **Eval gate before shipping**: run the revision over the full eval set; it must not regress clarity score below baseline, must not grow token count more than 10% over baseline, and must not lose any previously-passing eval case.

## Few-shot example design

Define the task contract first (input shape, output shape, edge-case policy). Start with zero examples and measure — current models often need none. Add examples only for the failure clusters the eval reveals; when adding, use 3–5 max, ordered simple → edge → negative (what NOT to extract), formatted identically to the real output contract. If a case only passes because it resembles an example, add a held-out variant to the eval set to catch that.

## Structured output design

Write the JSON Schema first (types, enums, required fields, max lengths). Prefer API-native enforcement (structured outputs / response schema / tool-call parameters) — it guarantees shape in a way prompt text cannot. Fall back to rendering the schema as field-by-field rules plus one valid example, with an explicit "output only the JSON object" instruction, only when the API lacks schema support. Gate: 10 eval outputs must all parse against the schema; anything less sends you back to the design step.

## RAG tuning loop

Build a question set (id, question, reference answer) and capture current retrievals for it, then measure context relevance, precision@k, coverage, answer faithfulness, and groundedness. Treat relevance below 0.80 as a retrieval problem — fix chunking, embeddings, or metadata filters — not a prompt problem; don't rewrite the generation prompt until retrieval is fixed. Fix the lowest metric first: low faithfulness → tighten grounding instructions ("answer only from context," require citations); low coverage → increase retrieval k or add query expansion. Gate every change against the prior baseline — every metric must be at or above baseline, any regression blocks the change.

## Agent config review

Validate tool wiring, missing required config, loop risk, and token estimates. Check context discipline: each tool description should be 1–2 sentences max, tool count minimal for the job, the stable system prompt placed first (cache-friendly), and an iteration cap with an early-exit condition present. Budget the cost per run against the user's current prices; if it exceeds budget, cut tools or trim context before downgrading the model.

Install

Syntic App

  1. 1Create a dedicated folder for this skill in your local skills library.
  2. 2Place SKILL.md into that folder.
  3. 3Restart Syntic and invoke this skill on matching tasks.

Syntic Code (CLI)

  1. 1Save SKILL.md in your local Syntic Code skills directory.
  2. 2Keep related files in the same skill folder.
  3. 3Run in a safe environment and validate outputs.