verifica-codice-fiscale — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited verifica-codice-fiscale (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.
Validate and decode an Italian codice fiscale (16-character alphanumeric fiscal code).
Activate when a user:
S S S N N N A A D D D C C C C X
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ Check character (1)
│ │ │ │ │ │ │ │ │ │ └─────────── Codice comune nascita (4)
│ │ │ │ │ │ │ │ └─────────────── Giorno nascita + sesso (2)
│ │ │ │ │ │ └───────────────── Mese nascita (1 letter)
│ │ │ │ │ └─────────────────── Anno nascita (2 digits)
│ │ │ └───────────────────── Nome consonants (3)
└─────────────────────────── Cognome consonants (3)Total: 16 characters - uppercase letters and digits.
valida_codice_fiscale(codice_fiscale="RSSMRA85M01H501Z")
→ Returns: valid (bool), sesso, data_nascita, codice_comune, errorsStep 2a - Format check
^[A-Z]{6}[0-9LMNPQRSTUV]{2}[ABCDEHLMPRST]{1}[0-9LMNPQRSTUV]{2}[A-Z]{1}[0-9LMNPQRSTUV]{3}[A-Z]{1}$Step 2b - Decode each field
| Pos | Field | How to read |
|---|---|---|
| 0–2 | Cognome | 3 consonants; if < 3 consonants, fill with vowels then X |
| 3–5 | Nome | If ≥ 4 consonants: take 1st, 3rd, 4th. Else: consonants then vowels then X |
| 6–7 | Anno nascita | Last 2 digits of birth year |
| 8 | Mese nascita | Letter code (see table below) |
| 9–10 | Giorno + sesso | Day 01–31 = male; day 41–71 = female (day − 40) |
| 11–14 | Codice comune | Starts with letter for Italian comuni; Z+3 digits for foreign countries |
| 15 | Carattere controllo | Computed from positions 0–14 |
Month letter codes: A=Gen, B=Feb, C=Mar, D=Apr, E=Mag, H=Giu, L=Lug, M=Ago, P=Set, R=Ott, S=Nov, T=Dic
Step 2c - Verify the check digit (position 15)
Odd positions (1,3,5,…): use odd-position lookup table. Even positions (0,2,4,…): face value (0→0, A→0, B→1 … Z→25). Sum all 16 partial values → check = chr(ord('A') + (total % 26))
See references/CHECK_DIGIT.md for the full lookup tables.
Always show:
| Error | Cause | Fix |
|---|---|---|
| Wrong check digit | Typo anywhere in the CF | Re-derive from personal data |
| Day > 40 reported as male | Encoding is correct - female day = day+40 | Inform user it's normal |
| Omocodia variant | Comune has duplicate CFs; Agenzia Entrate substitutes digits with letters | Both variants are valid |
| Foreign-born | Codice comune = Z + 3 digits (Belcalis table) | Not an error |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.