Prompt-fixaren som diagnostiserar innan den skriver om

Prompt-fixaren som diagnostiserar innan den skriver om

Klistra in en bristfällig prompt i nästan vilken "prompt-optimerare" som helst och du får samma rörelse: din prompt går in i en magisk mall — 4D-ramverk! 27 mönster! — och kommer tillbaka längre, omstrukturerad från topp till botten, utan något register över vilken ändring som faktiskt spelade roll eller om den fortfarande gör samma uppgift. Den läses bättre. Om den fungerar bättre är en helt annan sak, och verktyget kontrollerar aldrig det.

Vi driver en katalog som benchmarkar Claude-skills på heltid, och vi ville ha motsatsen. Så vi byggde prompt-discipline, och den behandlar en prompt som du skulle behandla en buggrapport: namnge felmönstret först, applicera den minsta fix som adresserar det, säg sedan exakt hur man A/B-testar ändringen. Den är gratis och MIT-licensierad: github.com/Skillproofdev/prompt-discipline.

Luckan: omskrivare diagnostiserar inte, diagnostiker behöver infrastruktur

Innan vi skrev en regel kartlade vi 43 prompt-engineering-skills i vår katalog plus de fristående verktygen — Anthropics egen Console-promptförbättrare, PromptPerfect, DSPy, getsentrys prompt-optimizer. Fältet delar sig i två läger som aldrig överlappar.

Mallomskrivare transformerar varje indata på samma sätt. Det finns inget steg som frågar vad är egentligen fel här — en vag prompt och en motsägelsefull prompt får samma behandling, och utdatan är pålitligt längre. Det här är ingen halmgubbe: Anthropics egen Console-förbättrare varnar öppet för att dess omskrivningar kommer ut längre och långsammare. Längre är produkten.

Utvärderingsfrist pipelines — DSPy, spårdrivna optimerare — har rätt epistemik. De mäter faktiskt. Men de behöver infrastruktur: produktionsspår, en MCP-server, en worktree-rigg, ett märkt dataset du sätter ihop först. Du griper inte efter dem för att fixa prompten du redigerar just nu.

Ingen paketerar mellanvarianten: en beroendefri skill som gör diagnos-först → minimal-diff → A/B-testplan, utan spår och utan server att sätta upp. Det gapet är hela skillen.

Nio regler, tre av dem är poängen

Skillen är en uppsättning hårda regler applicerade i ordning (hela SKILL.md). Det välbekanta finns med — utdataformat som ett positivt kontrakt (en nyckellista med typer, inte "svara i JSON"), exempel istället för adjektiv, förbudslistor omskrivna som gör-instruktioner, ordningen roll→data→instruktioner→exempel→fråga. De tre som definierar den:

  1. Diagnostisera innan du rör vid något. Klassificera vad som faktiskt är fel — tvetydighet, saknad kontext, inget utdatakontrakt, motsägande instruktioner, risk för formatdrift, överprompting, eller "inte ett promptningsproblem alls" — och citera den skyldiga passagen för varje fynd. Ingen diagnos, ingen omskrivning. "Den här prompten är bra" är ett giltigt, komplett utdata.
  2. Minimal diff, en ändring per fel. Varje ändring mappar till exakt ett diagnostiserat fel, visad som gammal → ny med en motivering på en rad. Fungerande delar behålls ordagrant. Där Console-förbättraren fyller på brukar den här komma ut kortare — döda besvärjelser ("du är världens bästa …", "ta ett djupt andetag", slitna "tänk steg för steg"-scaffolds) skärs bort.
  3. En testplan, inte ett löfte. Varje omskrivning levereras med 2–3 konkreta testindata inklusive ett gränsfall, hur ett godkänt resultat ser ut, och A/B-proceduren: samma indata, samma modell, 3–5 körningar vardera, jämför andel godkända. Om ändringar staplades namnger den vilken som ska återställas först. Den lovar aldrig "det här kommer fixa det" — du ändrade variabler, testet avgör.

Benchmarket — och ett förbehåll du behöver först

Tio genuint bristfälliga prompter, var och en parad med en uppgift som har ett mekaniskt kontrollerbart svar: extraktion mot känt facit, formatering som måste tolkas (json.loads / csv.reader), klassificering mot märkta exempel. Tre grenar per fall — den ursprungliga prompten, en basomskrivning (vanlig Claude ombedd "förbättra den här prompten"), och en skillomskrivning (identisk session med denna SKILL.md inläst). Alla omskrivningar körs sedan som uppgifter på samma modell.

Läs det här innan tabellen: körningen är n=1 per fall och gren, inte det förregistrerade n=5. Urvalsvarians är inte uppmätt. Ett enskilt fallgap (0,1) ligger inom brusgolvet. Behandla varje siffra här som preliminär i väntan på en n=5-replikering — det gör vi.

Gren Uppgiftsframgång Formatefterlevnad Median promptlängd Δ
A — ursprunglig prompt 0,70 (7/10) 0,70 (7/10)
B — basomskrivning ("förbättra den här prompten") 0,80 (8/10) 0,70 (7/10) +99,5 ord
C — skillomskrivning (denna SKILL.md) 0,90 (9/10) 0,80 (8/10) +44,5 ord

