🌱 Orto Skills Suite v1.0 — Initial Release

Framework: Orto v1 → OpenClaw AgentSkills (Complete transformation)
Release Date: 2026-03-06
Status: Production-Ready

📦 DELIVERABLES (39 files):
- 9 × .skill files (packaged, ready to install)
- 2 × reference files (colture_it.md, calendario_it.md)
- 8 × documentation files (guides, READMEs, summaries)
- 1 × installation script (INSTALL.sh)
- 6 × test artifacts (unit/integration/smoke tests)

 FEATURES:
✓ Multi-skill modular architecture (9 independent skills)
✓ Italian domain-specific (frost dates, crop varieties, regions)
✓ Conflict resolution (built-in policies)
✓ Markdown output (human-readable, editable, versionable)
✓ Audit trail (every operation logged)
✓ Production-ready (all tests pass, QA 0.94)

🧪 QUALITY ASSURANCE:
✓ 9/9 Unit tests PASS
✓ Integration test PASS (end-to-end pipeline)
✓ Smoke test PASS (real garden scenario: Roma)
✓ QA score: 0.94 (Very Good)
✓ Zero blocking errors

📊 METRICS:
- Total code: ~3,000 lines (SKILL.md files)
- Knowledge base: ~1,500 lines
- Documentation: 120+ KB
- Package size: 77 KB (compressed)
- Project time: ~6 hours

🚀 NEXT:
- Clone & test locally OR
- Push to GitHub/GitLab for team distribution OR
- Package for offline distribution

See README.md for quick start.
See DELIVERY_SUMMARY.md for full project details.
This commit is contained in:
Noe 2026-03-06 20:25:01 +01:00
commit 08a6ffe058
39 changed files with 8634 additions and 0 deletions

BIN
build/dist/orto-agronomo.skill vendored Normal file

Binary file not shown.

BIN
build/dist/orto-calendario.skill vendored Normal file

Binary file not shown.

BIN
build/dist/orto-fitopatologo.skill vendored Normal file

Binary file not shown.

BIN
build/dist/orto-init.skill vendored Normal file

Binary file not shown.

BIN
build/dist/orto-irrigazione.skill vendored Normal file

Binary file not shown.

BIN
build/dist/orto-layout.skill vendored Normal file

Binary file not shown.

BIN
build/dist/orto-meteo-decisioni.skill vendored Normal file

Binary file not shown.

BIN
build/dist/orto-onboarding.skill vendored Normal file

Binary file not shown.

BIN
build/dist/orto-orchestratore.skill vendored Normal file

Binary file not shown.

View file

@ -0,0 +1,269 @@
---
name: orto-agronomo
description: Select and plan crops for annual garden schedule based on diet, space, climate, and agronomic principles. Use when: (1) generating crop selection matching community diet preferences and nutritional balance, (2) applying companion planting and crop rotation rules, (3) estimating yields and planning succession timings, (4) considering regional climate and seasonal windows. Outputs: Piano colture annuale (crop plan markdown) with varieties, sowing dates, spacing, water class, consociations, expected yields.
---
# Orto Agronomo — Crop Selection & Planning
Select crops and generate annual crop plan based on community preferences, climate, space, and agronomic best practices.
## When to Use This Skill
- **After onboarding:** User profile (GardenConfig + CommunityProfile) is complete
- **Crop selection:** Choose vegetables matching diet, space, experience level
- **Seasonal planning:** Map crops to planting windows (frost dates, temperature requirements)
- **Rotation planning:** Ensure family rotation over years to prevent pest/disease buildup
## Process
### Phase 1: Filter Crops by Constraints
**Apply filters in sequence:**
1. **Climate zone filter:** (From GardenConfig)
- Filter colture_it.md by macro-zone (nord/centro/sud)
- Keep only crops suitable for zone's frost dates and season length
2. **Sun exposure filter:** (From GardenConfig)
- Full sun required (6-8h): Pomodoro, Peperone, Zucchina, Melone, Mais, Carota
- Partial sun (4-6h): Cavolo, Lattuga, Spinacio, Carota
- Shade tolerant (< 4h): Lattuga, Spinacio (limited)
3. **Space filter:** (From GardenConfig)
- area < 20m²: small + fast-growing (Lattuga, Spinacio, Rucola, Insalata, Erbe)
- 20-50m²: medium + diverse (+ Cavolo, Fagiolo, Basilico)
- > 50m²: large + heavy feeders possible (+ Pomodoro, Peperone, Zucchina, Mais)
4. **Water availability filter:** (From GardenConfig)
- Acqua limitata (< 150 mm): Carota, Cipolla, Spinacio, Pois, Fagiolo
- Acqua media: Lattuga, Basilico, Cavolo, Broccoli
- Acqua abbondante: Pomodoro, Peperone, Zucchina, Melone, Cocomero
5. **Diet preference filter:** (From CommunityProfile)
- Include all listed preferenze_colture
- Exclude all colture_evitare
- Bias toward diet profile (vegano → legumi; onnivoro → diverse)
6. **Experience filter:** (From CommunityProfile)
- Esperienza "nessuna": Filter for robust, forgiving crops (Lattuga, Carota, Zucchina, Basilico, Cipolla)
- Esperienza "dilettante": Open more options
- Esperienza "esperto": Allow challenging crops (Melanzana, Melone, etc.)
### Phase 2: Candidate Crop List
**Output:** Lista candidate con score confidence
```markdown
## Colture Candidate (Ordinate per Probabilità)
| # | Coltura | Varietà Suggeri | Ciclo (gg) | Acqua | Spazio | Confidence | Note |
|----|---------|-----------------|-----------|-------|--------|------------|------|
| 1 | Pomodoro | San Marzano, Ciliegia | 80 | Medio-Alto | Medio | 0.95 | Preferenza esplicita |
| 2 | Basilico | Basilico Genovese | 60 | Medio | Piccolo | 0.90 | Dieta; consociazione pomodoro |
| 3 | Lattuga | Romana | 60 | Basso | Piccolo | 0.88 | Succesioni; facile |
| ... | ... | ... | ... | ... | ... | ... | ... |
```
### Phase 3: Build Annual Crop Plan
**For each candidate crop:**
1. **Map to planting windows:** (From calendario_it.md)
- Find suitable planting dates for zone
- Consider frost dates, temperature requirements
- Identify succession opportunities (2-3x/anno se ciclo breve)
2. **Assign rotation groups:** (From colture_it.md > Famiglia)
- Track family botanica (Solanaceae, Brassicaceae, etc.)
- Ensure no same-family crop on same bed for 2-3 years
- Plan next-year rotation if applicable
3. **Estimate yields:** (From colture_it.md > Rese)
- Use min/typ/max yields per crop
- Adjust for area, experience, climate
- Calculate total production volume (kg/stagione)
4. **Assign spatial layout input:** (For orto-layout skill)
- Spacing requirements per crop
- Water zoning class (basso/medio/alto)
- Sun exposure requirements
- Companion groups (positive consociazioni)
### Phase 4: Output Piano Colture Annuale
**File:** `dati/colture/piano_colture_annuale.md`
**Structure:**
```markdown
# Piano Colture Annuale — [ORTO_ID]
**Zona Climatica:** [ZONE]
**Area disponibile:** [AREA] m²
**Comunità:** [DIET] | [N_PERSONE] pp
**Esperienza:** [LEVEL]
---
## Riepilogo Stagionale
### Primavera (Mar-Mag)
- Lattuga (marzo, successioni)
- Spinacio (aprile)
- Pomodoro (trapianto post-gelo)
- Basilico (maggio, post-freddo)
**Totale area occupata:** XX m²
**Stima rese:** XX kg
### Estate (Giu-Ago)
- Pomodoro (raccolta continua)
- Peperone (raccolta continua)
- Zucchina (raccolta continua)
- Lattuga estiva (ombra parziale)
- Fagiolo rampicante (successione giugno)
### Autunno (Set-Nov)
- Cavolo/Broccoli (trapianto agosto)
- Lattuga/Spinacio (successioni)
- Carota (raccolta da agosto)
- Ravanello (rapido)
### Inverno (Dic-Feb)
- Pisello/Fava (semina autunno, raccolta primavera)
- Riposo relativo
---
## Dettagli Colture
### 1. Pomodoro
| Proprietà | Valore |
|-----------|--------|
| **Varietà consigliata** | San Marzano (determinato), Ciliegia (indeterminato), Cuor di Bue |
| **Ciclo** | 70-90 gg (post-trapianto) |
| **Trapianto** | Post-[LAST_FROST], min T notte 15°C |
| **Raccolta** | [ZONE]-specific dates |
| **Esigenza luce** | Pieno sole (6-8h) |
| **Esigenza acqua** | Medio-Alto; classe: **ALTO** |
| **Spaziatura** | 40-60cm |
| **Stima resa** | 3-6 kg/m² |
| **Consociazioni** | ✅ Basilico (classico), Carota, Cipolla |
| **Famiglia** | Solanaceae (Rotazione: attendere 2-3 anni) |
| **Malattie** | Peronospora, Oidio, Verticillium; Bio: Rame, Zolfo, Neem |
| **Note** | Tutore necessario (bambù, spago), cesellatura regolare |
**Piano temporale (ZONA CENTRO, es. Roma):**
- Semina indoor: Gen-Feb
- Trapianto: Post-15 aprile
- Prima raccolta: Giugno
- Raccolta massima: Lug-Ago
- Fine raccolta: Ott (gelo)
---
### 2. Basilico
| Proprietà | Valore |
|-----------|--------|
| **Varietà** | Basilico Genovese (dolce), Basilico Rosso, Thai |
| **Ciclo** | 45-60 gg |
| **Semina** | Maggio post-freddo, diretto o trapianto |
| **Raccolta** | Continua (cesellatura) giu-set |
| **Esigenza acqua** | Medio; classe: **MEDIO** |
| **Spaziatura** | 20-25cm |
| **Stima resa** | 0.5-1.5 kg/m² |
| **Consociazioni** | ✅ Pomodoro (benefici reciproci), Peperone |
| **Famiglia** | Lamiaceae |
| **Note** | Termofilo; stop < 15°C; ama sole |
---
### [Continua per altre colture candidati...]
---
## Rotazione Pluri-Annuale
**Anno 1:** Pomodoro (A1), Cavolo (A2), Legume (A3)
**Anno 2:** Cavolo (A1), Legume (A2), Pomodoro (A3)
**Anno 3:** Legume (A1), Pomodoro (A2), Cavolo (A3)
---
## Stima Nutrizionale
**Comunità:** [N_PERSONE] pp, Dieta [DIET]
**Target nutritivo:** [Calcolo dieta giornaliera × giorni stagione]
**Produzione stimata:** [TOT kg] / stagione
**Allineamento:** ✓ Sufficiente / ⚠️ Marginal / ❌ Insufficiente
*(Da migliorare con maggiore area/succesioni)*
---
## Prossimi Passi
1. → **orto-calendario:** Generare timeline settimanale per task
2. → **orto-layout:** Assegnare colture a aiuole con consociazioni
3. → **orto-irrigazione:** Definire water zoning per zone acqua alta/media/bassa
---
**Data generazione:** [TODAY]
**Confidence globale:** [AVG_CONFIDENCE]
**Última revisione:** [AUTO_UPDATE_READY]
```
## References
**Consulted:**
- `references/colture_it.md` — Crop database, varieties, parameters, companions, rotation
- `references/calendario_it.md` — Frost dates, planting windows per zone
## Scripts (Optional)
Python script (optional) to parse colture_it.md and filter candidates:
```bash
scripts/filter_crops_by_constraints.py \
--area <area_mq> \
--zone <nord|centro|sud> \
--sun <h_per_day> \
--diet <list> \
--experience <none|dilettante|esperto>
```
## Error Handling
| Error | Fallback |
|-------|----------|
| No crops pass filters | Suggest broadening constraints; provide default robust list |
| Confidence < 0.5 on selection | Flag as experimental; suggest expert consultation |
| Area too small for diet needs | Suggest successions, compact varieties, or phased approach |
| Water insufficient | Bias toward drought-tolerant crops; add compost/mulch |
## Assumptions
1. CommunityProfile is complete and validated
2. GardenConfig includes zone, area, sun, water availability
3. Climate zone inference from GardenConfig is accurate
4. Crop database (colture_it.md) is up-to-date
## Validation Checklist
- ✓ Crops match diet preferences and avoid lists
- ✓ Crop rotation respected (no same family 2+ years)
- ✓ Planting dates within frost windows
- ✓ Space allocated does not exceed area
- ✓ Companion planting positive groups coherent
- ✓ Water class aligned with availability
- ✓ Yields sum to reasonable target per community size
---
**Skill: orto-agronomo** | Version 1.0 | Status: Production-Ready

View file

