Install
$ agentstack add skill-hugrowth98-superfounder-os-envoyer-sequence ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Outil
Lisez 05_Departements/Go-to-Market/OUTILS.md : canal_email: lemlist (API Lemlist, clé LEMLIST_API_KEY), canal_linkedin: unipile (scripts de ce skill, compte LinkedIn de l'utilisateur) ou lemlist (étapes LinkedIn dans la séquence Lemlist). Lisez 05_Departements/Go-to-Market/GARDE-FOUS.md avant tout envoi. Outil non branché : dites-le, renvoyez vers connecter-outils, n'envoyez rien par un autre moyen.
Email, par l'API Lemlist en CLI : scripts/envoyer_lemlist.py (filtre la liste, choisit ou crée la campagne, pousse les leads dédoublonnés avec leurs variables, démarre avec --lancer, met en pause avec --pauser, liste les campagnes avec --lister). La séquence elle-même (étapes, textes, expéditeurs, cadence) s'écrit dans Lemlist, avec les textes produits par cold-email ; l'API ne crée que la campagne et les leads. Le MCP Lemlist reste utilisable en plus (stats, aperçu d'email) s'il est branché. LinkedIn via Unipile : scripts/envoyer_linkedin.py (invitation puis message, POST /api/v1/users/invite et POST /api/v1/chats).
Entrée
Un CSV normalisé qualifié, dédoublonné contre le CRM, avec les messages écrits par cold-email dans des colonnes nommées (icebreaker, message_1, note_invitation, var_preuve...), email et email_statut pour l'email, linkedin_url ou provider_id pour LinkedIn, et exclu, ne_plus_contacter à jour (verifier-reponses).
Sortie
- Email :
Listes-prospection/envoyer-sequence___lemlist.csv(colonnes Lemlist :
email, firstName, lastName, companyName, jobTitle, linkedinUrl, phone, icebreaker, variables var_*), puis la campagne Lemlist avec ses leads, en pause tant que l'utilisateur n'a pas dit "lance".
- LinkedIn :
..._invitation.csvou..._message.csv, mêmes lignes avec
envoi_invitation_date, envoi_message_date, erreur_envoi, provider_id résolu, ne_plus_contacter posé sur ceux qui ont répondu entre-temps. Compteurs dans scripts/compteurs.json.
Procédure
- Vérifiez l'amont :
qualifier-listefait,dedoublonner --hubspot(ou--contre) fait,
emails vérifiés (couverture fiable au-dessus de 70 %), verifier-reponses passé sur les listes déjà contactées. Sinon, une étape manque : dites laquelle.
- Email. Dry-run d'abord :
python3 scripts/envoyer_lemlist.py --in --campagne "module GTM " --colonne-message icebreaker --dry-run Le script écarte exclus, ne_plus_contacter, emails vides, invalides, non vérifiés, catch-all (sauf --avec-catch-all), et affiche 3 leads avec leur message. Montrez-les, attendez le oui, relancez avec --confirmer : la campagne est créée si elle n'existe pas et les leads sont ajoutés (dédoublonnés par Lemlist). Vérifiez dans Lemlist que la séquence a ses étapes et ses expéditeurs, récapitulez (nombre de leads, expéditeur, première étape, cadence) et attendez un "oui, lance" explicite avant --lancer (ou python3 scripts/envoyer_lemlist.py --in --campagne-id --confirmer --lancer).
- LinkedIn (Unipile). Quota :
python3 scripts/envoyer_linkedin.py quota. Puis :
python3 scripts/envoyer_linkedin.py --in --etape invitation --colonne-message note_invitation --max 20 Le script affiche 3 messages et s'arrête. Montrez-les, attendez le oui, relancez avec --confirmer. Séquence par défaut : invitation, 2 jours, message 1, 3 jours, message 2, en re-passant verifier-reponses entre chaque étape (le script exclut aussi lui-même les conversations où le prospect a répondu). python3 scripts/envoyer_linkedin.py --in --etape message --colonne-message message_1 --max 30 --confirmer
- LinkedIn via Lemlist (
canal_linkedin: lemlist) : mêmes étapes que l'email, avec des étapes
LinkedIn dans la séquence ; les quotas sont ceux de Lemlist, alignés sur 05_Departements/Go-to-Market/GARDE-FOUS.md.
- Rendez : envoyés, écartés par raison, quota restant, lien vers le fichier de sortie et vers
la campagne, un seul next step : verifier-reponses dans 48 h.
Garde-fous
- Jamais d'envoi sans validation explicite sur un échantillon de 3 messages affichés. Le script
LinkedIn refuse sans --confirmer ; côté Lemlist, launch_campaign n'est appelé qu'après un "oui, lance" écrit.
- Invitations : 30 par jour, plafond dur dans le script (
LIMITE_INVITATIONS_JOURdu.envne
peut que baisser). Messages : 50 par jour par défaut, 100 au plus. Compteur local, bloquant, remis à zéro chaque jour.
- Jamais de message à quelqu'un qui a répondu : exclusion automatique via les chats Unipile,
et ne_plus_contacter respecté partout.
- Une ligne envoyée n'est jamais renvoyée (
envoi__date). Délai 45 s plus un aléa entre
deux envois, arrêt sur 429.
- Note d'invitation : 300 caractères au plus (LinkedIn en refuse au-delà, et 200 sur un compte
gratuit) ; pas d'envoi sur un email catch-all sans le dire ; pas de pièce jointe, pas de lien dans un premier message LinkedIn.
- Aucun message généré à la volée par ce skill : il envoie ce que
cold-emaila écrit et que
l'utilisateur a validé.
Erreurs fréquentes
| Symptôme | Cause | Fix | |---|---|---| | rien a envoyer (quota du jour epuise) | 30 invitations déjà parties | reprendre demain, ou passer aux messages | | 422 Unipile sur provider_id | valeur qui n'est pas un id Unipile (URL brute) | laisser le script résoudre depuis linkedin_url | | provider_id introuvable | profil privé ou slug faux | corriger linkedin_url, ou enrichir-personne | | Lemlist : leads importés mais campagne vide | mauvais mapping de colonnes | utiliser le CSV de preparer_import_lemlist.py, colonnes Lemlist natives | | Lemlist : validate_campaign_readiness en échec | expéditeur absent ou variable {{...}} non définie | set_campaign_senders, vérifier les variables du template | | 429 en cours de run | LinkedIn ou Unipile freine | le script s'arrête ; relancer plus tard, les lignes envoyées sont marquées |
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: hugrowth98
- Source: hugrowth98/superfounder-os
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.