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.
This commit is contained in:
AgentePotente 2026-03-07 10:14:37 +01:00
commit c40ddf4b59
9 changed files with 3344 additions and 0 deletions

54
scripts/01_scan_files.sh Executable file
View file

@ -0,0 +1,54 @@
#!/bin/bash
# 01_scan_files.sh — Scansione file framework
# Solo meccanico: lista file markdown e struttura directory
set -e
FRAMEWORK_PATH="$1"
if [ -z "$FRAMEWORK_PATH" ]; then
echo "❌ Usage: $0 <framework-path>"
exit 1
fi
if [ ! -d "$FRAMEWORK_PATH" ]; then
echo "❌ Error: Directory not found: $FRAMEWORK_PATH"
exit 1
fi
echo "📂 Scansione framework: $FRAMEWORK_PATH"
echo "=============================================="
# Struttura directory
echo ""
echo "### STRUTTURA DIRECTORY"
echo ""
find "$FRAMEWORK_PATH" -type d | grep -v "/\." | sort | head -50
# File markdown
echo ""
echo "### FILE MARKDOWN ($(find "$FRAMEWORK_PATH" -name "*.md" | wc -l | tr -d ' ') totali)"
echo ""
find "$FRAMEWORK_PATH" -type f -name "*.md" | grep -v "/\." | sort
# Script
echo ""
echo "### SCRIPT ($(find "$FRAMEWORK_PATH" -type f \( -name "*.py" -o -name "*.sh" \) | wc -l | tr -d ' ') totali)"
echo ""
find "$FRAMEWORK_PATH" -type f \( -name "*.py" -o -name "*.sh" \) | grep -v "/\." | sort
# Cartelle chiave
echo ""
echo "### CARTELLE CHIAVE IDENTIFICATE"
echo ""
for pattern in agents agenti actors roles workflows flussi processes knowledge docs scripts tools prompts; do
found=$(find "$FRAMEWORK_PATH" -type d -iname "*$pattern*" | grep -v "/\." | head -3)
if [ -n "$found" ]; then
echo "$pattern: $found"
fi
done
echo ""
echo "=============================================="
echo "✅ Scansione completata"

69
scripts/02_create_structure.sh Executable file
View file

@ -0,0 +1,69 @@
#!/bin/bash
# 02_create_structure.sh — Crea struttura distribuzione
# Solo meccanico: mkdir, mv, organizzazione file
set -e
FRAMEWORK_NAME="$1"
SOURCE_DIR="$2"
if [ -z "$FRAMEWORK_NAME" ] || [ -z "$SOURCE_DIR" ]; then
echo "❌ Usage: $0 <framework-name> <source-dir>"
echo " framework-name: nome per la suite (es. orto-skills)"
echo " source-dir: directory con skills e references generate"
exit 1
fi
if [ ! -d "$SOURCE_DIR" ]; then
echo "❌ Error: Directory not found: $SOURCE_DIR"
exit 1
fi
DIST_DIR="${FRAMEWORK_NAME}-suite"
echo "📦 Creazione struttura distribuzione: $DIST_DIR"
echo "=============================================="
# Crea directory distribuzione
mkdir -p "$DIST_DIR"
# Sposta/maintieni skills
echo ""
echo "### Spostamento skills..."
for skill_dir in "$SOURCE_DIR"/*/; do
if [ -d "$skill_dir" ]; then
skill_name=$(basename "$skill_dir")
if [ "$skill_name" != "references" ]; then
mv "$skill_dir" "$DIST_DIR/"
echo " ✓ Skill: $skill_name"
fi
fi
done
# Sposta/maintieni references
echo ""
echo "### Spostamento references..."
if [ -d "$SOURCE_DIR/references" ]; then
mv "$SOURCE_DIR/references" "$DIST_DIR/"
echo " ✓ References directory"
fi
# Crea symlink in ogni skill
echo ""
echo "### Creazione symlink references..."
for skill_dir in "$DIST_DIR"/*/; do
if [ -d "$skill_dir" ] && [ "$(basename "$skill_dir")" != "references" ]; then
ln -sf ../references "$skill_dir/references" 2>/dev/null || {
echo " ⚠️ Symlink fallito per $(basename "$skill_dir")"
continue
}
echo " ✓ Symlink: $(basename "$skill_dir")/references → ../references"
fi
done
echo ""
echo "=============================================="
echo "✅ Struttura creata: $DIST_DIR"
echo ""
echo "Contenuto:"
ls -la "$DIST_DIR"

140
scripts/03_generate_packaging.sh Executable file
View file