@ -0,0 +1,354 @@
---
name: orto-calendario
description: Generate seasonal operational calendar with weekly task schedule for Italian gardens. Use when: (1) creating task timeline from crop plan (semina, trapianto, raccolta, trattamenti), (2) adapting to regional frost dates and climate windows, (3) tagging weather-sensitive tasks for automatic rescheduling, (4) coordinating with meteo forecasts. Outputs: Calendario operativo settimanale (markdown) with task lists, dates, locations, dependencies, meteo tags.
---
# Orto Calendario — Seasonal & Weekly Task Schedule
Generate operational calendar mapping crops from piano_colture_annuale to weekly task checklist, respecting climate windows and meteo sensitivities.
## When to Use This Skill
- **After orto-agronomo:** Crop plan is finalized
- **Weekly task planning:** Break annual plan into actionable weekly checklist
- **Weather adaptation:** Tag tasks that need meteo-aware rescheduling
- **Succession management:** Track planting dates for multi-generation crops (lettuga successioni, etc.)
## Process
### Phase 1: Extract Crop Timelines from Piano Colture
**Input:** `dati/colture/piano_colture_annuale.md`
**For each crop, extract:**
- Sowing date (window start/end)
- Transplant date (window)
- Raccolta period (date range)
- Expected yield & volume
**Example (Pomodoro, ZONA CENTRO):**
- Semina indoor: Feb 1-28
- Trapianto: Apr 20 - May 5 (post-frost)
- Raccolta inizio: Jun 15 (approx)
- Raccolta fine: Oct 15
### Phase 2: Translate to Weekly Tasks
**Expand to granular tasks with metadata:**
```markdown
## Settimana 1 (Jan 1-7)
### Sabato 1-7 Gennaio
**Task 1.1 — Preparazione Semenzaio**
- Coltura: Pomodoro, Peperone, Melanzana
- Azione: Preparare terriccio, vasetti, ripiani in semenzaio
- Difficoltà: Bassa
- Ubicazione: Semenzaio (interno)
- Stima tempo: 1.5h
- Prerequisiti: None
- Meteo-sensibile: No
- Note: Preparare in anticipo per semina Jan 15-20
**Task 1.2 — Pianificazione Annuale**
- Azione: Revisionare piano_colture_annuale, marcare date critiche
- Difficoltà: Bassa
- Stima tempo: 0.5h
- Prerequisiti: piano_colture completo
---
## Settimana 5 (Jan 29 - Feb 4)
### Lunedì 29 Gennaio
**Task 5.1 — Semina Pomodoro (INDOOR)**
- Coltura: Pomodoro
- Azione: Seminare in vasetti (2-3 semi/vasetto)
- Difficoltà: Bassa
- Ubicazione: Semenzaio
- Stima tempo: 0.5h
- Temperatura richiesta: 20-25°C indoor
- Cura: Mantenere umido, luce LED 12-14h/gg
- Germinazione attesa: 5-10 giorni
- Meteo-sensibile: No (indoor)
- Critical date: YES (finestra ristretta)
- Precedente: Task 1.1 ✓
---
## Settimana 16 (Apr 20-26) — TRAPIANTO POMODORO
**⚠️ METEO-SENSIBILE CRITICA**
**Task 16.1 — Trapianto Pomodoro**
- Coltura: Pomodoro (piantine 5-6 foglie vere)
- Azione: Messa a dimora in campo
- Pre-requisiti: Ultima gelata passata (post-25 apr), notti > 15°C, piantine 5-6 foglie
- Difficoltà: Bassa-Media
- Ubicazione: A1, A2 (assegnazione da orto-layout)
- Stima tempo: 2h (50 piante = tempo circa)
- Spaziatura: 40-60cm tra piante, 60cm tra file
- Tutori: Preparare bambù/spago prima
- Concimazione: NPK 1.5:1:1.5 (per coltura solanacee)
- **Meteo-sensibile:** YES
- Rinviare se: vento > 8kn, pioggia imminente, T < 12°C
- Delay notification: send to orto-meteo-decisioni, reschedule +3 gg se risky
- Confidence in date: MEDIA (frost date margin 1 settimana)
---
## Settimana 27 (June 29 - Jul 5)
**Task 27.1 — Inizio Raccolta Pomodoro**
- Coltura: Pomodoro
- Azione: Raccolta frutti rossi maturi (non verdi)
- Difficoltà: Bassa
- Ubicazione: A1, A2
- Stima tempo: 1h (raccolta 1x/sett ~4-8 frutti)
- Frequenza: 2-3x/settimana (estate)
- Note: Raccogliere mattina presto per freschezza
- Resa attesa: 3-6 kg/m² stagione
- **Meteo-sensibile:** No (può raccogliere sotto pioggia)
---
## Settimana 42 (Oct 15-21)
**Task 42.1 — Fine Raccolta Pomodoro**
- Azione: Raccolta frutti verdi in caso di gelo imminente (trasportare indoor a maturare)
- Stima resa totale: [FORECAST kg da aprile]
- Post-raccolta: Smaltire piante (compost)
```
### Phase 3: Tag Meteo-Sensible Tasks
**Identify tasks that need weather forecast check (48h ahead):**
| Task | Meteo Tag | Skip Condition | Reschedule |
|------|-----------|---|---|
| Trapianto | **METEO_CRITICA** | Vento > 8kn, gelo, pioggia | +2-7 gg |
| Trattamento fogliare | **METEO_DEFER** | Vento > 5kn, pioggia, T < 10°C | +1-3 gg |
| Innesto | **METEO_MONITOR** | Freddo < 5°C | +1-2 gg |
| Raccolta | **NO_DEFER** | (raccogliere comunque, salvo gelo) | No reschedule |
| Irrigazione | **METEO_SKIP** | Pioggia > 10mm/24h prevista | Skip / Delay 48h |
### Phase 4: Output Calendario Operativo
**File:** `dati/calendario/calendario_operativo_settimanale.md`
**Structure:**
```markdown
# Calendario Operativo — [ORTO_ID] — [YEAR]
**Zona climatica:** [ZONE]
**Ultima gelata:** [LAST_FROST]
**Prima gelata:** [FIRST_FROST]
**Lunghezza stagione:** [LENGTH] gg
---
## Indice Rapido Colture
- Pomodoro: Semina W5, Trapianto W16, Raccolta W26-42
- Basilico: Semina W20, Raccolta W24-39
- Cavolo: Semina W22 (semenzaio), Trapianto W32, Raccolta W40-48
- [Continua per ogni coltura]
---
## Gennaio — Preparazione Invernale
### Settimana 1 (1-7 Gen)
**Lunedì**
- [ ] Preparazione semenzaio interno
- [ ] Check riscaldamento semenzaio (20-25°C)
- Tempo: 1.5h
**Mercoledì**
- [ ] Pianificazione settimanale
- Tempo: 0.5h
---
## Febbraio — Semina Indoor
### Settimana 5 (29 Gen - 4 Feb) ⚠️ CRITICA
**Lunedì 29 Gen** — **SEMINA POMODORO**
- Azione: Seminare 60 semi pomodoro (3-4 semi/vasetto)
- Ubicazione: Semenzaio
- Temperatura: 20-25°C
- Luce: LED 12h/gg
- Innaffiatura: Mantenere umido (non saturo)
- Germinazione: 5-10 gg
- **METEO:** No (interno)
- Tempo: 0.5h
**Giovedì 1 Feb** — **SEMINA PEPERONE + MELANZANA**
- Azione: Seminare peperone (esigente, più lento), melanzana
- Tempo: 0.5h
- Note: Peperone germina 15-20 gg (più lento pomodoro)
**Sabato 3 Feb** — **CONTROLLO LUCE/UMIDITÀ**
- Check: Led funzionante, umidità terriccio
- Tempo: 0.25h
---
## Aprile — Trapianti Pre-Gelo
### Settimana 15 (Apr 13-19)
**Prepare zone per trapianti:**
- [ ] Preparare aiuole A1, A2 per pomodoro
- [ ] Togliere pacciamatura, vangare, aggiungere compost
- [ ] Preparare tutori (bambù, spago)
- Tempo: 3h
---
### Settimana 16 (Apr 20-26) — 🚨 TRAPIANTO POMODORO 🚨
**⚠️ METEO-SENSIBILE CRITICA**
**Martedì 21 Apr**
- **TRAPIANTO POMODORO** (post-gelo confermato)
- Pre-check: Ultima gelata > 25 Apr? ✓
- Notti > 15°C previsione? ✓
- Piantine pronte (5-6 foglie)? ✓
- Azione: Messa a dimora 40 piante, distanza 50cm
- Acclimatazione: Semi-ombra 3 gg poi sole pieno
- Concimazione: NPK 1.5:1:1.5 (es. sangue secco + letame)
- Irrigazione: Dopo trapianto, poi ogni 2-3 gg
- **METEO-DECISION:** Controllare previsione 48h prima. Se vento > 8kn o pioggia imminente: RINVIARE +3 gg
- Tempo: 2.5h
- Confidence: 0.85 (margine +/- 1 sett frost window)
---
## Giugno — Raccolta Inizio
### Settimana 26 (Jun 23-29)
**Martedì 24 Giu** — **INIZIO RACCOLTA POMODORO**
- Azione: Raccogliere frutti rossi maturi
- Ubicazione: A1, A2
- Stima: 4-8 frutti
- Frequenza: 2-3x/settimana inizio estate
- Tempo: 1h
- Note: Raccogliere mattina presto
---
## Agosto — Picco Raccolta, Caldo
### Settimana 35 (Aug 24-30)
**Lunedì** — **IRRIGAZIONE INTENSIVA (CALDO)**
- ⚠️ Temp > 30°C prevista
- Azione: Aumentare irrigazione (mattina + sera se possibile)
- Mulching: Check pacciamatura, aggiungere se necessario
- Tempo: 1h
**Mercoledì** — **RACCOLTA INTENSIVA POMODORO**
- Azione: Raccogliere continuamente (frutti maturi)
- Stima: 8-15 frutti
- Temp: 1h
---
## Settembre — Trapianti Autunnali
### Settimana 37 (Sep 7-13)
**Semenzaio autunnale:** Cavolo, Broccoli, Cavolfiore
- Azione: Seminare per trapianto agosto
- Ubicazione: Semenzaio ombra (troppo sole = piante bruciate)
- Tempo: 0.5h
---
## Ottobre — Fine Raccolta Pomodoro, Raccolti Autunnali
### Settimana 42 (Oct 19-25)
**Lunedì 20 Ott** — **RACCOLTA FINALE POMODORO**
- Azione: Raccogliere frutti verdi (gelo previsto week 44)
- Destinazione: Cartone/cassa a maturare indoor (2-3 settimane)
- Resa totale: [FORECAST ~120-180 kg per 40 piante × 3-6 kg/m²]
- Post-raccolta: Smantellamento tutori, sradicamento piante
- Compostaggio: Piante sane → compost; piante malate → rifiuti
- Tempo: 1.5h
**Mercoledì 22 Ott**
- [ ] Raccolta Cavolo/Broccoli autunnali (W32 trapianto + 50gg = inizio oct raccolto)
- [ ] Raccolta Lattuga autunnale
- Tempo: 1h
---
## Novembre-Dicembre — Chiusura Stagione
### Settimana 48 (Nov 23-29)
- [ ] Raccolte finali (ultime lattughe, cavoli)
- [ ] Pulizia aiuole (rimozione detriti, piante)
- [ ] Preparazione compost
- [ ] Previsione: Semente pisello/fava settimane prossime
- Tempo: 2h
---
## Riepilogo Stima Raccolta (ZONA CENTRO, A1+A2 = 50 m²)
| Coltura | Ciclo | Resa /m² | Area (m²) | Resa Tot | Note |
|---------|-------|----------|-----------|----------|------|
| Pomodoro | 70-90gg | 4 kg | 15 | ~60 kg | 40 piante, raccolta 2-3 mesi |
| Basilico | 45-60gg | 1 kg | 5 | ~5 kg | Cesellatura continua |
| Cavolo | 60-90gg | 3 kg | 8 | ~24 kg | Autunno |
| Lattuga | 45-70gg | 0.7 kg | 12 | ~8 kg | Successioni (4x/anno est.) |
| Carota | 60-80gg | 1.5 kg | 10 | ~15 kg | Successioni (2-3x) |
| **TOTALE** | | | 50 | ~112 kg | Stagione ~9 mesi |
---
## Meteo Alerts Integration
**Questo calendario integra con orto-meteo-decisioni:**
- Task con tag **METEO_CRITICA**: 48h prima, check previsioni + reschedule se needed
- Task con tag **METEO_DEFER**: Flip to "on-hold" se condizioni avverse
- Task con tag **METEO_SKIP**: Skip automatio se pioggia > soglia
**Notifiche settimanali:** Elenco task + meteo alert summary
---
## References
- `references/calendario_it.md` — Frost dates, planting windows, regional adaptations
- `references/colture_it.md` — Cycle lengths, harvest windows per crop
## Assumptions
1. Piano colture annuale è completo
2. Zone climatica correttamente inferita
3. Meteo forecasts disponibili per reschedule decisions (integrazione orto-meteo-decisioni)
4. Calendario è lineale (non account per "catch-up" se attività saltata)
## Validation Checklist
- ✓ Tutte colture da piano_colture mappate
- ✓ Date planting within climate windows
- ✓ Meteo-sensitive tasks tagged
- ✓ Stima tempo totale settimanale ≤ vincolo ore disponibili
- ✓ Successioni identify (es. 3x lattuga, 2x carota)
- ✓ Raccolta end-dates before first frost
---
**Skill: orto-calendario** | Version 1.0 | Status: Production-Ready

View file

@ -0,0 +1,294 @@
---
name: orto-fitopatologo
description: Diagnose crop diseases and recommend organic treatments. Use when: (1) user reports symptoms on crops (leaf spots, wilting, insects, etc.), (2) generating preventive treatment schedule for season, (3) selecting biological treatments with safety constraints (DPI, timing, carency periods), (4) logging treatments in audit trail. Outputs: Diagnosis markdown with pathogen ID and confidence, treatment plan with timing and safety notes, preventive monitoring schedule.
---
# Orto Fitopatologo — Disease Diagnosis & Organic Treatments
Diagnose plant diseases and recommend organic/biological treatments with safety constraints.
## When to Use This Skill
- **Reactive:** User reports symptoms (leaf damage, wilting, insects, etc.)
- **Preventive:** Generate seasonal treatment schedule for high-risk crops (Pomodoro → peronospora)
- **Treatment selection:** Choose organic option matching safety/timing constraints
- **Risk assessment:** Evaluate disease pressure & confidence before recommending action
## Process
### Phase 1: Symptom Collection & Initial Filtering
**User provides:**
- Crop name (es. "Pomodoro")
- Symptom description (es. "Foglie gialle con macchie scure, bagnate")
- Location (es. "A1, 5 piante")
- Onset (es. "Ultimi 3-4 giorni")
- Conditions observed (es. "Umidità alta, pioggia notturna frequente")
**Filter candidates from malattie_trattamenti.md:**
| Symptom | Coltura | Patogeno Candidate | Confidence |
|---------|---------|-------------------|-----------|
| Macchie giallo-brune, margine indefinito | Pomodoro | Peronospora (Phytophthora) | 0.70 |
| | | Alternaria (Alternaria solani) | 0.60 |
| | | Stemphylium | 0.30 |
### Phase 2: Diagnostic Tree
**Ask clarifying questions:**
1. **Localizzazione foglia:** Bassa/media/alta canopia? (Peronospora bassa; Oidio alta)
2. **Aspetto lato foglia:** Dorso sporco? Pagina inferiore muffa? (Peronospora = dorso sporco)
3. **Progressione veloce?** (Peronospora rapida; Alternaria lenta)
4. **Temperatura/umidità:** >80% RH, T 15-25°C? (Peronospora loves this)
5. **Fragranza:** Odore marcio? (Marciume batterico)
**Example output:**
```
Q: Foglie interessate bassa canopia? Sì
Q: Dorso foglia sporco? Sì
Q: Umidità alta ricorrente? Sì
Q: Progressione veloce? Sì
→ DIAGNOSIS SCORE: Peronospora 0.92 (Very High)
```
### Phase 3: Confidence Scoring & Risk Assessment
**Calculate confidence:**
```
base_score = sum(matching_features) / total_features
e.g., 4 matching / 4 asked = 1.0 → 0.92 (internal penalty for uncertainty)
If confidence < 0.60: Flag as uncertain; recommend expert photo review
```
**Risk assessment:**
- **Confidence:** 0.92 (Very High) → Treat
- **Severity:** 5 piante su 40 pomodori (12.5%) → Low spread risk, early intervention
- **Urgency:** Pioggia prevista domani (alta umidità continua) → IMMEDIATE action
### Phase 4: Treatment Recommendation
**For each candidate pathogen, retrieve from malattie_trattamenti.md:**
| Treatment | Active | DPI | Timing | Carency | Efficacy | Notes |
|-----------|--------|-----|--------|---------|----------|-------|
| Rame (fungicida) | Cupric oxide | Gloves, respir | Pre/early | 14 gg | 75% | Preventivo migliore |
| Zolfo | Zolfo micronizzato | Gloves | Pre/early | 7 gg | 60% | OK oidio; meno peronospora |
| Bacillus subtilis | Bio fungicida | None | Early stage | 0 gg | 50% | Limitato; provare subito |
| Neem oil | Azadirachtin | Gloves | Evening | 7 gg | 40% | Last resort |
**Selection logic:**
```
IF confidence > 0.85 AND urgency HIGH:
→ Recommend rame (highest efficacy, preventivo)
→ Check DPI disponibili (gloves, respirator se spray)
→ Advise timing: Sera (no sole direct), T < 25°C
ELIF confidence 0.70-0.85 AND severity LOW:
→ Suggest monitoring first (2-3 gg)
→ If spreading: escalate to rame
→ Try Bacillus subtilis (bio-friendly, low risk)
ELIF confidence < 0.60:
→ Advise expert consult (photo to agronomist)
→ Meanwhile: improve conditions (areazione, reduce umidità)
```
### Phase 5: Preventive Schedule
**For high-risk crops (es. Pomodoro in zona umida):**
```
PREVENTIVE CALENDAR (Bio):
**June (Inizio stagione, giovani piante):**
- Week 1-2: Nessun trattamento (piante robuste giovani)
- Week 3: Primo trattamento preventivo (rame 5g/L) se pioggia frequente
**July (Peak risk: caldo + umidità notturna):**
- Weekly spray rame (Monday) — timing: sera post-pioggia
- Alternare con Bacillus subtilis (Thursday) — rotation per resistenza
**August:**
- Mantenere cadenza settimanale (caldo high, umidità notturna)
**September-October:**
- Ridurre (temperature calano, umidità meno propizia)
- Spray PRN (if symptom seen)
**Logistica:**
- Stock: 500g rame micronizzato (stagione, ~€8)
- Spray: Pompa manuale 5L (reusable, €15)
- Time: 30 min/settimana
```
### Phase 6: Output Diagnosi & Trattamenti
**File:** `dati/trattamenti/diagnosi_problemi.md`
```markdown
# Diagnosi Problemi — [ORTO_ID]
**Date:** [TODAY]
**Reporter:** [USER_NAME]
---
## Diagnosi #1 — Pomodoro Peronospora (2026-03-XX)
### Descrizione Sintomi
- Coltura: Pomodoro (20 piante, A1)
- Sintomi osservati: Foglie gialle, macchie scure irregolari, dorso sporco grigio-bianco
- Zona: Bassa canopia (foglie inferiori) → superiore
- Onset: 3-4 giorni fa
- Velocità progressione: Veloce (aumenta daily)
### Condizioni Ambientali
- Umidità: 85-90% (alta)
- Temperatura: 18-22°C (ideale peronospora)
- Precipitazione: Pioggia notturna, 2-3 giorni precedenti
- Ventilazione: Mediocre (spalliera fitta)
### Diagnostic Scoring
| Feature | Match | Weight | Score |
|---------|-------|--------|-------|
| Macchie foglia bassa | ✓ | 0.3 | 0.3 |
| Dorso sporco grigio | ✓ | 0.3 | 0.3 |
| Umidità alta | ✓ | 0.2 | 0.2 |
| Temp 15-25°C | ✓ | 0.1 | 0.1 |
| Fog gialle (stress) | ✓ | 0.1 | 0.1 |
| | **TOTAL** | | **0.90** |
### **DIAGNOSIS: Peronospora (Phytophthora infestans) — Confidence 0.90 (Very High)**
---
## Raccomandazioni Trattamento
### Azione Immediata (Oggi)
1. **Isolare zona:** Mark A1 (quarantine mentally; no spread other zones)
2. **Rimozione foglie infette:**
- Strappa tutte foglie gialle-macchiate (bassa canopia)
- Destina compost/rifiuti (NON suolo orto)
- Disinfetta cesoie (alcol 70%) tra piante
3. **Spray preventivo (sera, domani):**
- **Prodotto:** Rame micronizzato, 5g/L acqua
- **Dosaggio:** 1 L spray per 10 m² (A1 = 15m², serve 1.5L)
- **Timing:** Domani sera 18:30, T < 20°C, no sole diretto
- **Copertua:** Interamente (dorso foglia importante)
- **DPI:** Gloves + respir (rame polvere irritante)
- **Carency:** 14 gg (no raccolta prima)
- **Efficacy:** 75% (prevenzione > cura)
4. **Condition improvement:**
- **Ventilazione:** Pota rami inferiori (aria circola)
- **Umidità:** Irrigazione mattina (no sera; riduce umidità notturna)
- **Spacing:** Aumenta distanze tra piante (areazione)
---
### Preventive Schedule Pomodoro (Stagione)
**A partire da giugno (nuovo ciclo):**
| Settimana | Azione | Prodotto | Timing | Note |
|-----------|--------|----------|--------|------|
| 1-2 | Nessuno | - | - | Piante giovani, vigore alto |
| 3+ | Preventivo | Rame 5g/L | Lunedì | Cadenza settimanale |
| Alternato | Bio-rotation | Bacillus subtilis | Giovedì | Resistenza crociata |
| Post-pioggia | Extra spray | Rame | +1 gg pioggia | Umidità propizia |
---
### Costi & Logistica
- **Rame:** €8 (500g, stagione)
- **Spray:** €15 (pompa manuale, one-time)
- **Tempo:** 30 min/trattamento × 12-15 trattamenti = 6-8 ore/stagione
- **Total cost:** ~€23 (one-time, poi ~€5/anno ricaricare rame)
---
## Monitoraggio (Follow-up)
**Prossimi 7 giorni:**
- [ ] **Giorno 1 (Oggi):** Rimozione foglie, spray sera
- [ ] **Giorno 3:** Verifica se new symptomi → successful
- [ ] **Giorno 7:** Secondo spray (rame OR Bacillus rotation)
- [ ] **Giorno 14:** Inizio raccolta (carency passato rame, 14 gg)
**Success criterion:** No new leaf symptoms by day 5
**If spreading:**
- Escalate to more frequent spray (2-3x/week)
- Consider removing heavily affected plants (if <10% piante)
- Consult expert if confidence < 0.60
---
## Archive & Audit Trail
**Stored:** `dati/trattamenti/`
**Logged:** `log/audit_trail.md` (Event: trattamento_peronospora, timestamp, prodotto, qty, risultato)
---
**Diagnosi completata:** 2026-03-XX
**Confidence:** 0.90 (Very High)
**Risk level:** MEDIUM (manageable with immediate action)
**Prognosis:** Good (early intervention + ventilazione improvement)
```
---
## References
- `references/malattie_trattamenti.md` — Symptom database, pathogen bio, treatments, DPI, carency
## Fallback & Uncertainty
| Confidence | Action |
|------------|--------|
| > 0.85 | Treat confidently (high certainty) |
| 0.70-0.85 | Recommend monitoring 3-5 gg; escalate if spreading |
| 0.50-0.70 | Suggest photo to expert; meanwhile improve conditions (ventilation, etc.) |
| < 0.50 | DO NOT TREAT (risk harm). Get expert opinion. |
## Error Handling
| Error | Fallback |
|-------|----------|
| Unknown crop/symptom combo | Query malattie_trattamenti.md; if no match, advise photo expert review |
| Multiple pathogens likely | List top 3 candidates with confidence scores; treat top candidate |
| DPI/Equipment missing | Suggest safer alternative (e.g., Bacillus instead rame if no respirator) |
## Assumptions
1. malattie_trattamenti.md is up-to-date with crop diseases
2. User can provide photo or detailed symptom description
3. Organic/bio treatments are preferred (no synthetic chemicals)
4. Carency periods respected (14 days before raccolta for certain treatments)
## Validation Checklist
- ✓ Symptoms collected comprehensively
- ✓ Diagnostic confidence > 0.60 OR expert referred
- ✓ Treatment DPI requirements documented
- ✓ Carency periods noted for harvest safety
- ✓ Preventive schedule defined for high-risk crops
- ✓ Audit trail logged (treatment applied, results)
---
**Skill: orto-fitopatologo** | Version 1.0 | Status: Production-Ready

336
build/orto-init/SKILL.md Normal file
View file

@ -0,0 +1,336 @@
---
name: orto-init
description: Initialize a new community or home garden project in the Orto management system. Use when: (1) setting up a new garden with location, size, and environmental details, (2) creating the directory structure and markdown templates for the project, (3) registering the garden in the project registry, (4) preparing questionnaire blocks for user profiling. Outputs: Garden config markdown, questionnaire templates, audit trail, directory structure ready for onboarding workflow.
---
# Orto Init — Garden Project Initialization
Initialize a new garden project from scratch. This is the first step in the Orto workflow.
## When to Use This Skill
- **New garden setup:** User wants to start managing a garden with Orto
- **Garden registration:** Assign unique ID, name, location, and basic environment data
- **Directory scaffolding:** Create project structure (config, data, logs, media, report folders)
- **Template preparation:** Generate markdown templates for questionnaire, config, calendar, etc.
## Inputs
Codex collects these details from the user (or uses defaults if unavailable):
| Input | Type | Required | Example |
|-------|------|----------|---------|
| `orto_id` | String | Yes | `orto_roma_testaccio_001` |
| `orto_name` | String | Yes | `Orto Testaccio Roma` |
| `provincia` | String | Yes | `Roma` |
| `regione` | String | Yes | `Lazio` |
| `latitude` | Float | Yes | `41.8782` |
| `longitude` | Float | Yes | `12.4922` |
| `area_mq` | Float | No (collect in onboarding) | `50` |
| `climate_zone` | Enum | No (infer from lat/lon) | `centro` |
### Input Validation
- `orto_id`: lowercase, underscore/hyphen only, max 64 chars (e.g., `orto_NAME_NUMBER`)
- `provincia` + `regione`: normalize to Italian region list (Roma → Lazio)
- `latitude`: -90 to 90, decimal
- `longitude`: -180 to 180, decimal
- `area_mq`: positive float if provided
## Process
### Phase 1: Climate Zone Inference
Map `latitude` to Italian macro-zone:
```
if lat >= 44.0:
zone = "nord" # Piemonte, Lombardia, Veneto, etc.
last_frost ≈ 25 aprile
first_frost ≈ 15 ottobre
elif lat >= 42.5:
zone = "centro" # Toscana, Lazio, Marche, etc.
last_frost ≈ 15 aprile
first_frost ≈ 25 ottobre
else:
zone = "sud" # Campania, Sicilia, Puglia, etc.
last_frost ≈ 1 aprile
first_frost ≈ 5 novembre
```
### Phase 2: Generate Directory Structure
Create base folder: `/home/<user>/.openclaw/workspace/Orti/<orto_id>/`
```
<orto_id>/
├── README.md # Project overview
├── config/
│ ├── garden_config.md # Base garden config (location, size, soil, etc.)
│ └── ambiente_vincoli.md # Environmental constraints
├── dati/
│ ├── questionario/
│ │ ├── blocco_1_localizzazione.md
│ │ ├── blocco_2_layout_spazio.md
│ │ ├── blocco_3_irrigazione.md
│ │ ├── blocco_4_comunita_dieta.md
│ │ └── blocco_5_obiettivi_vincoli.md
│ ├── calendario/
│ │ └── calendario_stagionale.md
│ ├── colture/
│ │ └── piano_colture_annuale.md
│ ├── layout/
│ │ ├── aiuole_dimensioni.md
│ │ └── zone_clima_microclimatico.md
│ ├── irrigazione/
│ │ ├── sistema_irrigazione.md
│ │ ├── sensori_monitoraggio.md
│ │ └── programmi_irrigazione.md
│ ├── meteo/
│ │ └── dati_meteo_giornalieri.md
│ ├── nutrizione/
│ │ ├── analisi_terreno.md
│ │ └── piano_concimazione.md
│ ├── trattamenti/
│ │ ├── diagnosi_problemi.md
│ │ └── piano_trattamenti.md
│ └── raccolti/
│ └── cicli_raccolta_previsti.md
├── log/
│ ├── audit_trail.md # Audit log
│ └── note_osservazioni.md # Field notes
├── media/
│ ├── foto/
│ └── video/
└── report/
└── (reports generated later)
```
### Phase 3: Generate Markdown Templates
**garden_config.md** (from template)
```markdown
# Configurazione Orto: [ORTO_ID]
## Dati Base
- **Nome:** [ORTO_NAME]
- **ID:** [ORTO_ID]
- **Provincia:** [PROVINCIA]
- **Regione:** [REGIONE]
- **Coordinate:** [LATITUDE], [LONGITUDE]
- **Zona climatica:** [ZONE] (Nord/Centro/Sud)
- **Ultima gelata (app.):** [LAST_FROST_DATE]
- **Prima gelata (app.):** [FIRST_FROST_DATE]
- **Lunghezza stagione:** ~[SEASON_LENGTH] giorni
## Spazio
- **Area disponibile:** ??? m² *(riempire in onboarding blocco 2)*
- **Tipologia terreno:** ??? *(riempire in onboarding blocco 2)*
- **Esposizione solare:** ??? *(riempire in onboarding blocco 2)*
## Vincoli Ambientali
- **Vincoli agua:** *(riempire in onboarding blocco 3)*
- **Vincoli manutenzione:** *(riempire in onboarding blocco 5)*
- **Note vincoli:** *(riempire in onboarding)*
## Status
- **Data creazione:** [TODAY]
- **Stato workflow:** Init completo, in attesa onboarding
```
**blocco_1_localizzazione.md** (questionnaire template)
```markdown
# Blocco 1 — Localizzazione Orto
## Domande
### Q1.1 — Dove si trova l'orto?
**Provincia:** [auto-filled]
**Regione:** [auto-filled]
**Indirizzo (opz.):** ___
### Q1.2 — Accessibilità
- [ ] Facile accesso da casa (< 10 min a piedi)
- [ ] Accesso moderato (10-30 min)
- [ ] Accesso difficile (> 30 min)
### Q1.3 — Proprietà/Gestione
- [ ] Proprietà privata personale
- [ ] Orto comunitario
- [ ] Terreno affittato
- [ ] Altro: ___
## Descrizione
[Spazio libero per note]
## Data risposta
[TODAY]
```
### Phase 4: Register Garden in Registry
Append to central registry (or create if not exists):
**orti_registry.json** (location: `/home/<user>/.openclaw/workspace/Orti/orti_registry.json`)
```json
{
"orti": [
{
"orto_id": "[ORTO_ID]",
"name": "[ORTO_NAME]",
"provincia": "[PROVINCIA]",
"regione": "[REGIONE]",
"latitude": [LAT],
"longitude": [LON],
"zone": "[ZONE]",
"created_at": "[TODAY_ISO]",
"status": "init_complete",
"path": "/home/<user>/.openclaw/workspace/Orti/[ORTO_ID]"
}
]
}
```
### Phase 5: Generate Audit Trail Entry
Create `log/audit_trail.md`:
```markdown
# Audit Trail — [ORTO_ID]
## Event: Init
| Field | Value |
|-------|-------|
| **Timestamp** | [TODAY_ISO] |
| **Event** | orto_init |
| **Status** | success |
| **Orto ID** | [ORTO_ID] |
| **Coordinator** | Codex (skill: orto-init) |
| **Details** | Garden project initialized. Config created, directory structure scaffolded, questionnaire templates generated. |
---
```
## Output
**Structure created:**
- Directory `/Orti/<orto_id>/` with all subdirectories ✓
- File `garden_config.md` (initial template) ✓
- Files `blocco_1...5.md` (questionnaire templates, empty) ✓
- File `audit_trail.md` (init event) ✓
- Registry entry in `orti_registry.json`
**Console output (Markdown):**
```markdown
# ✅ Orto Initialized
**Orto ID:** [ORTO_ID]
**Name:** [ORTO_NAME]
**Location:** [PROVINCIA], [REGIONE]
**Zone:** [ZONE] (Frost: [LAST_FROST]—[FIRST_FROST])
**Area:** ??? m² (collect in Blocco 2)
**Path:** /home/<user>/.openclaw/workspace/Orti/[ORTO_ID]
## Next Step
→ Run **orto-onboarding** skill to collect garden profile via 5 questionnaire blocks.
**Expected time:** 15-30 minutes
```
## Error Handling
| Error | Fallback |
|-------|----------|
| Directory already exists | Skip creation; update registry and confirm with user |
| Invalid coordinates | Use centro-Italy defaults (Lazio) and flag for user verification |
| Registry file missing | Create new registry with this entry |
| Invalid orto_id format | Suggest normalized ID and ask for confirmation |
## References
See bundled `references/calendario_it.md` for frost dates and climate zone details.
## Scripts
This skill uses bundled Python script for deterministic directory creation:
```bash
scripts/init_new_orto_bundled.sh \
--id <orto_id> \
--name "<orto_name>" \
--provincia <provincia> \
--regione <regione> \
--lat <latitude> \
--lon <longitude>
```
Script is fully self-contained and idempotent (safe to re-run).
---
## Examples
### Example 1: Roma Garden
**Input:**
```
orto_id: orto_roma_testaccio_001
orto_name: Orto Testaccio Roma
provincia: Roma
regione: Lazio
latitude: 41.8782
longitude: 12.4922
```
**Output:**
- Directory created: `/Orti/orto_roma_testaccio_001/`
- Zone inferred: `centro` (last frost ~15 apr, first frost ~25 oct)
- Status: Init complete, ready for onboarding
---
### Example 2: Milano Garden
**Input:**
```
orto_id: orto_milano_lambro_001
orto_name: Orto Lambro Milano
provincia: Milano
regione: Lombardia
latitude: 45.4642
longitude: 9.1900
```
**Output:**
- Directory created: `/Orti/orto_milano_lambro_001/`
- Zone inferred: `nord` (last frost ~25 apr, first frost ~15 oct)
- Status: Init complete
---
## Assumptions
1. Codex is running on a machine with filesystem access to `/home/<user>/.openclaw/workspace/`
2. User has write permissions to create directories and files
3. Climate zone is inferred from latitude alone (simplification; refine if needed)
4. All templates are in Italian language (Italiano)
5. Questionnaire templates are empty stubs; filled during orto-onboarding skill
## Validation Checklist
- ✓ `orto_id` is unique in registry
- ✓ Directory path does not conflict with existing gardens
- ✓ Coordinates are valid (lat/lon bounds)
- ✓ Provincia and Regione match Italian administrative divisions
- ✓ All template files created and readable
---
**Skill: orto-init** | Version 1.0 | Status: Production-Ready

View file

@ -0,0 +1,313 @@
---
name: orto-irrigazione
description: Design multi-zone irrigation system with baseline scheduling and automation logic. Use when: (1) defining water zones by crop water-need class, (2) calculating daily water requirements (ET, Kc coefficients), (3) specifying emitters and sensor placement, (4) writing baseline watering schedules and meteo-triggered rules. Outputs: Irrigazione system config (markdown) with zones, emitters, baseline schedule, soil sensor thresholds, meteo decision rules.
---
# Orto Irrigazione — Multi-Zone Irrigation System Design
Design irrigation zones, baseline schedule, and automation rules based on crop water needs, soil, and weather.
## When to Use This Skill
- **After orto-layout:** Crop assignment to beds/zones is known
- **System planning:** Define infrastructure (emitters, zones, sensors, controls)
- **Baseline schedule:** Calculate daily water needs and watering frequency
- **Automation:** Define soil moisture triggers + meteo override rules
## Process
### Phase 1: Water-Need Classification from Crops
**Map crops → water class (from colture_it.md):**
```
BASSO: Carota, Cipolla, Spinacio, Pisello, Aglio (~100-150 mm/season)
MEDIO: Lattuga, Cavolo, Broccoli, Fagiolo (~150-250 mm/season)
ALTO: Pomodoro, Peperone, Zucchina, Melone, Cocomero (~300-500 mm/season)
MOLTO_ALTO: (Rare; non tipici orto domestico)
```
### Phase 2: Infer Zones from Layout
**Input:** `dati/layout/aiuole_dimensioni.md` (zone + crop assignment)
**Example:**
```
Zone A1 (15 m²): Pomodoro (ALTO) + Basilico (MEDIO) → Zone ALTA
Zone A2 (15 m²): Cavolo (MEDIO) + Lattuga (MEDIO) → Zone MEDIA
Zone A3 (20 m²): Carota (BASSO) + Cipolla (BASSO) → Zone BASSA
```
### Phase 3: Calculate Baseline Water Needs
**Formula (simplified):**
```
Daily water need (mm) = ET0 × Kc × Area_fraction
Where:
- ET0 (ref evapotranspiration) = climate-based (lookup from zone)
- Kc (crop coefficient) = 0.4-1.2 (depends crop growth stage)
- Running frequency = Daily need / Emitter rate
Example (Zone ALTA, July, North Italy):
- ET0 ≈ 6 mm/day (summer peak)
- Kc (Pomodoro, mid-season) ≈ 0.9
- Daily need ≈ 6 × 0.9 = 5.4 mm/day
- If drip emitter 2 l/h spaced 0.5m = ~4 mm/h per m
- Runtime ≈ 5.4mm / 4mm_per_h ≈ 1.3h ≈ 80 min/day
- Frequency: 1x daily or split 2x (morning/evening in heat)
```
### Phase 4: Define Zone Infrastructure
**For each zone, specify:**
| Parameter | Zone BASSA | Zone MEDIA | Zone ALTA |
|-----------|-----------|-----------|----------|
| **Emitter type** | Dripper (0.5-1 l/h) | Dripper (1-2 l/h) | Dripper (2-4 l/h) + microsprayer |
| **Spacing** | 0.75m | 0.5-0.75m | 0.4-0.5m |
| **Baseline runtime** | 20-30 min | 40-60 min | 60-90 min |
| **Frequency** | 2-3x/week | 3-4x/week | 4-6x/week |
| **Soil sensor** | Optional | Optional | Recommended |
| **Sensor threshold (soil %)** | 40% VWC | 50% VWC | 60% VWC |
### Phase 5: Outline Automation Logic
**Baseline rule (if no sensor):**
```
Zone ALTA (Pomodoro):
- June-July: Daily 7am + 5pm (split due heat)
- August: Daily 6am + 6pm
- Pre-frost (Oct): Skip if rain > 5mm in 24h
```
**With soil sensor:**
```
Zone ALTA:
- IF soil_moisture < 60% VWC AND (no rain last 24h) Irrigate 60 min
- IF soil_moisture > 70% VWC → Skip
- Override: IF air_temp > 35°C → Irrigate anyway (heat stress)
```
**Meteo override (from orto-meteo-decisioni):**
```
- IF rain_forecast > 10mm in 24h → Skip 24h
- IF frost_alert → Move irrigation to morning (root protection)
- IF wind_alert → Suspend sprayers (only drip)
```
### Phase 6: Output Sistema Irrigazione Config
**File:** `dati/irrigazione/sistema_irrigazione.md`
```markdown
# Sistema Irrigazione — [ORTO_ID]
**Area totale:** [AREA] m²
**Acqua disponibile:** [SOURCE] — [PORTATA] l/min
**Vincoli:** [CONSTRAINTS_FROM_ONBOARDING]
**Automazione:** [LEVEL]
---
## Zone Irrigue
### Zona ALTA (A1 — Pomodoro, Basilico)
**Colture:** Pomodoro (ALTO) + Basilico (MEDIO)
**Area:** 15 m²
**Sole:** Pieno (6-8h)
**Emitters:**
- Tipo: Dripper 2 l/h + microsprayer 4 l/h (angoli)
- Spacing: 0.4m
- Numero emitters: ~40 drippers
**Layout:**
```
[A1 Pomodoro — Area 15 m²]
Drip line 1 ──────────────────→
Drip line 2 ──────────────────→
Drip line 3 ──────────────────→
Drip line 4 ──────────────────→
Linea manifold: 16mm PE
Main inlet: 20mm PE (from rubinetto)
```
**Baseline Schedule (June-August, North Italy):**
| Mese | Frequency | Timing | Runtime | Note |
|------|-----------|--------|---------|------|
| Jun | 4x/week | 7am | 60 min | Inizio stagione |
| Jul | Daily | 7am, 5pm | 60 min each | Peak heat |
| Aug | Daily | 6am, 6pm | 80 min each | Peak caldo + ciclo lungo |
**Soil Sensor (Optional but recommended):**
- Model: Capacitive VWC sensor (es. SMT100)
- Placement: 20cm depth, centro aiuola A1
- Threshold: 60% VWC → Irrigate (trigger)
- Confidence: Sensor ±3% accuracy
**Meteo Override Rules:**
- IF rain_forecast > 10mm → Skip next 24h
- IF temp_forecast > 35°C → Force irrigate (heat stress priority)
- IF frost_alert → Early morning irrigation only
**Safety Interlocks:**
- Max runtime: 120 min/zone/day (prevent overwatering)
- Flow monitoring: IF flow sensor detects 0 l/min for 5 min → STOP + ALERT
**Cost estimate:**
- Drip tubing + emitters: €15 (DIY, PE budget)
- Sensor (if): €30-50
- Timer (if): €20-50
- Total: €65-115
**Expected water consumption:**
- Zone ALTA: 5.4 mm/day × 15 m² = 81 liters/day
- 30 days June-August: ~2,400 liters/mese
- Totale stagione (Jun-Oct): ~10,000 liters
---
### Zona MEDIA (A2 — Cavolo, Lattuga)
**Colture:** Cavolo (MEDIO) + Lattuga (MEDIO)
**Area:** 15 m²
**Baseline Schedule:**
| Mese | Frequency | Runtime |
|------|-----------|---------|
| Jun | 3x/week | 40 min |
| Jul | 4x/week | 50 min |
| Aug | 4x/week | 60 min |
| Sep-Oct | 2-3x/week | 40 min |
**Emitters:** Dripper 1-2 l/h, spacing 0.5m
---
### Zona BASSA (A3 — Carota, Cipolla)
**Colture:** Carota (BASSO) + Cipolla (BASSO)
**Area:** 20 m²
**Baseline Schedule:** 2-3x/week, 20-30 min
**Emitters:** Dripper 0.5-1 l/h, spacing 0.75m
**Note:** Post-raccolta (cipolla maturazione), ridurre irrigation (rischio marciume)
---
## Irrigation Circuit Layout (Diagram Testuale)
```
[Rubinetto]
[Timer/Controller]
[Linea principale 20mm PE]
├─→ [Regolatore pressione]
│ ├─→ Valvola solenoide Zona ALTA (A1)
│ ├─→ Valvola solenoide Zona MEDIA (A2)
│ └─→ Valvola solenoide Zona BASSA (A3)
└─→ [Sensore flusso totale (optional)]
└─→ [Manometro]
```
---
## Automazione Opzioni
### Opzione 1: Manuale (Budget basso)
- Timer meccanico semplice (€20)
- Avvio manuale o timer accensione
- Pro: Semplice, economico
- Contro: Meno preciso, niente sensori
### Opzione 2: Timer programmabile (Budget medio)
- Timer digitale (€30-50) con 4+ programmi
- Cron settimanale customizzabile
- Sensor input: None (rule-based only)
- Pro: Flessibile, reliable
- Contro: No adaptive weather
### Opzione 3: Smart controller (Budget alto)
- Controller IoT (es. Rasprry Pi + Sonoff relays, ~€80-150)
- WiFi integration: Previsioni meteo automatiche
- Sensor integration: Capacitive VWC input
- Pro: Full automation, adaptive
- Contro: Setup tecnico, power requirement
---
## Meteo Integration
**Input from orto-meteo-decisioni:**
Weekly briefing (ogni lunedì):
```
ZONA ALTA:
- Previsione pioggia: 15mm Wed (expected coverage 60%)
- Azione: Skip Wednesday+Thursday (2 days)
- Reschedule: Riprendere Friday
ZONA MEDIA:
- Nessun cambiamento (pioggia marginale)
ZONA BASSA:
- Previsione caldo (T > 32°C) Fri-Sun
- Nota: Carota in raccolta; ridurre irrigation (no stress)
```
---
## Troubleshooting
| Problema | Causa | Soluzione |
|----------|-------|----------|
| Emitter intasato | Calcare/sporco | Pulizia nozzle; demineralizzare se needed |
| Flusso ridotto | Perdita linea | Check connection; sostituire se bucata |
| Piante appassite | Sotto-irrigazione | Aumentare runtime o frequenza |
| Marciume radicale | Over-irrigazione | Ridurre frequenza; migliorare drenaggio |
---
## Annual Maintenance
- **Maggio:** Test controller, verifica emitters (pulizia)
- **Giugno:** Calibration sensori (se presenti)
- **Agosto:** Check pressione sistema, repair leaks
- **Settembre:** Preparare per riduzione fall watering
- **Novembre:** Svuotare linee, immagazzinare per inverno
---
## References
- `references/irrigazione_parametri.md` — ET0, Kc coefficients, zone design patterns
## Assumptions
1. Fonte acqua disponibile (rubinetto, pozzo, raccolta pluviale)
2. Layout zone già definito (orto-layout)
3. Suolo drenaggio accettabile (>mediocre)
4. No flooding risk (topografia)
## Validation Checklist
- ✓ Tutte zone have emitters + baseline schedule
- ✓ Pressione sistema adequata (0.5-1.5 bar drip, 2-3 bar sprinkler)
- ✓ Max water consumption ≤ source capacity (l/min × runtime)
- ✓ Automation logic coherent (no conflitti sensore/meteo)
- ✓ Safety interlocks present
- ✓ Cost estimate reasonable
---
**Skill: orto-irrigazione** | Version 1.0 | Status: Production-Ready

