framework-translator/references/mapping_patterns.md
AgentePotente c40ddf4b59 Initial commit: framework-translator skill (LLM-native approach)
- SKILL.md: Istruzioni complete per LLM (Fasi 1-5)
- references/mapping_patterns.md: 13 pattern di trasformazione
- references/skill_template.md: Template standardizzato SKILL.md
- scripts/: 3 script meccanici bash (scan, structure, packaging)
- PIANO_SVILUPPO.md: Piano di sviluppo originale (documentazione)

Approccio: LLM-native con script minimali per operazioni meccaniche.
Token usage stimato: ~35-65K per framework.
Vantaggi: comprensione semantica, adattabilità, manutenzione semplice.
2026-03-07 10:14:37 +01:00

14 KiB

Mapping Patterns — Trasformazione Framework → AgentSkills

Pattern di mappatura per trasformare entità framework (agenti, workflow, knowledge) in skills AgentSkills-compatibili.

Usato da: framework-translator (Fase 2)


Panoramica

Questa reference documenta i pattern di trasformazione usati in Fase 2: Mappatura Entità → Skills del processo framework-translator.

Ogni pattern include:

  • Descrizione: Quando applicare il pattern
  • Esempio: Caso concreto da orto_v1 → orto-skills
  • Criteri: Condizioni per applicare il pattern
  • Output: Cosa genera il pattern

Pattern 1: 1 Agente → 1 Skill

Descrizione: Un agente auto-contenuto con responsabilità chiara diventa una skill singola.

Esempio:

Input:  Agente 02 "Agronomo Colture" (piano colture, varietà, rotazioni)
Output: orto-agronomo skill

Criteri:

  • Agente ha missione ben definita e singola
  • Non ha overlap significativo con altri agenti (<30%)
  • Knowledge richiesta è specifica del dominio
  • Output è chiaramente identificabile

Output:

  • 1 skill con nome <prefix>-<agente-name> (kebab-case)
  • Corpo SKILL.md con fasi derivate da workflow associati
  • References: knowledge specifica dell'agente

Pattern 2: 2+ Agenti → 1 Skill (Merge Funzionale)

Descrizione: Agenti con responsabilità correlate o overlap funzionale sono mergiati in una skill unica.

Esempio:

Input:  Agente 04 "Fitopatologo" + Skill PHYTO-DIAG + PHYTO-TREAT-BIO
Output: orto-fitopatologo skill (diagnosi + trattamenti unificati)

Criteri:

  • Overlap funzionale >50% (confronta descrizioni missione)
  • Agenti lavorano sullo stesso output/documento
  • Separazione è artificiale (storica, non funzionale)
  • Merge semplifica UX senza perdere chiarezza

Output:

  • 1 skill con nome che copre tutte le responsabilità
  • Corpo SKILL.md con sezioni distinte per ogni sotto-funzionalità
  • References: knowledge condivisa tra agenti originali

Giustificazione da documentare:

### Decisione: Merge Agente 04 + PHYTO-DIAG + PHYTO-TREAT-BIO

**Motivo:** Diagnosi e trattamenti sono strettamente accoppiati nel workflow reale.
Separarli richiederebbe all'utente due skill distinte per un singolo task.

**Vantaggi:**
- UX semplificata (una skill per "problema piante")
- Meno context switching
- Knowledge condivisa (malattie, trattamenti) centralizzata

**Rischi:**
- Skill più grande (gestito con references separate)
- Mitigazione: sezioni chiare nel corpo SKILL.md

Pattern 3: Workflow → Skill Operativa

Descrizione: Un workflow end-to-end con script associato diventa una skill operativa.

Esempio:

Input:  Workflow 00 "Inizializzazione Orto" + init_new_orto.py
Output: orto-init skill

Criteri:

  • Workflow ha trigger chiaro (es. "nuovo progetto")
  • Workflow produce output tangibile (struttura directory, file)
  • Script esistente automatizza il workflow
  • Workflow è eseguible in modo autonomo (no dipendenze da altri workflow)

Output:

  • 1 skill con nome <prefix>-<workflow-name>
  • Script incluso in scripts/ della skill (se riutilizzabile)
  • Corpo SKILL.md descrive fasi del workflow

