🌱 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:
commit
08a6ffe058
39 changed files with 8634 additions and 0 deletions
327
build/orto-onboarding/SKILL.md
Normal file
327
build/orto-onboarding/SKILL.md
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue