Repo Social Poster (versione generica)
Skill generica e condivisibile che trasforma una repository GitHub (starred
dall'utente o indicata manualmente) in una bozza di post per social media.
A differenza di automazioni "cucite addosso" a un singolo utente, questa
skill NON assume un tono, uno stile o una piattaforma fissi: li chiede
sempre all'inizio del flusso attraverso una breve intervista, così può
essere riusata da persone diverse con esigenze diverse.
Principio guida
Non generare mai una bozza senza prima aver raccolto le 4 informazioni
chiave (repo, tono, eventi calendario, target/piattaforma) — a meno che
l'utente non le abbia già fornite in precedenza in questa conversazione.
Meglio chiedere una volta in più che generare un post con ipotesi sbagliate
su stile o pubblico.
Flusso di lavoro
1. Intervista iniziale (SEMPRE, se le info non sono già note)
Chiedi all'utente, idealmente con opzioni rapide (bottoni) invece di testo
libero dove possibile:
- Quali repository vuoi usare?
- Da una lista/gruppo di GitHub Stars (chiedi il nome della lista)
- Repo specifiche indicate direttamente dall'utente (chiedi
owner/repo)
- La repo più recente tra le stelle dell'utente non ancora pubblicata
- Che tono deve avere il testo? (vedi
reference/guida_toni.md per la descrizione estesa di ciascun tono)
- Amichevole e informale (consiglio a un amico)
- Professionale e formale (comunicazione aziendale/corporate)
- Tecnico e approfondito (per un pubblico già esperto)
- Entusiasta e "hype" (energico, esclamativo, orientato all'azione)
- Oppure un tono descritto liberamente dall'utente
- Vuoi anche creare un evento calendario per programmare la revisione
o la pubblicazione del post?
- Sì, crea un evento (chiedi data/ora, o proponi un default ragionevole
come "il prossimo giovedì alle 9:00")
- No, solo la bozza del testo
- Dove verrà pubblicato il post? (il target). Questo determina
lunghezza, formalità, hashtag ed eventuali menzioni al "link nel primo
commento":
- LinkedIn (pubblico professionale, tech e non solo)
- X / Twitter (community developer, formato più breve)
- Community developer (Reddit, Discord, forum: tono diretto, meno
hashtag, più dettagli tecnici)
- Generico / multi-piattaforma (nessun vincolo specifico di piattaforma)
Se una o più di queste informazioni sono già state specificate dall'utente
in questa conversazione (anche in un turno precedente), NON richiederle di
nuovo: usa direttamente quelle già fornite e chiedi solo le rimanenti.
2. Recupero dati dalla repo scelta
- Se l'utente ha scelto una lista di stelle: recupera i repo di quella
lista tramite l'API GraphQL di GitHub (
viewer.lists, filtrando per
nome), autenticandoti con GITHUB_TOKEN. La REST API non espone le
liste di stelle, solo la GraphQL API.
- Se l'utente ha indicato repo specifiche: recupera i dati con
GET /repos/{owner}/{repo} della REST API di GitHub.
- Se l'utente ha chiesto "la più recente non ancora pubblicata": recupera
GET /user/starred (ordinabile per data di stellatura) e scarta quelle
già presenti in posted_repos.json.
- Estrai per la repo scelta: nome completo, descrizione, linguaggio
principale, numero di stelle.
3. Generazione della bozza
Genera il testo del post combinando:
- I dati della repo (punto 2)
- Il tono scelto al punto 1.2 (vedi
reference/guida_toni.md per i
dettagli stilistici di ciascun tono)
- Il target/piattaforma scelto al punto 1.4 (vedi
reference/guida_toni.md, sezione "Adattamento per piattaforma", per
lunghezza, gestione del link e uso degli hashtag)
Non usare MAI una rubrica, un'apertura fissa o un elenco di hashtag
personali precostituiti: questi elementi vanno decisi in base alle
risposte dell'utente, non copiati da un esempio fisso di stile personale
(a differenza di skill "su misura" per un singolo utente, questa skill
generica non ha un esempio_stile.md legato a una persona specifica).
4. Output della bozza in chat per revisione
Mostra la bozza in chat. NON pubblicare né creare eventi calendario in
questa fase. Chiedi conferma esplicita prima di procedere.
5. Dopo l'approvazione esplicita dell'utente
- Se al punto 1.1 la piattaforma richiedeva pubblicazione via API (es.
LinkedIn con
LINKEDIN_ACCESS_TOKEN configurato), pubblica; altrimenti
salva la bozza approvata in drafts/YYYY-MM-DD-post.md.
- Se al punto 1.3 l'utente ha richiesto un evento calendario, crealo SOLO
ora (mai prima dell'approvazione), usando il connettore Google Calendar
se disponibile in questa conversazione (strumento
Google Calendar: create_event), altrimenti descrivi in chat i dettagli dell'evento che
l'utente dovrà aggiungere manualmente.
- Aggiorna
posted_repos.json con il nome della repo pubblicata.
Vincoli (da rispettare sempre)
- Fai SEMPRE l'intervista iniziale sui 4 punti prima di generare la
bozza, a meno che l'utente non abbia già fornito quelle informazioni in
questa conversazione.
- NON pubblicare mai su nessuna piattaforma né creare eventi calendario
senza l'approvazione esplicita dell'utente, data in chat dopo aver
visto la bozza.
- NON ripubblicare mai una repo già registrata in
posted_repos.json.
- Leggi eventuali token/credenziali (
GITHUB_TOKEN, LINKEDIN_ACCESS_TOKEN,
ecc.) SOLO da variabili d'ambiente, mai in chiaro nel codice o in chat.
- Non presumere mai un tono o una piattaforma di default: se non sono
stati specificati, vanno chiesti.
- Applica solo le modifiche esplicitamente richieste all'utente durante
l'uso della skill. Non aggiungere funzionalità né rifattorizzare oltre
a quanto chiesto.
File della skill
SKILL.md: questo file, il flusso di lavoro completo.
reference/guida_toni.md: descrizione dei 4 toni disponibili e di come
adattare lunghezza/hashtag/gestione del link in base alla piattaforma
target. Nessun esempio legato a una persona specifica: è pensato per
essere generico e riusabile.
scripts/repo_social_poster.py: script Python di supporto, parametrico
su repo/lista, tono e target, che genera la bozza tramite l'API di
Anthropic e gestisce lo stato (posted_repos.json, pending_draft.json).
posted_repos.json (creato al primo uso): repo già pubblicate.
pending_draft.json (creato durante l'uso): bozza in attesa di
approvazione.
drafts/YYYY-MM-DD-post.md: bozze approvate salvate quando la
pubblicazione via API non è configurata.
Come usare lo script incluso
# Bozza da una lista di stelle GitHub, tono professionale, target LinkedIn
python scripts/repo_social_poster.py --list frontend --tone professionale --target linkedin
# Bozza da una repo specifica, tono tecnico, target community developer
python scripts/repo_social_poster.py --repo owner/nome-repo --tone tecnico --target community
# Approvazione e pubblicazione/salvataggio della bozza in sospeso
python scripts/repo_social_poster.py --approve
I valori ammessi per --tone sono: amichevole, professionale,
tecnico, entusiasta (o testo libero se l'utente descrive un tono
personalizzato, passato tra virgolette). I valori ammessi per --target
sono: linkedin, twitter, community, generico.
Variabili d'ambiente
| Variabile |
Uso |
GITHUB_TOKEN |
Autenticazione API GitHub (REST + GraphQL) |
ANTHROPIC_API_KEY |
Generazione testo della bozza |
LINKEDIN_ACCESS_TOKEN |
Pubblicazione su LinkedIn (opzionale) |
LINKEDIN_AUTHOR_URN |
URN dell'autore richiesto dall'API LinkedIn |
Nota per chi condivide questa skill con altri utenti
Questa skill è pensata per essere generica: non contiene riferimenti a
liste di stelle, repo, stili o preferenze di una persona specifica. Chi
la riceve dovrà solo rispondere all'intervista iniziale (punto 1) con le
proprie preferenze la prima volta che la usa; da quel momento in poi, se
lo desidera, può indicare le sue preferenze abituali una volta sola nella
conversazione e la skill non tornerà a richiederle nello stesso contesto.
1---2name: repo-social-poster3description: Automazione condivisibile che trasforma repository GitHub (starred o indicate a mano) in una bozza di post social, PARTENDO SEMPRE da un'intervista su 4 punti, repo da usare, tono del testo, se creare eventi calendario, e target/piattaforma di pubblicazione, pubblica SOLO dopo approvazione esplicita. Generica e riusabile, non assume tono o piattaforma predefiniti, li chiede ogni volta salvo già specificati in conversazione. Usa questa skill quando l'utente chiede di 'creare un post social dai miei repo GitHub', 'fare un post su una repo starred', 'automatizzare i post sui progetti open source che seguo', 'postare regolarmente una repo interessante', o vuole una versione generica/condivisibile di questa automazione. Vale anche per richieste parziali, 'genera solo la bozza', 'crea l'evento calendario per il post', 'mostrami i repo disponibili'.4---56# Repo Social Poster (versione generica)78Skill generica e condivisibile che trasforma una repository GitHub (starred9dall'utente o indicata manualmente) in una bozza di post per social media.10A differenza di automazioni "cucite addosso" a un singolo utente, questa11skill NON assume un tono, uno stile o una piattaforma fissi: li chiede12sempre all'inizio del flusso attraverso una breve intervista, così può13essere riusata da persone diverse con esigenze diverse.1415## Principio guida1617Non generare mai una bozza senza prima aver raccolto le 4 informazioni18chiave (repo, tono, eventi calendario, target/piattaforma) — a meno che19l'utente non le abbia già fornite in precedenza in questa conversazione.20Meglio chiedere una volta in più che generare un post con ipotesi sbagliate21su stile o pubblico.2223## Flusso di lavoro2425### 1. Intervista iniziale (SEMPRE, se le info non sono già note)2627Chiedi all'utente, idealmente con opzioni rapide (bottoni) invece di testo28libero dove possibile:29301. **Quali repository vuoi usare?**31 - Da una lista/gruppo di GitHub Stars (chiedi il nome della lista)32 - Repo specifiche indicate direttamente dall'utente (chiedi33 `owner/repo`)34 - La repo più recente tra le stelle dell'utente non ancora pubblicata352. **Che tono deve avere il testo?** (vedi36 `reference/guida_toni.md` per la descrizione estesa di ciascun tono)37 - Amichevole e informale (consiglio a un amico)38 - Professionale e formale (comunicazione aziendale/corporate)39 - Tecnico e approfondito (per un pubblico già esperto)40 - Entusiasta e "hype" (energico, esclamativo, orientato all'azione)41 - Oppure un tono descritto liberamente dall'utente423. **Vuoi anche creare un evento calendario** per programmare la revisione43 o la pubblicazione del post?44 - Sì, crea un evento (chiedi data/ora, o proponi un default ragionevole45 come "il prossimo giovedì alle 9:00")46 - No, solo la bozza del testo474. **Dove verrà pubblicato il post?** (il target). Questo determina48 lunghezza, formalità, hashtag ed eventuali menzioni al "link nel primo49 commento":50 - LinkedIn (pubblico professionale, tech e non solo)51 - X / Twitter (community developer, formato più breve)52 - Community developer (Reddit, Discord, forum: tono diretto, meno53 hashtag, più dettagli tecnici)54 - Generico / multi-piattaforma (nessun vincolo specifico di piattaforma)55 Se una o più di queste informazioni sono già state specificate dall'utente56 in questa conversazione (anche in un turno precedente), NON richiederle di57 nuovo: usa direttamente quelle già fornite e chiedi solo le rimanenti.5859### 2. Recupero dati dalla repo scelta6061- Se l'utente ha scelto una lista di stelle: recupera i repo di quella62 lista tramite l'API GraphQL di GitHub (`viewer.lists`, filtrando per63 nome), autenticandoti con `GITHUB_TOKEN`. La REST API non espone le64 liste di stelle, solo la GraphQL API.65- Se l'utente ha indicato repo specifiche: recupera i dati con66 `GET /repos/{owner}/{repo}` della REST API di GitHub.67- Se l'utente ha chiesto "la più recente non ancora pubblicata": recupera68 `GET /user/starred` (ordinabile per data di stellatura) e scarta quelle69 già presenti in `posted_repos.json`.70- Estrai per la repo scelta: nome completo, descrizione, linguaggio71 principale, numero di stelle.7273### 3. Generazione della bozza7475Genera il testo del post combinando:7677- I dati della repo (punto 2)78- Il tono scelto al punto 1.2 (vedi `reference/guida_toni.md` per i79 dettagli stilistici di ciascun tono)80- Il target/piattaforma scelto al punto 1.4 (vedi81 `reference/guida_toni.md`, sezione "Adattamento per piattaforma", per82 lunghezza, gestione del link e uso degli hashtag)83 Non usare MAI una rubrica, un'apertura fissa o un elenco di hashtag84 personali precostituiti: questi elementi vanno decisi in base alle85 risposte dell'utente, non copiati da un esempio fisso di stile personale86 (a differenza di skill "su misura" per un singolo utente, questa skill87 generica non ha un `esempio_stile.md` legato a una persona specifica).8889### 4. Output della bozza in chat per revisione9091Mostra la bozza in chat. NON pubblicare né creare eventi calendario in92questa fase. Chiedi conferma esplicita prima di procedere.9394### 5. Dopo l'approvazione esplicita dell'utente9596- Se al punto 1.1 la piattaforma richiedeva pubblicazione via API (es.97 LinkedIn con `LINKEDIN_ACCESS_TOKEN` configurato), pubblica; altrimenti98 salva la bozza approvata in `drafts/YYYY-MM-DD-post.md`.99- Se al punto 1.3 l'utente ha richiesto un evento calendario, crealo SOLO100 ora (mai prima dell'approvazione), usando il connettore Google Calendar101 se disponibile in questa conversazione (strumento `Google Calendar:102create_event`), altrimenti descrivi in chat i dettagli dell'evento che103 l'utente dovrà aggiungere manualmente.104- Aggiorna `posted_repos.json` con il nome della repo pubblicata.105106## Vincoli (da rispettare sempre)107108- Fai SEMPRE l'intervista iniziale sui 4 punti prima di generare la109 bozza, a meno che l'utente non abbia già fornito quelle informazioni in110 questa conversazione.111- NON pubblicare mai su nessuna piattaforma né creare eventi calendario112 senza l'approvazione esplicita dell'utente, data in chat dopo aver113 visto la bozza.114- NON ripubblicare mai una repo già registrata in `posted_repos.json`.115- Leggi eventuali token/credenziali (`GITHUB_TOKEN`, `LINKEDIN_ACCESS_TOKEN`,116 ecc.) SOLO da variabili d'ambiente, mai in chiaro nel codice o in chat.117- Non presumere mai un tono o una piattaforma di default: se non sono118 stati specificati, vanno chiesti.119- Applica solo le modifiche esplicitamente richieste all'utente durante120 l'uso della skill. Non aggiungere funzionalità né rifattorizzare oltre121 a quanto chiesto.122123## File della skill124125- `SKILL.md`: questo file, il flusso di lavoro completo.126- `reference/guida_toni.md`: descrizione dei 4 toni disponibili e di come127 adattare lunghezza/hashtag/gestione del link in base alla piattaforma128 target. Nessun esempio legato a una persona specifica: è pensato per129 essere generico e riusabile.130- `scripts/repo_social_poster.py`: script Python di supporto, parametrico131 su repo/lista, tono e target, che genera la bozza tramite l'API di132 Anthropic e gestisce lo stato (`posted_repos.json`, `pending_draft.json`).133- `posted_repos.json` (creato al primo uso): repo già pubblicate.134- `pending_draft.json` (creato durante l'uso): bozza in attesa di135 approvazione.136- `drafts/YYYY-MM-DD-post.md`: bozze approvate salvate quando la137 pubblicazione via API non è configurata.138139## Come usare lo script incluso140141```bash142# Bozza da una lista di stelle GitHub, tono professionale, target LinkedIn143python scripts/repo_social_poster.py --list frontend --tone professionale --target linkedin144145# Bozza da una repo specifica, tono tecnico, target community developer146python scripts/repo_social_poster.py --repo owner/nome-repo --tone tecnico --target community147148# Approvazione e pubblicazione/salvataggio della bozza in sospeso149python scripts/repo_social_poster.py --approve150```151152I valori ammessi per `--tone` sono: `amichevole`, `professionale`,153`tecnico`, `entusiasta` (o testo libero se l'utente descrive un tono154personalizzato, passato tra virgolette). I valori ammessi per `--target`155sono: `linkedin`, `twitter`, `community`, `generico`.156157### Variabili d'ambiente158159| Variabile | Uso |160| ----------------------- | ------------------------------------------- |161| `GITHUB_TOKEN` | Autenticazione API GitHub (REST + GraphQL) |162| `ANTHROPIC_API_KEY` | Generazione testo della bozza |163| `LINKEDIN_ACCESS_TOKEN` | Pubblicazione su LinkedIn (opzionale) |164| `LINKEDIN_AUTHOR_URN` | URN dell'autore richiesto dall'API LinkedIn |165166## Nota per chi condivide questa skill con altri utenti167168Questa skill è pensata per essere generica: non contiene riferimenti a169liste di stelle, repo, stili o preferenze di una persona specifica. Chi170la riceve dovrà solo rispondere all'intervista iniziale (punto 1) con le171proprie preferenze la prima volta che la usa; da quel momento in poi, se172lo desidera, può indicare le sue preferenze abituali una volta sola nella173conversazione e la skill non tornerà a richiederle nello stesso contesto.