Pattern 4: Agente + Workflow → Skill Orchestratore

Descrizione: Agente di coordinamento + workflow multipli diventano skill orchestratore.

Esempio:

Input:  Agente 01 "Orchestratore/Planner" + Workflow 02/03/04 + QA Agent
Output: orto-orchestratore skill

Criteri:

  • Agente ha responsabilità di coordinamento
  • Workflow multipli coinvolgono questo agente
  • Skill deve risolvere conflitti tra output di altre skills
  • QA/validazione è parte del coordinamento

Output:

  • 1 skill con nome <prefix>-orchestratore o <prefix>-planner
  • Corpo SKILL.md con sezione "Risoluzione Conflitti"
  • Reference: conflitti_risoluzione.md (pattern di risoluzione)
  • Output: PlanBundle unificato o documento master

Pattern 5: Agente Eliminato (Non Essenziale)

Descrizione: Agente non essenziale per MVP viene eliminato, senza creare skill.

Esempio:

Input:  Agente 08 "Data/Knowledge Manager", Agente 09 "UI/UX Agent", Agente 12 "Ops & Integrazioni"
Output: Nessuna skill generata (funzionalità assorbite o posticipate)

Criteri:

  • Agente gestisce funzionalità non critiche per MVP
  • Funzionalità può essere posticipata a v2
  • Altre skills possono assorbire responsabilità minori
  • Eliminare semplifica senza perdere valore

Output:

  • Nessuna skill generata
  • Documenta in mapping_plan.md sezione "Eliminati"
  • Eventuali funzionalità critiche assorbite da altre skills

Giustificazione da documentare:

### Decisione: Eliminare Agente 09 (UI/UX)

**Motivo:** UI/UX è importante ma non essenziale per MVP testuale.
Skill AgentSkills sono per automazione, non per generazione UI.

**Funzionalità perse:**
- Wireframe generation
- Componenti UI specs

**Recupero futuro:**
- Skill separata "ui-generator" in v2
- Per ora: documentazione UI rimane in docs/ del framework

Pattern 6: Agente Assorbito (Funzionalità Merge)

Descrizione: Agente con funzionalità micro o ridondante viene assorbito da altra skill.

Esempio:

Input:  Agente 10 "QA & Safety Agent"
Output: Funzionalità QA assorbite da orto-orchestratore

Criteri:

  • Agente ha responsabilità di validazione/check
  • Validazione può essere integrata in altra skill (es. orchestratore)
  • Separare richiederebbe skill troppo piccola (<100 linee)
  • Assorbire migliora coesione

Output:

  • Nessuna skill separata generata
  • Funzionalità QA documentate in skill assorbente (es. orchestratore)
  • Reference: qa_checklist.md (condivisa)

Giustificazione da documentare:

### Decisione: Assorbire Agente 10 (QA) in Orchestratore

**Motivo:** QA è parte naturale del processo di orchestrazione.
Separare richiederebbe due step (genera → valida) invece di uno integrato.

**Vantaggi:**
- Workflow più fluido (validazione inline)
- Meno skills da gestire
- QA context-aware (orchestratore conosce tutto il piano)

**Implementazione:**
- orto-orchestratore include sezione "Validazione QA"
- Reference qa_checklist.md consultata durante orchestrazione

Pattern 7: Knowledge → Reference Centralizzata

Descrizione: Knowledge condivisa da 2+ skills o >500 linee diventa reference centralizzata.

Esempio:

Input:  docs/knowledge/colture.md (20 KB, usato da Agronomo + Layout)
Output: references/colture_it.md (symlink da entrambe le skills)

Criteri:

  • Knowledge usata da 2+ skills diverse
  • Knowledge >500 linee o >10 KB
  • Knowledge è dominio-specifica (tabelle, parametri, regole)
  • Knowledge è relativamente statica (non cambia per progetto)

Output:

  • File references/<nome>.md
  • Symlink da ogni skill che la usa → ../references/<nome>.md
  • Header nel reference: "Usato da: skill-X, skill-Y"

Tipologie di knowledge da centralizzare:

  • Cataloghi (colture, malattie, varietà)
  • Parametri (ET₀, Kc, soglie meteo)
  • Tabelle (consociazioni, rotazioni)
  • Regole (conflitti, QA checklist)