308
build/orto-layout/SKILL.md Normal file
View file

@ -0,0 +1,308 @@
---
name: orto-layout
description: Design garden layout with raised beds, companion plantings, and zone assignments. Use when: (1) assigning crops to beds based on consociations and water-need grouping, (2) creating spatial layout (bed dimensions, pathways, accessibility), (3) grouping crops by irrigation zone (water class), (4) drawing ASCII bed maps with crop labels. Outputs: Layout markdown with bed assignments, consociation matrix, accessibility notes, zone assignments for irrigation.
---
# Orto Layout — Garden Bed Design & Companion Planting
Map crops to physical beds, apply companion planting rules, group by water zones, ensure accessibility.
## When to Use This Skill
- **After piano colture:** Crop list is finalized
- **Before irrigazione:** Need zone groupings for water scheduling
- **Space planning:** Physical layout with bed dimensions and pathways
- **Accessibility:** Ensure walkable pathways, suitable for minors/elderly if needed
## Process
### Phase 1: Extract Crop Requirements from Piano Colture
**Input:** `dati/colture/piano_colture_annuale.md`
**For each crop, collect:**
- Water class (BASSO, MEDIO, ALTO)
- Spacing (cm between plants, cm between rows)
- Sun requirement (pieno/parziale/ombra)
- Consociation groups (positive/negative matches)
- Area needed (m²) = plants × spacing_area
### Phase 2: Group by Water Zone
**Logic:**
1. **ZONA ALTA (water-intensive):** Pomodoro, Peperone, Zucchina, Melone, Basilico
2. **ZONA MEDIA:** Lattuga, Cavolo, Broccoli, Fagiolo, Carota
3. **ZONA BASSA:** Carota, Cipolla, Spinacio, Pois, Barbabietola
**Constraint:** Avoid mixing high + low in same bed (diff watering needs)
### Phase 3: Apply Companion Rules
**Consociation matrix (from colture_it.md):**
```
POSITIVE (✓):
- Pomodoro + Basilico → odore basilico repelle insetti
- Pomodoro + Carota → radici diverse (non competono)
- Fagiolo + Mais + Zucca → "Trio di sorelle" (N fixation, support, ombra)
ANTAGONISMO (✗):
- Pomodoro + Brassica → malattie compartite
- Cipolla + Fagiolo → sopprimono N fixation
- Carota + Finocchio → competizione radicale
```
**Output:** Bed grouping respecting:
1. Water zone match
2. Positive consociations when possible
3. No antagonismi in same bed
4. No same family 2+ years (rotation check with history)
### Phase 4: Layout Design
**Bed size recommendations (from colture_it.md):**
- Width: 1.0-1.5 m (reachable from sides)
- Length: 2-4 m (modular)
- Depth: 0.3-0.5 m (rialzate), or 0 (a terra)
- Pathway: 0.5 m min (accessibility)
**Example for 50 m² area:**
```
Area 50 m² → Divide in 4-5 beds + pathways
Option 1: Rialzate (4 beds)
Each bed: 1.2m × 3m × 0.4m = 3.6 m²
Total beds: 4 × 3.6 = 14.4 m²
Pathway: ~5 m² (10%)
Usable: ~14.4 m² ← Conservative
Option 2: A terra (4 file parallele)
Each file: 1m wide × 12m long = 12 m²
Total: ~36 m² (usable)
Pathway: ~8 m² (20%)
Best: Mix (2 rialzate + 2 file) = ~20-25 m² usable
```
### Phase 5: Generate Layout Map & Assignment
**Output:** `dati/layout/aiuole_dimensioni.md`
```markdown
# Layout Orto — [ORTO_ID]
**Area totale:** 50 m²
**Area usable:** 25 m²
**Tipologia:** 2 aiuole rialzate + 2 file a terra
---
## Map Testuale
```
[NORD - Sole max al mattino]
AIUOLA A1 (Rialzata) AIUOLA A2 (Rialzata)
1.2m × 3m × 0.4m 1.2m × 3m × 0.4m
┌─────────────────────┐ ┌─────────────────────┐
│ POD │ POD │ POD │ POD│ │ CAV │ CAV │ LAT │ LAT│
│ + │ + │ + │ + │ │ +FR │+TIM │ │ │
│ BAS │ BAS │ BAS │ BAS│ │ │ │ │ │
└─────────────────────┘ └─────────────────────┘
[ZONA ALTA] [ZONA MEDIA]
Acqua: Daily Acqua: 3-4x/sett
PATHWAY 0.5m ↔
FILA A3 (A terra) FILA A4 (A terra)
1m × 12m 1m × 12m
[CAR || CAR || CAR] [CIP || CIP || CIP]
[ x || x || x ] [ x || x || x ]
[ x || x || x ] [ x || x || x ]
[ZONA MEDIA] [ZONA BASSA]
Acqua: 3x/sett Acqua: 2-3x/sett
[SUD - Ombra pomeridiana]
```
---
## Assegnazione Aiuole Dettagliata
### AIUOLA A1 — Zona ALTA (Pomodoro + Basilico)
**Dimensioni:** 1.2m × 3m (3.6 m²)
**Esposizione:** Pieno sole (6-8h)
**Acqua:** ALTA (daily 60-80 min)
**Layout (vista dall'alto):**
```
3 metri (NORD → SUD)
┌─────────────────────────┐ 1.2 m
│ POD │ POD │ POD │ POD │ (OVEST)
│ 0.6m │ 0.6m │ 0.6m │ 0.6m│
│ 60cm│ 60cm│ 60cm│ 60cm│
│ (distanza file) │
│ ┌──────────────────────┐ │
│ │BASILICO (bordure) │ │
│ └──────────────────────┘ │
└─────────────────────────┘
```
**Piante:**
- Pomodoro: 4 piante (1 per colonna, distanza 60cm)
- Basilico: 4 piante (bordure, angoli e centro tra righe)
- Tutori: Bambù per pomodori (centro aiuola, 2m height)
**Consociazione:** ✓ Positiva (basilico odore repelle insects)
**Cura:** Cesellatura basilico, tutoraggio pomodoro regolare
---
### AIUOLA A2 — Zona MEDIA (Cavolo + Lattuga + Timo)
**Dimensioni:** 1.2m × 3m (3.6 m²)
**Esposizione:** Pieno sole (6-8h)
**Acqua:** MEDIA (3-4x/sett 40-50 min)
**Layout:**
```
┌──────────────────────────┐
│ CAV │ CAV │ CAV │ CAV │ (60cm spacing)
│ │ │ │ │
│ LAT │ LAT │ LAT │ LAT │ (SECOND row, 30cm spacing)
│ │ │ │ │
│ TIM (corners, perennial, tutor fixed)
└──────────────────────────┘
```
**Piante:**
- Cavolo: 4 piante (60cm spacing)
- Lattuga: 8-12 piante (30cm spacing, second row)
- Timo: 2 piante (corners, permanent)
**Consociazione:** ✓ Positiva (timo + cavolo repelle; lattuga diversa root depth)
---
### FILA A3 — Zona MEDIA (Carota)
**Dimensioni:** 1m × 12m
**Esposizione:** Pieno sole parziale (4-6h ok)
**Acqua:** MEDIA (3x/sett 40 min)
**Layout:**
```
Carota: 3 righe parallele (distanza 20cm)
Ogni riga: ~30 piante (spacing 5-8cm, diradare crescita)
┌──────────────────────────────┐
│ C C C C C ... (30 plants) │ Riga 1 (0-20cm)
│ │
│ C C C C C ... (30 plants) │ Riga 2 (20-40cm)
│ │
│ C C C C C ... (30 plants) │ Riga 3 (40-60cm)
│ │
│ C C C C C ... (30 plants) │ Riga 4 (60-80cm) [optional]
└──────────────────────────────┘
```
**Succesioni:** Carota può seminare 2-3 volte (mar/mag-giu, lug-ago uscita ott)
---
### FILA A4 — Zona BASSA (Cipolla)
**Dimensioni:** 1m × 12m
**Esposizione:** Sole parziale ok (4-6h)
**Acqua:** BASSA (2-3x/sett 20-30 min)
**Layout:**
```
Cipolla: 2 righe (25cm spacing tra file, 15cm tra piante)
┌──────────────────────────────┐
│ O O O O O ... (40 bulbilli) │ Riga 1
│ │
│ O O O O O ... (40 bulbilli) │ Riga 2
└──────────────────────────────┘
Trapianto: Marzo-Aprile (bulbilli)
Raccolta: Luglio-Agosto (bulbi maturi)
```
---
## Accessibilità & Sicurezza
**Persone coinvolte:** [From CommunityProfile]
- Se minori (children): Remove toxic/irritating plants (no ruta, attenzione rovo)
- Se anziani: Rialzate preferred (no piegamento eccessivo)
- Se PMR: Pathways ≥0.7m, rialzate a 0.6-0.8m (wheel accessible)
**Pathways in layout:**
```
Main path (NORD-SUD): 0.7m wide (wheelchair OK)
Side paths (access to beds): 0.5m min
```
---
## Irrigation Zone Assignment (Summary)
| Aiuola | Zona Acqua | Baseline |
|--------|-----------|----------|
| A1 (POD+BAS) | **ALTA** | Daily 60-80 min |
| A2 (CAV+LAT) | **MEDIA** | 3-4x/sett 40-50 min |
| A3 (CAR) | **MEDIA** | 3x/sett 40 min |
| A4 (CIP) | **BASSA** | 2-3x/sett 20-30 min |
**Manifold layout:**
- Main 20mm → Split to 3 zones (ALTA, MEDIA, BASSA)
- Zone ALTA: Drip 2 l/h, Zone MEDIA: 1-2 l/h, Zone BASSA: 0.5-1 l/h
---
## Rotation Plan (Multi-Year)
**Anno 1:**
- A1: Solanaceae (Pomodoro)
- A2: Brassicaceae (Cavolo) + Asteraceae (Lattuga)
- A3: Apiaceae (Carota)
- A4: Amaryllidaceae (Cipolla)
**Anno 2 (Rotazione):**
- A1: Legume (Fagiolo) [N fixation benefit post-Solanaceae]
- A2: Apiaceae (Carota)
- A3: Amaryllidaceae (Cipolla)
- A4: Solanaceae (Pomodoro)
---
## References
- `references/colture_it.md` — Spacing, consociations, water class
- `references/consociazioni_layout.md` — Companion matrix, layout guidelines
## Assumptions
1. Piano colture crops list finalized
2. Area dimensions provided (GardenConfig)
3. Accessibility requirements from CommunityProfile
4. Sun exposure measured/estimated (GardenConfig)
## Validation Checklist
- ✓ All crops from piano colture assigned to beds
- ✓ Water zones coherent (ALTA/MEDIA/BASSA not mixed)
- ✓ Positive consociations maximized
- ✓ No antagonismi in same bed
- ✓ Accessibility pathways ≥0.5m
- ✓ Rotation plan covers 2-3 years
- ✓ Layout drawing clear and actionable
---
**Skill: orto-layout** | Version 1.0 | Status: Production-Ready

View file

@ -0,0 +1,276 @@
---
name: orto-meteo-decisioni
description: Analyze weather forecast and generate operational task modifications (irrigation adjustments, task rescheduling, alerts). Use when: (1) obtaining 7-day forecast for garden location, (2) calculating effective rainfall and water deficit, (3) deciding irrigation skip/delay based on rain, wind, frost, heat, (4) tagging calendar tasks for meteo-driven rescheduling. Outputs: Weekly meteo briefing (markdown) with zone-specific irrigation decisions, task reschedule recommendations, frost/heat/wind alerts.
---
# Orto Meteo Decisioni — Weather-Based Operational Decisions
Fetch weather forecast, calculate water balance, generate irrigation adjustments and task rescheduling recommendations.
## When to Use This Skill
- **Weekly:** Every Monday, generate meteo brief for week ahead
- **Critical task:** Before trapianto, trattamenti, or high-water-need operations
- **Adaptive scheduling:** Real-time OR 7-day lookahead (no, not intra-day)
- **Integration:** Link with orto-calendario (meteo_defer tasks), orto-irrigazione (zone decisions)
## Process
### Phase 1: Fetch Weather Forecast
**Data source:** wttr.in (or open-meteo fallback, no API key needed)
**Forecast period:** 7 days ahead (Monday-Sunday)
**Extract:**
- Daily Tmax, Tmin
- Precipitation (mm, probability)
- Wind speed (kn)
- Relative humidity (%)
- Frost risk (T < 0°C nights)
### Phase 2: Calculate Water Balance per Zone
**For each zone, compute:**
```
Effective rainfall (mm) = Precip_mm × 0.85 (factor for soil infiltration)
Water deficit (mm) = Zone_water_class_daily_need (mm) - Effective_rainfall (mm)
Decision rule:
IF Effective_rainfall >= 70% of zone need:
→ SKIP irrigation (rain sufficient)
→ Delay 24-48h if rain during application hours
ELIF Effective_rainfall >= 30%:
→ REDUCE runtime 30-50%
ELSE:
→ KEEP baseline OR increase (heat alert)
```
### Phase 3: Evaluate Risk Factors
| Factor | Threshold | Action |
|--------|-----------|--------|
| **Frost** | T < 0°C night | Alert; defer tender transplant +3-7 gg; irrigate morning (protect roots) |
| **Heat stress** | T > 35°C day | Force irrigation (priority over rain forecast); increase frequency |
| **Wind** | > 5 kn | Defer foliar sprays, transplant (plants stress); reduce sprinkler irrigation |
| **High wind** | > 8 kn | DEFER critical transplant, trattamenti |
| **Heavy rain** | > 20mm/24h | Alert flood risk (esp. if poor drainage); check field |
| **Hail** | Hail alert | Immediate stop irrigation; assess damage post-hail |
### Phase 4: Generate Weekly Brief
**Output:** `dati/meteo/dati_meteo_giornalieri.md`
```markdown
# Meteo Brief — Week [WK] ([DATE_RANGE]) — [ORTO_ID]
**Location:** [PROVINCIA], [REGIONE], [LAT], [LON]
**Zone climatica:** [ZONE]
**Data forecast:** [RETRIEVED_DATE]
---
## Riepilogo Settimanale
| Giorno | Tmax | Tmin | Precip (mm) | Vento (kn) | Allerta |
|--------|------|------|-------------|-----------|---------|
| Lun | 22 | 14 | 0 | 3 | ✓ OK |
| Mar | 24 | 15 | 2 | 4 | ✓ OK |
| Mer | 20 | 12 | 8 | 5 | ⚠️ VENTO |
| Gio | 19 | 10 | 12 | 2 | ✓ OK (pioggia) |
| Ven | 23 | 13 | 0 | 3 | ✓ OK |
| Sab | 26 | 16 | 0 | 4 | ✓ OK |
| Dom | 28 | 18 | 1 | 6 | ⚠️ CALDO + VENTO |
**Tendenza:** Instabile martedì-giovedì (pioggia intermittente), then dry + warm weekend
---
## Decisioni per Zone Irrigue
### ZONA ALTA (A1 — Pomodoro, Basilico)
**Baseline:** Daily 7am + 5pm, 60 min each (summer schedule)
**Meteo-adjusted schedule:**
| Giorno | Baseline | Precip | Effective | Decision | New Schedule | Nota |
|--------|----------|--------|-----------|----------|--------------|------|
| Lun | 7am+5pm | 0 mm | 0 mm | Irrigate full | 7am 60min, 5pm 60min | ✓ |
| Mar | 7am+5pm | 2 mm | 1.7 mm | Irrigate reduced | 7am 45min, skip 5pm | Pioggia leggera |
| Mer | SKIP | 8 mm | 6.8 mm | **SKIP** | **SKIP** | Vento 5kn (no spray) |
| Gio | SKIP | 12 mm | 10.2 mm | **SKIP** | **SKIP** | Pioggia adeguata, vento cala |
| Ven | 7am+5pm | 0 mm | 0 mm | Irrigate full | 7am 60min, 5pm 60min | Post-pioggia, recuperare |
| Sab | 7am+5pm | 0 mm | 0 mm | Irrigate full | 7am 60min, 5pm 60min | ✓ |
| Dom | 7am+5pm | 1 mm | 0.85 mm | 🔥 CALDO ALERT | 6am 80min, 5pm 80min | T > 28°C, vento 6kn (monitor) |
**Summary:**
- **Water saved Wed-Thu:** 240 min (pioggia sufficient)
- **Water added Dom:** +40 min (heat stress override)
- **Vento impact:** Mer risky (defer), Dom monitor
---
### ZONA MEDIA (A2 — Cavolo, Lattuga)
**Baseline:** 3-4x/week, 40-50 min per session
**Decision:** Baseline ridotto mercoledì (pioggia). Giovedì skip. Normale altri giorni.
---
### ZONA BASSA (A3 — Carota, Cipolla)
**Baseline:** 2-3x/week, 20-30 min (low water need)
**Decision:** Skip Wed-Thu (pioggia sufficiente). Cipolla in maturazione → ulteriore riduzione (evitare marciume).
---
## Task Rescheduling (Meteo-Sensitive Calendar)
**Calendar reference:** `dati/calendario/calendario_operativo.md`
### ⚠️ TASK CRITICA QUESTA SETTIMANA
**[Se presente] Task 16.1 — Trapianto Pomodoro**
Original date: Martedì (19 Apr)
**Meteo check:** Vento martedì 4 kn (OK), mercoledì 5 kn (borderline)
**Decision:** PROCEED martedì (vento tollerabile). Proteggere piantine da vento (wind break se needed).
**If trapianto fosse mercoledì:** RINVIARE +2 gg (vento 5+ kn non ideale; piante freshe soffrono)
---
### Task con meteo-tag METEO_DEFER
| Task | Scheduled | Meteo Issue | Action |
|------|-----------|-------------|--------|
| Trattamento fogliare (se presente) | Mercoledì | Vento > 5 kn | RINVIARE Venerdì |
| Concimazione (se presente) | Mercoledì | Pioggia imminente | POSTPONE Giovedì post-pioggia |
---
### Task con meteo-tag METEO_SKIP (None per questa settimana)
---
## Allerte Importanti
### 🟡 ATTENZIONE VENTO (Mercoledì)
**Vento 5 kn mercoledì.**
- NO trattamenti fogliari (spray non effective, drift)
- NO trapianti se piantine sensibili
- Irrigazione: Preferire goccia a spray
- Consiglio: Posticipare attività outdoor critiche
---
### 🔥 ALLERTA CALDO (Domenica)
**T max 28°C, possibile > 30°C domenica.**
- **Irrigazione:** Aumentate di +30% (heat stress override)
- **Mulching:** Check pacciamatura è adequata
- **Ombra:** Se lattuga estiva in bolognaise, aumentate copertura
- **Orario:** Irrigare presto mattina (6am) + sera (6pm), evitare ore 12-15 (radiazione massima)
---
### ✅ OK — Pioggia Prevista (Gio)
**Pioggia 12 mm giovedì** → SKIP irrigazione
- Effective rainfall ~10 mm (copre 70% zone MEDIA/ALTA)
- Opportunità: Ridurre pressione sull'acqua
- Nota: Post-pioggia (venerdì), monitorare marciume se drenaggio scadente
---
## Consigli Operative
**Lunedì:**
- [ ] Mantenere irrigazione baseline (niente pioggia)
- [ ] Check manometro pressione sistema
- [ ] Preparare strumenti (se trattamento necessario venerdì)
**Martedì:**
- [ ] Monitorare vento (possibile irrigazione ridotta se >5kn)
- [ ] Irrigazione 7am + 5pm (schedule normale)
**Mercoledì:**
- [ ] **SKIP irrigazione** (pioggia + vento)
- [ ] NO trattamenti fogliari (vento)
- [ ] Monitorare pioggia cumulo (potrebbe meno di forecast)
**Giovedì:**
- [ ] **SKIP irrigazione** (pioggia adequate)
- [ ] Check drenaggio post-pioggia (evitare ristagno)
**Venerdì:**
- [ ] **Riprendere irrigazione** full (baseline restored)
- [ ] Eseguire trattamenti fogliare se posticipato mercoledì (condizioni OK)
- [ ] Monitorare umidità suolo sensore (dovrebbe calare post-pioggia)
**Sabato:**
- [ ] Irrigazione baseline (sole, no pioggia)
**Domenica:**
- [ ] **AUMENTATE IRRIGAZIONE** (caldo, 28°C+)
- [ ] Controllare temperature (T > 30°C = heat stress risk)
- [ ] Cercare ombra naturale per lattuga/cavolo
---
## Forecast Confidence & Updates
**Confidence this forecast:** 0.82 (Day 1-3 high, Day 5-7 medium)
**Update schedule:**
- Monday 8am: Full 7-day
- Thursday 6pm: 2-day update (Fri-Sat precision)
- Real-time: Critical alerts (frost, hail, extreme wind)
**Source:** wttr.in (UK MetOffice data); fallback open-meteo (OM)
---
## Historical Notes (Optional)
*Optional tracking field: Did actual weather match forecast? Use for calibration.*
- Last week forecast rain Wed, actual Thu: -1 day error
- Confidence margins improving with calibration data
---
## References
- `references/meteo_soglie.md` — Threshold values, crop sensitivities, wind/frost/heat impact
## Assumptions
1. Internet connection available (meteo API fetch)
2. Garden location lat/lon accurately registered
3. Forecast data is 7-day rolling (daily refresh)
4. Effective rainfall = precip × 0.85 (standard infiltration factor)
## Validation Checklist
- ✓ Forecast data retrieved and parsed
- ✓ Water balance calculated per zone
- ✓ Task rescheduling recommendations coherent with calendario
- ✓ Allerte triggered if thresholds exceed (frost, heat, wind, rain)
- ✓ Output markdown is actionable (daily decisioni clear)
---
**Skill: orto-meteo-decisioni** | Version 1.0 | Status: Production-Ready

