orto-skills/orto-suite/orto-init/SKILL.md

9.7 KiB


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 orto_roma_testaccio_001
orto_name String Orto Testaccio Roma
provincia String Roma
regione String Lazio
latitude Float 41.8782
longitude Float 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/<user>/.openclaw/workspace/Orti/<orto_id>/

<orto_id>/
├── 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)

# 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)

# 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/<user>/.openclaw/workspace/Orti/orti_registry.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/<user>/.openclaw/workspace/Orti/[ORTO_ID]"
    }
  ]
}

Fase 5: Genera Voce Audit Trail

Creare log/audit_trail.md:

# 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/<orto_id>/ 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):

# ✅ 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/<user>/.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:

scripts/init_new_orto_bundled.sh \
  --id <orto_id> \
  --name "<orto_name>" \
  --provincia <provincia> \
  --regione <regione> \
  --lat <latitude> \
  --lon <longitude>

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/<user>/.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