prompt-engineering — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited prompt-engineering (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Based on the dair-ai Prompt Engineering Guide.
Every effective prompt has four addressable slots:
| Slot | Purpose | Required? |
|---|---|---|
| Instruction | What the model must do | Always |
| Context | Background the model needs | Usually |
| Input | The actual data to process | Usually |
| Output format | Shape of the expected response | Always |
Omitting output format is the single most common source of inconsistent LLM behaviour.
[SYSTEM / INSTRUCTION]
You are a classification assistant. Given a customer message, return a JSON object
with keys `category` (string) and `confidence` (0–1 float). No prose.
[CONTEXT]
Categories: billing, technical_support, general_inquiry, escalation.
[INPUT]
Customer message: "{{message}}"
[OUTPUT FORMAT]
{"category": "...", "confidence": 0.0}Escalate only when the simpler technique fails.
| Technique | When to use | Trade-off |
|---|---|---|
| Zero-shot | Simple, well-defined tasks; model has strong priors | Fastest, cheapest |
| Few-shot | Task needs format adherence or domain nuance | +tokens per call |
| CoT (standard) | Multi-step reasoning; math; rubric scoring | Much larger context |
| Zero-shot CoT | CoT benefit without writing examples | Slightly less precise than standard CoT |
Rule of thumb: start zero-shot, add few-shot if format drifts, add CoT if reasoning is wrong.
Q: A rubric has 4 criteria each scored 1–5. Score: [3, 4, 2, 5]. Is the overall
score above 14?
A: Sum = 3+4+2+5 = 14. 14 is not above 14. Answer: No.
Q: Score: [4, 4, 3, 5]. Is the overall score above 14?
A: [model continues reasoning]Evaluate this response against the SME rubric. Think step by step before giving
your final score.When scoring against a fixed SME rubric, force the model to cite the rubric criterion before assigning a score. This prevents hallucinated justifications.
For each criterion below, quote the relevant excerpt from the response, then
assign a score (1–5). Only after scoring all criteria give the aggregate.Claude's tool-use depends on crisp tool descriptions. Treat each tool description as a mini prompt.
tools = [
{
"name": "search_knowledge_base",
"description": (
"Search the internal knowledge base for information relevant to a user question. "
"Use when the user asks about product features, pricing, or policies. "
"Do NOT use for general world knowledge — only internal docs."
),
"input_schema": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "Concise search query, max 15 words"}
},
"required": ["query"]
}
}
]Key rules:
[SYSTEM]
You are a strict evaluator using the rubric below. Return only valid JSON.
Do not infer intent beyond what is stated in the rubric.
RUBRIC (locked — do not modify):
{{rubric_text}}
[USER]
Evaluate the following response.
Response: """{{response_text}}"""
Reference answer: """{{reference_text}}"""
Output format:
{
"scores": {"criterion_1": <int 1-5>, "criterion_2": <int 1-5>, ...},
"aggregate": <float>,
"reasoning": "<one sentence per criterion>"
}Failure modes to avoid:
[SYSTEM]
Answer the user's question using ONLY the provided context.
If the context does not contain sufficient information, say "I don't have enough
information to answer that." Do not fabricate facts.
[CONTEXT]
{{retrieved_chunks}}
[USER QUESTION]
{{question}}Checklist before shipping a RAG prompt:
--- between chunks)| Failure | Symptom | Fix |
|---|---|---|
| Under-specification | Output length/format varies wildly | Add explicit output format slot |
| Conflicting instructions | Model alternates between behaviours | Audit system + user turns for contradictions; put the authoritative rule in SYSTEM |
| Role confusion | Model breaks character or ignores persona | Define role with negative examples: "You are X. Do not do Y." |
| Prompt injection | User input overrides system instructions | Delimit user content: User input: """{{input}}""" |
| Hallucinated tool calls | Model invents tool arguments | Add "required" fields + description constraints to input schema |
| Rubric drift | Scores shift across runs with same input | Pin temperature to 0; add CoT + cite-before-score pattern |
Treat prompts as code. A prompt change without an eval is a blind deploy.
prompts/
classifier/
v1.0.0.md # baseline
v1.1.0.md # added CoT
v1.2.0.md # tightened output format
rag/
v1.0.0.mdChecklist before shipping a prompt change:
For Claude models, also record: model version pinned, temperature, max_tokens, and any top_p / top_k settings — these affect output distribution as much as the prompt text.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.