Skill
Aggiungi tool allo stack
Aggiunge tool software, SaaS e web app al CH Tool Stack con ricerca web, controllo duplicati e insert in database.
File
skills/add-tool-to-stack.md
Prompt
name: add-tool-to-stack description: Aggiungi uno o piu tool software/SaaS/web app al CH Tool Stack. Normalizza URL, verifica duplicati/alias, ricerca web aggiornata, propone i dati all'utente, inserisce in DB con ch_status NULL e aggiorna Notion.
Skill: Aggiungere Tool al CH Tool Stack
Trigger
Usa questa skill quando l'utente chiede di aggiungere, continuare, importare o classificare tool software/SaaS/web app nel Tool Stack di CryptoHelvetia. È operativa: porta il batch fino a proposta, inserimento dopo conferma, aggiornamento Notion e verifica finale — non fermarti a metà.
Regole
- Conferma sempre prima di inserire, salvo conferma permanente o richiesta esplicita dell'utente di non chiedere ad ogni batch nel thread corrente. In quel caso procedi, ma segnala comunque in modo evidente duplicati, scarti e rischi.
ch_statussempreNULLin inserimento; lo imposta l'utente dopo dalla UI.- URL ufficiale di prodotto/azienda, mai endpoint tecnici, landing temporanee, link regionali o URL di feature. Un link tecnico che è solo una funzionalità di un prodotto esistente (es. endpoint MCP di HubSpot/Intercom) è un alias, non un nuovo record: usa il prodotto ufficiale.
- Nome = display name per la UI, iniziale maiuscola o numero anche se il brand è tutto minuscolo (
bunny.net→Bunny.net,iubenda→Iubenda). Mantieni maiuscole interne riconoscibili (insMind,n8n.io,v0.dev) solo se il primo carattere è già non minuscolo o numerico. - Mai doppioni: in caso di dubbio fermati e proponi merge/alias/deprecazione invece di inserire.
- Storage attuale: Supabase. Non introdurre nuovo accoppiamento; se in futuro si userà Convex per questi dati, adatta solo lo step DB, lasciando invariati normalizzazione, proposta e verifica.
Schema DB
Tabella tools:
| Campo | Tipo | Note |
|---|---|---|
name | text | Nome canonico del tool |
url | text | URL canonico pulito |
description | text | Italiano, 180-250 caratteri |
founded_year | integer | Anno fondazione azienda/progetto |
ai | boolean | true se AI è core o dichiarata nel marketing |
blockchain | boolean | true se crypto/web3/blockchain è core |
hot | boolean | true se ha forte momentum recente |
ch_status | text/null | Sempre NULL in inserimento |
broad_media_category_ids | uuid[] | Selezione multipla |
broad_field_category_id | uuid | Una categoria |
narrow_product_category_id | uuid | Una categoria |
narrow_stage_category_id | uuid | Una categoria |
broad_field, narrow_product, narrow_stage sono solo label di proposta: non esistono come nomi colonna nel DB.
Processo
1. Batch e anteprima
Se il batch viene da una pagina Notion sorgente, leggila e prendi il prossimo blocco coerente (di norma 8-10 tool).
Mostra una breve anteprima e chiedi conferma prima di verifica+ricerca:
```txt Sto per analizzare questi tool:
- Nome - https://...
- Nome - https://...
Procedo con verifica duplicati e ricerca web? ```
Salta la richiesta solo se l'utente ha già dato il via libera per il thread corrente; in quel caso puoi arrivare fino all'inserimento senza fermarti, mantenendo comunque ben segnalati duplicati/scarti/rischi nella proposta.
2. URL canonico
Per ogni URL: rimuovi query string/fragment/trailing slash superfluo, forza https, valuta www vs root come alias dello stesso sito, segui i redirect principali, evita URL localizzati (/it/, /en/) salvo siano il prodotto principale. Se il link è una feature/endpoint di un prodotto esistente, trattalo come alias e usa il prodotto ufficiale (es. mcp.hubspot.com → HubSpot, mcp.intercom.com → Intercom).
3. Duplicati
Un solo controllo batch nel DB (carica almeno id,name,url), ma confronta più varianti: URL esatto, senza trailing slash, http/https, www/root domain, nome simile o già noto.
Se trovi un duplicato: non inserirlo, segnala l'ID esistente. Se il link nuovo è più corretto del vecchio, proponi update del record esistente. Se è un alias tecnico o non voluto, rimuovilo dalla sorgente Notion dopo conferma. Se esiste già un doppione creato per errore, deprecalo/eliminalo solo dopo aver verificato che il record canonico esiste.
4. Ricerca web e scarti
Per ogni tool non duplicato, ricerca aggiornata (usa l'anno corrente e il precedente nelle query), in ordine di priorità: sito ufficiale/docs/changelog → Crunchbase/PitchBook/news funding → GitHub/ProductHunt/HN/Reddit/X → stampa tech (TechCrunch, The Verge, blog ufficiali). Se un dominio risponde in modo ambiguo, verifica anche via richiesta HTTP — un 401/403 può essere normale per endpoint autenticati, ma non basta a capire se sia URL canonico o solo tecnico.
Scarta se: dominio offline/parked/404 stabile/malware, prodotto dismesso o azienda chiusa, progetto personale senza pagina funzionante, o non pertinente allo stack. Non scartare solo per assenza di news recenti se è una libreria stabile, un framework maturo, uno standard tecnico, una utility evergreen o un prodotto corporate senza changelog pubblico.
Motiva ogni scarto nella proposta. Dopo conferma, rimuovilo anche dalla sorgente Notion (annotandolo in "Scartati - deprecati" se utile).
5. Campi
Compila: name, url, description, founded_year, ai, blockchain, hot, broad_media, broad_field, narrow_product, narrow_stage.
ai=true: AI/ML è core, o dichiarata nel marketing/nelle feature del prodotto.blockchain=true: crypto/web3/DeFi/NFT è core o infrastruttura essenziale del prodotto.hot=true: giudizio evidence-based su segnali pubblici degli ultimi 12 mesi, non sensazione. Richiede almeno 2 segnali positivi concreti, oppure 1 molto forte (es. round Series B/C recente, ARR pubblico in crescita, traction forte al lancio). Con segnali misti, spiega il tradeoff nella proposta. Popolarità, uso di AI o appartenenza a una categoria di moda da soli non bastano.
| Segnali positivi | Segnali negativi / da ridimensionare |
|---|---|
| Funding, ARR/revenue, valuation o acquisizione recenti | Lamentele utenti ricorrenti, bug/regressioni recenti |
| Lancio/rebrand/major release con forte copertura | Molte recensioni SEO/affiliate, poco uso organico |
| Product Hunt/community launch con numeri solidi | GitHub con molte star storiche ma bassa attività recente |
| GitHub in crescita: star velocity, contributor, release frequenti | Prodotto maturo/stabile senza nuovo momentum |
| Discussioni organiche HN/Reddit con engagement reale | Directory/marketplace evergreen senza eventi recenti |
| Adozione visibile da team/piattaforme rilevanti | Categoria di moda (AI/agents/MCP) senza segnali propri |
narrow_stage:Indie Maker(personale/micro-team) ·Open Collective(open source/community-driven) ·Early Startup(pre-seed/seed, <~5M) ·Growth Startup(Series A/B, ~5-50M) ·High-Growth Startup(Series C/D, ~50-200M) ·Unicorn / Late Stage(valuation >1B o late stage) ·Corporate / Public Company(quotata o grande corporate) ·Calm Company(bootstrapped/profittevole, non VC-backed). Se il funding non è pubblico, usa il miglior stage inferibile e segnala l'incertezza nella proposta — non bloccare il batch per questo.
6. Descrizione
180-250 caratteri, italiano chiaro. Non iniziare col nome del tool, niente marketing vuoto: cosa fa, per chi, cosa lo distingue (limiti solo se utili).
``txt Editor video AI che permette di modificare clip editando il testo della trascrizione. Genera B-roll, sottotitoli e correzioni visive da prompt, utile per creator e team marketing. ``
7. Proposta e conferma
Tabella sintetica dei nuovi inserimenti + sezione separata per duplicati/scarti (con ID esistente o motivo) + fonti principali usate. Chiedi conferma esplicita, salvo conferma permanente già data nel thread:
``txt Confermi questi dati e la rimozione dalla coda dei duplicati/scarti indicati? Procedo con l'inserimento? ``
8. Inserimento DB
Insert in batch su Supabase con select di ritorno per avere gli ID (id,name,url), ch_status: null, nomi colonna reali. Se l'insert fallisce per duplicato, verifica il record esistente e correggi la proposta invece di forzare.
``js { name: "Nome", url: "https://example.com", description: "Descrizione...", founded_year: 2026, ai: true, blockchain: false, hot: true, ch_status: null, broad_media_category_ids: ["uuid-media"], broad_field_category_id: "uuid-field", narrow_product_category_id: "uuid-product", narrow_stage_category_id: "uuid-stage" } ``
Per correggere un doppione già creato per errore: aggiorna il record canonico se serve, elimina/depreca quello errato solo se sei certo che non sia l'unico record valido, poi verifica con una query finale.
9. Notion
Pagine: parent storico 2f032d3c-262f-801887c4febe7bd4a851, sorgente 21b32d3c-262f-8089-817d-cb71364baddc, titolo giornaliero Aggiunte al Tool Stack il [data odierna].
- Trova o crea la pagina giornaliera sotto il parent storico; aggiungici solo i tool realmente inseriti o corretti come canonici in questa run.
- Scarti/deprecati → sotto-pagina "Scartati - deprecati" con URL e motivo.
- Rimuovi dalla pagina sorgente tutti i link gestiti (inseriti, duplicati confermati, alias tecnici, scarti). Se il batch non viene da una pagina sorgente ma da URL passati direttamente in chat, salta solo questo sotto-step: il resto (pagina giornaliera) va comunque fatto.
- Se un replace sul markdown fallisce, rifai il fetch della pagina e riprova con lo snippet aggiornato.
Prima di scrivere "Notion non disponibile", prova davvero a chiamare un tool Notion: lo stato di autenticazione mostrato a inizio contesto può essere stantio (connettore ancora in fase di connessione).
10. Audit finale
Prima di chiudere, verifica sempre: query DB sui record inseriti/duplicati/alias, fetch della pagina Notion giornaliera e della sorgente. Se la richiesta tocca anche UI/codice, rg per URL sbagliati; se il progetto ha Convex, controlla anche lì.
Nel riepilogo finale indica: ID inseriti, duplicati rimossi dalla coda, scarti/deprecati, problemi trovati e come sono stati risolti, eventuali limiti residui (es. "nessuna pagina sorgente da ripulire, batch passato direttamente in chat").
Riferimento Categorie con UUID
broad_media (7) - selezione multipla
| Label | UUID |
|---|---|
| Audio | f14661f6-492e-46a6-80b5-e4f27e6c7a71 |
| Code | ee98e3ed-b88b-4e59-9760-317b44fc1492 |
| Data | b115d194-f55a-48d1-a391-42c6f4a8191b |
| Hardware | cfa35968-b18d-4e8c-8529-270e594acb20 |
| Image | 16287de7-8b6e-4227-b0ca-272a093e8d90 |
| Text | 5f9a204e-a6cc-49e7-ac08-5e3849ea137a |
| Video | c8d2f652-bef4-4ad5-87fd-81d968554df6 |
broad_field (10)
| Label | UUID |
|---|---|
| Artificial Intelligence & Data | ececc940-6099-4c39-83fa-7b0d20c50321 |
| Blockchain & Finance | db1340be-1f6b-4ee1-9dd2-ef443b862f28 |
| Commerce & Marketplaces | b4a7c9d5-c883-4513-92af-f11eeb8d26fe |
| Creativity & Design | 5f1f0c50-625b-4f7e-a495-b1abdd4cfe49 |
| Development & Infrastructure | 074c0cc9-8724-4849-8912-ddeeccba7d09 |
| Education & Knowledge | 11d61266-b071-4a98-a5ee-48b8aa1fcf7e |
| Health & Sustainability | 302f7f20-ae7a-4ede-bb31-ce8d3d370a1c |
| Marketing & Growth | e2009646-22dc-41b0-8887-098240ca519f |
| Productivity & Collaboration | d0cd578b-d2cc-483d-8f1d-2d48592bc3cf |
| Social & Media | 2960132c-f964-4e9b-9f31-e34ea1012861 |
narrow_product (33)
| Label | UUID |
|---|---|
| AI Benchmarks | 3e8fb168-3682-4bd0-8b16-dd98a06acace |
| AI Companion | 5ca5a717-534f-4876-a5bf-09869bc29d60 |
| Applied AI | 19d6fda0-7e04-4679-aa94-07c4e46a789d |
| Asset Library | 99ab8132-c99b-4fa4-9c6e-d3b15b954744 |
| Automation & Agents | 0e7716ca-b4ce-4e5f-a0b7-251775faa929 |
| Backend & Infrastructure | 5aaf07e5-e130-4c51-be52-d7ce97be307f |
| Blogging & Newsletters | d8edc49b-9984-4257-93d9-a8cdc57dc26d |
| Creator Monetization | 918fa715-b93d-4ac7-9ca1-7fc7212a44cc |
| Cybersecurity | 378fe216-20c2-4b6a-832c-dfa955094d41 |
| Domain & Hosting | 3af66533-2444-43b1-b857-4a45e7913a20 |
| Ecosystem Catalog | 8d34e845-fb32-49dc-9ff1-51c56da21e77 |
| Entrepreneurship & Coaching | 701427bc-21e7-4bff-bc76-c463802a8e20 |
| Generative Media | b6b51cae-c5e7-48b9-af0d-113a605602d6 |
| Identity & Authentication | a18be907-9c49-4946-8056-780967a0f8f7 |
| Large Language Models | eae781a6-ba15-41fd-976d-fa16ac0c3217 |
| Learning Platforms | 7250ea3d-524e-46b4-b2cd-b228f55b8049 |
| Market Data & Analysis | 0f866498-4d45-4496-a011-29a10125192f |
| Marketing & AdTech | 1f72ac77-52cc-4477-9932-2e633e112d16 |
| Marketplaces (Non-Digital Goods) | 1eec05db-672c-412c-a862-595c113c9390 |
| ML Infrastructure | 337589b3-5351-46db-927d-12834403b984 |
| Package Registry | 5c90d5cb-9085-4374-9261-c0245db3a18b |
| Productivity Utilities | dcac3d1c-9e6f-4ecb-b1d7-d9a95b4fd282 |
| RAG Systems | 89d3236b-608e-46fa-acfb-627d1515371d |
| Recruiting & Jobs | 788dc89f-2525-40da-955c-04ff08da79ba |
| Sales Automation | 3f0a0564-004c-48b5-a9a8-d20274b5f054 |
| Sound Editing | fc97bd66-c985-4a89-affe-2b4c9782277f |
| Text Editor | 94ccbef3-84a7-494d-8d6f-dc317bdf2536 |
| UI/UX Design | 55cffe2b-b350-4cbf-b402-5307e8e9dd0b |
| Vibe Coding | 301d2154-2cf7-4807-93b8-1027cbda9fa7 |
| Video & Streaming | 887ddb4e-0ea7-4325-9b3e-16eb6c7ddf04 |
| Visual Editing | 2d3ab8c8-0015-459c-99e3-2ced4f31bf47 |
| Web Framework | a7a721b6-724b-4e2e-89b0-87e3899fc82e |
| Website Builder | 8ca20463-d7db-41ba-b5be-dcba26054113 |
narrow_stage (8)
| Label | UUID |
|---|---|
| Calm Company | cad84e9e-684c-4a98-af70-a16b8ec956d1 |
| Corporate / Public Company | be0eff40-8e2c-490a-9df6-3e795af91358 |
| Early Startup | 0afce66d-b067-445f-9cd6-8ccc80752cdc |
| Growth Startup | 76b3628f-ea0d-47ae-a064-a3c7f4b2c9ff |
| High-Growth Startup | 2ebd576d-157f-462e-9e16-6944e82adcad |
| Indie Maker | bca2dbae-06f9-4445-a947-0cdae724d5ec |
| Open Collective | 01424b4a-1ee7-42b4-a7b7-a2add3c1b58b |
| Unicorn / Late Stage | 16b1156e-fb0f-4488-9fa0-87ccf6bf6573 |