@ -0,0 +1,140 @@
#!/bin/bash
# 03_generate_packaging.sh — Genera INSTALL.sh e README.md
# Solo meccanico: generazione file packaging
set -e
DIST_DIR="$1"
FRAMEWORK_NAME="$(basename "$DIST_DIR" | sed 's/-suite$//')"
if [ -z "$DIST_DIR" ] || [ ! -d "$DIST_DIR" ]; then
echo "❌ Usage: $0 <dist-dir>"
exit 1
fi
echo "📦 Generazione packaging per: $DIST_DIR"
echo "=============================================="
# Conta skills e references
SKILLS_COUNT=$(find "$DIST_DIR" -mindepth 1 -maxdepth 1 -type d ! -name "references" 2>/dev/null | wc -l | tr -d ' ')
REFS_COUNT=$(find "$DIST_DIR/references" -name "*.md" 2>/dev/null | wc -l | tr -d ' ')
# Genera INSTALL.sh
echo ""
echo "### Generazione INSTALL.sh..."
cat > "$DIST_DIR/INSTALL.sh" << EOF
#!/bin/bash
# Installazione ${FRAMEWORK_NAME}-skills
SOURCE="\$(cd "\$(dirname "\${BASH_SOURCE[0]}")" && pwd)"
TARGET="\$HOME/.openclaw/skills/${FRAMEWORK_NAME}-skills"
echo "📦 Installing ${FRAMEWORK_NAME}-skills..."
echo ""
# Verifica destinazione
if [ -d "\$TARGET" ]; then
echo "⚠️ Directory esistente: \$TARGET"
read -p "Sovrascrivere? (y/N) " confirm
if [ "\$confirm" != "y" ]; then
echo "❌ Installazione annullata"
exit 1
fi
rm -rf "\$TARGET"
fi
# Crea directory parent
mkdir -p "\$(dirname "\$TARGET")"
# Copia skills
cp -r "\$SOURCE" "\$TARGET"
echo "✅ Installation complete!"
echo ""
echo "Skills installate in: \$TARGET"
echo ""
echo "Skills incluse (${SKILLS_COUNT}):"
for skill in "\$TARGET"/*/; do
if [ -d "\$skill" ] && [ "\$(basename "\$skill")" != "references" ]; then
echo " - \$(basename "\$skill")"
fi
done
EOF
chmod +x "$DIST_DIR/INSTALL.sh"
echo " ✓ INSTALL.sh generato"
# Genera README.md
echo ""
echo "### Generazione README.md..."
cat > "$DIST_DIR/README.md" << EOF
# ${FRAMEWORK_NAME}-skills
Suite di AgentSkills generate da framework-translator.
## Panoramica
- **Skills:** ${SKILLS_COUNT}
- **References:** ${REFS_COUNT}
- **Lingua:** Da rilevare
- **Dominio:** Da rilevare
## Installazione
### Metodo 1: Script Automatico
\`\`\`bash
./INSTALL.sh
\`\`\`
### Metodo 2: Copia Manuale
\`\`\`bash
cp -r . ~/.openclaw/skills/${FRAMEWORK_NAME}-skills
\`\`\`
## Skills Incluse
EOF
# Lista skills
for skill_dir in "$DIST_DIR"/*/; do
if [ -d "$skill_dir" ] && [ "$(basename "$skill_dir")" != "references" ]; then
skill_name=$(basename "$skill_dir")
echo "- **$skill_name**" >> "$DIST_DIR/README.md"
fi
done
cat >> "$DIST_DIR/README.md" << EOF
## References
EOF
# Lista references
if [ -d "$DIST_DIR/references" ]; then
for ref_file in "$DIST_DIR/references"/*.md; do
if [ -f "$ref_file" ]; then
ref_name=$(basename "$ref_file")
echo "- \`$ref_name\`" >> "$DIST_DIR/README.md"
fi
done
fi
cat >> "$DIST_DIR/README.md" << EOF
---
_Generato da framework-translator il $(date +%Y-%m-%d)_
EOF
echo " ✓ README.md generato"
echo ""
echo "=============================================="
echo "✅ Packaging completato"
echo ""
echo "File generati:"
ls -la "$DIST_DIR"/*.sh "$DIST_DIR"/*.md 2>/dev/null || true

229
scripts/README.md Normal file
View file

@ -0,0 +1,229 @@
# Scripts — Framework Translator (LLM-Native)
Script **meccanici** per supporto operativo al processo LLM.
## Panoramica
Questi script **NON fanno analisi semantica** — solo operazioni meccaniche:
- Listare file
- Creare directory
- Creare symlink
- Generare file template (INSTALL.sh, README.md)
**Tutta l'analisi e generazione è fatta da LLM** leggendo `SKILL.md`.
---
## Script Disponibili
### `01_scan_files.sh` — Scansione Framework
**Scopo:** Lista file markdown e struttura directory del framework.
**Input:**
- Percorso framework
**Output:**
- Lista directory
- Lista file markdown
- Lista script
- Cartelle chiave identificate
**Utilizzo:**
```bash
./scripts/01_scan_files.sh /path/to/framework
```
**Output esempio:**
```
📂 Scansione framework: /path/to/orto_v1
==============================================
### STRUTTURA DIRECTORY
/path/to/orto_v1
/path/to/orto_v1/docs
/path/to/orto_v1/docs/agents
/path/to/orto_v1/docs/workflows
...
### FILE MARKDOWN (47 totali)
/path/to/orto_v1/README.md
/path/to/orto_v1/docs/agents/00_agent_index.md
/path/to/orto_v1/docs/agents/01_orchestratore.md
...
### CARTELLE CHIAVE IDENTIFICATE
✓ agents: /path/to/orto_v1/docs/agents
✓ workflows: /path/to/orto_v1/docs/workflows
✓ knowledge: /path/to/orto_v1/docs/knowledge
✓ scripts: /path/to/orto_v1/scripts
```
**Per LLM:** Usa questo output come contesto per Fase 1 (analisi framework).
---
### `02_create_structure.sh` — Crea Struttura Distribuzione
**Scopo:** Organizza skills e references in struttura finale, crea symlink.
**Input:**
- Nome framework (es. `orto-skills`)
- Directory sorgente (con skills e references generate)
**Output:**
- Directory `<framework>-suite/` organizzata
- Symlink `references/` in ogni skill
**Utilizzo:**
```bash
./scripts/02_create_structure.sh orto-skills ./output/
```
**Output esempio:**
```
📦 Creazione struttura distribuzione: orto-skills-suite
==============================================
### Spostamento skills...
✓ Skill: orto-init
✓ Skill: orto-agronomo
✓ Skill: orto-calendario
### Spostamento references...
✓ References directory
### Creazione symlink references...
✓ Symlink: orto-init/references → ../references
✓ Symlink: orto-agronomo/references → ../references
✓ Symlink: orto-calendario/references → ../references
✅ Struttura creata: orto-skills-suite
```
**Per LLM:** Esegui dopo Fase 4 (generazione skills completata).
---
### `03_generate_packaging.sh` — Genera Packaging
**Scopo:** Genera `INSTALL.sh` e `README.md` per distribuzione.
**Input:**
- Directory distribuzione (`<framework>-suite/`)
**Output:**
- `INSTALL.sh` (script installazione automatica)
- `README.md` (documentazione con lista skills)
**Utilizzo:**
```bash
./scripts/03_generate_packaging.sh ./orto-skills-suite
```
**Output esempio:**
```
📦 Generazione packaging per: ./orto-skills-suite
==============================================
### Generazione INSTALL.sh...
✓ INSTALL.sh generato
### Generazione README.md...
✓ README.md generato
✅ Packaging completato
File generati:
-rwxr-xr-x INSTALL.sh
-rw-r--r-- README.md
```
**Per LLM:** Esegui come ultimo step (Fase 5).
---
## Workflow Completo (LLM + Script)
```bash
# FASE 1-4: LLM (leggi SKILL.md, esegui analisi e generazione)
# ... LLM lavora su analysis_report.md, mapping_plan.md, references/, skills/ ...
# FASE 5: Script meccanici
# 1. Scansione iniziale (opzionale, per contesto)
./scripts/01_scan_files.sh /path/to/framework > ./output/scan_results.txt
# 2. Crea struttura distribuzione (dopo Fase 4)
./scripts/02_create_structure.sh orto-skills ./output/
# 3. Genera packaging (dopo step 2)
./scripts/03_generate_packaging.sh ./orto-skills-suite
```
---
## Differenze vs. Approccio Python (Archiviato)
| Aspetto | Script Python (archiviati) | Script Bash (attuali) |
|---------|---------------------------|----------------------|
| **Analisi semantica** | Sì (regex, euristico) | No (solo meccanico) |
| **Generazione contenuto** | Sì (template rigido) | No (fatto da LLM) |
| **Linee di codice** | ~2,000 | ~150 |
| **Manutenzione** | Complessa (test, debug) | Semplice (solo I/O) |
| **Flessibilità** | Bassa (formati fissi) | Alta (LLM si adatta) |
| **Token usage** | 0 | ~35-65K per framework |
---
## Script Archiviati (Python)
Gli script Python originali sono archiviati in:
```
scripts-archive/
├── analyze_framework.py # Fase 1 (parsing automatico)
├── map_entities.py # Fase 2 (mappatura euristica)
├── extract_knowledge.py # Fase 3 (estrazione keyword)
└── generate_skill.py # Fase 4 (template rigido)
```
**Perché archiviati:** Troppo complessi, fragili, output generico. L'approccio LLM-native è più flessibile e produce output di qualità superiore.
**Quando usarli:** Solo come riferimento o se vuoi sperimentare approccio ibrido.
---
## Note Tecniche
### Bash vs. Python
**Bash scelto perché:**
- Script <100 linee (semplici)
- Solo I/O e operazioni file
- Nessuna logica complessa
- Ubiquo (tutti i sistemi Unix)
**Python non necessario perché:**
- LLM fa analisi/generazione
- Script sono solo "colla" meccanica
### Compatibilità
Testato su:
- Linux (Ubuntu/Debian)
- macOS
- Windows (WSL, Git Bash)
### Permessi
Assicura che gli script siano eseguibili:
```bash
chmod +x scripts/*.sh
```
---
_Aggiornato: 2026-03-07 | Versione: 2.0 (LLM-Native)_