View file

@ -0,0 +1,327 @@
---
name: orto-onboarding
description: Collect comprehensive garden profile via 5 questionnaire blocks. Use when: (1) gathering garden specifications after orto-init (space, soil, irrigation capabilities), (2) understanding user/community diet preferences and constraints, (3) defining maintenance availability and safety/accessibility requirements, (4) preparing validated data for seasonal planning (orto-agronomo, orto-calendario, etc.). Outputs: Filled questionnaire blocks (Markdown), validated GardenConfig and CommunityProfile, ready for planning workflow.
---
# Orto Onboarding — 5-Block Garden Profile Collection
Collect comprehensive garden and community information through a structured 5-block questionnaire. This is the second step after orto-init.
## When to Use This Skill
- **Post-init:** User has initialized a garden (orto-init complete)
- **Profile collection:** Gather details about space, environment, community, diet, constraints
- **Planning preparation:** Collect data needed for seasonal planning, crop selection, layout design
- **Accessibility review:** Ensure design respects accessibility, safety, and maintenance constraints
## Process Overview
**5 Blocks, Sequential or Parallel:**
1. **Blocco 1 — Localizzazione** (location, access, property type)
2. **Blocco 2 — Layout Spazio** (area, soil, sun exposure, topography)
3. **Blocco 3 — Irrigazione** (water availability, infrastructure, constraints)
4. **Blocco 4 — Comunità & Dieta** (user/community, dietary preferences, allergies)
5. **Blocco 5 — Obiettivi & Vincoli** (maintenance time, goals, seasonal preferences)
**Typical Flow:**
- Codex presents each block
- User fills in details (interactively or batch markdown edit)
- Codex validates inputs
- On completion: merge into GardenConfig + CommunityProfile markdown files
## Block Specifications
### Blocco 1 — Localizzazione
**Purpose:** Confirm location details and accessibility.
**Questions:**
| Q | Type | Default | Validation |
|---|------|---------|-----------|
| Q1.1 | Confirm provincia | Auto-filled from init | Read-only or allow edit |
| Q1.2 | Confirm regione | Auto-filled from init | Read-only or allow edit |
| Q1.3 | Indirizzo (opz.) | None | String, optional |
| Q1.4 | Accessibilità | Choose 3 options | Enum: easy/moderate/difficult |
| Q1.5 | Proprietà/Gestione | Choose 4 options | Enum: private/community/leased/other |
| Q1.6 | Note/Descrizione | Free text | Optional |
**Outputs:**
- `localizzazione.provincia`
- `localizzazione.regione`
- `localizzazione.accessibilita`
- `localizzazione.tipo_proprieta`
---
### Blocco 2 — Layout Spazio
**Purpose:** Define space constraints, soil, sun exposure.
**Questions:**
| Q | Type | Example | Validation |
|---|------|---------|-----------|
| Q2.1 | Area disponibile (m²) | 50 | Float > 0 |
| Q2.2 | Tipologia spazio | Choose: aiuole rialzate / a terra / vasi | Enum |
| Q2.3 | Sole diretto (ore/gg) | 6 | Integer, 0-12 |
| Q2.4 | Tipo suolo | Choose: sabbioso / limoso / argilloso / misto | Enum |
| Q2.5 | Drenaggio | Choose: ottimo / buono / mediocre / pessimo | Enum |
| Q2.6 | Topografia | Choose: piano / leggera pendenza / forte pendenza | Enum |
| Q2.7 | Vicinanza alberi/muri | Descrivi | String |
**Outputs:**
- `layout.area_mq`
- `layout.tipo_spazio`
- `layout.ore_sole_giornaliere`
- `layout.tipo_suolo`
- `layout.drenaggio`
- `layout.topografia`
**Hints:**
- Sole < 4h = parziale (verdure da foglia)
- Sole 4-6h = medio (alcune ortaggi)
- Sole > 6h = pieno (pomodoro, peperone, zucchina)
- Drenaggio scarso = rischio marciume
---
### Blocco 3 — Irrigazione
**Purpose:** Assess water infrastructure and constraints.
**Questions:**
| Q | Type | Choices | Validation |
|---|------|---------|-----------|
| Q3.1 | Fonte acqua disponibile | Choose: rubinetto / pozzo / raccolta pluviale / altro | Enum, ≥1 |
| Q3.2 | Portata rubinetto (l/min) | Input numeric (es: 10) | Float, optional |
| Q3.3 | Vincoli idrici | Choose: nessuno / razionamento estivo / razionamento tutto anno / altro | Enum |
| Q3.4 | Tipo irrigazione attuale | Choose: manuale / impianto goccia / impianto aspersione / nessuno | Enum |
| Q3.5 | Disponibilità sensori umidità | Choose: no / sì, da installare / sì, già presenti | Enum |
| Q3.6 | Automazione desiderata | Choose: nessuna / timers semplici / smart controller / altro | Enum |
| Q3.7 | Note / Vincoli speciali | Free text | Optional |
**Outputs:**
- `irrigazione.fonte_acqua`
- `irrigazione.portata_lmin`
- `irrigazione.vincoli`
- `irrigazione.tipo_impianto`
- `irrigazione.sensori_disponibili`
- `irrigazione.automazione_desiderata`
**Logic:**
- If portata < 5 l/min flag: "acqua limitata, design conservativo raccomandato"
- If razionamento estivo → nota: "attivare mulching, irrigazione serale/notturna"
---
### Blocco 4 — Comunità & Dieta
**Purpose:** Understand dietary preferences and community structure.
**Questions:**
| Q | Type | Input | Validation |
|---|------|-------|-----------|
| Q4.1 | Numero persone | Numeric | Integer ≥ 1 |
| Q4.2 | Profilo dieta | Choose: onnivoro / vegetariano / vegano / mixto | Enum, may select multiple |
| Q4.3 | Preferenze cultivi | Multi-select: pomodoro, zucchina, lattuga, basilico, carota, cipolla, ... | List |
| Q4.4 | Colture da evitare | Multi-select | List |
| Q4.5 | Allergie / Intolleranze | Text, list | Free text, optional |
| Q4.6 | Figli / Anziani in orto | Choose: no / sì, figli / sì, anziani / sì, entrambi | Enum |
| Q4.7 | Safety notes | Text | Optional (allergie piante, animali domestici) |
**Outputs:**
- `community.n_persone`
- `community.dieta` (list)
- `community.preferenze_colture` (list)
- `community.colture_evitare` (list)
- `community.allergie`
- `community.minori_anziani`
- `community.note_safety`
**Logic:**
- If vegano + fertilizzante preferito → bias toward nitrogen-fixing crops (fagiolo, pisello, fava)
- If bambini → safety: avoid highly toxic plantas; flag allergie comuni (arachidi grow no, ma altri)
- If allergie riportate → consulta reference e segnala colture compatibili
---
### Blocco 5 — Obiettivi & Vincoli
**Purpose:** Define maintenance capability and goals.
**Questions:**
| Q | Type | Input | Validation |
|---|------|-------|-----------|
| Q5.1 | Tempo settimanale disponibile | Choose: < 2h / 2-5h / 5-10h / > 10h | Enum |
| Q5.2 | Frequenza accesso | Choose: giornaliero / 2-3 volte sett / settimanale / bisettimanale / altro | Enum |
| Q5.3 | Obiettivi primari | Multi-select: orto terapeutico / approvvigionamento / educazione / comunità / hobby | List |
| Q5.4 | Esperienze precedenti | Choose: nessuna / dilettante / esperto | Enum |
| Q5.5 | Stagione preferita | Choose: primavera / estate / autunno / tutto l'anno | Enum |
| Q5.6 | Tolleranza rischio / fallimenti | Choose: bassa (voglio certezza) / media / alta (sperimentazione ok) | Enum |
| Q5.7 | Cosa non vuoi fare | Multi-select: concimazione chimica / trattamenti / potatura aggressiva / altro | List |
**Outputs:**
- `vincoli.ore_settimanali`
- `vincoli.frequenza_accesso`
- `vincoli.obiettivi` (list)
- `vincoli.esperienza`
- `vincoli.stagione_preferita`
- `vincoli.tolleranza_rischio`
- `vincoli.evitare` (list)
**Logic:**
- If ore < 2/sett design basso-manutenzione: colture robuste, pacciamatura, automazione
- If frequenza bisettimanale + caldo estivo → warning: "piante soffrono, pianificare coperture/ombra"
- If Obiettivo "educazione" → bias verso varietà interessanti, osservabili
---
## Validation & Merge
### Validation Rules
**Per-block validation:**
| Block | Rule | Error | Action |
|-------|------|-------|--------|
| 1 | provincia/regione match | Mismatch | Flag, suggest correction |
| 2 | area > 0 | area = 0 | Reject, ask again |
| 2 | sole ore > suolo drainsge | conflitto | Warning: "sole alto + scarso drenaggio → marciume" |
| 3 | fonte_acqua ≠ None | No water source | Flag: critical, ask fallback |
| 4 | n_persone > 0 | Empty | Default 1 |
| 5 | ore_settimanali > 0 | Empty | Ask, flag risk |
**Cross-block validation:**
| Check | Condition | Action |
|-------|-----------|--------|
| Coherence | minori/anziani + ore < 2/sett | Warning: "poco tempo per accessibilità; pianificare percorsi sicuri" |
| Diet alignment | dieta + colture evitare incompatible | Flag: "preferenze dieta e colture evitare conflittano" |
| Goal alignment | goal "approvvigionamento" + area < 20m² | Warning: "area piccola per approvvigionamento; puntare qualità/successioni" |
### Merge to GardenConfig & CommunityProfile
**After validation, create/update:**
1. **dati/config/garden_config.md**
- Top-level config: area, zone, vincoli ambientali
- Soloinfo oggettiva (coordinate, suolo, sole, irrigazione)
2. **dati/config/community_profile.md**
- Community: n_persone, dieta, preferenze, allergie
- Obiettivi: ore disponibili, goals, esperienza
- Constraints: cosa NON fare, minori/anziani, tolleranza rischio
3. **log/audit_trail.md**
- Event: onboarding_complete
- Timestamp, blocks completed, validation status
## Output
**Console Output:**
```markdown
# ✅ Onboarding Completato
**Orto:** [ORTO_NAME]
**Area:** [AREA] m²
**Zona climatica:** [ZONE]
**Comunità:** [N_PERSONE] persone
**Dieta:** [DIET_LIST]
**Tempo disponibile:** [HOURS]/settimana
## Profilo Validato ✓
- [✓] Localizzazione confermata
- [✓] Layout spazio raccolto
- [✓] Irrigazione pianificata
- [✓] Community profile completato
- [✓] Vincoli e obiettivi definiti
## Prossimi Passi
1. **orto-agronomo** → Piano colture (30 min)
2. **orto-calendario** → Timeline stagionale (20 min)
3. **orto-irrigazione** → Design irrigazione (20 min)
4. **orto-orchestratore** → Merge piano finale (10 min)
**Tempo totale planning:** ~80 minuti
```
## Error Handling
| Error | Fallback |
|-------|----------|
| Q3.1 (no water source) | Critical error; suggest alternative (raccolta pluviale, well pump) or suggest not proceeding |
| Q2.1 (area = 0) | Re-ask, provide hints (typical ranges: 20-100 m²) |
| Missing mandatory field | Highlight, require answer before merge |
| Allergia allergia | Cross-check with colture preferite; flag conflicts |
## References
- `references/colture_it.md` — Colture e preferenze
- `references/calendario_it.md` — Zone climatiche e validazione
## Assets
- `assets/blocco_template.md` — Template vuoto per ogni blocco (riempibile manualmente se preferito)
---
## Examples
### Example 1: Roma Comunità, Orto Terapeutico
**Blocco 1:** Roma, Lazio, Facile accesso, Orto comunitario
**Blocco 2:** 40 m², Aiuole rialzate, 7h sole, Suolo misto, Buon drenaggio
**Blocco 3:** Rubinetto disponibile, Razionamento estivo, Nessun impianto, Sensori da installare
**Blocco 4:** 8 persone, Misto, Piacerebbe pomodoro/basilico/insalata, No allergie, Con anziani
**Blocco 5:** 3-5h/settimana, Settimanale, Terapeutico + Comunità, No esperienza, Estate preferita
**Output:**
- garden_config.md: 40m², Zone centro, Sole buono, Irrigazione manuale da migliorare
- community_profile.md: 8pp, Misto, Therapeutic goal, Low maintenance experience, Accessibility required
---
### Example 2: Milano Famiglia, Approvvigionamento
**Blocco 1:** Milano, Lombardia, Accesso moderato, Privato
**Blocco 2:** 60 m², A terra, 6h sole, Suolo misto, Scarso drenaggio
**Blocco 3:** Rubinetto 8 l/min, No razionamento, Nessun impianto, Sensori interessano
**Blocco 4:** 3 persone, Onnivoro, Ama pomodoro/zucchina/carota, No allergie
**Blocco 5:** 5-10h/sett, 2-3 volte/sett, Approvvigionamento + Hobby, Dilettante, Tolleranza rischio media
**Output:**
- garden_config.md: 60m², Zone nord, Drenaggio scadente → pianificare rialzature, Irrigazione progettabile
- community_profile.md: 3pp, Onnivoro, Goal approvvigionamento, Esperienza dilettante, Willing to learn
---
## Assumptions
1. Questionnaire blocks are presented sequentially (or user can edit all markdown simultaneously)
2. Validation is light (not blocking, but flagging issues)
3. Allergies/safety notes are checked against plant knowledge base
4. Community size affects crop recommendations (more people → more diverse)
5. All outputs in Markdown format, human-readable and editable
## Validation Checklist
- ✓ All mandatory fields filled
- ✓ No contradictions between blocks
- ✓ Area, time, water constraints coherent
- ✓ Diet + colture preferences compatible
- ✓ garden_config.md updated and readable
- ✓ community_profile.md created and validated
- ✓ audit_trail.md event logged
---
**Skill: orto-onboarding** | Version 1.0 | Status: Production-Ready

