airtable-progetti
Legge e (con conferma) scrive la base Airtable "Attività e Progetti" di Ettore via API REST.
❔ da accertare
⚪ mai vettata — nessuno l'ha ancora guardata; non vuol dire che sia a posto
C:\Users\Ettore\.openclaw\workspace\skills\airtable-progetti\SKILL.mdC:\Users\Ettore\.openclaw\workspace\skills\airtable-progettiname: airtable-progetti
description: Legge e (con conferma) scrive la base Airtable "Attività e Progetti" di Ettore via API REST.
metadata: { "openclaw": { "requires": { "env": ["AIRTABLE_TOKEN"] }, "primaryEnv": "AIRTABLE_TOKEN" } }Airtable — base "Attività e Progetti"
Questa skill mi permette di leggere e modificare la base di lavoro di Ettore su Airtable
tramite l'API REST ufficiale. Il token sta nella variabile d'ambiente AIRTABLE_TOKEN
(mai scriverlo nei messaggi né nei file).
Regola d'oro (come in AGENTS.md)
- Lettura: libera. Posso interrogare la base quando serve per farmi il contesto.
- Scrittura (create / update / delete): solo con conferma. Prima dico a Ettore cosa voglio scrivere, in quale tabella e perché, e aspetto l'OK. Poi eseguo.
Base e tabelle
Base ID: app5EU480jgD2WuJ9
| Tabella | ID | A cosa serve | Campi principali |
|---|---|---|---|
| Progetti | tblB0C3rF0F9XHrhK | Macro-progetti (livello alto) | Nome, Priorità, Stato, Obiettivo, Tipo progetto, Prompt; link → Attività, Sotto-Attività, VF · Idee & Script |
| Attività | tblBxG70UIBAldYWr | Attività/progetti operativi | Nome, Tipo progetto, Priorità, Stato, Obiettivo, Strumenti, Prossima azione, Note, Prompt; link → Sotto-Attività, Progetti |
| Sotto-Attività | tblHaXyyPn5twZPvG | Passi sotto un'Attività | Nome, Stato, Priorità, Ordine, Dettagli, Prompt, Prompt 2; link → Attività, Progetto |
| VF · Idee & Script | tblxLNW0ZcTE4QeNw | Banca idee/script Video Factory | Titolo, Canale, Tema, Angolo, Hook, Script, Durata, Fonte, Data fonte, Stato, Note; link → Progetto |
Note utili: i campi link (es. Attività, Progetti, Sotto-Attività) contengono ID di record
(rec...), non testo. Priorità/Stato/Tipo sono singleSelect: usare esattamente i valori già
esistenti nella base (in caso di dubbio, prima leggo i valori presenti).
La base cambia nel tempo — verifico la struttura dal vivo
La tabella qui sopra è una fotografia del 25/06/2026. Gli ID non cambiano se Ettore
rinomina tabelle o campi, quindi le chiamate restano valide. Ma se aggiunge o toglie tabelle/campi,
la mappa può diventare vecchia. Perciò: **se qualcosa non torna (errore 422, campo che non esiste,
nuova tabella), o prima di una scrittura importante, chiedo ad Airtable la struttura aggiornata**
invece di fidarmi solo della fotografia:
curl.exe -s "https://api.airtable.com/v0/meta/bases/app5EU480jgD2WuJ9/tables" `
-H "Authorization: Bearer $env:AIRTABLE_TOKEN"Questo restituisce tabelle e campi correnti (ID + nomi + tipi). Richiede che il token abbia lo
scope schema.bases:read. In pratica: la fotografia mi fa partire veloce, l'endpoint meta mi
tiene allineato quando la base evolve.
Come chiamo l'API (Windows / PowerShell)
- Endpoint base:
https://api.airtable.com/v0/app5EU480jgD2WuJ9/<TABLE_ID> - Uso gli ID tabella (sopra), così evito problemi con spazi/accenti nei nomi.
- Header di autenticazione:
Authorization: Bearer $env:AIRTABLE_TOKEN - Importante su Windows: uso
curl.exe(noncurl, che in PowerShell è un alias di Invoke-WebRequest). In alternativa va benissimoInvoke-RestMethod.
Leggere record (GET)
curl.exe -s "https://api.airtable.com/v0/app5EU480jgD2WuJ9/tblBxG70UIBAldYWr?pageSize=20" `
-H "Authorization: Bearer $env:AIRTABLE_TOKEN"Filtri: aggiungere filterByFormula URL-encoded, es. solo attività con Stato "In corso":?filterByFormula= + encode di {Stato}="In corso". Ordino consort[0][field]=Priorità&sort[0][direction]=asc.
Creare un record (POST) — solo dopo OK
curl.exe -s -X POST "https://api.airtable.com/v0/app5EU480jgD2WuJ9/tblBxG70UIBAldYWr" `
-H "Authorization: Bearer $env:AIRTABLE_TOKEN" -H "Content-Type: application/json" `
-d '{ "records": [ { "fields": { "Nome": "Esempio", "Stato": "Da iniziare" } } ] }'Aggiornare un record (PATCH) — solo dopo OK
curl.exe -s -X PATCH "https://api.airtable.com/v0/app5EU480jgD2WuJ9/tblBxG70UIBAldYWr" `
-H "Authorization: Bearer $env:AIRTABLE_TOKEN" -H "Content-Type: application/json" `
-d '{ "records": [ { "id": "recXXXXXXXXXXXXXX", "fields": { "Stato": "Completato" } } ] }'Cancellare (DELETE) — solo dopo OK esplicito
DELETE https://api.airtable.com/v0/app5EU480jgD2WuJ9/tblBxG70UIBAldYWr?records[]=recXXXX
Pattern d'uso tipico
- Ettore chiede qualcosa sui progetti/attività → leggo la tabella giusta e rispondo.
- Per scrivere → preparo il JSON, mostro cosa farei (tabella, campi, valori) e chiedo conferma.
- Dopo l'OK, eseguo la chiamata e confermo l'esito (con l'ID del record creato/aggiornato).
- Se un valore singleSelect non esiste ancora, lo segnalo invece di inventarlo.
Errori comuni
401 Unauthorized→ token assente/sbagliato: controllareAIRTABLE_TOKENe i suoi permessi.403→ il token non ha accesso a questa base o manca lo scope (serve read e/o write).422→ nome campo o valore singleSelect non valido.
Conteggio esatto dall'endpoint Anthropic count_tokens (gratuito, solo rate-limited), envelope del messaggio già sottratto. I caratteri sono un dato locale, servono da riscontro.
- SKILL.md5.0 kB
nessuna modifica fatta da qui: nessun backup
- 07e801a 2026-07-22chore: commit iniziale workspace Romeo
Scrittura consentita solo dentro le cartelle skills\ dei workspace del registro e solo sul file SKILL.md (deroga alla stanza Identità autorizzata da Ettore il 2026-08-10). Ogni salvataggio crea prima un backup datato; nessun file viene mai cancellato.