SuperAPI AI Directory

meno-meno

Data & analytics

View repository

Updated 10-17 00:38

About this skill

meno-meno

Skill for comparing utility (electricity, gas) and telco (mobile, fixed-line) offers from operators registered in the Italian market. It aggregates the data published by individual operators into a neutral format (Markdown, CSV, JSON) ready to be analyzed, sorted by ranking tier, or exported.

Commands

Main command — Skill name: meno-meno

Invoke the skill from the Claude Code prompt with Skill name: meno-meno or by directly asking for the comparison. The skill runs the scraper registered for the requested operator and commodity and returns the formatted output in-line. By default all three formats (Markdown, CSV, JSON) are output in the same message.

Sub-command: doctor

Sub-command doctor (T5, #20). It runs a health check of all registered scrapers: HTTP status, number of parsed offers, parse failures, and drift compared with the last known run. Output as a Markdown table with one row per operator. Operators without a registered scraper (today 23 out of 24, enel is the only live one) are marked with scraper not yet registered for v1 instead of an error — this is the correct v1 behavior, not a failure. For the full reference see ADR 0007.

Invocable in two ways:

  • Standalone CLI: node --experimental-strip-types src/cli/doctor-cli.ts [--operatore <id>] [--output <path>] [--json]
  • As a Claude Code sub-skill: runSkillDoctor({ operatore: 'enel' }) (see src/skills/doctor.ts)

Flags

Flag Required Default Description
--operatore no* — Registered operator ID (e.g. enel, edison, windtre). *Required only for the single-operator path; omitting it with --commodity makes the skill fan out to all operators registered for that commodity (see below).
--commodity yes — One of luce, gas, mobile, fisso.
--fixture no — Path to a local HTML file to use as the scrape source (offline mode).
--live no false Runs live scraping from the operator's site instead of reading from a fixture. Only for operators with a live source registered in scripts/v1-sources.ts.
--format no all Filters the emitted formats: all, markdown, csv, or json. Default all outputs all three (Markdown, CSV, JSON) in the same invocation, as per ADR 0003.
--filter no — Commodity-aware numeric constraint, repeatable. Expression: alias<op>valore with <op> ∈ < <= = >= > !=. AND between flags, OR within the same flag via `

Exit codes: 0 success, 1 scrape/aggregate error, 2 usage error (missing, invalid argument, or unregistered operator). Full reference: ADR 0003.

Multi-operator fan-out

Without --operatore and with --commodity (excluding the mono-op path of [ci-live-gate]) the skill iterates aggregate() over all operators registered for that commodity, applies rankOfferte() (top-3 + trade-off) to the survivors, and emits markdown/csv/json with the filter expression in the header. The single-operator path (with --operatore X) remains bit-identical to the previous one — backward compat with ADR 0002 and [ci-live-gate].

Filter alias per commodity

Commodity Alias Field schema
mobile prezzo prezzo_effettivo_euro_mese
mobile gb gb
fisso prezzo prezzo_effettivo_euro_mese
luce prezzo prezzo_effettivo_euro_kwh
luce costo_commercializzazione quota_fissa_euro_anno
gas prezzo prezzo_effettivo_euro_smc
gas costo_commercializzazione quota_fissa_euro_anno

Examples

Example invocations from the Claude Code chat. Adapt operator and commodity to the ones you are interested in.

Electricity

Usa la skill meno-meno per confrontare le offerte luce di enel.

Gas

Usa la skill meno-meno per confrontare le offerte gas di enel con --fixture fixtures/enel/luce.html --format csv.

Mobile

Usa la skill meno-meno per confrontare le offerte mobile di windtre.

Fixed

Usa la skill meno-meno per confrontare le offerte fisso di windtre con --live.