Riordino repository: test/ con struttura documentata

- Spostato test-orto_v1 → test/orto/test-orto_v1
- Spostato orto-skills-suite → test/orto/orto-skills-suite
- Creato test/README.md: Struttura, come eseguire test, criteri accettazione
- Aggiornato .gitignore: Esclude output temporanei

Struttura:
test/
├── README.md (documentazione)
└── orto/ (primo test: orto_v1 → orto-skills v0.2)
    ├── test-orto_v1/ (Fasi 1-4)
    └── orto-skills-suite/ (Fase 5: packaging)

Prossimi test andranno in:
test/<framework-name>/
  ├── test-<framework>_v1/
  └── <framework>-skills-suite/
This commit is contained in:
AgentePotente 2026-03-07 11:41:20 +01:00
parent 69ec00e293
commit 91f99591a7
49 changed files with 227 additions and 4 deletions

View file

@ -0,0 +1,470 @@
---
name: orto-agronomo
description: Selezionare e pianificare colture per calendario annuale dell'orto basato su dieta, spazio, clima e principi agronomici. Usare quando: (1) generare selezione colture corrispondente a preferenze dieta comunitaria e bilancio nutrizionale, (2) applicare regole consociazione e rotazione colture, (3) stimare rese e pianificare tempi successioni, (4) considerare clima regionale e finestre stagionali. Output: Piano colture annuale (markdown) con varietà, date semina, spaziature, classe acqua, consociazioni, rese attese.
---
# Orto Agronomo — Selezione e Pianificazione Colture
Selezionare colture e generare piano colture annuale basato su preferenze comunitarie, clima, spazio e best practice agronomiche.
## Quando Usare Questa Skill
- **Dopo onboarding:** Profilo utente (GardenConfig + CommunityProfile) è completo
- **Selezione colture:** Scegliere verdure corrispondenti a dieta, spazio, livello esperienza
- **Pianificazione stagionale:** Mappare colture a finestre di semina (date gelate, requisiti temperatura)
- **Pianificazione rotazione:** Assicurare rotazione famiglia negli anni per prevenire accumulo parassiti/malattie
## Input
| Input | Tipo | Obbligatorio | Esempio | Note |
|-------|------|--------------|---------|------|
| `orto_id` | String | Sì | `orto_roma_testaccio_001` | ID progetto esistente |
| `garden_config` | Object | Sì | Vedi sotto | Configurazione orto |
| `community_profile` | Object | Sì | Vedi sotto | Profilo comunità |
| `season` | Enum | No | `primavera` | Stagione target (default: corrente) |
| `anno_rotazione` | Int | No | `1` | Anno di rotazione (1-4, default: 1) |
### Struttura `garden_config`
```json
{
"zona_climatica": "centro",
"ultima_gelata": "2026-04-15",
"prima_gelata": "2026-10-25",
"area_disponibile_mq": 50,
"esposizione": "pieno_sole",
"acqua_disponibile": "media",
"suolo": "misto"
}
```
### Struttura `community_profile`
```json
{
"numero_persone": 4,
"dieta": "onnivoro",
"preferenze": ["pomodoro", "insalata", "zucchina", "basilico"],
"da_evitare": ["melanzane"],
"allergie": [],
"esperienza": "dilettante",
"tempo_settimanale_ore": 5
}
```
### Validazione Input
- `orto_id`: deve esistere come directory in `Orti/`
- `zona_climatica`: solo `nord`, `centro`, `sud`
- `esposizione`: solo `pieno_sole`, `mezz_ombra`, `ombra`
- `acqua_disponibile`: solo `bassa`, `media`, `alta`
- `esperienza`: solo `nessuna`, `dilettante`, `esperto`
## Processo
### Fase 1: Filtra Colture per Vincoli
**Obiettivo:** Ridurre colture candidate applicando filtri sequenziali.
**Azioni:**
1. Carica `colture_it.md` da references
2. Applica filtri in sequenza:
**Filtro 1: Zona climatica**
```
SE garden_config.zona_climatica == "nord":
→ Mantieni colture compatibili con nord (date gelate: 25 apr - 15 ott)
→ Escludi colture ciclo lungo (>100 gg) a meno che varietà precoci
SE garden_config.zona_climatica == "centro":
→ Mantieni colture compatibili con centro (date gelate: 15 apr - 25 ott)
→ Tutte le colture standard compatibili
SE garden_config.zona_climatica == "sud":
→ Mantieni colture compatibili con sud (date gelate: 1 apr - 5 nov)
→ Attenzione a colture sensibili a caldo estivo (>35°C)
```
**Filtro 2: Esposizione solare**
```
SE garden_config.esposizione == "pieno_sole" (6-8h):
→ Mantieni tutte le colture
SE garden_config.esposizione == "mezz_ombra" (4-6h):
→ Mantieni: Lattuga, Spinacio, Carota, Cavolo, Broccolo
→ Escludi: Pomodoro, Peperone, Zucchina, Melone, Cocomero
SE garden_config.esposizione == "ombra" (<4h):
→ Mantieni solo: Lattuga, Spinacio, Rucola (resa ridotta)
→ Segnala: "Esposizione insufficiente per la maggior parte delle colture"
```
**Filtro 3: Spazio disponibile**
```
SE garden_config.area_disponibile_mq < 20:
→ Priorità a colture piccole + ciclo rapido
→ Mantieni: Lattuga, Spinacio, Rucola, Ravanello, Erbe aromatiche
→ Escludi: Zucchina, Cocomero, Melone (richiedono >5 m²/pianta)
SE garden_config.area_disponibile_mq >= 20 AND < 50:
→ Mantieni colture medie
→ Aggiungi: Pomodoro (2-3 piante), Peperone (2 piante), Fagiolo
SE garden_config.area_disponibile_mq >= 50:
→ Mantieni tutte le colture
→ Includi anche: Zucchina, Cocomero, Melone, Mais
```
**Filtro 4: Disponibilità acqua**
```
SE garden_config.acqua_disponibile == "bassa":
→ Priorità a colture tolleranti siccità
→ Mantieni: Cipolla, Aglio, Porro, Spinacio, Pisello, Fagiolo, Carota
→ Evita: Sedano, Cocomero, Melone (esigenti acqua)
SE garden_config.acqua_disponibile == "media":
→ Mantieni colture medio-esigenti
→ Aggiungi: Lattuga, Basilico, Cavolo, Broccolo
SE garden_config.acqua_disponibile == "alta":
→ Mantieni tutte le colture
→ Includi: Pomodoro, Peperone, Zucchina, Cocomero, Melone, Sedano
```
**Filtro 5: Preferenze dieta**
```
INCLUDI tutte le colture in community_profile.preferenze
ESCLUDI tutte le colture in community_profile.da_evitare
SE community_profile.dieta == "vegano":
→ Bias verso legumi (Fagiolo, Pisello, Fava) per proteine
SE community_profile.dieta == "vegetariano":
→ Bias verso colture proteiche e ferro (Spinacio, Legumi)
```
**Filtro 6: Esperienza utente**
```
SE community_profile.esperienza == "nessuna":
→ Mantieni solo colture robuste e indulgenti
→ Mantieni: Lattuga, Carota, Zucchina, Basilico, Cipolla, Ravanello
→ Escludi: Melanzana, Melone, Sedano, Cavolfiore (esigenti)
SE community_profile.esperienza == "dilettante":
→ Mantieni colture standard
→ Escludi solo colture molto esigenti
SE community_profile.esperienza == "esperto":
→ Mantieni tutte le colture
→ Includi anche: Melanzana, Melone, Sedano, Cavolfiore, Carciofo
```
**Output intermedio:** Lista colture candidate (15-25 colture)
---
### Fase 2: Lista Colture Candidate
**Obiettivo:** Ordinare colture per probabilità di successo e utilità.
**Azioni:**
1. Per ogni coltura candidata, calcola score:
```
score = (
preferenza_utente * 0.4 +
facilita_coltivazione * 0.2 +
resa_per_m2 * 0.2 +
valore_nutrizionale * 0.1 +
compatibilita_stagione * 0.1
)
```
2. Ordina per score decrescente
**Output:**
```markdown
## Colture Candidate (Ordinate per Probabilità)
| # | Coltura | Varietà Suggerite | Ciclo (gg) | Acqua | Spazio | Score | Note |
|---|---------|-----------------|-----------|-------|--------|-------|------|
| 1 | Pomodoro | San Marzano, Ciliegino | 80 | ALTO | Medio | 0.92 | Preferenza esplicita |
| 2 | Basilico | Genovese | 60 | MEDIO | Piccolo | 0.88 | Consociazione pomodoro |
| 3 | Lattuga | Romana, Canasta | 45 | MEDIO | Piccolo | 0.85 | Successioni, facile |
| 4 | Zucchina | Nero di Milano | 50 | ALTO | Grande | 0.82 | Alta resa |
| 5 | Fagiolo | Borlotto, Nano | 55 | MEDIO | Medio | 0.80 | Fissa azoto |
| ... | ... | ... | ... | ... | ... | ... | ... |
```
---
### Fase 3: Costruisci Piano Colture Annuale
**Obiettivo:** Mappare colture a finestre di semina e aiuole.
**Azioni:**
Per ogni coltura candidata (top 10-15):
**Step 1: Mappa a finestre di semina**
Carica `stagionalita_it.md` da references.
```
Per zona_climatica = garden_config.zona_climatica:
→ Trova finestra semina per coltura
→ Trova finestra trapianto (se applicabile)
→ Trova finestra raccolta prevista
Esempio per Pomodoro (zona centro):
- Semina in semenzaio: Febbraio-Marzo
- Trapianto: Aprile-Maggio (post-gelo)
- Raccolta: Luglio-Settembre
```
**Step 2: Assegna gruppo rotazione**
```
Per coltura:
→ Trova famiglia botanica (da colture_it.md)
→ Assegna a gruppo rotazione
Famiglie:
- Solanaceae: Pomodoro, Peperone, Melanzana, Patata
- Cucurbitaceae: Zucchina, Cetriolo, Cocomero, Melone
- Brassicaceae: Cavolo, Broccolo, Cavolfiore, Ravanello
- Fabaceae: Fagiolo, Pisello, Fava
- Liliaceae: Cipolla, Aglio, Porro
- Asteraceae: Lattuga, Cicoria, Carciofo
- Apiaceae: Carota, Sedano, Finocchio
- Chenopodiaceae: Spinacio, Bietola
```
**Step 3: Stima rese**
```
Per coltura:
→ Trova resa tipica (kg/m²) da colture_it.md
→ Calcola resa totale = resa_m2 × area_assegnata
Esempio:
- Pomodoro: 5 kg/m² × 4 m² = 20 kg totali
- Lattuga: 1.5 kg/m² × 3 m² = 4.5 kg totali
```
**Step 4: Pianifica consociazioni**
```
Per ogni aiuola:
→ Identifica coltura principale
→ Trova consociazioni positive (da colture_it.md)
→ Aggiungi colture companion
Esempio aiuola 1:
- Principale: Pomodoro (4 m²)
- Companion: Basilico (0.5 m² tra piante)
- Companion: Lattuga (1 m² bordi)
Benefici:
- Basilico: respinge mosca bianca
- Lattuga: copre suolo, riduce infestanti
```
**Output intermedio:** Piano colture bozza
---
### Fase 4: Output Piano Colture Annuale
**Obiettivo:** Generare documento markdown finale.
**File:** `dati/colture/piano_colture_annuale.md`
**Struttura:**
```markdown
# Piano Colture Annuale — <orto_id>
**Zona Climatica:** <zona>
**Area disponibile:** <area>
**Comunità:** <numero_persone> persone | <dieta>
**Esperienza:** <livello>
**Anno rotazione:** <1-4>
---
## Riepilogo Stagionale
### Primavera (Mar-Mag)
**Colture principali:**
- Pomodoro (trapianto aprile)
- Zucchina (trapianto maggio)
- Fagiolo (semina aprile)
- Lattuga (semine successioni)
**Area occupata:** XX m²
**Stima rese:** XX kg
### Estate (Giu-Ago)
**Colture principali:**
- Pomodoro (raccolta continua)
- Zucchina (raccolta continua)
- Fagiolo (raccolta + successioni)
- Basilico (raccolta foglie)
### Autunno (Set-Nov)
**Colture principali:**
- Lattuga (successioni)
- Spinacio (semina settembre)
- Cavolo (trapianto agosto)
- Ravanello (ciclo rapido)
### Inverno (Dic-Feb)
**Colture:**
- Riposo vegetativo
- Preparazione terreno
- Semine protette (febbraio)
---
## Dettagli Aiuole
### Aiuola 1 (4 m²) — Solanaceae
| Coltura | Varietà | Piante | Spaziatura | Semina | Raccolta | Resa stimata |
|---------|---------|--------|------------|--------|----------|--------------|
| Pomodoro | San Marzano | 4 | 50cm | Apr | Lug-Set | 20 kg |
| Basilico | Genovese | 6 | 20cm | Mag | Giu-Ott | 2 kg |
| Lattuga | Romana | 8 | 25cm | Apr-Giu | Mag-Lug | 3 kg |
**Consociazioni:** Pomodoro + Basilico (respinge parassiti) + Lattuga (copertura suolo)
**Rotazione prossima anno:** Brassicaceae (Cavolo, Broccolo)
---
### Aiuola 2 (3 m²) — Cucurbitaceae
| Coltura | Varietà | Piante | Spaziatura | Semina | Raccolta | Resa stimata |
|---------|---------|--------|------------|--------|----------|--------------|
| Zucchina | Nero di Milano | 3 | 100cm | Mag | Giu-Ago | 12 kg |
| Fagiolo | Borlotto | 20 | 30cm | Apr-Giu | Mag-Set | 5 kg |
**Consociazioni:** Zucchina + Fagiolo (fissa azoto)
---
[Continua per tutte le aiuole...]
---
## Riepilogo Rese Attese
| Coltura | Area (m²) | Resa (kg/m²) | Resa Totale (kg) | Mesi Raccolta |
|---------|-----------|--------------|------------------|---------------|
| Pomodoro | 4 | 5.0 | 20 | Lug, Ago, Set |
| Zucchina | 3 | 4.0 | 12 | Giu, Lug, Ago |
| Lattuga | 3 | 1.5 | 4.5 | Mag, Giu, Lug, Set, Ott |
| Fagiolo | 2 | 2.5 | 5 | Mag, Giu, Lug, Ago, Set |
| Basilico | 1 | 2.0 | 2 | Giu, Lug, Ago, Set, Ott |
| ... | ... | ... | ... | ... |
**Totale stimato:** XX kg/stagione
**Copertura fabbisogno:** XX% (basato su 4 persone, 2 kg/settimana × 26 settimane = 208 kg)
---
## Note Agronomiche
### Rotazione Colture
**Anno corrente:** 1 (Solanaceae + Cucurbitaceae)
**Prossimo anno (2):** Brassicaceae + Fabaceae
**Anno 3:** Liliaceae + Apiaceae
**Anno 4:** Asteraceae + Chenopodiaceae
### Irrigazione
**Fabbisogno totale stimato:** XX litri/settimana
**Zone irrigazione:** 2 (ALTO: Pomodoro/Zucchina, MEDIO: Lattuga/Fagiolo)
### Monitoraggio
**Task settimanali:**
- Controllo umidità suolo (giornaliero estate)
- Ispezione parassiti (2× settimana)
- Raccolta (2-3× settimana)
- Pacciamatura/rincalzo (settimanale)
---
_Generato da: orto-agronomo_
_Data: YYYY-MM-DD_
```
---
## Output
**File generato:** `dati/colture/piano_colture_annuale.md`
**Formato:** Markdown strutturato
**Contenuto:**
- Riepilogo stagionale (4 stagioni)
- Dettagli aiuole (colture, varietà, date, rese)
- Consociazioni e rotazioni
- Riepilogo rese attese
- Note agronomiche
### Esempio Output
Vedi struttura sopra.
---
## References
- [`colture_it.md`](../references/colture_it.md) — Catalogo colture, varietà, parametri
- [`stagionalita_it.md`](../references/stagionalita_it.md) — Finestre semina/trapianto/raccolta
- [`consociazioni_layout.md`](../references/consociazioni_layout.md) — Matrice consociazioni
- [`fabbisogni_it.md`](../references/fabbisogni_it.md) — Fabbisogni alimentari comunità
---
## Note
**Edge cases gestiti:**
- **Area molto piccola (<10 m²):** Priorità a colture alta resa/m² (Lattuga, Ravanello, Fagiolo)
- **Acqua limitata:** Priorità a colture tolleranti siccità (Cipolla, Aglio, Fagiolo)
- **Esperienza nulla:** Solo colture robuste (Lattuga, Carota, Zucchina, Basilico)
**Limitazioni:**
- Non considera microclima specifico (adatta date in base a esperienza locale)
- Rese sono stime (variabili in base a cura, meteo, suolo)
**Avvertenze:**
- ⚠️ **Date gelate:** Sono stime macro-zona; verifica microclima locale
- ⚠️ **Rotazione:** Rispetta rotazione 3-4 anni per prevenire malattie
---
_Aggiornato: 2026-03-07 | Versione: 1.0_

