prompt-optimizer — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited prompt-optimizer (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.
v3 — Apr 2026. Fixes three real bugs surfaced by the 20-prompt A/B test (see full_results.json, Apr 24 2026):
[CV], [JD]) as if material were present; converted ambiguous hints ("I have a draft to share") into locked workflows; and dropped explicit format directives ("both analyses side by side") during restructuring. Step 4.5 enumerates every signal in the raw prompt before any restructuring and requires each to be preserved or explicitly overridden with rationale.[Confirmed]/[Inferred] confidence tags now require explicit source material in the prompt. <research_activation> now explicitly degrades to "state what you don't know" when no search tool is present. These two patterns drove the only two "won on rubric, lost on verdict" cases in the A/B test — both caused Claude to fabricate specifics with false confidence markers.Issues surfaced in the same A/B test that are not skill bugs and are flagged for separate work:
framework_application_private_debt and agentic_research_watchlist (captured only the output-format tail; the -35 and -11 "losses" are extraction failures, not skill output).Optimize prompts to reach the ceiling of what Claude can produce on a given task — but ONLY when the task warrants it. Rigorous optimization on a prompt that doesn't need it produces worse output, not better. The skill's first job is to decide whether to optimize at all.
Stop optimizing prompts. Start optimizing the Claude session that the prompt initiates.
A prompt is not a request. It is the keystone of an interaction. The job of optimization is not to make the prompt well-formed — it is to make Claude perform at the top of its distribution on the task the prompt describes.
But this logic only applies when the task has a ceiling worth reaching. A PTO email does not. Forcing XML scaffolding, capability activation, and 6-section diagnostic outputs onto casual communication tasks makes the downstream output worse, not better — it bloats the prompt, buries the actual ask, and ships Claude a bureaucratic commission when the user wanted a 3-sentence note. This is a SEVERE failure mode (see Failure Modes section).
The skill therefore operates in three bands, triaged before any optimization work begins.
A second, equally important philosophy is added in v3: preserve the user's signals; restructure only what the user didn't specify. The raw prompt is the user's compressed intent. Every format directive, placeholder, ambiguity marker, and workflow hint is a signal. Optimization that overwrites those signals produces a prompt Claude follows perfectly — to the wrong target.
Classify the input into one of three bands using the four tests below. State the verdict explicitly in one line before proceeding. The user may override (e.g., "treat as IN PURVIEW") if they disagree.
Run all four. Score each with OUT / BORDERLINE / IN leaning.
Test 1 — Artifact type. What is the downstream output?
Test 2 — Raw prompt word count.
Test 3 — Analytical load. Does the task require reasoning, decomposition, research, evaluation, or synthesis?
Test 4 — Consequentiality. What is the downstream cost of a mediocre output?
Before any further work, state:
TRIAGE: [OUT OF PURVIEW | BORDERLINE | IN PURVIEW] — [one-sentence rationale citing the two or three tests that drove the call]
If the user disagrees, they can override in their next message. Proceed to the band-appropriate output path below.
Return exactly this, and nothing else:
TRIAGE: OUT OF PURVIEW — [rationale]
>
Verdict: this prompt is already well-calibrated for its task. Rigorous optimization would over-engineer it and degrade the downstream output.
>
Surgical note (optional, only if genuinely missing): [one sentence naming the single missing element, if any — typically a date, audience, or length spec. If nothing is missing, write "None — send as is."]
>
That is the entire response. Do NOT add a diagnostic table, archetype detection, XML scaffolding, change log, ceiling check, or use case guidance. Doing so defeats the purpose of the triage.
Self-check before finalizing Path A. If your surgical note names 2 or more distinct gaps (e.g., "you need to specify X, Y, and Z"), the triage miscalled. A prompt with 2+ real gaps is BORDERLINE by the skill's own definition. Re-classify and route to Path B. Path A is only valid when the prompt is genuinely one-gap-or-less from ready.
Return exactly three sections:
SECTION 1 — TRIAGE & DIAGNOSIS One line of triage verdict. Then 2–4 bullets naming the specific gaps worth closing (typically: audience, output format, length, tone, one missing constraint). Do NOT run the full 9-dimension scoring — it's theater at this band.
SECTION 2 — OPTIMIZED PROMPT The original prompt with surgical additions — typically 1 to 3 added sentences or constraints, inline. NO XML scaffolding. NO capability activation layer (no reasoning scaffolds, no anti-sycophancy permissions, no uncertainty flagging, no working principles). If the original works as a paragraph, it stays a paragraph. Copy-paste ready.
SECTION 3 — CHANGE LOG Two to four bullets. Each names what changed and why, in plain language. No diagnostic dimension tags — they don't earn their place here.
No ceiling check, no use case guidance. BORDERLINE outputs aren't the kind of thing that has a ceiling.
Proceed through Steps 1–8 below, producing the seven-section output described under "IN PURVIEW output format" at the end of this document.
This is the full rigorous treatment. Apply ONLY when Step 0 returned IN PURVIEW.
Before changing anything, state in 2–3 sentences: what this prompt is trying to accomplish, who would use it, and what a successful output looks like. This is the north star — every optimization must serve this intent.
Identify which archetype the prompt belongs to. Different archetypes require different optimization patterns:
State the archetype explicitly. If the prompt straddles multiple, name the primary one and note the secondary.
Score the original prompt on these nine dimensions (1–10 each). For any dimension scoring below 7, identify the specific deficiency:
Structural dimensions (the foundation):
Capability dimensions (the ceiling):
4.7 calibration note. Claude 4.7 has raised the floor on three techniques below — reasoning activation, anti-sycophancy, and research activation. The model now decomposes on genuinely hard analytical tasks by default, pushes back more readily on weak premises, and searches more aggressively on present-tense factual questions. This does not make these techniques obsolete. It makes their application more selective:
The other capability techniques — epistemic calibration, pushback permission, working principles, self-critique — are unchanged in their value. Apply all techniques where they earn their place, not where they're traditionally expected.
This is where most prompt optimizers fall short. Apply these techniques where the archetype and task warrant them. Do not apply them mechanically — apply them where they earn their place.
Reasoning activation (for analytical, strategic, or complex tasks):
Anti-sycophancy permissions (for any prompt seeking analysis, evaluation, or critique):
Epistemic calibration (for any prompt where accuracy matters) — USE WITH EXPLICIT PRECONDITIONS (v3):
[Confirmed], [Inferred], [Speculative]) REQUIRE explicit source material in the prompt. Do not apply them to tasks where Claude has no grounding — they become hallucination licenses, producing fabricated specifics with false confidence markers. (Observed failure: on the research_synthesis_banks_data test case, these tags caused Claude to emit [Confirmed]-labeled false claims about named executives and dollar amounts.)Research activation (for prompts that need current information or external grounding) — GRACEFUL DEGRADATION (v3):
Pushback and challenge (for keystone prompts and decision-support tasks):
Working principles (for keystone prompts):
Before restructuring, enumerate every signal the raw prompt carries. Signals are compressed intent. Structural expansion that overwrites them produces a prompt Claude executes perfectly to the wrong target.
Scan the raw prompt for all of the following. Log each one you find. Each must be either preserved verbatim or explicitly overridden with a rationale in the change log.
a) Explicit format directives. Phrases like "side by side", "in a table", "as a comparison", "bullet points only", "one paragraph", "1,500 words", "in the style of X". These are non-negotiable. If the user asked for a table, the optimized prompt asks for a table. If the user said "both analyses side by side," the optimized <output_format> must be "side-by-side structure" — not "Section A, then Section B, then a comparison section."
b) Unfilled placeholders. Tokens like [CV], [JD], <DOCUMENT>, {INPUT}, [paste here], or any bracketed ALL-CAPS or clearly-templated token. These indicate the user plans to paste material the prompt cannot operate without. The optimized prompt MUST NOT wrap these in a <materials> tag or anywhere that implies material is already present — doing so causes Claude to fabricate imagined content in place of the missing input. (Observed failure: on career_cv_reframe, wrapping [CV][JD] as <materials> caused Claude to invent a full fictional profile.) Instead, either (i) include an explicit conditional — "If placeholders are not filled, ask the user to provide the material before proceeding" — or (ii) require the first action to be a check that material is present.
c) Ambiguity hints. Soft phrases like "I have a draft to share", "let me know what else you need", "happy to share more context", "I can send X if useful". These mark places where the user has NOT yet decided whether to include input or how the workflow will run. The optimizer MUST NOT convert these into locked workflows that require the user to supply the missing input before Claude can act. Preferred pattern: phrase the task so Claude can produce its best immediate output AND offer to incorporate the additional material when received. (Observed failure: on essay_oped_compute, "I have a rough draft I can share" was converted into a multi-round critique workflow that made Claude wait for the draft instead of producing a reference op-ed.)
d) Explicit prohibitions. Phrases like "don't invent X", "work only with what I've given you", "no hallucination", "no fabrication", "cite only real sources". These are protective constraints the user is actively flagging. They must be preserved verbatim or strengthened — never softened, never dropped.
e) Workflow hints. Phrases that reveal the user's implicit operating mode: "first pass", "quick and dirty", "I'll iterate", "final version", "this ships today". These calibrate how much Claude should invest in the response. A "first pass" prompt should not get an exhaustive keystone treatment.
f) Length/scope markers. Word counts, slide counts, page budgets, "brief", "comprehensive", "quick". If the user specified a scope, that scope is the ceiling, not the floor.
Output of this step: a short bulleted list of the signals detected, each marked PRESERVED, STRENGTHENED, or OVERRIDDEN (with rationale). Carried forward into Step 5 and Step 7.
Rewrite the prompt applying both structural techniques and capability activation. Use these tools where they earn their place — never decoratively. Every structural addition must be compatible with the Step 4.5 signal inventory; any tool that would override a preserved signal is disallowed.
Structural tools:
<role> — define who Claude embodies and what expertise it brings. Be specific about depth (not "analyst" but "senior analyst with 15 years in X who has internalized Y framework")<constraints> to prevent the prompt's most likely failure modes<output_format> if the response shape is unspecified. If the user DID specify a shape (Step 4.5, signal a), the format block echoes it — do not invent a different shape.<failure_modes> describing what bad output looks like<evaluation_criteria> defining what good output looks like[bracketed placeholders] for variable content — ONLY where the user has actual variable content to substitute. Do not invent placeholders the raw prompt did not carry.Capability tools:
<reasoning_protocol> or inline "think before responding" instructions for analytical tasks<pushback_permission> or anti-sycophancy clauses for evaluation tasks<uncertainty_handling> for accuracy-sensitive tasks (see Section 4 for confidence-tag preconditions)<research_activation> for tasks needing current/external information (see Section 4 for graceful-degradation pattern)<working_principles> for keystone prompts establishing session norms<self_critique> requirements for high-stakes outputsPreserve the original's intent, voice, and core logic. Even at IN PURVIEW, do not pile on techniques that don't earn their place.
The previous "Ceiling Check" asked only "what could we add to approach the maximum?" It never asked "what, if added, would crash the turn?" Both questions matter; the second one matters more, because the capability activation layer makes it easy to specify output budgets Claude cannot deliver in a single turn.
Run all four checks below. Each can reduce the optimization, not just extend it.
a) Single-turn output budget. Count the distinct substantive sections the optimized <output_format> asks for. Count deep analytical asks (e.g., "evaluate against 5 criteria," "apply two frameworks in parallel," "produce a ranked list of 10 with rationale each").
Thresholds (calibrated to Claude's ~8K-token single-turn ceiling on long-form outputs):
b) Context-dependency honesty. If the prompt depends on information Claude may not have (current state of a market, recent news, specific corporate actions, data the user hasn't supplied), and the runtime may not have search:
[Confirmed]/[Inferred] confidence tags were added in Section 4, verify they have source material to operate on. If not, remove them; they become hallucination licenses.c) User-format preservation. Re-read the raw prompt one more time. Find every format directive (see Step 4.5 signal a). Verify each one is either reflected in the optimized <output_format> or explicitly overridden in the change log. If the user said "side by side," the output format says "side by side." If the user said "1,500 words," the length constraint says 1,500 words. No exceptions.
d) Input-presence conditional. If Step 4.5 flagged unfilled placeholders, verify the optimized prompt contains the explicit conditional: "If [placeholders] are not filled with actual material, first ask the user to provide it before proceeding." Without this, Claude may fabricate the missing input to satisfy the structural scaffolding.
Output of this step: a 2–4 bullet feasibility verdict. If any check failed, modify the optimized prompt before proceeding to the change log. The goal is a prompt that is feasible in one turn and faithful to the user's signals, not a prompt that activates every capability technique.
For each substantive change, state: what was changed, why, and what failure mode it prevents or what quality dimension it improves. Map each change to either a diagnostic dimension, a capability activation technique, a preserved signal (Step 4.5), or a feasibility correction (Step 6). Specific, traceable changes only.
State when this prompt is most effective, when it's not the right tool, and what complementary prompts (if any) it pairs well with. For keystone prompts, also state what the user should expect from the session it initiates.
Explicitly state: what single-turn output to expect from this prompt. If the optimized prompt is built to fit Claude's single-turn budget, say so. If it is built to span multiple turns, state the turn structure. This is the user's advance warning that the prompt will not produce the full output in one reply.
Return exactly seven sections (the triage line plus the six analytical sections):
TRIAGE: IN PURVIEW — [one-sentence rationale]
SECTION 1 — INTENT & ARCHETYPE The intent statement (2–3 sentences) and the detected archetype with brief rationale.
SECTION 2 — DIAGNOSTIC The nine-dimension scoring, presented as a clean table or structured list, with specific deficiency notes for any dimension below 7. Group by structural vs. capability dimensions.
SECTION 3 — SIGNAL INVENTORY (new in v3) A bulleted list of signals detected in the raw prompt per Step 4.5, each marked PRESERVED, STRENGTHENED, or OVERRIDDEN (with rationale).
SECTION 4 — OPTIMIZED PROMPT The full rewritten prompt in a code block. Must be copy-paste ready and self-contained.
SECTION 5 — FEASIBILITY VERDICT (new in v3, replaces old Ceiling Check) The four feasibility checks from Step 6 and their verdicts. Explicit statement of single-turn feasibility and any multi-turn structure.
SECTION 6 — CHANGE LOG A concise list of changes, each tagged with the diagnostic dimension, capability technique, preserved signal, or feasibility correction it addresses. Specific and traceable.
SECTION 7 — USE CASE GUIDANCE When to use this prompt, when not to, what it pairs with, what single-turn output to expect, and (for keystone prompts) what to expect from the session. 3–6 sentences.
[CV], [JD]) as if material were present — invites Claude to fabricate the missing input. (career_cv_reframe.)[Confirmed]/[Inferred] confidence tags to tasks without source material — causes Claude to emit fabricated specifics under false confidence markers. (research_synthesis_banks_data.)code_gen_folder_watcher (-4.67 margin): the optimized prompt asked for architectural depth + schema + systemd unit + install script; Claude truncated mid-file in the first module.BAD OUTPUT looks like: adding a <role> tag to every prompt regardless of need, wrapping simple instructions in XML without improving them, mechanically applying every capability activation technique to every prompt, producing a change log that says "added structure for clarity" without specifying what structure and what clarity, rewriting a prompt so heavily that the original author wouldn't recognize their intent, or producing optimizations that work on any LLM rather than specifically activating Claude's strengths.
The most common failures:
For IN PURVIEW outputs, a strong optimization will:
For BORDERLINE outputs, a strong optimization will:
For OUT OF PURVIEW outputs, a strong optimization will:
The ultimate test: if the user runs the optimized prompt as the keystone of a new Claude session, does the session produce output that surprises them with its depth, accuracy, and utility? That's state-of-the-art — but it is only a relevant test at IN PURVIEW. For OUT OF PURVIEW, the ultimate test is simpler: did the optimizer get out of the way?
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.