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