View file

@ -0,0 +1,299 @@
---
name: orto-calendario
description: Generare calendario operativo stagionale e settimanale per orto basato su piano colture, finestre stagionali e condizioni meteo. Usare quando: (1) pianificare task operativi (semina, trapianto, irrigazione, raccolta), (2) adattare calendario a previsioni meteo, (3) generare task list settimanali per utenti. Output: Calendario stagionale (markdown) con task mensili/settimanali, date critiche, alert meteo.
---
# Orto Calendario — Pianificazione Temporale Operativa
Generare calendario operativo basato su piano colture, stagionalità e meteo.
## Quando Usare Questa Skill
- **Dopo piano colture:** Piano annuale completato, serve calendarizzare task
- **Pianificazione settimanale:** Ogni settimana (domenica/lunedì) per task 7 giorni
- **Adattamento meteo:** Previsioni avverse richiedono riprogrammazione
- **Promemoria task:** Utente richiede lista task periodo specifico
## Input
| Input | Tipo | Obbligatorio | Esempio | Note |
|-------|------|--------------|---------|------|
| `orto_id` | String | Sì | `orto_roma_testaccio_001` | ID progetto |
| `piano_colture` | Object | Sì | Vedi sotto | Piano da orto-agronomo |
| `periodo` | Enum | No | `settimanale` | `giornaliero`, `settimanale`, `mensile`, `stagionale` |
| `data_inizio` | Date | No | `2026-03-10` | Default: oggi/lunedì |
| `meteo_forecast` | Object | No | Vedi meteo | Previsioni 7 giorni |
### Validazione Input
- `orto_id`: deve esistere
- `periodo`: solo `giornaliero`, `settimanale`, `mensile`, `stagionale`
- `data_inizio`: formato ISO (YYYY-MM-DD)
## Processo
### Fase 1: Carica Piano Colture e Stagionalità
**Obiettivo:** Preparare contesto per generazione calendario.
**Azioni:**
1. Carica `piano_colture_annuale.md` da `dati/colture/`
2. Estrai colture pianificate con date semina/trapianto/raccolta
3. Carica `stagionalita_it.md` da references
4. Estrai finestre stagionali per zona climatica
**Output intermedio:** Lista colture con date target
---
### Fase 2: Genera Calendario Stagionale
**Obiettivo:** Mappare task a mesi/stagioni.
**Azioni:**
Per ogni stagione:
**Primavera (Mar-Mag):**
- Semine dirette: Lattuga, Carota, Ravanello, Fagiolo (apr-mag)
- Trapianti: Pomodoro, Zucchina, Peperone (post-gelo)
- Task ricorrenti: Irrigazione (aumento progressivo), pacciamatura, sarchiatura
**Estate (Giu-Ago):**
- Raccolte continue: Pomodoro, Zucchina, Fagiolo, Lattuga
- Semine successioni: Fagiolo, Lattuga, Ravanello
- Task ricorrenti: Irrigazione (massimo), ombreggiatura, monitoraggio parassiti
**Autunno (Set-Nov):**
- Semine: Spinacio, Lattuga autunnale, Fave, Piselli
- Trapianti: Cavoli, Broccoli, Verza
- Task ricorrenti: Raccolta, preparazione terreno, pacciamatura
**Inverno (Dic-Feb):**
- Riposo vegetativo
- Semine protette (febbraio): Lattuga, Cipolla
- Task ricorrenti: Manutenzione attrezzi, pianificazione, ammendanti
**Output:**
```markdown
# Calendario Stagionale — <orto_id>
## Primavera (Marzo-Maggio)
### Marzo
- [ ] Semina Lattuga (successioni ogni 2 settimane)
- [ ] Semina Spinacio
- [ ] Semina Piselli (inizio mese)
- [ ] Trapianto Cavoli (fine mese, centro-sud)
### Aprile
- [ ] Semina Fagioli (dopo 15, nord: dopo 25)
- [ ] Semina Carote
- [ ] Semina Ravanello
- [ ] Trapianto Pomodori (dopo ultima gelata)
- [ ] Trapianto Zucchine (dopo 15)
### Maggio
- [ ] Semina Basilico (trapianto o seme)
- [ ] Semina Cetrioli, Meloni (dopo 15)
- [ ] Pacciamatura colture estive
- [ ] Inizio irrigazione regolare
## Estate (Giugno-Agosto)
...
## Autunno (Settembre-Novembre)
...
## Inverno (Dicembre-Febbraio)
...
```
---
### Fase 3: Genera Task List Settimanale
**Obiettivo:** Dettaglio operativo 7 giorni.
**Azioni:**
1. Determina settimana corrente
2. Estrai task da calendario stagionale
3. Adatta a meteo forecast (se disponibile)
4. Bilancia carico lavoro (2-3 ore/giorno max)
**Regole distribuzione:**
```
Lunedì:
- Irrigazione (controllo umidità)
- Raccolta (verdure a foglia: Lattuga, Spinacio)
Martedì:
- Task pesanti (vangatura, trapianti)
- Irrigazione
Mercoledì:
- Monitoraggio parassiti/malattie
- Raccolta (frutti: Pomodoro, Zucchina)
Giovedì:
- Task leggeri (sarchiatura, pacciamatura)
- Irrigazione
Venerdì:
- Raccolta principale
- Preparazione ordine (se vendita/scambio)
Sabato:
- Task flessibili (recupero ritardi)
- Irrigazione
Domenica:
- Riposo o raccolta leggera
```
**Adattamento meteo:**
```
SE meteo.pioggia_prevista > 5mm:
→ Sposta irrigazione a giorno successivo
SE meteo.vento > 10 nodi:
→ Sposta trapianti/trattamenti a giorno alternativo
SE meteo.temp > 32°C:
→ Sposta task pesanti a mattina presto (6-9)
→ Irrigazione solo mattina (5-7)
```
**Output:**
```markdown
# Task List Settimanale — Settimana <N>
**Periodo:** YYYY-MM-DD a YYYY-MM-DD
**Meteo forecast:** [Soleggiato / Pioggia / Misto]
## Lunedì <data>
- [ ] Irrigazione (controlla umidità aiuole 1-3)
- [ ] Raccolta Lattuga (aiuola 1)
- [ ] Ispezione parassiti (foglie pomodoro)
## Martedì <data>
- [ ] Trapianto Basilico (aiuola 1, tra pomodori)
- [ ] Irrigazione (dopo trapianto)
- [ ] Pacciamatura aiuola 2
## Mercoledì <data>
- [ ] Monitoraggio peronospora (previsione umida)
- [ ] Raccolta Zucchine (aiuola 2, 3-4 frutti)
- [ ] Irrigazione
...
## Note Settimanali
- **Priorità:** Trapianti basilico (entro mercoledì)
- **Alert:** Possibile pioggia giovedì, prepara teli
- **Raccolta stimata:** 5 kg (pomodoro, zucchina, lattuga)
```
---
### Fase 4: Output Calendario
**Obiettivo:** Generare documenti finali.
**File generati:**
1. `dati/calendario/calendario_stagionale.md` (visione annuale)
2. `dati/calendario/calendario_settimanale_<YYYY-WW>.md` (task list settimanale)
**Struttura calendario stagionale:**
```markdown
# Calendario Stagionale — <orto_id>
**Anno:** 2026
**Zona:** <zona_climatica>
**Ultima gelata:** <data>
**Prima gelata:** <data>
---
## Panoramica Annuale
| Mese | Task Principali | Colture Chiave | Ore Stimate |
|------|----------------|----------------|-------------|
| Marzo | Semine, preparazioni | Lattuga, Spinacio | 15 |
| Aprile | Trapianti, semine | Pomodoro, Fagiolo | 20 |
| ... | ... | ... | ... |
---
## Dettaglio Mensile
### Marzo
**Settimana 1:**
- [ ] Preparazione aiuole (vangatura, ammendanti)
- [ ] Semina Lattuga (1° successione)
- [ ] Semina Spinacio
**Settimana 2:**
- [ ] Semina Piselli
- [ ] Controllo drenaggio
- [ ] Irrigazione (se suolo secco)
...
### Aprile
...
---
## Date Critiche
| Data | Evento | Azione |
|------|--------|--------|
| 15 Apr | Ultima gelata (centro) | Trapianti pomodoro sicuri |
| 1 Mag | Inizio irrigazione regolare | Attiva sistema |
| 15 Ott | Prima gelata (centro) | Raccolta ultimi frutti |
---
_Generato da: orto-calendario_
```
---
## Output
**File generati:**
- `dati/calendario/calendario_stagionale.md`
- `dati/calendario/calendario_settimanale_<YYYY-WW>.md`
**Formato:** Markdown con checklist
---
## References
- [`stagionalita_it.md`](../references/stagionalita_it.md) — Finestre semina/trapianto
- [`colture_it.md`](../references/colture_it.md) — Cicli colture
- [`meteo_soglie_it.md`](../references/meteo_soglie_it.md) — Soglie decisioni meteo
---
## Note
**Edge cases:**
- **Pioggia prolungata:** Sposta task indoor (manutenzione attrezzi)
- **Ondata caldo:** Task solo mattina, irrigazione raddoppiata
- **Gelata tardiva:** Copri colture sensibili, rinvia trapianti
---
_Aggiornato: 2026-03-07 | Versione: 1.0_

