--- 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 profilo utente. 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 | |-------|------|----------|---------| | `orto_id` | String | Sì | `orto_roma_testaccio_001` | | `orto_name` | String | Sì | `Orto Testaccio Roma` | | `provincia` | String | Sì | `Roma` | | `regione` | String | Sì | `Lazio` | | `latitude` | Float | Sì | `41.8782` | | `longitude` | Float | Sì | `12.4922` | | `area_mq` | Float | No (raccolto in onboarding) | `50` | | `climate_zone` | Enum | No (inferito da lat/lon) | `centro` | ### Validazione Input - `orto_id`: minuscolo, 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 Mappare `latitude` a macro-zona italiana: ``` se lat >= 44.0: zona = "nord" # Piemonte, Lombardia, Veneto, etc. ultima_gelata ≈ 25 aprile prima_gelata ≈ 15 ottobre se no se lat >= 42.5: zona = "centro" # Toscana, Lazio, Marche, etc. ultima_gelata ≈ 15 aprile prima_gelata ≈ 25 ottobre se no: zona = "sud" # Campania, Sicilia, Puglia, etc. ultima_gelata ≈ 1 aprile prima_gelata ≈ 5 novembre ``` ### Fase 2: Genera Struttura Directory Create base folder: `/home//.openclaw/workspace/Orti//` ``` / ├── README.md # Project overview ├── config/ │ ├── garden_config.md # Base garden config (location, size, soil, etc.) │ └── 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 # Field notes ├── media/ │ ├── foto/ │ └── video/ └── report/ └── (reports generated later) ``` ### Fase 3: Genera Template Markdown **garden_config.md** (dal template) ```markdown # Configurazione Orto: [ORTO_ID] ## Dati Base - **Nome:** [ORTO_NAME] - **ID:** [ORTO_ID] - **Provincia:** [PROVINCIA] - **Regione:** [REGIONE] - **Coordinate:** [LATITUDE], [LONGITUDE] - **Zona climatica:** [ZONE] (Nord/Centro/Sud) - **Ultima gelata (app.):** [LAST_FROST_DATE] - **Prima gelata (app.):** [FIRST_FROST_DATE] - **Lunghezza stagione:** ~[SEASON_LENGTH] giorni ## Spazio - **Area disponibile:** ??? m² *(riempire in onboarding blocco 2)* - **Tipologia terreno:** ??? *(riempire in onboarding blocco 2)* - **Esposizione solare:** ??? *(riempire in onboarding blocco 2)* ## Vincoli Ambientali - **Vincoli agua:** *(riempire in onboarding blocco 3)* - **Vincoli manutenzione:** *(riempire in onboarding blocco 5)* - **Note vincoli:** *(riempire in onboarding)* ## Status - **Data creazione:** [TODAY] - **Stato workflow:** Init completo, in attesa onboarding ``` **blocco_1_localizzazione.md** (template questionario) ```markdown # Blocco 1 — Localizzazione Orto ## Domande ### Q1.1 — Dove si trova l'orto? **Provincia:** [auto-filled] **Regione:** [auto-filled] **Indirizzo (opz.):** ___ ### Q1.2 — Accessibilità - [ ] Facile accesso da casa (< 10 min a piedi) - [ ] Accesso moderato (10-30 min) - [ ] Accesso difficile (> 30 min) ### Q1.3 — Proprietà/Gestione - [ ] Proprietà privata personale - [ ] Orto comunitario - [ ] Terreno affittato - [ ] Altro: ___ ## Descrizione [Spazio libero per note] ## Data risposta [TODAY] ``` ### Fase 4: Registra Orto nel Registro Aggiungere al registro centrale (o creare se non esiste): **orti_registry.json** (localizzazione: `/home//.openclaw/workspace/Orti/orti_registry.json`) ```json { "orti": [ { "orto_id": "[ORTO_ID]", "name": "[ORTO_NAME]", "provincia": "[PROVINCIA]", "regione": "[REGIONE]", "latitude": [LAT], "longitude": [LON], "zone": "[ZONE]", "created_at": "[TODAY_ISO]", "status": "init_complete", "path": "/home//.openclaw/workspace/Orti/[ORTO_ID]" } ] } ``` ### Fase 5: Genera Voce Audit Trail Creare `log/audit_trail.md`: ```markdown # Audit Trail — [ORTO_ID] ## Evento: Init | Campo | Valore | |-------|-------| | **Timestamp** | [TODAY_ISO] | | **Evento** | orto_init | | **Status** | success | | **Orto ID** | [ORTO_ID] | | **Coordinatore** | Codex (skill: orto-init) | | **Dettagli** | Progetto orto inizializzato. Config creata, struttura directory scaffoldata, template questionari generati. | --- ``` ## Output (Risultato) **Struttura creata:** - Directory `/Orti//` con tutte le sottodirectory ✓ - File `garden_config.md` (template iniziale) ✓ - File `blocco_1...5.md` (template questionari, vuoti) ✓ - File `audit_trail.md` (evento init) ✓ - Voce registro in `orti_registry.json` ✓ **Output console (Markdown):** ```markdown # ✅ Orto Inizializzato **Orto ID:** [ORTO_ID] **Nome:** [ORTO_NAME] **Localizzazione:** [PROVINCIA], [REGIONE] **Zona:** [ZONE] (Gelate: [ULTIMA_GELATA]—[PRIMA_GELATA]) **Area:** ??? m² (raccolto in Blocco 2) **Path:** /home//.openclaw/workspace/Orti/[ORTO_ID] ## Prossimo Passo → Eseguire skill **orto-onboarding** per raccogliere profilo orto tramite 5 blocchi di questionario. **Tempo stimato:** 15-30 minuti ``` ## Gestione Errori | Errore | Fallback | |-------|----------| | Directory già esiste | Saltare creazione; aggiornare registro e confermare con utente | | Coordinate non valide | Usare default centro-Italia (Lazio) e flaggare per verifica utente | | File registro mancante | Creare nuovo registro con questa voce | | Formato orto_id non valido | Suggerire ID normalizzato e chiedere conferma | ## Riferimenti Vedere `references/calendario_it.md` bundled per dettagli date di gelata e zone climatiche. ## Script Questa skill usa uno script Python bundled per creazione directory deterministica: ```bash scripts/init_new_orto_bundled.sh \ --id \ --name "" \ --provincia \ --regione \ --lat \ --lon ``` Lo script è completamente self-contained e idempotente (safe da re-eseguire). --- ## Esempi ### Esempio 1: Orto Roma **Input:** ``` orto_id: orto_roma_testaccio_001 orto_name: Orto Testaccio Roma provincia: Roma regione: Lazio latitude: 41.8782 longitude: 12.4922 ``` **Output:** - Directory creata: `/Orti/orto_roma_testaccio_001/` - Zona inferita: `centro` (ultima gelata ~15 apr, prima gelata ~25 ott) - Status: Init completato, pronto per onboarding --- ### Esempio 2: Orto Milano **Input:** ``` orto_id: orto_milano_lambro_001 orto_name: Orto Lambro Milano provincia: Milano regione: Lombardia latitude: 45.4642 longitude: 9.1900 ``` **Output:** - Directory creata: `/Orti/orto_milano_lambro_001/` - Zona inferita: `nord` (ultima gelata ~25 apr, prima gelata ~15 ott) - Status: Init completato --- ## Assunzioni 1. Codex è in esecuzione su una macchina con accesso filesystem a `/home//.openclaw/workspace/` 2. L'utente ha permessi di scrittura per creare directory e file 3. La zona climatica è inferita solo da latitudine (semplificazione; da raffinare se necessario) 4. Tutti i template sono in lingua italiana 5. Template questionari sono stub vuoti; compilati durante skill orto-onboarding ## Checklist di Validazione - ✓ `orto_id` è univoco nel registro - ✓ Path directory non conflitto con orti esistenti - ✓ Coordinate valide (lat/lon bounds) - ✓ Provincia e Regione corrispondono divisioni amministrative italiane - ✓ Tutti file template creati e leggibili --- **Skill: orto-init** | Versione 1.0 | Status: Pronto per Produzione