From 5ef7b67e40f6a6bdc1a62bca404ea2d2db83a66c Mon Sep 17 00:00:00 2001 From: AgentePotente Date: Wed, 11 Mar 2026 01:19:04 +0100 Subject: [PATCH] Rimozione agency-publisher: skill inutilizzabile senza integrazioni webhook/API esterne MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Eliminata cartella agency-publisher/ - Aggiornato README: 14 skills (da 15), workflow publish manuale - Aggiornato agency-orchestrator: publish gate gestiti manualmente - Rimosso riferimenti da qa_visual.md e resource_types.md - Aggiunto report analisi in PUBLISHER_REMOVAL_REPORT.md Publish ora gestito manualmente con: - APPROVED: YES nel frontmatter - PUBLISH_APPROVED.md - publish_log.md per tracciabilità --- PUBLISHER_REMOVAL_REPORT.md | 172 ++++++++++++++ README.md | 31 ++- agency-orchestrator/SKILL.md | 16 +- agency-publisher/SKILL.md | 223 ------------------ agency-shared-references/SKILL.md | 2 +- .../references/qa_visual.md | 2 +- .../references/resource_types.md | 4 +- 7 files changed, 209 insertions(+), 241 deletions(-) create mode 100644 PUBLISHER_REMOVAL_REPORT.md delete mode 100644 agency-publisher/SKILL.md diff --git a/PUBLISHER_REMOVAL_REPORT.md b/PUBLISHER_REMOVAL_REPORT.md new file mode 100644 index 0000000..21a8208 --- /dev/null +++ b/PUBLISHER_REMOVAL_REPORT.md @@ -0,0 +1,172 @@ +# Report: Rimozione agency-publisher + +**Data:** 2026-03-11 00:02 GMT+1 +**Analisi:** Impatto rimozione skill agency-publisher dalla suite + +--- + +## 📋 Summary Executive + +**Raccomandazione:** ✅ **RIMUOVERE** agency-publisher + +**Motivazione:** La skill richiede integrazioni esterne complesse (webhook, n8n/Make/Zapier, API social/YouTube) che la rendono inutilizzabile nella maggior parte dei deployment. I gate di approvazione possono essere gestiti manualmente o con workflow semplificati. + +--- + +## 🔍 Analisi Dipendenze + +### Riferimenti Attuali (10 occorrenze) + +| File | Tipo Riferimento | Contesto | +|------|------------------|----------| +| `README.md` | Tabella skills | Skill #13 nella lista | +| `README.md` | Workflow end-to-end | Step 10: "Publish" | +| `README.md` | Struttura cartelle | Cartella `agency-publisher/` | +| `README.md` | Sezione Publishing Gates | Menzione come skill critica | +| `agency-orchestrator/SKILL.md` | Lista agenti | Agente per publish | +| `agency-orchestrator/SKILL.md` | Fase 4 Publish Gate | "Triggera agency-publisher" | +| `agency-shared-references/references/qa_visual.md` | "Usato da" | Menzione in header | +| `agency-shared-references/references/resource_types.md` | "Skill che usano" | 2 menzioni (images, video) | +| `agency-publisher/SKILL.md` | — | Skill stessa da eliminare | + +--- + +## 🎯 Impatto Funzionale + +### Cosa Si Perde + +| Funzionalità | Criticità | Workaround | +|--------------|-----------|------------| +| **Publish automatizzato social** | Media | Publish manuale o script separato | +| **Publish automatizzato YouTube** | Media | Upload manuale via browser | +| **Scheduling programmato** | Bassa | Calendar esterno + reminder | +| **Publish log automatico** | Bassa | Log manuale in `publish_log.md` | +| **Idempotency key** | Bassa | Non necessaria per publish manuali | +| **Retry logic** | Bassa | Gestita manualmente | + +### Cosa NON Si Perde + +| Funzionalità | Stato | +|--------------|-------| +| **Gate di approvazione** | ✅ Gestiti da frontmatter (`APPROVED: YES`) | +| **QA obbligatorio** | ✅ Checklist in `qa_visual.md` | +| **Tracciabilità** | ✅ `PUBLISH_APPROVED.md` + decision log | +| **Audit trail** | ✅ Log manuale in `publish_log.md` | + +--- + +## 🛠️ Modifiche Richieste + +### File da Aggiornare (7 file) + +1. **`README.md`** + - Rimuovere riga dalla tabella skills (13 → 12 skills) + - Aggiornare workflow end-to-end (step 10 eliminato) + - Rimuovere cartella da struttura + - Semplificare sezione Publishing Gates + +2. **`agency-orchestrator/SKILL.md`** + - Rimuovere `agency-publisher` da lista agenti + - Modificare Fase 4: da "Triggera agency-publisher" a "Aggiorna publish log manualmente" + - Rimuovere riferimento dai references + +3. **`agency-shared-references/SKILL.md`** + - Rimuovere menzioni di agency-publisher + +4. **`agency-shared-references/references/qa_visual.md`** + - Cambiare "Usato da: agency-visual-generator, agency-publisher" → "Usato da: agency-visual-generator" + +5. **`agency-shared-references/references/resource_types.md`** + - Rimuovere `agency-publisher` da "Skill che usano" (2 occorrenze) + +6. **`agency-publisher/`** (cartella) + - Eliminare intera cartella + +--- + +## 📊 Benefici della Rimozione + +| Beneficio | Impatto | +|-----------|---------| +| **Semplificazione** | Suite più lean (12 skills invece di 13) | +| **Usabilità** | Nessuna dipendenza da webhook/integrazioni | +| **Flessibilità** | Publish gestito manualmente o con custom script | +| **Manutenzione** | Meno codice da mantenere e aggiornare | +| **Onboarding** | Curva apprendimento ridotta per nuovi utenti | + +--- + +## ⚠️ Rischi e Mitigazione + +| Rischio | Probabilità | Mitigazione | +|---------|-------------|-------------| +| Utenti vogliono automazione | Media | Documentare come creare script custom | +| Publish manuale è lento | Bassa | Template `publish_log.md` semplifica | +| Perdita audit trail | Bassa | Log manuale è sufficiente per audit | +| Confusione su chi pubblica | Bassa | Documentare responsabilità nel workflow | + +--- + +## 📝 Alternative Post-Rimozione + +### Opzione A: Publish Manuale (Consigliata) + +```markdown +## Workflow Publish Manuale + +1. Content approvato (`APPROVED: YES` nel frontmatter) +2. QA compilato e passato +3. Crea `PUBLISH_APPROVED.md` con `YES` +4. Pubblica manualmente (LinkedIn, Instagram, YouTube) +5. Aggiorna `{project}/ops/publish_log.md`: + ```markdown + | Data | Platform | Content ID | Status | URL | + |------|----------|------------|--------|-----| + | 2026-03-11 | LinkedIn | post_001 | Published | https://... | + ``` +``` + +### Opzione B: Script Custom (Per Utenti Avanzati) + +```markdown +## Script Publish Custom + +Utenti possono creare script propri: +- `scripts/publish_linkedin.py` +- `scripts/publish_youtube.sh` + +Documentare in README che integrazioni sono responsabilità dell'utente. +``` + +### Opzione C: Integrazione Futura (Opzionale) + +```markdown +## Re-integrazione (Se Richiesta) + +Se utenti chiedono automazione: +1. Creare skill separata `agency-publisher-pro` (opzionale) +2. Richiedere configurazione esplicita (API key, webhook) +3. Documentare come "advanced feature" +``` + +--- + +## 🎯 Conclusione + +**Raccomandazione:** ✅ **PROCEDERE CON RIMOZIONE** + +**Motivi:** +1. Skill inutilizzabile senza integrazioni complesse +2. Gate di approvazione già gestiti da frontmatter +3. Publish manuale è sufficiente per MVP +4. Suite più semplice e accessibile + +**Next Steps:** +1. Eliminare cartella `agency-publisher/` +2. Aggiornare 6 file (vedi sopra) +3. Commit e push +4. Aggiornare documentazione se necessario + +--- + +_Report generato da AgentePotente 💪_ diff --git a/README.md b/README.md index f976e99..a71237e 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Suite completa di AgentSkills per agenzie digitali e content producer — un sis ## Panoramica -- **Skills:** 15 (14 specialistiche + 1 shared references) +- **Skills:** 14 (13 specialistiche + 1 shared references) - **References:** 22 (tutte centralizzate in agency-shared-references) - **Lingua:** Italiano/English - **Dominio:** Digital Agency / Content Production / Multi-Agent System @@ -17,7 +17,7 @@ Posiziona l'intera cartella `agency-skills-suite` nella directory delle skills d - **Chiedi all'agente:** Fornisci l'archivio completo e chiedi l'installazione nella cartella skills del tuo software agentico - **Copia diretta:** Trasferisci manualmente la cartella `agency-skills-suite` nella directory delle skills -**Verifica:** Assicurati che tutte le 15 cartelle siano presenti e che `agency-shared-references/references/` contenga i 22 file reference. +**Verifica:** Assicurati che tutte le 14 cartelle siano presenti e che `agency-shared-references/references/` contenga i 22 file reference. ## Skills Incluse @@ -35,9 +35,8 @@ Posiziona l'intera cartella `agency-skills-suite` nella directory delle skills d | 10 | **agency-visual-generator** | Asset visuali (card, carousel, thumbnail) | Media | | 11 | **agency-web-developer** | Siti web statici (HTML/CSS/JS) | Media | | 12 | **agency-analytics** | Report KPI settimanali, actions | Bassa | -| 13 | **agency-publisher** | Publish gate-based (social/YouTube) | Bassa | -| 14 | **agency-archivist** | Gestione risorse (immagini, video, documenti) | Media | -| 15 | **agency-shared-references** | References condivise (tutte le skills) | — | +| 13 | **agency-archivist** | Gestione risorse (immagini, video, documenti) | Media | +| 14 | **agency-shared-references** | References condivise (tutte le skills) | — | ## References Incluse (in agency-shared-references) @@ -78,6 +77,8 @@ Tutte le references sono centralizzate in un'unica cartella condivisa: ### Resources & Assets 22. `resource_types.md` — Tipologie risorse e use case (immagini, video, documenti) +**Totale:** 22 references + ## Workflow Disponibili La suite supporta 5 workflow principali, attivabili tramite `agency-orchestrator`: @@ -101,7 +102,7 @@ La suite supporta 5 workflow principali, attivabili tramite `agency-orchestrator 7. **Sito Web:** `agency-ux-copy` → sitemap, copy → `agency-web-developer` → sito HTML/CSS/JS (usa immagini da archivist) → `agency-seo` → metadata 8. **Content:** `agency-social` + `agency-youtube` → calendar, script 9. **Visual:** `agency-visual-generator` → asset (usa risorse da archivist) -10. **Publish:** `agency-publisher` → publish (post-approvazione) +10. **Publish:** Manuale o script custom (vedi sezione "Publishing Gates") 11. **Analytics:** `agency-analytics` → report settimanali ## Struttura @@ -148,12 +149,13 @@ agency-skills-suite/ │ └── SKILL.md ├── agency-analytics/ │ └── SKILL.md -├── agency-publisher/ -│ └── SKILL.md └── agency-archivist/ └── SKILL.md ``` +**Skills totali:** 14 (13 specialistiche + 1 shared references) +``` + **Nota:** - Nessun symlink necessario. Ogni SKILL.md contiene percorsi diretti verso `../agency-shared-references/references/`. - Struttura cartelle: le skills usano `{project}/` come path di lavoro (es. `demo_co_srl/`, `campagna_x/`, o qualsiasi cartella progetto). @@ -170,19 +172,26 @@ Invocare agency-orchestrator per iniziare un workflow ## Publishing Gates -**Importante:** Le skills `agency-publisher` e tutte le skills che producono content pubblicabile seguono gate rigorosi: +**Importante:** Il publish è gestito manualmente o con script custom. Tutte le skills che producono content pubblicabile seguono gate rigorosi: - Mai publish senza `APPROVED: YES` nel frontmatter - Mai publish senza `PUBLISH_APPROVED.md` = YES - QA obbligatorio prima di publish -L'approvazione è gestita direttamente nelle skills tramite verifica del frontmatter e file `PUBLISH_APPROVED.md`. +**Workflow manuale:** +1. Content approvato (`APPROVED: YES` nel frontmatter) +2. QA compilato e passato +3. Crea `PUBLISH_APPROVED.md` con `YES` +4. Pubblica manualmente (LinkedIn, Instagram, YouTube, etc.) +5. Aggiorna `{project}/ops/publish_log.md` con URL e data + +**Nota:** Non è inclusa una skill di publish automatizzato per evitare dipendenze da webhook/API esterne. Utenti avanzati possono creare script custom se necessario. ## Note - **Lingua:** Skills in inglese, alcune references bilingue (IT/EN) - **Dominio:** Agency digitali, content production, multi-agent coordination -- **Complexity:** MEDIUM-HIGH (15 skills, 23 references, workflow coordinati) +- **Complexity:** MEDIUM-HIGH (14 skills, 22 references, workflow coordinati) - **Architecture:** References centralizzate in agency-shared-references, percorsi diretti da tutte le skills - **Project Structure:** `{project}/` come cartella di lavoro (agnostico, compatibile con qualsiasi sistema) diff --git a/agency-orchestrator/SKILL.md b/agency-orchestrator/SKILL.md index 13ca073..2985535 100644 --- a/agency-orchestrator/SKILL.md +++ b/agency-orchestrator/SKILL.md @@ -224,7 +224,6 @@ L'orchestratore deve leggere il documento ed estrarre tutte le informazioni rile - `agency-archivist` → upload, estrazione, catalogazione risorse - `agency-visual-generator` → asset (usa risorse da archivist) - `agency-social` / `agency-youtube` → content -- `agency-publisher` → publish (post-approvazione) --- @@ -249,17 +248,28 @@ L'orchestratore deve leggere il documento ed estrarre tutte le informazioni rile ### Fase 4: Publish Gate -**Obiettivo:** Gestire approvazione pre-publish. +**Obiettivo:** Gestire approvazione pre-publish e publish manuale. **Azioni:** 1. Verifica che i file content abbiano `APPROVED: YES` nel frontmatter 2. Verifica che esista `PUBLISH_APPROVED.md` con valore `YES` 3. Verifica che QA sia compilato e passato -4. Triggera `agency-publisher` solo se tutti i gate sono superati +4. **Publish manuale:** Aggiorna `{project}/ops/publish_log.md` dopo publish +5. Aggiorna frontmatter dei content file con `status: published` e `published_at` **Regola:** Mai publish senza `APPROVED: YES` esplicito. +**Template publish_log.md:** + +```markdown +# Publish Log — {Client} + +| Data | Platform | Content ID | Status | URL | Note | +|------|----------|------------|--------|-----|------| +| 2026-03-11 | LinkedIn | post_001 | Published | https://... | Engagement buono | +``` + --- ## Gestione Risorse — Integrazione agency-archivist diff --git a/agency-publisher/SKILL.md b/agency-publisher/SKILL.md deleted file mode 100644 index f9d65c5..0000000 --- a/agency-publisher/SKILL.md +++ /dev/null @@ -1,223 +0,0 @@ ---- -name: agency-publisher -description: "Pubblicare o programmare post social e video YouTube tramite webhook, solo dopo approvazione. Usare quando: (1) content approvato ready per publish, (2) scheduling programmato, (3) aggiornare publish log. Output: Content pubblicato, publish log aggiornato, status file aggiornato." ---- - -# Agency Publisher — Publish Gate-Based - -Pubblica (o programma) content su social e YouTube solo dopo approvazione esplicita. - -## Quando Usare - -- **Social publish:** Post approvato ready -- **YouTube publish:** Video metadata approvati -- **Scheduling:** Programmare publish futuro -- **Publish log:** Aggiornare storico - ---- - -## Input - -| Input | Tipo | Validazione | -|-------|------|-------------| -| `project_path` | string | Percorso progetto (cartella di lavoro) | -| `content_files` | array | File content da pubblicare | -| `platform` | string | "social" / "youtube" | -| `publish_mode` | string | "immediate" / "scheduled" | -| `scheduled_for` | string | Data/ora (se scheduled) | - ---- - -## Processo - -### Fase 1: Verify Approval Gate - -**Obiettivo:** Verificare che content sia approvato. - -**Azioni:** - -1. Per ogni content file, verifica: - - Frontmatter contiene `status: approved` - - Frontmatter contiene `APPROVED: YES` - - `PUBLISH_APPROVED.md` del cliente contiene `YES` - -2. Se gate NON superato: - - **STOP:** Non procedere - - Notifica utente che approvazione manca - -3. Se gate superato: - - Procedi a Fase 2 - -**Checklist:** -- [ ] `status: approved` nel frontmatter -- [ ] `APPROVED: YES` presente -- [ ] `PUBLISH_APPROVED.md` = YES -- [ ] QA compilato e passato - ---- - -### Fase 2: Preparazione Payload - -**Obiettivo:** Creare payload per webhook. - -**Azioni:** - -1. Estrai dati dal content file: - - **Social:** Text, asset_path, platform, hashtags - - **YouTube:** Title, description, thumbnail_path, tags, scheduled_for - -2. Genera `idempotency_key`: - - Formula: `{project}_{platform}_{post_id}_{version}` - - Esempio: `demo_co_linkedin_post_001_v1` - -3. Compila payload: - -**Payload Social:** - -```json -{ - "client": "{client_name}", - "platform": "linkedin", - "text": "{post_copy}", - "asset_paths": ["{path_to_image}"], - "scheduled_for": "2026-03-10T09:00:00Z", - "idempotency_key": "demo_co_linkedin_post_001_v1", - "hashtags": ["#tag1", "#tag2"], - "metadata": { - "post_id": "post_001", - "pillar": "Education" - } -} -``` - -**Payload YouTube:** - -```json -{ - "client": "{client_name}", - "platform": "youtube", - "title": "{video_title}", - "description": "{video_description}", - "thumbnail_path": "{path_to_thumbnail}", - "tags": ["tag1", "tag2"], - "scheduled_for": "2026-03-10T14:00:00Z", - "idempotency_key": "demo_co_youtube_ep_001_v1", - "metadata": { - "episode": "001", - "duration": "8:45" - } -} -``` - ---- - -### Fase 3: Webhook Call - -**Obiettivo:** Inviare payload a webhook di publish. - -**Azioni:** - -1. Identifica webhook endpoint (configurato in `core/skills/publish_webhook.md` o variabile ambiente) - -2. Invia POST request con: - - Headers: `Content-Type: application/json` - - Body: Payload JSON - -3. Gestisci risposta: - - **Success (2xx):** Estrai `remote_id` e `post_url` - - **Error (4xx/5xx):** Logga errore, non aggiornare status - -4. Implementa retry logic (opzionale): - - Max 3 retry - - Backoff: 30s, 60s, 120s - ---- - -### Fase 4: Update Content File - -**Obiettivo:** Aggiornare file con status publish. - -**Azioni:** - -1. Aggiungi/aggiorna frontmatter: - ```yaml - status: published # o "scheduled" - published_at: 2026-03-09T10:30:00Z - post_url: https://linkedin.com/post/xyz123 - remote_id: xyz123 - ``` - -2. Se scheduled: - ```yaml - status: scheduled - scheduled_for: 2026-03-10T09:00:00Z - ``` - ---- - -### Fase 5: Update Publish Log - -**Obiettivo:** Tracciare publish in log centrale. - -**Azioni:** - -1. Apri/crea `{project}/ops/publish_log.md` - -2. Aggiungi entry: - -**Template:** - -```markdown -# Publish Log — {Client} - -| Data | Platform | Content ID | Status | URL | Note | -|------|----------|------------|--------|-----|------| -| 2026-03-09 | LinkedIn | post_001 | Published | https://... | Engagement buono | -| 2026-03-09 | YouTube | ep_001 | Scheduled | - | Publish: 2026-03-10 14:00 | -``` - -3. Per YouTube, aggiorna anche `{project}/youtube/published_log.md` -4. Per Social, aggiorna `{project}/social/published_log.md` - ---- - -## Output - -| File | Formato | Descrizione | -|------|---------|-------------| -| `{project}/ops/publish_log.md` | Markdown | Log centrale publish | -| `{project}/social/published_log.md` | Markdown | Log social (opzionale) | -| `{project}/youtube/published_log.md` | Markdown | Log YouTube (opzionale) | -| Content files aggiornati | Markdown | `status: published/scheduled` | - ---- - -## References - -- [quality_bar.md](../agency-shared-references/references/quality_bar.md) — Standard qualità - ---- - -## Note - -**Edge Cases:** - -- **Webhook fallisce:** Logga errore, riprova (max 3 volte), notifica utente -- **Doppio publish:** Idempotency_key previene duplicati -- **Scheduled in futuro:** Imposta status "scheduled", aggiorna log - -**Limitazioni:** - -- Richiede webhook integration configurata (n8n/Make/Zapier) -- YouTube video upload (file) out-of-scope senza integrazione specifica -- Alcuni platform hanno rate limits (rispettare) - -**Sicurezza:** - -- Mai pubblicare senza `APPROVED: YES` -- Idempotency_key previene publish accidentali multipli -- Logga tutto per audit trail - ---- - -_Skill generata da framework-translator_ diff --git a/agency-shared-references/SKILL.md b/agency-shared-references/SKILL.md index 84f5215..a0084da 100644 --- a/agency-shared-references/SKILL.md +++ b/agency-shared-references/SKILL.md @@ -5,7 +5,7 @@ description: "References condivise per la suite agency-skills. Contiene 24 docum # Agency Shared References -Repository centralizzato di 22 documenti di riferimento per tutte le skills della suite agency-skills. +Repository centralizzato di 22 documenti di riferimento per le 14 skills della suite agency-skills. ## Indice delle Referenze diff --git a/agency-shared-references/references/qa_visual.md b/agency-shared-references/references/qa_visual.md index 36271c7..f4af03e 100644 --- a/agency-shared-references/references/qa_visual.md +++ b/agency-shared-references/references/qa_visual.md @@ -1,7 +1,7 @@ # QA Visual Checklist _Framework: agency_v3_1 | Estratto: 2026-03-09_ -_Usato da: agency-visual-generator, agency-publisher_ +_Usato da: agency-visual-generator_ ## Sommario diff --git a/agency-shared-references/references/resource_types.md b/agency-shared-references/references/resource_types.md index e6458d3..f125752 100644 --- a/agency-shared-references/references/resource_types.md +++ b/agency-shared-references/references/resource_types.md @@ -15,7 +15,7 @@ Questo documento classifica le tipologie di risorse gestite da agency-archivist | **Icona/favicon** | PNG, ICO | 32x32px, 64x64px | Browser tab, app icon | | **Brand mark** | SVG, PNG | 256x256px | Social avatar, watermark | -**Skill che usano:** agency-design-system, agency-web-developer, agency-social, agency-publisher +**Skill che usano:** agency-design-system, agency-web-developer, agency-social --- @@ -131,7 +131,7 @@ Questo documento classifica le tipologie di risorse gestite da agency-archivist | **Termini e condizioni** | PDF, DOCX | E-commerce, servizi | | **Cookie policy** | PDF, DOCX | Sito web, banner cookie | -**Skill che usano:** agency-web-developer, agency-publisher +**Skill che usano:** agency-web-developer ---