View file

@ -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/<user>/.openclaw/workspace/Orti/<orto_id>/`
2. Crea sottocartelle:
```
<orto_id>/
├── 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
# <orto_name>
**ID:** <orto_id>
**Localizzazione:** <provincia>, <regione>
**Zona climatica:** <zona>
**Coordinate:** <latitude>, <longitude>
## 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: <orto_id> | Ultima modifica: YYYY-MM-DD_
## Localizzazione
- **Provincia:** <provincia>
- **Regione:** <regione>
- **Latitudine:** <latitude>
- **Longitudine:** <longitude>
- **Zona climatica:** <zona>
## Date Gelate (Stimate)
- **Ultima gelata primavera:** <data>
- **Prima gelata autunno:** <data>
- **Lunghezza stagione:** <gg> 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 — <orto_id>
## Entry #1: Inizializzazione Progetto
**Timestamp:** YYYY-MM-DDTHH:MM:SSZ
**Agente:** orto-init
**Evento:** Progetto orto creato
**Dati:**
- orto_id: <orto_id>
- orto_name: <orto_name>
- provincia: <provincia>
- regione: <regione>
- zona: <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/<user>/.openclaw/workspace/Orti/orti_registry.json`
2. Aggiungi entry:
```json
{
"orto_id": "<orto_id>",
"name": "<orto_name>",
"provincia": "<provincia>",
"regione": "<regione>",
"latitude": <latitude>,
"longitude": <longitude>,
"zone": "<zona>",
"created_at": "YYYY-MM-DDTHH:MM:SSZ",
"status": "active",
"path": "/home/<user>/.openclaw/workspace/Orti/<orto_id>"
}
```
3. Scrivi registry aggiornato
**Output finale:** Registry aggiornato con nuovo orto
---
## Output
**File generati:**
- `Orti/<orto_id>/README.md`
- `Orti/<orto_id>/config/garden_config.md`
- `Orti/<orto_id>/config/ambiente_vincoli.md` (template)
- `Orti/<orto_id>/dati/questionario/blocco_1-5_*.md` (5 file template)
- `Orti/<orto_id>/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_

