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