From 5dea379692d50e40decfbf3660452cd4b6fb01ae Mon Sep 17 00:00:00 2001 From: AgentePotente Date: Sat, 7 Mar 2026 10:23:56 +0100 Subject: [PATCH] Fase 4 (orto_v1): Prime 2 skills generate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - orto-init/SKILL.md (9.0 KB): Inizializzazione progetto orto - Fase 1: Inferenza zona climatica da latitudine - Fase 2: Genera struttura directory (10+ cartelle) - Fase 3: Genera file template (README, config, audit, questionari) - Fase 4: Registra nel registry centrale (orti_registry.json) - Input: orto_id, nome, provincia, regione, lat/lon - Output: Struttura completa pronta per onboarding - orto-onboarding/SKILL.md (8.5 KB): Raccolta dati questionario - 5 blocchi questionario (max 6 domande ciascuno) - Blocco 1: Localizzazione e contesto - Blocco 2: Layout e spazio - Blocco 3: Irrigazione - Blocco 4: Comunità e dieta - Blocco 5: Obiettivi e vincoli - Output: GardenConfig + CommunityProfile + audit entry Skills auto-contenute (no references richieste). --- test-orto_v1/skills/orto-init/SKILL.md | 361 +++++++++++++++++++ test-orto_v1/skills/orto-onboarding/SKILL.md | 331 +++++++++++++++++ 2 files changed, 692 insertions(+) create mode 100644 test-orto_v1/skills/orto-init/SKILL.md create mode 100644 test-orto_v1/skills/orto-onboarding/SKILL.md diff --git a/test-orto_v1/skills/orto-init/SKILL.md b/test-orto_v1/skills/orto-init/SKILL.md new file mode 100644 index 0000000..b6878ad --- /dev/null +++ b/test-orto_v1/skills/orto-init/SKILL.md @@ -0,0 +1,361 @@ +--- +name: orto-init +description: Inizializzare un nuovo progetto di orto comunitario o domestico nel sistema di gestione Orto. Usare quando: (1) configurare un nuovo orto con localizzazione, dimensioni e dettagli ambientali, (2) creare la struttura di directory e template markdown per il progetto, (3) registrare l'orto nel registro centrale, (4) preparare blocchi di questionario per il workflow di onboarding. Output: Config orto markdown, template questionari, audit trail, struttura di directory pronta per il workflow di onboarding. +--- + +# Orto Init — Inizializzazione Progetto Orto + +Inizializzare un nuovo progetto orto da zero. Questo è il primo passo nel workflow Orto. + +## Quando Usare Questa Skill + +- **Setup nuovo orto:** L'utente vuole iniziare a gestire un orto con Orto +- **Registrazione orto:** Assegnare ID univoco, nome, localizzazione e dati ambientali base +- **Scaffolding directory:** Creare struttura di progetto (config, dati, log, media, cartelle report) +- **Preparazione template:** Generare template markdown per questionario, config, calendario, etc. + +## Input + +Codex raccoglie questi dettagli dall'utente (o usa default se non disponibili): + +| Input | Tipo | Obbligatorio | Esempio | Note | +|-------|------|----------|---------|------| +| `orto_id` | String | Sì | `orto_roma_testaccio_001` | lowercase, underscore, max 64 caratteri | +| `orto_name` | String | Sì | `Orto Testaccio Roma` | Nome leggibile | +| `provincia` | String | Sì | `Roma` | Normalizzare a lista province italiane | +| `regione` | String | Sì | `Lazio` | Normalizzare a lista regioni italiane | +| `latitude` | Float | Sì | `41.8782` | -90 a 90, decimale | +| `longitude` | Float | Sì | `12.4922` | -180 a 180, decimale | +| `area_mq` | Float | No | `50` | Raccolto in onboarding se non fornito | +| `climate_zone` | Enum | No | `centro` | Inferito da lat/lon se non fornito | + +### Validazione Input + +- `orto_id`: lowercase, solo underscore/trattini, max 64 caratteri (es. `orto_NOME_NUMERO`) +- `provincia` + `regione`: normalizzare a lista regioni italiane (Roma → Lazio) +- `latitude`: -90 a 90, decimale +- `longitude`: -180 a 180, decimale +- `area_mq`: float positivo se fornito + +## Processo + +### Fase 1: Inferenza Zona Climatica + +**Obiettivo:** Mappare latitudine a macro-zona italiana per stagionalità colture. + +**Azioni:** + +1. Leggi `latitude` da input +2. Applica regole di mappatura: + +**Regole decisionali:** + +``` +se latitude >= 44.0: + → zona = "nord" + → ultima_gelata ≈ 25 aprile + → prima_gelata ≈ 15 ottobre + → zone_clima: Piemonte, Lombardia, Veneto, Friuli, Liguria (ponente) + +altrimenti se latitude >= 42.5: + → zona = "centro" + → ultima_gelata ≈ 15 aprile + → prima_gelata ≈ 25 ottobre + → zone_clima: Toscana, Lazio, Marche, Umbria, Abruzzo, Liguria (levante) + +altrimenti: + → zona = "sud" + → ultima_gelata ≈ 1 aprile + → prima_gelata ≈ 5 novembre + → zone_clima: Campania, Puglia, Basilicata, Calabria, Sicilia, Sardegna +``` + +**Output intermedio:** Zona climatica + date gelate stimate + +--- + +### Fase 2: Genera Struttura Directory + +**Obiettivo:** Creare struttura directory standardizzata per il progetto orto. + +**Azioni:** + +1. Crea cartella base: `/home//.openclaw/workspace/Orti//` +2. Crea sottocartelle: + +``` +/ +├── README.md # Project overview +├── config/ +│ ├── garden_config.md # Base garden config +│ └── ambiente_vincoli.md # Environmental constraints +├── dati/ +│ ├── questionario/ +│ │ ├── blocco_1_localizzazione.md +│ │ ├── blocco_2_layout_spazio.md +│ │ ├── blocco_3_irrigazione.md +│ │ ├── blocco_4_comunita_dieta.md +│ │ └── blocco_5_obiettivi_vincoli.md +│ ├── calendario/ +│ │ └── calendario_stagionale.md +│ ├── colture/ +│ │ └── piano_colture_annuale.md +│ ├── layout/ +│ │ ├── aiuole_dimensioni.md +│ │ └── zone_clima_microclimatico.md +│ ├── irrigazione/ +│ │ ├── sistema_irrigazione.md +│ │ ├── sensori_monitoraggio.md +│ │ └── programmi_irrigazione.md +│ ├── meteo/ +│ │ └── dati_meteo_giornalieri.md +│ ├── nutrizione/ +│ │ ├── analisi_terreno.md +│ │ └── piano_concimazione.md +│ ├── trattamenti/ +│ │ ├── diagnosi_problemi.md +│ │ └── piano_trattamenti.md +│ └── raccolti/ +│ └── cicli_raccolta_previsti.md +├── log/ +│ ├── audit_trail.md # Audit log +│ └── note_osservazioni.md +├── media/ +│ ├── foto/ +│ └── video/ +└── report/ + └── report_mensili/ +``` + +**Output intermedio:** Struttura directory creata + +--- + +### Fase 3: Genera File Template + +**Obiettivo:** Creare file markdown template con header e struttura base. + +**Azioni:** + +1. **README.md** — Overview progetto: +```markdown +# + +**ID:** +**Localizzazione:** , +**Zona climatica:** +**Coordinate:** , + +## Quick Links + +- [Questionario](dati/questionario/) +- [Piano Colture](dati/colture/piano_colture_annuale.md) +- [Calendario](dati/calendario/calendario_stagionale.md) +- [Audit Trail](log/audit_trail.md) + +--- + +_Creato: YYYY-MM-DD | Orto Init v1.0_ +``` + +2. **config/garden_config.md** — Configurazione base: +```markdown +# Garden Configuration + +_Orto: | Ultima modifica: YYYY-MM-DD_ + +## Localizzazione + +- **Provincia:** +- **Regione:** +- **Latitudine:** +- **Longitudine:** +- **Zona climatica:** + +## Date Gelate (Stimate) + +- **Ultima gelata primavera:** +- **Prima gelata autunno:** +- **Lunghezza stagione:** giorni + +## Dati Ambientali + +*(Da compilare in onboarding)* + +- **Esposizione:** +- **Vento:** +- **Suolo:** +- **Acqua:** + +--- + +_Generato da: orto-init_ +``` + +3. **log/audit_trail.md** — Audit log iniziale: +```markdown +# Audit Trail — + +## Entry #1: Inizializzazione Progetto + +**Timestamp:** YYYY-MM-DDTHH:MM:SSZ +**Agente:** orto-init +**Evento:** Progetto orto creato + +**Dati:** +- orto_id: +- orto_name: +- provincia: +- regione: +- zona: + +**Output:** +- Struttura directory creata +- Template generati +- Pronto per onboarding (Workflow 01) + +--- +``` + +4. **Template questionari** — 5 blocchi con struttura: +```markdown +# Blocco 1 — Localizzazione + +**Stato:** DA COMPILARE + +## Dati + +- **Località:** +- **Provincia:** +- **Regione:** +- **Coordinate:** + +--- + +_Compilato da: | Data: | +``` + +**Output intermedio:** File template creati + +--- + +### Fase 4: Registra nel Registry Centrale + +**Obiettivo:** Aggiornare registry centrale orti con nuovo progetto. + +**Azioni:** + +1. Leggi registry esistente: `/home//.openclaw/workspace/Orti/orti_registry.json` +2. Aggiungi entry: + +```json +{ + "orto_id": "", + "name": "", + "provincia": "", + "regione": "", + "latitude": , + "longitude": , + "zone": "", + "created_at": "YYYY-MM-DDTHH:MM:SSZ", + "status": "active", + "path": "/home//.openclaw/workspace/Orti/" +} +``` + +3. Scrivi registry aggiornato + +**Output finale:** Registry aggiornato con nuovo orto + +--- + +## Output + +**File generati:** + +- `Orti//README.md` +- `Orti//config/garden_config.md` +- `Orti//config/ambiente_vincoli.md` (template) +- `Orti//dati/questionario/blocco_1-5_*.md` (5 file template) +- `Orti//log/audit_trail.md` +- `Orti/orti_registry.json` (aggiornato) + +**Formato:** Markdown strutturato + JSON (solo registry) + +**Struttura directory:** Completa, pronta per Workflow 01 (Onboarding) + +### Esempio Output + +```markdown +# Orto Testaccio Roma + +**ID:** orto_roma_testaccio_001 +**Localizzazione:** Roma, Lazio +**Zona climatica:** centro +**Coordinate:** 41.8782, 12.4922 + +## Quick Links + +- [Questionario](dati/questionario/) +- [Piano Colture](dati/colture/piano_colture_annuale.md) +- [Calendario](dati/calendario/calendario_stagionale.md) +- [Audit Trail](log/audit_trail.md) + +--- + +_Creato: 2026-03-07 | Orto Init v1.0_ +``` + +--- + +## References + +*Nessun reference richiesto* — Skill auto-contenuta. + +--- + +## Scripts + +### `init_new_orto.py` (Opzionale) + +Script Python per automazione inizializzazione (se disponibile in `scripts/`). + +**Utilizzo:** + +```bash +python3 scripts/init_new_orto.py \ + --id orto_roma_testaccio_001 \ + --nome "Orto Testaccio Roma" \ + --provincia Roma \ + --regione Lazio \ + --lat 41.8782 \ + --lon 12.4922 +``` + +**Dipendenze:** +- Python 3.8+ +- Nessuna libreria esterna (standard lib) + +--- + +## Note + +**Edge cases gestiti:** + +- **Coordinate mancanti:** Inferite da provincia (usa geocoding approssimativo) +- **Zona climatica ambigua:** Usa latitudine come criterio primario +- **Registry corrotto:** Backups automatico prima scrittura + +**Limitazioni:** + +- Non valida esistenza reale del luogo (coordinate possono essere fittizie) +- Non crea physical structure (solo directory e file) + +**Avvertenze:** + +- ⚠️ **Date gelate:** Sono stime macro-zona; verificare microclima locale prima di trapianti critici +- ⚠️ **Registry:** Backup automatico creato prima di modifiche + +--- + +_Aggiornato: 2026-03-07 | Versione: 1.0_ diff --git a/test-orto_v1/skills/orto-onboarding/SKILL.md b/test-orto_v1/skills/orto-onboarding/SKILL.md new file mode 100644 index 0000000..678a28a --- /dev/null +++ b/test-orto_v1/skills/orto-onboarding/SKILL.md @@ -0,0 +1,331 @@ +--- +name: orto-onboarding +description: Raccogliere dati essenziali per configurare orto comunitario/domestico attraverso 5 blocchi di questionario markdown. Usare quando: (1) nuovo utente completa profilo orto, (2) aggiornare configurazione esistente, (3) validare completezza dati prima di generare piano colture. Output: 5 blocchi questionario compilati, GardenConfig aggiornato, CommunityProfile, audit trail entry. +--- + +# Orto Onboarding — Raccolta Dati e Configurazione + +Raccogliere dati essenziali per configurare orto attraverso 5 blocchi di questionario in markdown. + +## Quando Usare Questa Skill + +- **Dopo orto-init:** Progetto orto creato, ora serve configurare +- **Nuovo utente:** Utente finale compila profilo per la prima volta +- **Aggiornamento configurazione:** Dati cambiati (es. nuova esposizione, cambio preferenze) +- **Validazione pre-planning:** Verificare completezza dati prima di generare piano colture + +## Input + +| Input | Tipo | Obbligatorio | Esempio | Note | +|-------|------|--------------|---------|------| +| `orto_id` | String | Sì | `orto_roma_testaccio_001` | ID progetto esistente | +| `questionario_mode` | Enum | No | `chat` / `form` / `file` | Default: `chat` | +| `skip_blocks` | Array | No | `[2, 4]` | Blocchi da saltare (già compilati) | + +### Validazione Input + +- `orto_id`: deve esistere come directory in `Orti/` +- `questionario_mode`: solo `chat`, `form`, o `file` +- `skip_blocks`: numeri 1-5, solo se blocchi già compilati + +## Processo + +### Fase 1: Colloquio Utente (Blocco 1) + +**Obiettivo:** Raccogliere localizzazione e contesto ambientale. + +**File:** `dati/questionario/blocco_1_localizzazione.md` + +**Domande (max 6):** + +1. **Località** (città/area): + - Esempio: "Roma, quartiere Testaccio" + +2. **Esposizione**: + - Opzioni: pieno sole / mezz'ombra / ombra + - Default: pieno sole (se utente non sa) + +3. **Vento** (se noto): + - Opzioni: basso / medio / alto + - Default: medio (se utente non sa) + +4. **Serra/tunnel** disponibili: + - Opzioni: sì / no + - Default: no + +5. **Tipo suolo**: + - Opzioni: sabbioso / argilloso / limoso / misto / sconosciuto + - Default: misto (se utente non sa) + +6. **Fonte acqua**: + - Opzioni: rubinetto / serbatoio / pozzo / altro + - Default: rubinetto + +**Regole:** +- Se utente non sa: proporre default e segnare come "assunzione" +- Massimo 6 domande per blocco (linea guida UX) + +**Output intermedio:** Blocco 1 compilato + +--- + +### Fase 2: Layout e Spazio (Blocco 2) + +**Obiettivo:** Raccogliere dati su spazio disponibile e vincoli fisici. + +**File:** `dati/questionario/blocco_2_layout_spazio.md` + +**Domande:** + +1. **Superficie totale** (m²) o dimensioni aiuole (L x W): + - Esempio: "50 m²" oppure "4 aiuole da 2m x 5m" + +2. **Numero aiuole e accessi**: + - Esempio: "4 aiuole, camminamenti 0.6m" + +3. **Ombre principali** (muri, alberi, edifici): + - Esempio: "Muro sud, albero nord-ovest" + +4. **Vincoli particolari**: + - Esempi: bambini piccoli, animali domestici, regole condominiali + +**Output intermedio:** Blocco 2 compilato + +--- + +### Fase 3: Irrigazione (Blocco 3) + +**Obiettivo:** Raccogliere dati su sistema irrigazione e automazione. + +**File:** `dati/questionario/blocco_3_irrigazione.md` + +**Domande:** + +1. **Modalità irrigazione**: + - Opzioni: manuale / goccia / aspersione / mista + +2. **Numero zone** (anche stimato): + - Esempio: "2 zone" o "non so" + +3. **Sensori disponibili**: + - Opzioni: umidità suolo / pioggia / temperatura-umidità / flow / nessuno + +4. **Controller valvole/pompa**: + - Opzioni: sì (specificare marca/modello) / no + +**Output intermedio:** Blocco 3 compilato + +--- + +### Fase 4: Comunità e Dieta (Blocco 4) + +**Obiettivo:** Raccogliere preferenze alimentari e profilo comunità. + +**File:** `dati/questionario/blocco_4_comunita_dieta.md` + +**Domande:** + +1. **Numero persone** coinvolte: + - Esempio: 4 + +2. **Tipo dieta**: + - Opzioni: onnivoro / vegetariano / vegano / misto + +3. **Verdure preferite** (max 10): + - Esempio: pomodoro, insalata, zucchina, basilico + +4. **Verdure da evitare** (max 10): + - Esempio: melanzane, peperoni + +5. **Allergie/intolleranze**: + - Esempio: "nessuna" o lista specifica + +6. **Ricette ricorrenti** (opzionale, max 3): + - Esempio: pasta al pomodoro, insalata mista, parmigiana + +**Output intermedio:** Blocco 4 compilato + +--- + +### Fase 5: Obiettivi e Vincoli (Blocco 5) + +**Obiettivo:** Raccogliere obiettivi, metodo coltivazione e vincoli operativi. + +**File:** `dati/questionario/blocco_5_obiettivi_vincoli.md` + +**Domande:** + +1. **Metodo coltivazione**: + - Opzioni: biologico / tradizionale / IPM (integrato) + +2. **Tempo manutenzione settimanale** (ore): + - Esempio: "5 ore/settimana" + +3. **Priorità principali**: + - Opzioni: resa / semplicità / risparmio acqua / biodiversità / estetico + +4. **Esperienza giardinaggio**: + - Opzioni: base / medio / avanzato + +5. **Budget iniziale** (opzionale): + - Opzioni: basso / medio / alto + +6. **Strumenti disponibili**: + - Esempio: vanga, rastrello, zappa, carriola + +**Output intermedio:** Blocco 5 compilato + +--- + +### Fase 6: Validazione e Generazione Config + +**Obiettivo:** Validare completezza dati e generare GardenConfig + CommunityProfile. + +**Azioni:** + +1. **Verifica completezza:** + - Tutti i 5 blocchi compilati? + - Dati obbligatori presenti (località, superficie, dieta)? + +2. **Genera `config/garden_config.md`:** +```markdown +# Garden Configuration + +_Orto: | Ultima modifica: YYYY-MM-DD_ + +## Localizzazione + +- **Provincia:** +- **Regione:** +- **Latitudine:** +- **Longitudine:** +- **Zona climatica:** + +## Esposizione e Ambiente + +- **Esposizione:** +- **Vento:** +- **Suolo:** +- **Acqua:** +- **Serra/tunnel:** + +## Spazio + +- **Superficie totale:** m² +- **Numero aiuole:** +- **Camminamenti:** + +## Irrigazione + +- **Tipo:** +- **Zone:** +- **Sensori:** +- **Controller:** + +--- + +_Generato da: orto-onboarding_ +``` + +3. **Genera `config/community_profile.md`:** +```markdown +# Community Profile + +_Orto: | Ultima modifica: YYYY-MM-DD_ + +## Comunità + +- **Numero persone:** +- **Tipo dieta:** + +## Preferenze + +- **Preferite:** +- **Da evitare:** +- **Allergie:** + +## Obiettivi e Vincoli + +- **Metodo:** +- **Tempo settimanale:** +- **Priorità:** +- **Esperienza:** + +--- + +_Generato da: orto-onboarding_ +``` + +4. **Aggiorna audit trail:** +```markdown +## Entry #2: Onboarding Completato + +**Timestamp:** YYYY-MM-DDTHH:MM:SSZ +**Agente:** orto-onboarding +**Evento:** Questionario 5 blocchi completato + +**Dati raccolti:** +- Blocco 1: ✅ Localizzazione +- Blocco 2: ✅ Layout +- Blocco 3: ✅ Irrigazione +- Blocco 4: ✅ Comunità +- Blocco 5: ✅ Obiettivi + +**Output:** +- GardenConfig generato +- CommunityProfile generato +- Pronto per Workflow 02 (Piano Stagionale) + +--- +``` + +**Output finale:** GardenConfig + CommunityProfile + audit entry + +--- + +## Output + +**File generati/aggiornati:** + +- `dati/questionario/blocco_1_localizzazione.md` (compilato) +- `dati/questionario/blocco_2_layout_spazio.md` (compilato) +- `dati/questionario/blocco_3_irrigazione.md` (compilato) +- `dati/questionario/blocco_4_comunita_dieta.md` (compilato) +- `dati/questionario/blocco_5_obiettivi_vincoli.md` (compilato) +- `config/garden_config.md` (generato) +- `config/community_profile.md` (generato) +- `log/audit_trail.md` (aggiornato) + +**Formato:** Markdown strutturato + +**Stato:** Progetto pronto per Workflow 02 (Piano Stagionale) + +--- + +## References + +*Nessun reference richiesto* — Skill auto-contenuta (raccolta dati). + +--- + +## Note + +**Edge cases gestiti:** + +- **Utente non sa rispondere:** Proporre default e segnare come "assunzione" +- **Dati parziali:** Permette compilazione graduale (salva stato parziale) +- **Modifiche successive:** Sovrascrive file esistenti (backup automatico opzionale) + +**Limitazioni:** + +- Non valida coerenza incrociata (es. superficie vs. numero aiuole) +- Non traduce preferenze in colture (compito di orto-agronomo) + +**Avvertenze:** + +- ⚠️ **Default:** Se utente accetta default, verificare in fase di planning +- ⚠️ **Assunzioni:** Marcate come tali, da confermare con esperienza reale + +--- + +_Aggiornato: 2026-03-07 | Versione: 1.0_