Skip to content

Linting — Catalogo regole ​

Il catalogo delle regole di linting del pannello Diagnosi, con esempi pratici e istruzioni per silenziarle o personalizzarle.

Un prompt può essere sbagliato in modi che non si vedono rileggendolo di fretta: una graffa singola dove ne servivano due, un'email vera dimenticata in un esempio, una chiave API incollata per sbaglio, un import che punta a un prompt rinominato. Il linter di Prompt a Porter esiste per accorgersene al posto tuo: mentre scrivi, la tab Diagnosi del pannello di dettaglio analizza il body e segnala errori, warning e suggerimenti in tempo reale.

Tutto avviene localmente: nessuna chiamata esterna, nessun salvataggio dei risultati nel vault. L'analisi è pressoché istantanea anche su body lunghi; il pannello attende una breve pausa nella digitazione prima di aggiornarsi, così non "sfarfalla" mentre scrivi.

Questa pagina è il catalogo completo: cosa controlla ogni regola, con quale severità, e come adattare il linter al tuo stile quando una regola ti dà fastidio. Consultala quando compare un codice che non conosci, o quando vuoi capire perché la Diagnosi insiste su qualcosa che per te è legittimo.

Severità ​

LivelloEffetto UIEsempi
ErrorRosso, problema da correggereCarta di credito, ciclo di import
WarningGiallo, revisione consigliataBody troppo lungo, email PII
InfoGrigio, suggerimentoBody troppo corto, ripetizione n-gram

Nessuna regola blocca il salvataggio: la diagnosi è puramente informativa, decidi tu se e come intervenire.

Nel catalogo alcuni numeri risultano saltati (PH002, PII002, STY002): corrispondono a controlli valutati e poi accantonati, e i loro codici restano riservati.

Lunghezza body ​

CodiceSeveritàQuando scatta
LEN001WarningBody > 4 000 caratteri (spreco token)
LEN002InfoBody < 30 caratteri (probabilmente incompleto)

Segnaposti ​

CodiceSeveritàQuando scatta
PH001ErrorSingola graffa: {nome} invece di {{nome}}
PH003WarningCaratteri non consentiti nel nome: {{nome con spazi}}, {{nome-con-trattini}}. Anche {{! nota }}: non è un commento, il messaggio rimanda a {{!-- nota --}}

Privacy / PII ​

CodiceSeveritàQuando scatta
PII001WarningEmail rilevata (mario.rossi@example.com)
PII003ErrorNumero carta di credito Luhn-valido (13–19 cifre)
PII004ErrorAPI key di provider noti (OpenAI sk-…, Anthropic sk-ant-…, AWS AKIA…, GitHub ghp_… / github_pat_…, Google AIza…)

Stile ​

CodiceSeveritàQuando scatta
STY001InfoStesso n-gram (3 parole) ripetuto ≥ 4 volte nel body

Commenti ​

CodiceSeveritàQuando scatta
CMT001Warning{{!-- senza il --}} di chiusura: così com'è non è un commento e resta nel testo compilato

I commenti {{!-- … --}} chiusi non generano mai segnalazioni, e ciò che contengono non viene analizzato dalle regole sui segnaposti (PH*) né conteggiato da quelle sulla lunghezza e sullo stile (LEN*, STY*), perché non parte col prompt. Le regole di privacy (PII*) invece li leggono: un dato sensibile in un commento è comunque salvato nel vault e finisce nell'export.

Import (prompt componibili) ​

CodiceSeveritàQuando scatta
IMP001Error{{import "path"}} con path che non risolve a nessun prompt
IMP002ErrorCiclo di import (self-loop o catena A→B→A multi-hop)
IMP003WarningProfondità di import > 5 livelli
IMP004InfoIl prompt corrente è importato da N altri prompt — utile saperlo prima di modifiche breaking, perché le modifiche al body si propagano a chi lo importa

Le regole IMP* funzionano al meglio sui prompt già salvati nel vault: su un prompt nuovo, mai salvato, il controllo completo dei cicli che partono dal prompt stesso non è possibile, ma i cicli interni alla catena degli import vengono comunque rilevati.

