Documentation

ars-sicilia CLI

ars-sicilia-pp-cli

Install

npx -y @mvanhorn/printing-press-library install ars-sicilia

Installs the CLI binary and the agent skill for Claude Code, Codex, Cursor, Gemini CLI, Copilot, and more. Add --cli-only or --skill-only for one half. Requires Node.

Documentation

L'unica CLI per il portale dell'Assemblea Regionale Siciliana: cerca, sincronizza in locale e interroga tutti i 12 archivi documentali con SQL, FTS e MCP.

Sostituisce le 12 maschere JSP del portale ufficiale con una CLI agent-native. Sync in SQLite locale per query SQL, ricerca full-text cross-archivio, e novel commands come ddl iter (timeline completa di un disegno di legge) e deputato profilo (tutta l'attività di un parlamentare in un'unica chiamata).

Learn more at ARS Sicilia.

Created by @aborruso (aborruso).

Authentication

Nessuna credenziale richiesta: il portale ARS è pubblico. La sessione JSESSIONID per la ricerca è gestita automaticamente in modo trasparente dal client.

Quick Start

# Verifica raggiungibilità del portale e stato del database locale.
ars-sicilia-pp-cli doctor

# Sincronizza in locale leggi e DDL degli ultimi 30 giorni in SQLite.
ars-sicilia-pp-cli sync --resources leggi,ddl --max-pages 0

# Cerca i DDL della XVIII legislatura presentati nel 2024.
ars-sicilia-pp-cli ddl cerca --anno 2024 --legisl 18 --json

# Ricerca full-text cross-archivio sui documenti già sincronizzati.
ars-sicilia-pp-cli search "bilancio sanitario" --limit 20

# Timeline completa del DDL 1500 della XVIII legislatura.
ars-sicilia-pp-cli ddl iter 18 1500 --json

# Tutta l'attività parlamentare di un deputato in un'unica chiamata.
ars-sicilia-pp-cli deputato profilo "Rossi Mario" --json --select tipo,data,titolo

Known Gaps

  • HTTP error exit codes: Non-429 HTTP errors from the Icaro portal (404, 5xx) exit with code 1 rather than typed exit codes (e.g. exit 3 for not-found, exit 5 for server error). Rate-limit responses (HTTP 429) correctly return exit 7. Scripts that branch on specific exit codes should use ars-sicilia-pp-cli doctor to check connectivity first.
  • legge cronologia date filtering: The sommari search finds committee meetings that mention the law number in free text without a date ceiling. A committee meeting held after the law's promulgation date may appear in the timeline if it references the same number. Filter results by the data field when you need only pre-promulgation events.

Unique Features

These capabilities aren't available in any other tool for this API.

Vista cronologica cross-archivio

  • ddl iter — Ricostruisce la cronologia completa di un disegno di legge: presentazione, passaggio in commissione, lavori d'aula, eventuale promulgazione come legge regionale.

    Quando un agente deve raccontare 'a che punto sta il DDL X', questa è l'unica chiamata che restituisce la timeline completa senza incollare 5 ricerche manuali.

    ars-sicilia-pp-cli ddl iter 18 1500 --json
    
  • deputato profilo — Aggrega in un'unica vista tutti gli atti firmati o pronunciati da un deputato: DDL, interrogazioni, interpellanze, mozioni, ordini del giorno, risoluzioni e interventi in resoconti d'aula.

    Sostituisce un workflow di 7 click manuali con un'unica chiamata strutturata: pensata per agenti che rispondono a 'che ha fatto il deputato X?'.

    ars-sicilia-pp-cli deputato profilo "Rossi Mario" --legisl 18 --json --select tipo,data,titolo
    
  • commissione dossier — Vista completa su una commissione: convocazioni in calendario, sommari lavori, DDL assegnati e pareri richiesti al Governo regionale.

    Quando segui i lavori di una commissione specifica, questa è l'unica chiamata che dà il quadro completo invece di 3 ricerche separate.

    ars-sicilia-pp-cli commissione dossier 5 --legisl 18 --json
    
  • legge cronologia — Partendo da una legge regionale promulgata (archivio 201), risale al DDL originario, agli emendamenti citati nei resoconti d'aula e ai pareri di commissione: l'inverso temporale di ddl iter.

    Per ricercatori e giornalisti che partono dalla legge promulgata e vogliono raccontare come ci si è arrivati.

    ars-sicilia-pp-cli legge cronologia 18 5 --json
    

Analytics su campi strutturati

  • analytics — Identifica i deputati che firmano insieme atti parlamentari, restituendo coppie e cluster con conteggio per analisi di network politico.

    Per ricercatori e giornalisti che analizzano alleanze e dinamiche politiche: niente foglio Excel di trascrizioni manuali.

    ars-sicilia-pp-cli analytics --type ddl --group-by cofirmatari --limit 50 --json
    
  • analytics — Classifica i deputati per numero di interventi nei resoconti d'aula, con range date e legislatura, opzionale conteggio parole.

    Per le persone che vogliono sapere 'chi parla di più' senza scaricare 200 resoconti PDF e fare ctrl+F.

    ars-sicilia-pp-cli analytics --type resoconti --group-by oratore --limit 30 --csv
    

