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:
parent
69ec00e293
commit
91f99591a7
49 changed files with 227 additions and 4 deletions
470
test/orto/test-orto_v1/skills/orto-agronomo/SKILL.md
Normal file
470
test/orto/test-orto_v1/skills/orto-agronomo/SKILL.md
Normal 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> m²
|
||||
**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_
|
||||
299
test/orto/test-orto_v1/skills/orto-calendario/SKILL.md
Normal file
299
test/orto/test-orto_v1/skills/orto-calendario/SKILL.md
Normal 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_
|
||||
361
test/orto/test-orto_v1/skills/orto-init/SKILL.md
Normal file
361
test/orto/test-orto_v1/skills/orto-init/SKILL.md
Normal 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_
|
||||
120
test/orto/test-orto_v1/skills/orto-layout/SKILL.md
Normal file
120
test/orto/test-orto_v1/skills/orto-layout/SKILL.md
Normal 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_
|
||||
112
test/orto/test-orto_v1/skills/orto-meteo-decisioni/SKILL.md
Normal file
112
test/orto/test-orto_v1/skills/orto-meteo-decisioni/SKILL.md
Normal 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_
|
||||
331
test/orto/test-orto_v1/skills/orto-onboarding/SKILL.md
Normal file
331
test/orto/test-orto_v1/skills/orto-onboarding/SKILL.md
Normal 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> m²
|
||||
- **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_
|
||||
134
test/orto/test-orto_v1/skills/orto-orchestratore/SKILL.md
Normal file
134
test/orto/test-orto_v1/skills/orto-orchestratore/SKILL.md
Normal 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_
|
||||
Loading…
Add table
Add a link
Reference in a new issue