Pattern 8: Knowledge → Inline nel Corpo

Descrizione: Knowledge piccola (<500 linee) e specifica di una skill rimane nel corpo SKILL.md.

Esempio:

Input:  Agente 02 sezione "Varietà consigliate" (50 righe)
Output: Integrato in orto-agronomo SKILL.md (Fase 2: Lista Colture)

Criteri:

  • Knowledge usata da 1 sola skill
  • Knowledge <500 linee e <10 KB
  • Knowledge è specifica del dominio della skill
  • Separare aggiungerebbe complessità non necessaria

Output:

  • Knowledge integrata nel corpo SKILL.md (sezione dedicata)
  • Nessun reference file creato

Pattern 9: Script → scripts/ nella Skill

Descrizione: Script riutilizzabile e deterministico viene incluso nella skill.

Esempio:

Input:  init_new_orto.py (20 KB, crea struttura directory)
Output: orto-init/scripts/init_new_orto.py

Criteri:

  • Script è riutilizzabile (eseguito multiple volte)
  • Script è deterministico (stesso input → stesso output)
  • Script ha dipendenze minime (Python standard lib OK)
  • Script è più efficiente che riscriverlo inline

Output:

  • Script copiato in <skill-name>/scripts/
  • Documentato in SKILL.md (sezione "Scripts")
  • Eventuale requirements.txt se dipendenze esterne

Pattern 10: Script → Inline nel Corpo

Descrizione: Script semplice o una-tantum viene convertito in logica inline nel corpo SKILL.md.

Esempio:

Input:  json_to_md_converter.py (3 KB, utility migrazione)
Output: Logica descritta in SKILL.md (nessuno script incluso)

Criteri:

  • Script è una-tantum (migrazione, setup iniziale)
  • Script è semplice (<50 righe)
  • Logica può essere descritta in markdown
  • Includere script aggiungerebbe complessità non necessaria

Output:

  • Logica descritta in corpo SKILL.md (pseudocodice o descrizione)
  • Nessuno script incluso

Pattern 11: Script → Eliminato

Descrizione: Script non necessario a runtime viene eliminato.

Esempio:

Input:  sync_md_from_agents.py (5 KB, validazione post-hoc)
Output: Nessuno script incluso (funzionalità assorbita da QA inline)

Criteri:

  • Script è tool di sviluppo/test, non runtime
  • Funzionalità è già coperta da QA inline
  • Script richiede configurazione complessa
  • Eliminare semplifica senza perdere valore

Output:

  • Script non incluso
  • Eventuale menzione in mapping_plan.md (sezione "Eliminati")

Pattern 12: Prompt → Integrato come Input Section

Descrizione: Prompt che sono template di input diventano sezioni Input nella skill.

Esempio:

Input:  prompts/prompt_onboarding.md (template questionario)
Output: orto-onboarding SKILL.md, sezione "Input" con tabella campi

Criteri:

  • Prompt è template di raccolta dati
  • Prompt definisce input strutturati
  • Prompt può essere convertito in tabella markdown

Output:

  • Tabella Input in SKILL.md (nome, tipo, obbligatorio, esempio)
  • Eventuale template markdown in assets/ se complesso

Pattern 13: Prompt → Eliminato

Descrizione: Prompt di generazione framework (non runtime) vengono eliminati.

Esempio:

Input:  prompts/master_prompt_openclaw.md (generazione specifiche)
Output: Nessuna inclusione (prompt di generazione, non runtime)

Criteri:

  • Prompt serve a generare framework, non a eseguirlo
  • Prompt non è necessario per le skills runtime
  • Eliminare non perde funzionalità runtime

Output:

  • Prompt non incluso
  • Eventuale menzione storica in README.md

Decision Tree per Mappatura