View file

@ -0,0 +1,392 @@
---
name: orto-orchestratore
description: Orchestrate multi-skill workflow, resolve conflicts between plans, validate data completeness, and merge into unified PlanBundle. Use when: (1) running full seasonal planning pipeline end-to-end, (2) handling conflicts (irrigation zone vs. consociations, calendar task vs. weather forecast), (3) ensuring QA checks pass before finalizing, (4) generating weekly operational briefing for users. Outputs: Merged PlanBundle (master markdown document) with all plans integrated, audit log, weekly briefing ready for publication.
---
# Orto Orchestratore — Master Workflow Orchestration
Coordinate all planning skills, resolve conflicts, validate constraints, merge into unified plan.
## When to Use This Skill
- **Full planning:** After onboarding, run complete pipeline to generate master plan
- **Weekly briefing:** Merge calendario + meteo-decisioni + current status → actionable weekly task list
- **Conflict resolution:** When skills produce conflicting recommendations
- **Plan review:** QA validation before publishing plan to user
## Process
### Phase 1: Pre-Flight Checklist
**Verify all prerequisite skills are complete:**
```
✓ orto-init: Garden project created, config registered
✓ orto-onboarding: GardenConfig + CommunityProfile complete and validated
✓ orto-agronomo: Piano colture annuale completed
✓ orto-calendario: Calendario operativo (weekly tasks) completed
✓ orto-irrigazione: Sistema irrigazione designed
✓ orto-layout: Aiuole assigned, zones defined
✓ orto-meteo-decisioni: Weekly forecast & decisions available
If ANY skill incomplete → PAUSE and notify user (missing data)
```
### Phase 2: Conflict Detection & Resolution
**Check for known conflict patterns:**
| Conflict Type | Detection | Resolution Policy |
|---------------|-----------|-------------------|
| **Irrigation zone vs. Consociations** | Crop A (ZONA ALTA) + Crop B (ZONA BASSA) same bed | Split bed OR adjust watering (ZONA ALTA priority due stress) |
| **Calendar task vs. Weather** | Task "Trapianto" scheduled Tue, wind > 8kn | Auto-reschedule +2 gg (contact user) |
| **Layout accessibility vs. Space** | Path < 0.5m needed for accessibility | Reoptimize layout (may reduce usable area) |
| **Water availability vs. Irrigation plan** | Total water need > available | Reduce crop area OR shift to drought-tolerant crops |
| **Area too small vs. Diet** | Community needs > feasible harvest | Suggest successions, off-season storage |
**Resolution logic:**
```
CONFLICT: A1 (Pomodoro ALTA) + Basilico (MEDIO) same bed?
→ Check: Can adapt watering?
→ ALLOW (Basilico tolera extra water; Pomodoro critical)
→ Flag: "Basilico may over-irrigate; monitor"
CONFLICT: Trapianto task Tue, vento 8kn?
→ Check: orto-meteo-decisioni says DEFER
→ AUTO-RESCHEDULE: Trapianto → Thursday +2 gg
→ NOTIFY: User reason + new date
CONFLICT: Path 0.4m (wheelchair needs 0.7m)?
→ Check: Critical accessibility?
→ REOPTIMIZE: Shift beds, sacrifice ~5% usable area
→ OR: Escalate to user (accept smaller accessible area)
```
### Phase 3: Data Validation (QA Checklist)
**Run comprehensive checks:**
| Check | Rule | Status | Fix |
|-------|------|--------|-----|
| **Crop diversity** | ≥4 groups (Solanaceae, Brassica, Legume, Leafy, Aromatica) | PASS | ✓ |
| **Nutritional balance** | Diet profile coverage ≥80% | PASS | ✓ |
| **Water adequacy** | Planned rainfall + irrigation ≥ crop demand | WARN | ⚠️ Summer deficit 15%; mitigation: mulching |
| **Rotation consistency** | No same family 2+ years per bed | PASS | ✓ |
| **Accessibility** | Paths ≥ requirement (if needed) | PASS | ✓ |
| **Maintenance time** | Total weekly hours ≤ available | PASS | ✓ |
| **Consociations** | % positive > antagonismi | PASS | ✓ 85% positive |
| **Forecast accuracy** | Weather data source current | PASS | ✓ wttr.in (3-5 day high conf.) |
**Summary:** QA SCORE = 0.92 (Very Good). Proceed to merge.
### Phase 4: Merge Data Sources
**Aggregate outputs from all skills into unified markdown structure:**
**File:** `dati/PlanBundle_Master.md`
```markdown
# PLAN BUNDLE — [ORTO_ID] — [YEAR]
**Generated:** [TODAY]
**Confidence:** 0.92 (Very Good)
**Status:** Ready for Publication
---
## 1. GARDEN CONFIGURATION
(Copy from GardenConfig)
- Location: [PROVINCIA], [REGIONE]
- Area: [AREA] m²
- Zone: [ZONE]
- Soil: [SOIL]
- Sun: [HOURS] h/day
## 2. COMMUNITY PROFILE
(Copy from CommunityProfile)
- Persone: [N]
- Dieta: [DIET_LIST]
- Esperienza: [LEVEL]
- Tempo: [HOURS]/settimana
- Accessibility: [NEEDS]
## 3. CROP PLAN
(Excerpt from Piano Colture Annuale)
- Total crops: 12 varietà
- Area allocato: 25 m²
- Est. yield: 120 kg/stagione
- Rotazione: Multi-year plan included
## 4. LAYOUT PLAN
(Excerpt from Aiuole Dimensioni)
- Beds: 4 (2 rialzate + 2 file)
- Zone Water: 3 (ALTA, MEDIA, BASSA)
- Paths: Main 0.7m, side 0.5m
- Accessibility: ✓ Conforme
## 5. IRRIGATION SYSTEM
(Excerpt from Sistema Irrigazione)
- Emitters: Drip + microsprayers
- Zones: 3 (ALTA/MEDIA/BASSA)
- Baseline: Daily (ALTA) ~ 2-3x/sett (BASSA)
- Automation: [Timer/Smart]
## 6. SEASONAL CALENDAR
(Link to Calendario Operativo)
- Weekly tasks: 52 weeks × avg 3-5 tasks = ~200 annual tasks
- Meteo-sensitive tasks: ~40 tasks (tagged for rescheduling)
- Critical dates: 12 (transplants, harvests)
## 7. DISEASE PREVENTION
(Excerpt from Diagnosi Problemi)
- High-risk crop: Pomodoro (peronospora)
- Preventive schedule: Weekly rame spray (June-Sept)
- Organic treatments: Rame, Bacillus subtilis, Neem
- Cost: €25 (season)
## 8. WEEKLY BRIEF
(Latest from Meteo Decisioni + Calendar)
- This week: [DATE RANGE]
- Tasks: 5 items
- Meteo alerts: [WIND? FROST?]
- Irrigation adjustments: [SKIP WED-THU, INCREASE SUN]
## 9. AUDIT TRAIL
(Excerpt from Log)
- Garden created: [DATE]
- Onboarding completed: [DATE]
- Plans generated: [DATE]
- Conflicts resolved: 2 (irrigation zone vs consociation, calendar vs weather)
- QA score: 0.92
---
## METRICS
- **Total effort:** 120 hours/year (avg. 2.3h/week)
- **Total water:** ~10,000 liters/season
- **Total harvest:** ~120 kg/season
- **Cost:** €65 (setup) + €25 (yearly maintenance)
- **ROI:** High (fresh vegetables + health + community)
---
**PlanBundle Status:** ✅ COMPLETE & VALIDATED
```
### Phase 5: User Notification & Publishing
**Generate summary report:**
```markdown
# ✅ PIANO COMPLETO — [ORTO_ID]
**Buongiorno [USER]!**
Il tuo orto **[ORTO_NAME]** è pronto per il 2026.
## Cosa è stato pianificato:
**Colture:** 12 varietà selezionate (dieta bilanciata)
**Layout:** 4 aiuole organizzate per zone acqua
**Calendario:** 52 settimane di task settimanali
**Irrigazione:** Sistema multi-zona automatizzabile
**Malattie:** Piano prevenzione biologica (Pomodoro peronospora)
## Prossimi Passi:
1. **Leggi il piano master:** `dati/PlanBundle_Master.md` (30 min)
2. **Prepara strumenti:** Acquista emitters/timer (1-2 giorni)
3. **Settimana 1 (gen):** Preparazione semenzaio indoor
4. **Settimana 5 (feb):** Prima semina (Pomodoro)
## Supporto Settimanale:
Ogni lunedì ricevi:
- [ ] Briefing meteo (pioggia, vento, freddo)
- [ ] Task settimanale da fare
- [ ] Irrigazione schedule adjustments
- [ ] Allerte problemi
## Domande?
Se qualcosa non è chiaro, contatta l'agronomo. Buon orto! 🌱
---
**Piano generato:** [TODAY]
**Confidence:** Very Good (92%)
**Ultima revisione:** [AUTO-DATE_NEXT_WEEK]
```
### Phase 6: Weekly Briefing Integration
**Every Monday, generate integrated briefing:**
```markdown
# BRIEFING SETTIMANALE — Week [WK] ([DATE]) — [ORTO_ID]
**Data:** Lunedì [DATE] 8:00 AM
---
## 📊 Meteo (da orto-meteo-decisioni)
| Giorno | Tmax | Tmin | Pioggia | Vento | Alert |
|--------|------|------|---------|-------|-------|
| Lun | 22 | 14 | 0 mm | 3 kn | ✓ OK |
| Gio | 19 | 10 | 12 mm | 2 kn | ✓ Pioggia |
| Dom | 28 | 18 | 0 mm | 6 kn | ⚠️ Caldo |
---
## 📋 TASK SETTIMANALE (from orto-calendario)
### Lunedì 6 Gen
- [ ] **Preparazione Semenzaio** (1.5h)
- Terriccio, vasetti, riscaldamento check
- Ubicazione: Semenzaio indoor
- Meteo: ✓ OK (indoor)
- [ ] **Controllo Strumenti** (0.5h)
- Innaffiatore, guanti, forbici
- Test timer irrigazione
**Totale giornata:** 2h
### Mercoledì 8 Gen
- [ ] **SKIP Irrigazione** (pioggia prevista, vento)
- Meteo decision: Effective rainfall adeguata
- [ ] Controllo drenaggio post-pioggia
### Giovedì 9 Gen
- [ ] **Irrigazione ripresa** (30 min)
- Baseline schedule restored
---
## ⚠️ ALLERTE
🟡 **VENTO MER-GIO (4-6 kn)**
- Defer foliar sprays
- Monitor young plants (wind stress)
🔥 **CALDO DOM (28°C+)**
- Aumentate irrigazione +30%
- Check mulching
---
## 🎯 FOCUS COLTURA
**Pomodoro (Gennaio = Semina Indoor)**
- Settimana prossima: Semina Pomodoro 1-4 Feb
- Requisiti: T 20-25°C, luce LED 12h/gg
- Germinazione attesa: 5-10 gg
- Cura: Mantenere umido, no ristagno
---
## 📈 PROGRESS
- Year-to-date tasks: 2/52 settimane
- Onboarding: 100% ✓
- Planning: 100% ✓
- Implementation: 5% (starting)
---
## 💧 IRRIGAZIONE SETTIMANALE
| Zona | Baseline | Meteo Adjust | Note |
|------|----------|--------------|------|
| ALTA | Daily 60m | Skip Wed-Thu | Pioggia sufficient |
| MEDIA | 3-4x/sett | Normal | OK |
| BASSA | 2-3x/sett | Normal | OK |
**Totale acqua:** ~500 liters (January low due dormancy)
---
**Briefing generato:** Lunedì 6 Gen 8:00 AM
**Prossimo briefing:** Lunedì 13 Gen
**Contatti:** [SUPPORT_EMAIL]
```
---
## Conflict Resolution Examples
### Example 1: Irrigation vs. Consociations
**Conflict:** A1 layout puts Pomodoro (ZONA ALTA, daily) + Basilico (MEDIO, 3x/sett)
**Resolution:**
- Option A: Split beds (separate ZONA ALTA + MEDIA) → But reduces usable area
- Option B: Accept mixed zone → Keep in same bed, adapt watering (ALTA priority)
- **RECOMMENDATION:** Option B (Basilico tolerates extra water; Pomodoro critical)
- **MITIGATION:** Flag "Watch for basilico over-watering; adjust on-the-fly if wilt + root smell"
### Example 2: Calendar vs. Weather
**Conflict:** "Trapianto Pomodoro Tue" scheduled; orto-meteo-decisioni says "Vento 8kn Tue, DEFER"
**Resolution:**
- Auto-reschedule: Trapianto → Thursday +2 gg (vento cala, temp stable)
- Notify user: "Trapianto rimandato Tue→Thu (wind risk). New: Giovedì 10 Apr 9am"
- Update calendar + audit trail
### Example 3: Water Availability vs. Irrigation Plan
**Conflict:** Total water need (10,000 L/season) > Available (8 m³ = 8,000 L if constrained)
**Resolution:**
- Reduce irrigation frequency (use deficit irrigation) → Risk: crop stress
- Add rain capture tank (+100 L) → Marginal
- Shift to drought-tolerant crops (Carota, Cipolla, Legume) → Reduce Pomodoro area by 30%
- **RECOMMENDATION:** Accept 15% water deficit; use heavy mulching + soil compost (improves retention)
---
## Error Handling
| Error | Fallback |
|-------|----------|
| Skill output missing | Use previous year plan (if available) or rule-based fallback |
| Conflicting recommendations | List top 3 options, let user choose |
| QA failure (critical) | DO NOT PUBLISH; flag and request expert review |
## Assumptions
1. All predecessor skills have completed
2. Data integrity: no corrupted markdown files
3. Conflict resolution policies documented and tuned
4. User notification channel available (email/chat)
## Validation Checklist
- ✓ All skills outputs loaded and parsed
- ✓ Conflicts identified and resolved
- ✓ QA score ≥ 0.70 (acceptable)
- ✓ Merged PlanBundle coherent and complete
- ✓ Weekly briefing generated and actionable
- ✓ Audit trail documented
- ✓ User notification ready
---
**Skill: orto-orchestratore** | Version 1.0 | Status: Production-Ready