View file

@ -0,0 +1,120 @@
---
name: orto-layout
description: Progettare layout orto con aiuole, consociazioni, accessi e zone irrigazione. Usare quando: (1) progettare nuovo orto da zero, (2) ottimizzare layout esistente, (3) applicare regole consociazione, (4) pianificare accessibilità. Output: Layout orto (markdown) con dimensioni aiuole, colture per aiuola, consociazioni, camminamenti, zone irrigazione.
---
# Orto Layout — Progettazione Aiuole e Zoning
Progettare layout orto ottimizzando spazio, consociazioni e accessibilità.
## Quando Usare
- **Dopo piano colture:** Colture selezionate, serve assegnare ad aiuole
- **Nuovo orto:** Progettare layout da zero
- **Ottimizzazione:** Migliorare layout esistente
- **Accessibilità:** Garantire accessi per carrozzina/bambini
## Input
| Input | Tipo | Obbligatorio | Esempio |
|-------|------|--------------|---------|
| `orto_id` | String | Sì | `orto_roma_testaccio_001` |
| `garden_config` | Object | Sì | area, esposizione, acqua |
| `piano_colture` | Object | Sì | Colture da assegnare |
| `accessibilita` | Bool | No | `true` (default: false) |
## Processo
### Fase 1: Calcola Numero Aiuole
```
area_totale = garden_config.area_disponibile_mq
SE accessibilita == true:
camminamento_min = 0.7m (carrozzina)
area_coltivabile = area_totale × 0.75 (25% per accessi)
ALTRIMENTI:
camminamento_min = 0.5m
area_coltivabile = area_totale × 0.85 (15% per accessi)
area_aiuola_tipica = 4-6 m² (1m × 4-6m)
numero_aiuole = floor(area_coltivabile / area_aiuola_tipica)
```
### Fase 2: Assegna Colture ad Aiuole
**Regole:**
1. Raggruppa per famiglia botanica (rotazione)
2. Applica consociazioni positive
3. Evita consociazioni negative
4. Considera classe acqua (zoning irrigazione)
### Fase 3: Genera Layout
**Output:**
```markdown
# Layout Orto — <orto_id>
**Area totale:** X m²
**Area coltivabile:** Y m² (Z%)
**Numero aiuole:** N
## Aiuola 1 (4 m²) — Solanaceae
**Dimensioni:** 1m × 4m
**Esposizione:** Pieno sole
**Zona irrigazione:** ALTO
**Colture:**
- Pomodoro (4 piante, 50cm)
- Basilico (6 piante, 20cm da pomodoro)
- Lattuga (8 piante, bordi)
**Consociazioni:** ✅ Pomodoro+Basilico (respinge parassiti)
**Rotazione prossima anno:** Brassicaceae
---
## Aiuola 2 (3 m²) — Cucurbitaceae
**Dimensioni:** 1m × 3m
**Zona irrigazione:** ALTO
**Colture:**
- Zucchina (3 piante, 100cm)
- Fagiolo (20 piante, 30cm)
**Consociazioni:** ✅ Zucchina+Fagiolo (azoto)
---
## Camminamenti
**Larghezza:** 0.7m (accessibile)
**Materiale:** Pacciamatura/ghiaia
**Percorso:** Anello esterno + accessi centrali
## Zone Irrigazione
| Zona | Aiuole | Classe | Portata | Tempo |
|------|--------|--------|---------|-------|
| 1 | 1-2 | ALTO | 200 L/h | 45 min |
| 2 | 3-4 | MEDIO | 150 L/h | 30 min |
| 3 | 5-6 | BASSO | 100 L/h | 20 min |
```
## Output
**File:** `dati/layout/layout_orito.md`
## References
- [`consociazioni_it.md`](../references/consociazioni_it.md)
- [`irrigazione_parametri_it.md`](../references/irrigazione_parametri_it.md)
- [`rotazioni_it.md`](../references/rotazioni_it.md)
---
_Aggiornato: 2026-03-07 | Versione: 1.0_

