agency-skills-suite/agency-archivist/SKILL.md
AgentePotente 91d70558ac feat(placeholder): add placeholder mode for asset-missing workflows
- agency-archivist: frontmatter updated + 3-option pattern + placeholder section
- agency-visual-generator: 3-option pattern (block/placeholder/skip)
- agency-web-developer: placeholder inline SVG/CSS option
- agency-design-system: placeholder tokens option

All consuming skills now offer:
1. Block and request assets (traditional)
2. Placeholder mode for continuous workflow 
3. Skip asset if optional

Pattern allows prototyping without real assets.
2026-03-11 10:42:47 +01:00

401 lines
13 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: agency-archivist
description: "Gestire archivi di risorse (immagini, video, documenti) per progetti agency. Usare quando: (1) cliente invia zip/URL di asset, (2) estrarre e organizzare risorse in {project}/assets/, (3) catalogare risorse con descrizioni e tag, (4) cercare risorse per altre skill, (5) richiedere risorse mancanti con 3 opzioni: blocco/upload, placeholder mode per continuità workflow, o skip asset. Supporta pattern placeholder per lavorare senza asset reali."
---
# Agency Archivist — Gestione Risorse e Asset
Gestisce upload, estrazione, catalogazione e ricerca di risorse multimediali per i progetti della suite.
## Quando Usare
- **Upload risorse:** Cliente fornisce zip, URL o cartella con asset
- **Estrazione archivi:** Decomprimere zip/tar in struttura organizzata
- **Catalogazione:** Creare catalogo descrittivo delle risorse
- **Ricerca risorse:** Trovare asset specifici per altre skill
- **Proattivo:** Segnalare risorse mancanti e richiedere integrazione
---
## Struttura Archivio Progetti
Ogni progetto ha una cartella dedicata per le risorse:
```
{project}/
├── assets/ ← Gestito da agency-archivist
│ ├── archive/ # Archivi originali (zip, tar, rar)
│ ├── images/ # Immagini estratte
│ │ ├── logo/ # Loghi aziendali
│ │ ├── prodotto/ # Foto prodotto
│ │ ├── team/ # Foto team/ufficio
│ │ └── stock/ # Immagini generiche
│ ├── videos/ # Video estratti
│ │ ├── promo/ # Video promozionali
│ │ ├── tutorial/ # Tutorial/dimostrazioni
│ │ └── raw/ # Footage grezzo
│ ├── documents/ # Documenti di riferimento
│ │ ├── brand/ # Linee guida brand
│ │ ├── product/ # Schede prodotto
│ │ └── legal/ # Documenti legali
│ └── catalog.md # Catalogo generato (indice centrale)
├── knowledge/
├── research/
├── strategy/
├── design/
├── content/
├── ops/
└── published/
```
---
## Processo
### Fase 1: Ricezione Archivi
**Obiettivo:** Accettare input da diverse fonti.
**Input Supportati:**
| Tipo | Formato | Esempio | Azione |
|------|---------|---------|--------|
| **Zip allegato** | `.zip`, `.tar.gz`, `.rar` | `brand_assets.zip` | Estrai in `assets/archive/` |
| **URL HTTP/HTTPS** | Link diretto | `https://example.com/assets.zip` | Download + estrai |
| **URL FTP** | FTP server | `ftp://server.com/file.zip` | Download + estrai |
| **Cartella locale** | Path filesystem | `/home/user/assets/` | Copia in `assets/` |
**Procedura:**
1. **Ricevi input:** Path file, URL o allegato
2. **Valida formato:** Verifica estensione supportata
3. **Crea cartella archive:** `{project}/assets/archive/`
4. **Copia/Download:** Sposta file in archive/
5. **Log operazione:** Registra in `{project}/ops/run_log.md`
**Esempio Log:**
```markdown
## 2026-03-10 23:30 — Archivist Upload
- **Input:** `brand_assets.zip` (allegato)
- **Destinazione:** `{project}/assets/archive/`
- **Dimensioni:** 15.4 MB
- **Status:** ✅ Completato
```
---
### Fase 2: Estrazione Archivi
**Obiettivo:** Decomprimere e organizzare risorse per tipologia.
**Script:** `scripts/extract_archive.js`
**Procedura:**
1. **Leggi archivio:** Identifica formato (zip, tar, rar)
2. **Estrai temporaneo:** Decomprimi in cartella temporanea
3. **Analizza contenuti:** Per ogni file:
- Rileva tipo (immagine, video, documento)
- Estrai metadata (dimensioni, risoluzione, formato)
- Assegna categoria (logo, prodotto, team, etc.)
4. **Organizza:** Copia file in sottocartelle appropriate
5. **Pulisci:** Elimina archivio originale (opzionale, su conferma)
6. **Log:** Registra file estratti
**Categorizzazione Automatica:**
| Parola chiave nel nome | Cartella destinazione |
|------------------------|----------------------|
| `logo`, `brand`, `marchio` | `images/logo/` |
| `prodotto`, `product`, `item` | `images/prodotto/` |
| `team`, `staff`, `ufficio`, `office` | `images/team/` |
| `sfondo`, `background`, `texture` | `images/stock/` |
| `video`, `promo`, `reel` | `videos/promo/` |
| `tutorial`, `howto`, `demo` | `videos/tutorial/` |
| `brand`, `guideline`, `manual` | `documents/brand/` |
| `scheda`, `datasheet`, `spec` | `documents/product/` |
**Fallback:** File non categorizzabili → cartella radice (`images/`, `videos/`, `documents/`)
---
### Fase 3: Catalogazione Risorse
**Obiettivo:** Generare catalogo descrittivo per ricerca futura.
**Script:** `scripts/scan_resources.js` + `scripts/generate_catalog.js`
**Due Passate di Analisi:**
#### **Passata 1: Metadata Base (Sempre)**
Per ogni risorsa, estrai:
- Nome file
- Estensione
- Dimensione (KB/MB)
- Tipo MIME
- Data creazione/modifica
- Risoluzione (per immagini/video)
#### **Passata 2: Analisi Contenuto (Se Modello Supporta Vision)**
Per immagini e video:
- Descrizione semantica (cosa raffigura)
- Colori dominanti
- Presenza testo/logo
- Contesto (interno/esterno, prodotto/persone)
- Tag automatici
**Output:** `{project}/assets/catalog.md`
---
### Fase 4: Generazione Catalogo
**Obiettivo:** Creare indice ricercabile delle risorse.
**Formato Catalogo:**
```markdown
# Asset Catalog — {Nome Cliente}
_Generato: {data} | Totale: {N} risorse_
## Riepilogo
| Tipo | Count | Dimensione Totale |
|------|-------|-------------------|
| Immagini | 18 | 24.5 MB |
| Video | 3 | 156 MB |
| Documenti | 5 | 2.1 MB |
---
## Immagini ({count})
| File | Tipo | Dimensioni | Risoluzione | Descrizione | Tag | Use Case |
|------|------|------------|-------------|-------------|-----|----------|
| `logo_primary.png` | PNG | 45 KB | 512x512 | Logo aziendale, sfondo trasparente | #logo #brand #trasparente | Header sito, social profile |
| `prodotto_01.jpg` | JPG | 2.3 MB | 3000x2000 | Foto prodotto su sfondo bianco | #prodotto #whitebg #ecommerce | E-commerce, social post |
| `team_photo.jpg` | JPG | 4.1 MB | 4000x3000 | Foto team (8 persone, ufficio luminoso) | #team #ufficio #people | About page, LinkedIn |
---
## Video ({count})
| File | Tipo | Dimensioni | Durata | Risoluzione | Descrizione | Tag | Use Case |
|------|------|------------|--------|-------------|-------------|-----|----------|
| `promo_30sec.mp4` | MP4 | 45 MB | 0:30 | 1920x1080 | Video promozionale prodotto, musica upbeat | #promo #prodotto #video | Social ads, homepage |
---
## Documenti ({count})
| File | Tipo | Dimensioni | Descrizione | Tag | Use Case |
|------|------|------------|-------------|-----|----------|
| `brand_guidelines.pdf` | PDF | 1.2 MB | Linee guida brand (colori, font, logo) | #brand #guidelines #pdf | Design system, coerenza visiva |
---
## Tag Globali
#logo #prodotto #team #brand #ufficio #milano #ecommerce #b2b
---
## Note
- **Ultimo aggiornamento:** {data}
- **Archivi originali:** `assets/archive/`
- **Per richiedere risorse:** Contatta @agency-archivist
```
---
## Integrazione con Altre Skills
### **Come le Altre Skill Usano Archivist**
**Pattern di Ricerca:**
```markdown
**Prima di eseguire task che richiedono asset:**
1. Leggi `{project}/assets/catalog.md`
2. Cerca risorse per tag/tipo/descrizione
3. Se trovi: Usa path completo ✅
4. Se NON trovi: **Scegli una delle 3 opzioni:**
**OPZIONE A — Blocco Task (strict):**
- "🔒 Bloccato: servono [descrizione risorse]"
- Tagga: @agency-archivist
- Descrivi: Cosa manca
- Attendi upload prima di procedere
**OPZIONE B — Placeholder Mode (consigliata per prototipi):**
- Continua con asset placeholder/generici
- Documenta in output: "⚠️ Usati placeholder per [asset] — aggiorna con asset reali"
- Crea sezione "Assets Placeholder" nel deliverable
- Non bloccare il workflow
**OPZIONE C — Skip Asset (se opzionale):**
- Procedi senza quella risorsa specifica
- Adatta il design/contenuto di conseguenza
- Documenta: "⏭️ Asset [nome] omesso — spazio riservato"
```
### **Comportamento Proattivo di Archivist**
**Quando una skill segnala risorse mancanti:**
1. **Analizza richiesta:** Cosa serve esattamente?
2. **Verifica catalogo:** Conferma che manca davvero
3. **Risposta strutturata con 3 opzioni:**
```
⚠️ **Risorse Mancanti per [task]**
Per completare questo task servono:
- [ ] Foto prodotto (sfondo bianco, minimo 1000x1000px)
- [ ] Logo aziendale (PNG trasparente)
- [ ] Brand colors (codici esadecimali)
**Come vuoi procedere?**
1⃣ **Upload asset** — Allega zip/URL con le risorse reali
2⃣ **Descrivi cosa hai** — Fornisci dettagli per orientare la ricerca
3⃣ **Continua con placeholder** ⚡ — Procedi con asset generici/placeholder
(consigliato per prototipi, wireframe, o quando l'asset non è critico)
```
4. **Dopo upload:** Esegui re-scan e aggiorna catalogo
5. **Sblocca skill:** Notifica: "✅ Risorse pronte, puoi procedere"
---
## Pattern Placeholder per Asset Mancanti
Quando si sceglie l'**Opzione 3 — Continua con placeholder**, seguire questo pattern standardizzato:
### 1. Identificazione Placeholder
Per ogni asset mancante, crea un placeholder con:
- **Tipo:** `placeholder`
- **Nome:** `placeholder_[tipo]_[descrizione_breve].[ext]`
- **Dimensioni:** Specificare dimensioni target (es. "1200x800px")
- **Note:** Cosa dovrebbe rappresentare
### 2. Documentazione nel Deliverable
Includi sempre una sezione **"Assets Placeholder"** nel deliverable:
```markdown
## ⚠️ Assets Placeholder
I seguenti elementi sono stati realizzati con asset generici/placeholder:
| Posizione | Asset Mancante | Tipo Richiesto | Note |
|-----------|----------------|----------------|------|
| Hero section | `placeholder_hero_product.jpg` | Foto prodotto 1920x1080 | Sfondo hero, prodotto su bianco |
| Logo header | `placeholder_logo.png` | Logo PNG trasparente 512x512 | Logo aziendale |
| Team section | `placeholder_team_01.jpg` | Foto team 800x600 | 3 placeholder per 3 membri |
**Per completare:** Sostituire i placeholder con asset reali mantenendo le stesse dimensioni e nomi file.
```
### 3. Comportamento delle Skill Consumatrici
Le skill che usano asset (es. agency-visual-generator, agency-web-developer) devono:
1. **Controllare catalogo:** Verificare se asset esiste o è placeholder
2. **Se placeholder:**
- Procedere con il placeholder (non bloccare)
- Aggiungere nota nel deliverable
- Mantenere struttura/layout come se fosse reale
3. **Se asset reale:** Usare normalmente
4. **Documentare sempre:** Lista asset usati (reali o placeholder) nel deliverable
### 4. Vantaggi del Pattern Placeholder
- **Prototipi veloci:** Non bloccare workflow per asset mancanti
- **Chiarezza:** Cliente vede esattamente cosa manca
- **Iterazione:** Facile sostituire placeholder con asset reali
- **Testing:** Verificare layout/design prima di avere asset finali
---
## Script
### `scripts/extract_archive.js`
**Input:** Path archivio o URL
**Output:** Risorse estratte in `assets/`
```bash
node scripts/extract_archive.js <path_or_url> --client <client_name>
```
**Opzioni:**
- `--keep-archive`: Mantieni file originale (default: elimina dopo estrazione)
- `--verbose`: Log dettagliato
- `--dry-run`: Simula senza estrazione
### `scripts/scan_resources.js`
**Input:** Cartella `assets/`
**Output:** Metadata JSON in `assets/.metadata.json`
```bash
node scripts/scan_resources.js --client <client_name> --pass 1|2
```
**Opzioni:**
- `--pass 1`: Solo metadata base (veloce)
- `--pass 2`: Analisi avanzata (richiede ImageMagick/ffprobe)
- `--output`: Path output JSON (default: assets/.metadata.json)
### `scripts/generate_catalog.js`
**Input:** Metadata da scan
**Output:** `catalog.md` formattato
```bash
node scripts/generate_catalog.js --client <client_name>
```
---
## Output
| File | Formato | Descrizione |
|------|---------|-------------|
| `{project}/assets/catalog.md` | Markdown | Catalogo completo risorse |
| `{project}/ops/run_log.md` | Markdown | Log operazioni archivist |
| `{project}/assets/archive/` | Cartella | Archivi originali (opzionale) |
---
## References
- [resource_types.md](../agency-shared-references/references/resource_types.md) — Tipologie risorse e use case
---
## Edge Cases
**Gestione Errori:**
- **Archivio corrotto:** "⚠️ Archivio corrotto o non valido. Richiedi nuovo upload."
- **Formato non supportato:** "❌ Formato .xyz non supportato. Usa zip, tar.gz, o rar."
- **URL non raggiungibile:** "❌ URL non accessibile. Verifica link o usa download diretto."
- **Nessuna risorsa trovata:** "⚠️ Archivio vuoto o solo file non multimediali."
**Limitazioni:**
- **Dimensioni max:** 500 MB per archivio (configurabile)
- **Formati video:** Solo MP4, MOV, AVI (altri richiedono codec aggiuntivi)
- **Analisi contenuto:** Richiede modello con supporto vision (opzionale)
---
_Agency Skills Suite v1.0_