Esempi pratici ​

Questo body contiene un numero di carta valido secondo l'algoritmo Luhn — il tipo di dato che non vuoi mai lasciare in un prompt:

La carta da rimuovere è 4111 1111 1111 1111 grazie.
                        ^^^^^^^^^^^^^^^^^^^
                        PII003 — Luhn valido

Il linter lo marca in rosso come PII003: un errore da correggere prima di condividere o compilare il prompt.

Qui invece l'import punta a un titolo che non esiste nel vault:

{{import "ricetta-segreta-ma-non-esiste"}}
                                          ^
                                          IMP001 — non risolto

La Diagnosi segnala IMP001: alla compilazione quell'import non porterebbe alcun contenuto — di solito è un titolo scritto male o un prompt rinominato.

Un warning tipico è l'email lasciata in un esempio:

Manda un messaggio a mario.rossi@example.com appena puoi.
                     ^^^^^^^^^^^^^^^^^^^^^^^
                     PII001 — possibile email

PII001 non blocca nulla: ti invita solo a controllare se quell'indirizzo è un esempio innocuo o un dato reale finito nel posto sbagliato.

Infine, un suggerimento a bassa priorità:

ciao
^^^^
LEN002 — body corto (<30 caratteri)

Un body di quattro caratteri è quasi certamente un prompt lasciato a metà: LEN002 te lo ricorda in grigio, senza insistere.

Personalizzare il linter ​

Le regole sono tarate su un uso generico, e prima o poi qualcuna entrerà in rotta di collisione con il tuo modo di lavorare — magari le email nei tuoi prompt sono legittime, o i tuoi body superano fisiologicamente i 4 000 caratteri. In quel caso non devi conviverci: ogni regola si può silenziare, declassare o ritarare.

Dove ​

Impostazioni → Linter. Trovi il catalogo completo raggruppato per categoria (Lunghezza, Segnaposti, Privacy, Stile, Commenti, Import). Ogni voce mostra il codice (PII001), la severità e una breve descrizione.

Come ​

  • Interruttore di famiglia (es. Privacy / PII): spento, nasconde tutte le regole di quella categoria. Quando una famiglia è spenta, gli interruttori delle sue singole regole sono disattivati (è già tutto silenziato).
  • Interruttore di regola (es. PII001): silenzia solo quella regola, lasciando attive le altre della stessa famiglia. Utile per zittire un singolo falso positivo ricorrente.
  • Severità (menu a tendina per ogni regola): cambia il livello con cui l'avviso viene mostrato — Errore, Avviso o Info. Es. declassare PII001 da Avviso a Info se le email nei tuoi prompt sono legittime.
  • Soglie numeriche: alcune regole hanno un valore regolabile — Caratteri massimi (LEN001), Caratteri minimi (LEN002) e Ripetizioni minime (STY001). Alzale o abbassale per adattare la sensibilità al tuo stile.
  • Ripristina (per regola) riporta severità e soglia di quella regola ai valori predefiniti; Ripristina tutto azzera ogni personalizzazione (disattivazioni, severità, soglie).

Le modifiche hanno effetto subito: la tab Diagnosi si ri-analizza appena cambi qualcosa, senza bisogno di rieditare il prompt. Valori fuori scala vengono riportati entro limiti sensati (es. la soglia ripetizioni non scende sotto 2).

Note ​

Le regole silenziate sono escluse dal conteggio e dalla lista della tab Diagnosi: spariscono dalla vista, non ti distraggono più.

Le preferenze sono locali a questo dispositivo (non sincronizzate): reinstallando l'app o cambiando macchina riparti dal catalogo completo.

Il pannello Diagnosi è inoltre collassabile (chevron in alto a destra): quando è chiuso non aggiorna le diagnosi al cambio del body, ma riapre con i risultati dell'ultimo controllo.

Vedi anche ​

Rilasciato sotto licenza AGPL-3.0-only.