View file

@ -0,0 +1,112 @@
---
name: orto-meteo-decisioni
description: Analizzare previsioni meteo e generare decisioni operative per irrigazione, trattamenti e task. Usare quando: (1) decidere se irrigare oggi, (2) valutare se trattare, (3) adattare task a meteo, (4) generare alert meteo critici. Output: Decisione meteo (markdown) con raccomandazioni irrigazione/trattamenti/task, alert critici.
---
# Orto Meteo Decisioni — Analisi Meteo Operativa
Analizzare meteo e generare decisioni operative basate su soglie.
## Quando Usare
- **Decisione irrigazione:** Ogni giorno (mattina presto)
- **Pianificazione trattamenti:** Prima di applicare
- **Adattamento task:** Settimanalmente
- **Alert critici:** Gelo, tempesta, ondata caldo
## Input
| Input | Tipo | Obbligatorio |
|-------|------|--------------|
| `orto_id` | String | Sì |
| `meteo_forecast` | Object | Sì (7 giorni) |
| `meteo_attuale` | Object | Sì |
| `task_programmati` | Array | No |
## Processo
### Fase 1: Analizza Condizioni
**Parametri:**
- Temperatura (min, max, media)
- Umidità relativa
- Vento (velocità, direzione)
- Pioggia (prevista, accumulata)
- Nuvolosità
### Fase 2: Applica Soglie
**Irrigazione:**
```
SE pioggia_prevista > 10mm/24h: SALTA
SE pioggia_prevista > 5mm/24h: RIDUCI 50%
SE umidità_suolo < 30%: IRRIGA emergenza
SE vento > 15 nodi: RINVIA aspersione
```
**Trattamenti:**
```
SE vento > 8 nodi: NO trattamento fogliare
SE temp > 28°C: NO trattamento
SE pioggia_prevista < 6h: NO trattamento contatto
```
**Task:**
```
SE vento > 10 nodi: RINVIA trapianti
SE temp > 32°C: Task solo mattina (6-9)
SE gelo_previsto: COPRI colture sensibili
```
### Fase 3: Genera Decisione
**Output:**
```markdown
# Decisione Meteo — <orto_id>
**Data:** YYYY-MM-DD HH:MM
## Condizioni Attuali
- Temp: X°C | Umidità: X% | Vento: X nodi
- Pioggia 24h: X mm
## Previsione 24h
- T_max: X°C | T_min: X°C
- Pioggia: X mm (probabilità Y%)
- Vento: X-Y nodi
## Decisioni
### Irrigazione
**Decisione:** IRRIGA / SALTA / RIDUCI
**Motivo:** [Spiegazione basata su soglie]
**Volume:** X L/m²
**Orario:** 5:30-6:30
### Trattamenti
**Decisione:** TRATTA / NON TRATTA
**Motivo:** [Vento/temp/pioggia]
**Finestra sicura:** [Date/orari]
### Task
**Task consentiti:** [Lista]
**Task da rinviare:** [Lista]
## Alert
- [ ] Gelo notturno (T_min < 0°C)
- [ ] Ondata caldo (T_max > 35°C)
- [ ] Tempesta (vento > 25 nodi)
```
## Output
**File:** `dati/meteo/decisione_YYYY-MM-DD.md`
## References
- [`meteo_soglie_it.md`](../references/meteo_soglie_it.md)
---
_Aggiornato: 2026-03-07 | Versione: 1.0_