Stato e monitoraggio

  • ddl drift — Confronta lo stato dell'iter dei DDL nella sync corrente con la precedente e segnala i disegni di legge che si sono mossi nel periodo (passati da commissione ad aula, approvati, ritirati).

    L'RSS shell esistente segnala solo 'nuovi'; per 'mossi' non c'è alternativa. Questo è il segnale che cercavano i journalist che seguono iter politici.

    ars-sicilia-pp-cli ddl drift --since 7d --json
    
  • sync stale — Mostra per ognuno dei 12 archivi ARS: timestamp ultima sync, n. record locali, età della sync, eventuale segnalazione di staleness.

    Per agenti che orchestrano sync automatico: decide se rinfrescare prima di rispondere o se i dati locali sono ancora freschi.

    ars-sicilia-pp-cli sync stale --json
    

Recipes

Sync iniziale completo XVIII legislatura

ars-sicilia-pp-cli sync --full --resources leggi,ddl,interrogazioni,mozioni,interpellanze,odg,risoluzioni,pareri,resoconti_aula,convocazioni_commissioni,sommari_commissioni

Prima sincronizzazione di tutti gli archivi politici della XVIII legislatura — i dati restano in ~/.local/share/ars-sicilia-pp-cli/store.db.

Iter completo di un DDL con output narrowing

ars-sicilia-pp-cli ddl iter 18 1500 --json --select fase,data,sede,oratori

Timeline del DDL 1500, mostrando solo i campi essenziali — riduce il payload per agenti.

Network di co-firmatari su DDL

ars-sicilia-pp-cli analytics --type ddl --group-by cofirmatari --limit 30 --csv

Produce un CSV con le coppie di deputati che firmano DDL insieme — pronto per import in duckdb o gephi.

Drift settimanale dei DDL

ars-sicilia-pp-cli ddl drift --since 7d --json

Confronta lo stato dell'iter rispetto a una settimana fa — i DDL che si sono mossi (commissione → aula, voto, ritiro) compaiono qui.

Analytics sui cofirmatari

ars-sicilia-pp-cli analytics --type ddl --group-by cofirmatari --limit 20 --legisl 18 --json

Top 20 coppie di deputati che firmano insieme DDL nella XVIII legislatura — aggregazione locale sul DB sincronizzato.

Ricerca per tema (vocabolario materie)

# Scopri le materie disponibili, filtra per parola chiave
ars-sicilia-pp-cli ddl materie | grep -i "sanit\|salut\|lavoro\|ambiente"

# Tutti i DDL sull'ambiente nella XVIII
ars-sicilia-pp-cli ddl cerca --legisl 18 --materia "Ambiente" --json | \
  jq -r '.[] | "\(.data) — \(.title)"'

Utile per giornalisti che seguono un tema: la lista completa delle 123 materie è navigabile offline senza aprire il portale.

Veterani del parlamento — chi dura di più

ars-sicilia-pp-cli ddl firmatari --json | \
  jq -r 'group_by(.nome)[] | select(length >= 4) | "\(length) legislature — \(.[0].nome)"' | \
  sort -rn | head -10

Identifica i parlamentari con la carriera più lunga: quante e quali legislature hanno coperto. Cracolici Antonino è il record attuale con 6 legislature consecutive (XIII→XVIII).

Seguire un deputato — carriera e attività

# In quali legislature ha operato?
ars-sicilia-pp-cli ddl firmatari --search "Scoma" --json | jq -r '.[].legisl' | sort | tr '\n' ' '

# Tutti i DDL presentati nella XVIII
ars-sicilia-pp-cli ddl cerca --legisl 18 --firmatario "Scoma Francesco" --json | \
  jq -r '.[] | "\(.data) — \(.title)"'

Nuovi deputati — chi è al primo mandato

ars-sicilia-pp-cli ddl firmatari --json | \
  jq -r 'group_by(.nome)[] | select(length == 1 and .[0].legisl == "18") | .[0].nome'

Filtra i deputati presenti solo nella XVIII — al loro primo mandato regionale.

Iniziative parlamentari vs governative

# Tipi di iniziativa disponibili
ars-sicilia-pp-cli ddl iniziative

# DDL a iniziativa governativa nella XVIII
ars-sicilia-pp-cli ddl cerca --legisl 18 \
  --isis-query "(18.LEGISL E Governativa.FIRMAT)" --limit 50 --json | jq 'length'

Distingue le proposte dei deputati (parlamentare) da quelle dell'esecutivo regionale (governativa).

Usage

Run ars-sicilia-pp-cli --help for the full command reference and flag list.

Commands

biblioteca

Catalogo Bibliografico (archivio 205) e Opere Multimediali (205multimedia).

  • ars-sicilia-pp-cli biblioteca cerca - Cerca nel catalogo bibliografico per autore, titolo, soggetto o ISBN.
  • ars-sicilia-pp-cli biblioteca multimediali - Cerca nelle opere multimediali.

commissioni

