Spec-driven development on OpenSpec, with mechanical spec-as-source enforcement: a custom 'spec-as-source' OpenSpec schema adds file-ownership (targets) and test-verification ([@test]) metadata to every capability spec, three scripts (link check, ownership check, manifest build) keep code and specs from drifting apart, plus requirement-gathering, spec-writer, work-review, and a session-handoff skill with a proactive context-warning hook.
68
85%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
prompt-engineerDocumento di ricerca per la voce E20 (
add-prompt-engineer). Non è una spec e non è un target: è l'evidenza da cui la spec diprompt-engineerricava i suoi requisiti. Ogni regola cita la sua fonte per sigla.Metodo di raccolta. Tutte le pagine sono state lette il 2026-09-27 esclusivamente dalla sandbox: il browser Camoufox del container OrbStack
camofox-browser(API:9377), che ha navigato, cercato e restituito gli snapshot. Nessuna fetch dall'host.
| Sigla | Fonte | Tipo |
|---|---|---|
| [A-BP] | platform.claude.com — Prompting best practices (/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices) | ufficiale Anthropic |
| [A-O55] | platform.claude.com — Prompting Claude Opus 5.5 (/prompting-claude-opus-5-5) | ufficiale Anthropic |
| [A-CC] | code.claude.com — Best practices for Claude Code (/docs/en/best-practices) | ufficiale Anthropic |
| [P-O55] | promptessor.com — How to Prompt Claude Opus 5.5 (2026-09-23) | terza parte, fornita dall'utente |
| [IHAL] | ihal.it — Anthropic pubblica le nuove regole di prompting per Claude Opus 5.5 (2026-09-24) | terza parte, fornita dall'utente |
| [P-G6] | promptessor.com — How to Prompt GPT-6 Sol (2026-09-22) | terza parte, fornita dall'utente |
Dove una terza parte e una fonte ufficiale dicono la stessa cosa, vale la formulazione ufficiale. [P-G6] è la sola fonte non-Anthropic: le sue regole entrano qui solo dove convergono con quelle Anthropic, perché sono il segnale che la regola è una proprietà del buon prompt e non di un singolo modello.
Il prompt definisce il contratto del lavoro, non il modo di pensare. Dire
cosa è un risultato riuscito, con quali prove e quando fermarsi; lasciare il
ragionamento al modello e la sua profondità al parametro effort.
[A-O55 § Calibrate effort] [P-O55 § Conclusion] [P-G6 § Do Not Micromanage Private Reasoning]
R1 — Obiettivo prima del metodo. Il prompt apre con l'esito atteso, non con istruzioni su come ragionare. "Aggiorna il flusso di auth per supportare le passkey senza cambiare il login a password" batte "pensa a fondo e migliora il codice". [P-O55 § Define the Outcome Before the Method] [A-BP § Be clear and direct]
R2 — Le sezioni del contratto. Un prompt per lavoro serio ha, quando
servono: OBJECTIVE, CONTEXT, SCOPE (in / out / non toccare), TOOLS,
ACTION BOUNDARIES, VERIFICATION, OUTPUT, STOP CONDITION. Convergono
[P-O55 § A Practical Claude Opus 5.5 Prompt Structure] e
[P-G6 § The Core GPT-6 Sol Prompt Structure].
R3 — Solo le sezioni che riducono ambiguità reale. Le sezioni che non si applicano si tolgono: un prompt semplice resta semplice. La lunghezza è una conseguenza della complessità del task, non un obiettivo. [P-O55 § Reusable Template: "Remove sections that do not apply"] [P-G6 § Short vs. Detailed Prompts]
R4 — Contesto e perimetro sono sezioni distinte. Il contesto spiega l'ambiente; il perimetro dice cosa è permesso cambiare. Tenerli separati impedisce al modello di "migliorare" cose non richieste. [P-O55 § Separate Scope From Context] [A-BP § Overeagerness]
R5 — Spiegare il perché delle regole. Un vincolo con la sua motivazione generalizza meglio di un divieto nudo ("sarà letto da un TTS, quindi niente puntini di sospensione" > "MAI puntini di sospensione"). [A-BP § Add context to improve performance]
R6 — Delimitare i blocchi con tag XML. Istruzioni, contesto, esempi e input
variabili vanno ognuno nel suo tag (<instructions>, <context>, <input>,
<example>), con nomi coerenti e annidati quando c'è gerarchia.
[A-BP § Structure prompts with XML tags]
R7 — Test del collega. Se un collega senza contesto, leggendo il prompt, sarebbe confuso, lo sarà anche il modello. Un prompt per un subagente deve reggersi da solo. [A-BP § Be clear and direct: "Golden rule"] [A-CC § Let Claude interview you: "the most useful specs are self-contained"]
R8 — Ruolo solo se cambia le decisioni. Una riga di ruolo aiuta; personaggi lunghi e decorativi aggiungono rumore. [A-BP § Give Claude a role] [P-G6 § Mistakes #9 "Overloading the Prompt With Personas"]
R9 — Togliere le formule "pensa di più". "Think step by step", "think
carefully", "take a deep breath", "think hard" vanno eliminate, anche da
CLAUDE.md: il pensiero è adattivo e sempre attivo, e toglierle fa partire la
risposta prima senza perdita di qualità. La profondità si regola con effort.
[A-O55 § Thinking instructions in chat system prompts] [IHAL ¶1] [P-G6 § Do Not Micromanage Private Reasoning]
R10 — Non chiedere di riprodurre il ragionamento interno. Chiedere al
modello di scrivere nella risposta il proprio ragionamento può essere rifiutato
(categoria reasoning_extraction). Chiedere invece una spiegazione sintetica
dei motivi della scelta. [A-O55 § Safeguard refusals] [IHAL ¶5]
R11 — Sostituire "pensa bene" con requisiti osservabili. Al posto dell'istruzione sul pensiero, dire cosa verificare prima di rispondere: confrontare ogni affermazione con le fonti, testare il codice cambiato, elencare le assunzioni aperte. [P-O55 § Do Not Micromanage Thinking] [P-G6 § Do Not Micromanage Private Reasoning]
R12 — Niente linguaggio aggressivo. "CRITICAL: You MUST…" sui modelli attuali provoca over-triggering; basta "Usa questo tool quando…". [A-BP § Tool usage]
R13 — Non ripetere lo stesso vincolo in forme diverse. La duplicazione aggiunge rumore e può introdurre contraddizioni. [P-G6 § Mistakes #10]
R14 — Dire cosa fare, non solo cosa non fare — con un'eccezione. Per il formato: "scrivi in paragrafi di prosa" > "non usare markdown" [A-BP § Control the format of responses]. Per il design, invece, "evita l'aspetto generico" non funziona: bisogna nominare i pattern specifici da escludere [A-O55 § Frontend design defaults] [IHAL ¶4] [P-O55 § Frontend and UI Generation].
R15 — Fonti con priorità esplicita. Una finestra da 1M token non dice quale fonte è autorevole. Il prompt elenca le fonti in ordine di autorità e dice cosa fare in caso di conflitto: segnalarlo, non riconciliarlo in silenzio. [P-O55 § Mistakes #11] [P-G6 § Long-Context Prompting]
R16 — Documenti lunghi in cima, domanda in fondo. Con input oltre ~20k token, i documenti vanno sopra le istruzioni; la domanda alla fine migliora la risposta. [A-BP § Long context prompting]
R17 — Separare le istruzioni dell'utente dal testo incollato. Il testo
incollato (email, pagine web, ticket) va racchiuso in
<pasted_content id="…">…</pasted_content id="…">, con un id casuale generato
dall'applicazione; le istruzioni al suo interno sono contenuto, non ordini.
[A-O55 § Mark pasted text in user messages] [P-O55 § Pasted Content and Prompt Injection Boundaries]
R18 — Non inventare: n/a, "unknown" o domanda. Un dato mancante non si
riempie con un default plausibile: si marca come sconosciuto e si dice quale
fonte lo risolverebbe. [P-G6 § Clarification, Assumptions, and Missing Information]
— coincide con l'invariante anti-invenzione di rules/prompt-loop.md.
R19 — Riferimenti concreti. Nominare file, scenari, pattern d'esempio e vincoli invece di descrizioni vaghe ("aggiungi test a foo.py" < "test per foo.py sul caso utente sloggato, senza mock"). [A-CC § Provide specific context in your prompts]
R20 — Esempi pochi, pertinenti, vari, taggati. 3–5 esempi in <example>,
simili al caso reale e diversi tra loro. [A-BP § Use examples effectively]
R21 — Politica dei tool, non elenco dei tool. Dire quando usare, non usare o è obbligatorio ciascun tool, e cosa fare quando manca un argomento richiesto: recuperarlo, chiedere o dichiararsi bloccati. Mai inventarlo. [P-O55 § Mistakes #6] [P-G6 § Prompt for Tool Policy, Not Tool Existence] [A-BP § Optimize parallel tool calling: "Never use placeholders or guess missing parameters"]
R22 — Verbi d'azione se si vuole un'azione. "Puoi suggerire modifiche?" produce suggerimenti; "Modifica questa funzione" produce la modifica. [A-BP § Tool usage]
R23 — Confini d'azione espliciti. Cosa si fa in autonomia (azioni locali e reversibili) e cosa richiede conferma (distruttive, irreversibili, visibili ad altri, espansione di perimetro). Il prompt non è l'unico livello di autorizzazione: i permessi veri li applica il runtime. [A-BP § Balancing autonomy and safety] [P-O55 § Keep Runtime Authorization Outside the Prompt] [P-G6 § Tool Availability Is Not Authorization]
R24 — Scoprire prima di agire. Nei task che toccano più fonti: fase di scoperta, poi decisione, poi azione, poi rilettura dello stato. [A-O55 § Explore context in multi-app workflows] [P-O55 § Separate Discovery From Action]
R25 — Criteri di verifica osservabili e proporzionati al rischio. Non "ricontrolla il lavoro" ma "riproduci il fallimento, esegui i test mirati, ispeziona il diff". Un fix di una riga non merita un audit completo. [A-CC § Give Claude a way to verify its work] [P-O55 § Do Not Ask for Endless Verification] [P-G6 § Verification and Completion Criteria]
R26 — Condizione di completamento esplicita. "Finito quando tutti gli endpoint sono migrati, il vecchio client è rimosso e la suite passa." Con una condizione chiara il modello lavora in autonomia molto più a lungo. [IHAL ¶1] [P-O55 § STOP CONDITION] [P-G6 § Define Completion]
R27 — Prove, non affermazioni. L'output riporta il comando eseguito e cosa ha restituito, e separa fatti verificati da ipotesi e da ciò che non è stato possibile verificare (e dove si è cercato). [A-CC § Give Claude a way to verify its work] [IHAL ¶3] [P-G6 § Separate Fact From Inference]
R28 — Separare vincoli duri da preferenze. Un requisito "deve passare" non si nasconde in un punteggio pesato. [P-G6 § Mistakes #12]
R29 — Contratto di output. Specificare cosa contiene il risultato finale: cosa è cambiato, cosa è stato verificato, incertezza residua, cosa serve dall'utente. Il resoconto si legge partendo da ciò che resta da decidere. [P-O55 § A Practical Structure: OUTPUT] [IHAL ¶3]
R30 — Chiedere l'artefatto finito. Se serve un documento o un file, chiedere il file completo e condivisibile, non una bozza di struttura. [IHAL ¶4]
R31 — Progresso ≠ completamento. Nei lavori lunghi, gli aggiornamenti di stato non chiudono il task. Il prompt dice quando continuare, quando fermarsi (nulla può avanzare senza l'utente, o l'azione è protetta) e che i messaggi di stato vanno insieme alla prossima azione. [A-O55 § Unattended agentic runs] [IHAL ¶2] [P-O55 § Define Continue vs. Stop Behavior]
R32 — Stato fuori dalla conversazione. L'elenco dei compiti vive in un file
(es. TASKS.md) o in git, non solo nella cronologia, che può essere compattata.
[IHAL ¶2] [A-BP § State management best practices]
R33 — Subagenti solo quando servono. Delegare quando il lavoro è parallelizzabile, richiede contesto isolato o è indipendente; lavorare direttamente per task semplici, sequenziali o che condividono stato. Verificare le prove di ciascun subagente prima di accettarne la conclusione. [A-BP § Subagent orchestration] [IHAL ¶2]
R34 — Un brief per contesto fresco è autosufficiente. Una sessione (o un subagente) che parte pulita lavora meglio con una spec scritta che nomina file e interfacce, dichiara cosa è fuori perimetro e si chiude con una verifica end-to-end. [A-CC § Let Claude interview you] [A-CC § Course-correct early and often]
R35 — Contro l'over-engineering. Solo modifiche richieste o chiaramente necessarie; niente astrazioni per usi unici, niente gestione di errori per casi impossibili. [A-BP § Overeagerness]
R36 — Indagare prima di rispondere. Non speculare su codice non aperto: se il prompt nomina un file, va letto prima di rispondere. [A-BP § Minimizing hallucinations in agentic coding]
R37 — L'effort non si imposta a parole. Profondità di ragionamento, costo e
latenza si regolano con il parametro effort (default medium su Opus 5.5),
misurato su eval proprie; non con aggettivi nel prompt. Il prompt engineer può
raccomandare un livello, non sostituirlo con testo.
[A-O55 § Calibrate effort] [P-O55 § How to Choose Effort] [P-G6 § How to Use Reasoning Effort]
R38 — Cambiare una variabile alla volta. Prompt, modello ed effort si valutano separatamente. [P-O55 § Mistakes #12] [P-G6 § Mistakes #14]
Da cercare e rimuovere o riscrivere in ogni prompt in ingresso:
| Anti-pattern | Riscrittura | Regola |
|---|---|---|
| "think step by step / carefully / hard", "take a deep breath" | togliere; aggiungere requisiti di verifica osservabili | R9, R11 |
| "mostra il tuo ragionamento" nella risposta | "spiega in breve perché hai scelto questo approccio" | R10 |
| "CRITICAL / YOU MUST / ALWAYS" in maiuscolo | forma normale, con il perché | R5, R12 |
| "sei il miglior ingegnere del mondo…" | una riga di ruolo o niente | R8 |
| "ricontrolla il lavoro" | criteri di verifica concreti | R25 |
| nessuna condizione di fine | STOP CONDITION osservabile | R26 |
| "usa i tool quando serve" | quando sì / quando no / argomenti mancanti | R21 |
| "evita lo stile generico" | lista nominata di pattern esclusi | R14 |
| stesso vincolo ripetuto | una volta, nel posto giusto | R13 |
| dato mancante riempito "a occhio" | n/a / unknown / domanda | R18 |
| testo incollato mescolato alle istruzioni | <pasted_content id> | R17 |
| "suggerisci modifiche" quando si vuole la modifica | verbo d'azione | R22 |
prompt-engineerQueste non sono regole di prompting: sono le conseguenze delle regole sopra per questa skill, e sono la base da cui la spec ricaverà i requisiti.
REFINED_PROMPT.md confermato da prompt-loop è il
contratto già deciso dall'utente. Il prompt engineer non lo ridiscute:
lo rende eseguibile. Le voci del lock register passano verbatim.prompt-loop, il cui gate di copertura garantisce una risposta per
ognuno degli otto blocchi; un ingresso con un blocco scoperto si rifiuta e
torna a prompt-loop (design D7). Open questions raccoglie solo le
tensioni residue dentro blocchi coperti (R18, R34).R<n> di questo documento, così la trasformazione è verificabile e
non una riscrittura di gusto.effort, ma non inserisce formule sul pensiero..tessl-plugin
rules
skills
handoff
handoff-skill
openspec-apply-change
openspec-archive-change
openspec-explore
openspec-propose
openspec-sync-specs
plan-judge
plan-mode
prompt-engineer
prompt-loop
requirement-gathering
spec-as-source-setup
templates
openspec-schema
spec-as-source
templates
spec-ci-sync
spec-loop
spec-rebuild
spec-verify
spec-writer
work-review