View file

@ -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: <orto_id> | Ultima modifica: YYYY-MM-DD_
## Localizzazione
- **Provincia:** <da Blocco 1>
- **Regione:** <da Blocco 1>
- **Latitudine:** <da orto-init>
- **Longitudine:** <da orto-init>
- **Zona climatica:** <inferita da latitudine>
## Esposizione e Ambiente
- **Esposizione:** <da Blocco 1>
- **Vento:** <da Blocco 1>
- **Suolo:** <da Blocco 1>
- **Acqua:** <da Blocco 1>
- **Serra/tunnel:** <da Blocco 1>
## Spazio
- **Superficie totale:** <da Blocco 2>
- **Numero aiuole:** <da Blocco 2>
- **Camminamenti:** <da Blocco 2>
## Irrigazione
- **Tipo:** <da Blocco 3>
- **Zone:** <da Blocco 3>
- **Sensori:** <da Blocco 3>
- **Controller:** <da Blocco 3>
---
_Generato da: orto-onboarding_
```
3. **Genera `config/community_profile.md`:**
```markdown
# Community Profile
_Orto: <orto_id> | Ultima modifica: YYYY-MM-DD_
## Comunità
- **Numero persone:** <da Blocco 4>
- **Tipo dieta:** <da Blocco 4>
## Preferenze
- **Preferite:** <lista da Blocco 4>
- **Da evitare:** <lista da Blocco 4>
- **Allergie:** <da Blocco 4>
## Obiettivi e Vincoli
- **Metodo:** <da Blocco 5>
- **Tempo settimanale:** <da Blocco 5>
- **Priorità:** <da Blocco 5>
- **Esperienza:** <da Blocco 5>
---
_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_