Lavori delle Commissioni: convocazioni (229) e sommari (230).

  • ars-sicilia-pp-cli commissioni convocazioni - Convocazioni delle Commissioni.
  • ars-sicilia-pp-cli commissioni sommari - Sommari dei lavori di commissione.

ddl

Disegni di Legge (archivio 221): proposte di legge presentate all'ARS.

  • ars-sicilia-pp-cli ddl cerca - Cerca disegni di legge per legislatura, anno, firmatario, materia o testo.
  • ars-sicilia-pp-cli ddl get - Scarica un singolo disegno di legge.

interpellanze

Interpellanze parlamentari (archivio 234).

  • ars-sicilia-pp-cli interpellanze cerca - Cerca interpellanze.
  • ars-sicilia-pp-cli interpellanze get - Scarica una singola interpellanza.

interrogazioni

Interrogazioni parlamentari (archivio 233).

  • ars-sicilia-pp-cli interrogazioni cerca - Cerca interrogazioni per legislatura, firmatario o rubrica.
  • ars-sicilia-pp-cli interrogazioni get - Scarica una singola interrogazione.

leggi

Leggi della Regione Siciliana (archivio 201): testo storico delle leggi regionali.

  • ars-sicilia-pp-cli leggi cerca - Cerca leggi regionali per legislatura, anno, numero o testo.
  • ars-sicilia-pp-cli leggi get - Scarica una singola legge regionale.

mozioni

Mozioni parlamentari (archivio 235).

  • ars-sicilia-pp-cli mozioni cerca - Cerca mozioni.
  • ars-sicilia-pp-cli mozioni get - Scarica una singola mozione.

odg

Ordini del Giorno (archivio 236).

  • ars-sicilia-pp-cli odg cerca - Cerca ordini del giorno.
  • ars-sicilia-pp-cli odg get - Scarica un singolo ordine del giorno.

pareri

Pareri richiesti dal Governo regionale alle Commissioni (archivio 226).

  • ars-sicilia-pp-cli pareri cerca - Cerca pareri richiesti dal Governo.
  • ars-sicilia-pp-cli pareri get - Scarica un singolo parere.

resoconti

Resoconti delle Sedute d'Aula (archivio 217).

  • ars-sicilia-pp-cli resoconti cerca - Cerca resoconti per data, oratore o argomento.
  • ars-sicilia-pp-cli resoconti get - Scarica un singolo resoconto.

risoluzioni

Risoluzioni parlamentari (archivio 238).

  • ars-sicilia-pp-cli risoluzioni cerca - Cerca risoluzioni.
  • ars-sicilia-pp-cli risoluzioni get - Scarica una singola risoluzione.

Output Formats

# Human-readable table (default in terminal, JSON when piped)
ars-sicilia-pp-cli ddl get mock-value mock-value

# JSON for scripting and agents
ars-sicilia-pp-cli ddl get mock-value mock-value --json

# Filter to specific fields
ars-sicilia-pp-cli ddl get mock-value mock-value --json --select id,name,status

# Dry run — show the request without sending
ars-sicilia-pp-cli ddl get mock-value mock-value --dry-run

# Agent mode — JSON + compact + no prompts in one flag
ars-sicilia-pp-cli ddl get mock-value mock-value --agent

Agent Usage

This CLI is designed for AI agent consumption:

  • Non-interactive - never prompts, every input is a flag
  • Pipeable - --json output to stdout, errors to stderr
  • Filterable - --select id,name returns only fields you need
  • Previewable - --dry-run shows the request without sending
  • Read-only by default - this CLI does not create, update, delete, publish, send, or mutate remote resources
  • Offline-friendly - sync/search commands can use the local SQLite store when available
  • Agent-safe by default - no colors or formatting unless --human-friendly is set

Exit codes: 0 success, 2 usage error, 3 not found, 5 API error, 7 rate limited, 10 config error.

Health Check

ars-sicilia-pp-cli doctor

Verifies configuration and connectivity to the API.

Configuration

Config file: ~/.config/ars-sicilia-pp-cli/config.toml

Static request headers can be configured under headers; per-command header overrides take precedence.

Troubleshooting

Not found errors (exit code 3)

  • Check the resource ID is correct
  • Run the list command to see available items

API-specific

  • I comandi cerca restituiscono 0 risultati ma il sito ne mostra molti. — Verifica la legislatura: senza --legisl la query usa il default. Il portale ARS richiede sempre una legislatura nel criterio. Esempio: --legisl 18 per XVIII.
  • Errore di sessione o redirect inatteso. — Il portale resetta la sessione dopo 30 minuti di inattività. Riprova il comando: il client acquisisce una nuova JSESSIONID automaticamente.
  • Comando ddl iter o deputato profilo non trova nulla. — Le viste cross-archivio leggono dal DB locale: esegui prima ars-sicilia-pp-cli sync --resources ddl,leggi,resoconti,convocazioni_commissioni,sommari_commissioni.

Sources & Inspiration

This CLI was built by studying these projects and resources:

Generated by CLI Printing Press

For agents: pass /documentation/ars-sicilia/agents.md to install this CLI from a prompt.