Start: Entità framework (agente/workflow/knowledge/script)
  │
  ├─→ È un Agente?
  │   ├─→ Ha overlap >50% con altro agente?
  │   │   ├─→ SÌ → Pattern 2 (Merge 2+ Agenti → 1 Skill)
  │   │   └─→ NO → È essenziale per MVP?
  │   │       ├─→ SÌ → Pattern 1 (1 Agente → 1 Skill)
  │   │       └─→ NO → Pattern 5 (Eliminato) o Pattern 6 (Assorbito)
  │   │
  │   └─→ È di coordinamento/orchestrazione?
  │       ├─→ SÌ → Pattern 4 (Agente + Workflow → Orchestratore)
  │       └─→ NO → (vedi sopra)
  │
  ├─→ È un Workflow?
  │   ├─→ Ha script associato?
  │   │   ├─→ SÌ → Pattern 3 (Workflow → Skill Operativa)
  │   │   └─→ NO → È orchestrato da altro agente?
  │   │       ├─→ SÌ → Pattern 4 (Agente + Workflow → Orchestratore)
  │   │       └─→ NO → Pattern 3 (Workflow → Skill, no script)
  │   │
  │   └─→ (vedi sopra)
  │
  ├─→ È Knowledge?
  │   ├─→ È condivisa da 2+ skills o >500 linee?
  │   │   ├─→ SÌ → Pattern 7 (Knowledge → Reference Centralizzata)
  │   │   └─→ NO → Pattern 8 (Knowledge → Inline nel Corpo)
  │   │
  │   └─→ (vedi sopra)
  │
  └─→ È uno Script?
      ├─→ È riutilizzabile e deterministico?
      │   ├─→ SÌ → Pattern 9 (Script → scripts/ nella Skill)
      │   └─→ NO → È semplice o una-tantum?
      │       ├─→ SÌ → Pattern 10 (Script → Inline nel Corpo)
      │       └─→ NO → Pattern 11 (Script → Eliminato)
      │
      └─→ (vedi sopra)

Esempi da orto_v1 → orto-skills

Entità Origine Pattern Applicato Output Giustificazione
Agente 01 (Orchestratore) Pattern 4 orto-orchestratore Coordina workflow multipli + QA
Agente 02 (Agronomo) Pattern 1 orto-agronomo Auto-contenuto, responsabilità chiara
Agente 03 (Stagionalità) Pattern 1 orto-calendario Auto-contenuto
Agente 04 (Fitopatologo) + PHYTO-DIAG + PHYTO-TREAT-BIO Pattern 2 orto-fitopatologo Merge funzionale (diagnosi + trattamenti)
Agente 05 (Irrigazione) Pattern 1 orto-irrigazione Auto-contenuto
Agente 06 (Layout) Pattern 1 orto-layout Auto-contenuto
Agente 07 (Nutrizione) Pattern 6 Assorbito in orto-agronomo Overlap forte con agronomo
Agente 08 (Data Manager) Pattern 6 Assorbito in orchestratore QA già in orchestratore
Agente 09 (UI/UX) Pattern 5 Eliminato Non essenziale per MVP testuale
Agente 10 (QA) Pattern 6 Assorbito in orchestratore Validazione inline
Agente 11 (Meteo) Pattern 1 orto-meteo-decisioni Auto-contenuto
Agente 12 (Ops) Pattern 5 Eliminato Integrazioni gestite da singole skills
Workflow 00 (Init) + init_new_orto.py Pattern 3 orto-init Workflow operativo con script
Workflow 01 (Onboarding) Pattern 3 orto-onboarding Workflow di raccolta dati
colture.md (knowledge) Pattern 7 references/colture_it.md Condivisa, 20 KB
init_new_orto.py Pattern 9 orto-init/scripts/ Riutilizzabile, deterministico
json_to_md_converter.py Pattern 11 Eliminato Utility migrazione, non runtime
prompt_onboarding.md Pattern 12 orto-onboarding Input section Template di raccolta dati
master_prompt_openclaw.md Pattern 13 Eliminato Prompt di generazione, non runtime

Checklist Applicazione Pattern

Prima di finalizzare la mappatura, verifica:

  • Ogni agente ha un pattern applicato (1, 2, 4, 5, o 6)
  • Ogni workflow ha un pattern applicato (3 o 4)
  • Ogni knowledge ha un pattern applicato (7 o 8)
  • Ogni script ha un pattern applicato (9, 10, o 11)
  • Ogni prompt ha un pattern applicato (12 o 13)
  • Pattern applicati sono coerenti con criteri
  • Giustificazioni documentate per Pattern 2, 5, 6
  • Decision tree seguito in ordine logico

Aggiornato: 2026-03-07 | Versione: 1.0