View file

@ -0,0 +1,134 @@
---
name: orto-orchestratore
description: Orchestrare workflow multi-skill, risolvere conflitti, validare QA, generare PlanBundle unificato. Usare quando: (1) eseguire pipeline planning completa, (2) gestire conflitti tra skills, (3) validare QA prima pubblicazione, (4) generare weekly briefing. Output: PlanBundle unificato (markdown) con tutti piani integrati, audit log, weekly briefing.
---
# Orto Orchestratore — Orchestrazione Workflow Master
Coordinare skills, risolvere conflitti, validare QA, merge in piano unificato.
## Quando Usare
- **Planning completo:** Dopo onboarding, eseguire pipeline full
- **Weekly briefing:** Merge calendario + meteo + stato → task list
- **Risoluzione conflitti:** Skills producono output conflittuali
- **Validazione QA:** Prima di pubblicare piano a utente
## Input
| Input | Tipo | Obbligatorio |
|-------|------|--------------|
| `orto_id` | String | Sì |
| `workflow_type` | Enum | Sì (`full_planning`, `weekly_brief`, `ad_hoc`) |
| `skills_output` | Object | Sì (output da skills) |
## Processo
### Fase 1: Verifica Prerequisiti
```
✓ orto-init: Progetto creato
✓ orto-onboarding: GardenConfig + CommunityProfile completi
✓ orto-agronomo: Piano colture completato
✓ orto-calendario: Calendario disponibile
✓ orto-layout: Aiuole assegnate
✓ orto-irrigazione: Sistema progettato
✓ orto-meteo-decisioni: Previsioni disponibili
Se MANCANTE → PAUSA, notifica utente
```
### Fase 2: Rileva Conflitti
**Pattern conflitti:**
| Tipo | Rilevamento | Risoluzione |
|------|-----------|-------------|
| Irrigazione vs. Consociazioni | ALTO + BASSO stessa aiuola | Dividi aiuola o adatta ad ALTO |
| Task vs. Meteo | Trapianto + vento >8kn | Riprogramma +2gg |
| Accessibilità vs. Spazio | Sentiero <0.7m | Riottimizza layout |
| Acqua deficit | Fabbisogno > disponibilità | Riduci colture esigenti |
### Fase 3: Validazione QA
**6 Criteri:**
1. Completezza dati (0-1)
2. Coerenza agronomica (0-1)
3. Coerenza spaziale (0-1)
4. Coerenza idrica (0-1)
5. Coerenza temporale (0-1)
6. Safety trattamenti (0-1)
**QA Score:**
```
QA = (completezza×0.15 + agronomica×0.25 + spaziale×0.15 +
idrica×0.15 + temporale×0.15 + safety×0.15)
≥0.90: Excellent ✅
0.75-0.89: Good
0.60-0.74: Fair (revisione)
<0.60: Poor (respinto)
```
### Fase 4: Genera PlanBundle
**Output:**
```markdown
# PlanBundle — <orto_id>
**Data:** YYYY-MM-DD
**QA Score:** 0.XX (Excellent/Good/Fair/Poor)
## Piani Integrati
1. Piano Colture (da orto-agronomo)
2. Layout (da orto-layout)
3. Calendario (da orto-calendario)
4. Irrigazione (da orto-irrigazione)
5. Meteo (da orto-meteo-decisioni)
## Conflitti Risolti
| Tipo | Decisione | Motivazione |
|------|-----------|-------------|
| Irrigazione vs. Consociazioni | Adatta ad ALTO | Basilico tollera acqua extra |
| Task vs. Meteo | Riprogramma Mar→Gio | Vento 10 nodi |
## Validazione QA
| Criterio | Score | Peso | Contributo |
|----------|-------|------|------------|
| Completezza | 1.00 | 0.15 | 0.15 |
| Agronomica | 0.90 | 0.25 | 0.225 |
| ... | ... | ... | ... |
**Totale:** 0.91 (Excellent) ✅
## Weekly Briefing
**Settimana:** YYYY-WW
**Task principali:**
- Lunedì: Irrigazione, raccolta lattuga
- Martedì: Trapianto basilico
- ...
**Alert:** Possibile pioggia giovedì
---
_Generato da: orto-orchestratore_
```
## Output
**File:** `report/planbundle_YYYY-MM-DD.md`
## References
- [`conflitti_risoluzione_it.md`](../references/conflitti_risoluzione_it.md)
- [`qa_checklist_it.md`](../references/qa_checklist_it.md)
---
_Aggiornato: 2026-03-07 | Versione: 1.0_