Mot det förregistrerade testet klarar skillen sig: den ligger jämsides med eller slår basomskrivningen på framgång (0,90 ≥ 0,80) och efterlevnad (0,80 ≥ 0,70), klarar +15 procentenheter-ribban över originalet (+20 pp), och gör det medan den lägger till mindre än hälften av promptutfyllnaden — median +44,5 ord mot basomskrivningens +99,5. Den sista siffran är det mest robusta fyndet i hela körningen: C är slankare på alla tio fallen, och det är den enda gren som någonsin går negativ (fall 10, −10 ord, genom att skära bort en förbudshög ur en systemprompt). Både naiv omskrivning och disciplinerad omskrivning blåser upp korta prompter; den naiva ungefär fördubblar kostnaden.

Där det är tunt, och där den förlorade

Framgångs- och efterlevnadsfördelarna är riktiga men sköra, och vi tänker inte låtsas något annat.

På 7 av de 10 fallen är alla tre grenarna oavgjorda. Framgångsmarginalen vilar nästan helt på fall 6 (ärendeklassificering), det enda fallet skillen vinner rakt av: C producerade korrekta, per-post-tolkningsbara etiketter (15/15) medan basomskrivningen fick 13/15 i ett format som inte gick att tolka. Dra bort det fallet och toppsiffran försvinner nästan helt. Det är vad n=1 med många oavgjorda ser ut som — ärligt, inte förödande, men du bör veta det.

Fall 9 är en förlust för skillen på dess egna villkor. En tonjusteringsprompt med en saknad målgrupp — exakt situationen Regel 2 finns för ("ange ditt antagande när avsikten är omöjlig att avgöra"). Regeln utlöstes inte. Skillens omskrivning tappade problemet med den saknade målgruppen, och C misslyckades tillsammans med A och B. En skill som förlorar mot precis det den är specifikt designad att fånga är den mest användbara typen av negativt resultat, så det stannar i tabellen.

Fall 2:s efterlevnad är 0 över alla tre grenarna. En prompt med motsägande instruktioner: varje gren löste motsägelsen i innehåll (fick rätt tal) men ingen tvingade fram ett enda utdatavärde, så alla tre fick 0 på format. Ingen av omskrivarna — disciplinerad eller ej — tänkte på att tvinga fram kontraktet. Delad blind fläck, rapporterad inte gömd.

Vi testar andras skills för att leva, och vår metodik kräver att förlusterna redovisas bredvid vinsterna. Det här är förlusterna.

HÄMTA SKILLEN

prompt-discipline är gratis och MIT-licensierad — repot är skillen. Läs varje regel, kör benchmarket själv, forka den.

Hämta prompt-discipline på GitHub

Installation

git clone https://github.com/Skillproofdev/prompt-discipline ~/.claude/skills/prompt-discipline

Starta om Claude Code. Den triggas av "förbättra den här prompten", "varför misslyckas min prompt", "optimera prompt", och när du skriver eller reviderar systemprompter och agentinstruktioner — och den avböjer jailbreak-/säkerhetskringgåendebegäranden och prompter för bild-/videogenerering, som har sin egen grammatik. Den ansluter till vår disciplinserie: token-discipline minskar vad en session kostar, research-discipline minskar vad research har fel om, och den här skär ner promptomskrivningar till ändringen som faktiskt spelade roll.

GRATIS STARTPAKET

Vill du ha våra bäst testade skills plus installationschecklistan vi kör inför varje test? Vi mejlar dig det gratis startpaketet.

Hämta det gratis startpaketet

FAQ

Hur skiljer sig det här från Anthropics Console-promptförbättrare? Console-förbättraren är en mallomskrivare — den omstrukturerar hela prompten och varnar öppet för att resultatet blir längre och långsammare. prompt-discipline diagnostiserar det specifika felet först, ändrar bara det som mappar till det felet, och i vårt benchmark lade den till mindre än hälften så mycket längd samtidigt som den ofta kom ut kortare. Olika mål: Console-verktyget producerar en polerad prompt; det här producerar den minsta försvarbara diffen plus ett sätt att bevisa den.

Varför publicera ett benchmark du erkänner är n=1? För att alternativet i den här nischen är att publicera inga siffror alls, vilket är normen vi reagerar mot. n=1 med förbehållet tydligt uttalat är mer ärligt än ett självsäkert påstående utan mätning bakom. Fyndet om medianlängd är solitt över alla tio fallen; framgångs- och efterlevnadsfördelarna är preliminära och märkta som sådana, i väntan på en n=5-replikering.

Skriver den alltid om min prompt? Nej. Om prompten är bra säger skillen det och stannar — "den här prompten behöver inga ändringar; här är den enda risken att testa" är ett giltigt, komplett utdata. Den vägrar också att fylla ut en diagnos bara för att motivera att applicera en mall, och den avböjer jailbreak-begäranden rakt av istället för att "förbättra" dem.

Kommer det här fixa min prompt? Den lovar inte det, och det borde inget verktyg som inte kört din uppgift göra heller. Skillen ändrar variabler och ger dig en konkret A/B-procedur — samma indata, samma modell, 3–5 körningar — så att testet avgör, inte känslan av en snyggare prompt.

★ 9.6/10 × 3

Gratis startpaket

De 3 skills som fått våra högsta testbetyg plus installationschecklistan — setupen vi själva skulle lägga på en ny maskin. Gratis, via e-post.

Ett mejl med paketet + en kort veckosammanfattning av nya testresultat. Avsluta prenumerationen när du vill.