Aller au contenu
NouveauDécouvrir comment

Utiliser FirstSales avec Claude Code

Pilotez FirstSales depuis Claude Code via la CLI — installez, authentifiez-vous, inspectez avant de modifier et n'exposez jamais votre clé API dans la sortie de l'agent.

  1. Pourquoi le CLI pour Claude Code

    Claude Code a accès au shell, il devrait donc piloter FirstSales via le CLI, pas du HTTP brut. Le CLI centralise l'authentification, renvoie un JSON stable que l'agent peut parser, gère les en-têtes d'idempotence, et impose une confirmation sur les opérations destructrices : tout ce que vous devriez sinon demander à l'agent de faire correctement à chaque fois.

    Règle empirique tirée de la documentation : les agents devraient privilégier le CLI dès lors qu'un accès shell existe.

  2. Installez et exposez la clé

    Installez le CLI une fois, et donnez à Claude Code la clé via l'environnement afin qu'elle n'apparaisse jamais dans un prompt ou une transcription :

    npm install -g @firstsales.io/cli
    export FIRSTSALES_API_KEY="fs-key-..."   # set in your shell, not in the chat
  3. Donnez à l'agent ses règles de fonctionnement

    Collez un court contrat opérationnel dans Claude Code (ou un fichier de règles projet) afin qu'il se comporte de manière sûre :

    • Démarrer chaque session avec firstsales whoami --json ; confirmer l'org et le workspace avant d'agir.
    • Inspecter d'abord, muter délibérément, vérifier ensuite.
    • Utiliser --idempotency-key sur toute création susceptible d'être retentée.
    • N'utiliser --confirm que pour une suppression intentionnelle demandée par l'utilisateur.
    • Ne jamais afficher les clés API en clair.
  4. L'exploration en lecture seule est toujours sans risque

    Encouragez l'agent à explorer librement avec les commandes list/get : elles ne peuvent rien endommager :

    firstsales campaigns list --org ORG_ID --workspace WS_ID --json
    firstsales contacts list --org ORG_ID --workspace WS_ID --json
    firstsales billing overview --org ORG_ID --json
  5. Mutations : prévisualiser, agir, vérifier

    Pour tout ce qui écrit, demandez à Claude Code de suivre la boucle jusqu'au bout : --dry-run, puis l'appel réel avec une clé d'idempotence, puis une relecture :

    firstsales contacts create --org ORG_ID --workspace WS_ID \
      --data '{"email":"[email protected]","first_name":"Sam"}' --dry-run
    
    firstsales contacts create --org ORG_ID --workspace WS_ID \
      --data '{"email":"[email protected]","first_name":"Sam"}' \
      --idempotency-key sam-acme-2026-01
    
    firstsales contacts list --org ORG_ID --workspace WS_ID --json
  6. Approuvez ou rejetez les brouillons IA depuis le terminal

    Une boucle Claude Code utile : passer en revue les réponses IA en attente et agir dessus sans ouvrir l'app. Listez les threads, lisez-en un, puis approuvez ou rejetez le brouillon :

    firstsales inbox threads --org ORG_ID --workspace WS_ID
    firstsales inbox thread --org ORG_ID --workspace WS_ID --thread THREAD_ID
    firstsales inbox approve-draft --org ORG_ID --workspace WS_ID \
      --email EMAIL_ID --idempotency-key approve-EMAIL_ID
  7. Respectez la surface publique

    Indiquez à l'agent de rester sur les commandes publiques du CLI. Si une commande renvoie unsupported_operation, il doit s'arrêter et le signaler : sans tenter d'appeler des routes privées de l'app, des callbacks de fournisseur, des pixels de tracking, des gestionnaires de désabonnement ou des endpoints cron internes pour forcer le résultat.

Astuces de pro

  • Placez les règles de fonctionnement dans un fichier de règles projet

    Plutôt que de recoller le contrat de sécurité à chaque session, déposez-le dans votre fichier de règles projet Claude Code afin que chaque run démarre par whoami et la boucle inspecter-muter-vérifier.

  • La clé dans l'environnement, jamais dans le chat

    Exportez FIRSTSALES_API_KEY dans le shell où Claude Code s'exécute. Si la clé est dans un prompt, elle finit dans la transcription : le CLI la garde hors de la sortie, ne l'y remettez pas.

  • Laissez-le lire librement, verrouillez les écritures

    Les commandes list/get/analytics sont sûres à exécuter sans supervision. Réservez votre relecture à tout ce qui implique create/update/delete ou --confirm.

  • unsupported_operation signifie s'arrêter

    Entraînez l'agent à traiter unsupported_operation comme un mur, pas comme un puzzle. Le CLI public est toute la surface autorisée ; aucun contournement astucieux ne vaut le risque.

Questions fréquentes

Claude Code doit-il utiliser le CLI ou l'API ?

Le CLI. Comme Claude Code dispose d'un accès shell, le CLI est privilégié : il centralise l'authentification, produit un JSON stable, et impose l'idempotence et la confirmation des opérations destructrices afin que l'agent n'ait pas à les réimplémenter.

Comment garder ma clé API hors de la transcription ?

Exportez FIRSTSALES_API_KEY dans le shell avant de démarrer Claude Code, et demandez-lui de ne jamais afficher les clés en clair. Le CLI lit la variable d'environnement et ne l'affiche jamais dans la sortie.

Quel est le flux de travail sûr pour les modifications ?

Vérifiez l'identité avec whoami, confirmez l'org/workspace, inspectez l'état actuel, effectuez le changement minimal avec --dry-run puis --idempotency-key, n'utilisez --confirm que pour des suppressions voulues, et relisez pour valider.

Peut-il gérer la boîte de réception ?

Oui : inbox threads, inbox thread, et inbox approve-draft / reject-draft permettent à Claude Code de trier et d'agir sur les réponses écrites par l'IA depuis le terminal.

Que se passe-t-il si une commande n'est pas prise en charge ?

Si le CLI renvoie unsupported_operation, l'agent doit s'arrêter et le signaler. Il ne doit pas se rabattre sur des routes privées de l'app, des callbacks, des pixels ou des endpoints cron : ceux-ci sont hors limites et casseront.

Comment empêcher les suppressions accidentelles ?

Les commandes destructrices exigent --confirm. Tant que l'agent n'ajoute --confirm que pour des suppressions explicitement demandées par l'utilisateur, une suppression accidentelle ne peut pas se produire silencieusement.

Développeur & CLI

Une prospection qui continue quand vous vous déconnectez.Leads, emails, relances et réponses, gérés.

Connectez des boîtes illimitées et laissez les agents IA trouver les leads, écrire chaque email et relancer. Ou envoyez vos propres modèles en mode manuel. À partir de $29/mois.

$1 pour 3 jours · Annulez quand vous voulez · Sans engagement

Installer avec l'IA

Votre agent de code installe la CLI et les skills FirstSales pour vous.

Prompt pour Claude Code

I'm setting up FirstSales (https://firstsales.io), an AI outbound sales platform: campaigns, contacts, a reply inbox, deliverability and lead signals. Help me get my workspace sending real, good emails end to end, from Claude Code.

Read these first so you know how FirstSales works:
- Developer docs and API: https://developer.firstsales.io
- CLI: https://www.npmjs.com/package/@firstsales.io/cli
- Skills for coding agents: https://github.com/firstsalesio/firstsales-skills (read README.md and GUIDE.md)

Setup
1. Install the CLI: npm install -g @firstsales.io/cli
2. Install the FirstSales skills:
   claude plugin marketplace add firstsalesio/firstsales-skills
   claude plugin install firstsales@firstsales
3. Ask me if I already have a FirstSales account. If not, send me to https://app.firstsales.io to sign up.
4. Ask me to create an API key under Settings → API → API Keys, with only the scopes we need.
   Never ask me to paste the key into this chat. Tell me to run this in my own terminal, so the key stays hidden:
   read -rs FS_KEY && firstsales auth login --api-key "$FS_KEY"; unset FS_KEY
5. Run `firstsales whoami` and tell me which workspace and organisation we are connected to.

Then ask me about my business: what I sell, who I sell to (roles, company size, countries), my best customers, and what I use today for outbound (tools, lists, mailboxes). Walk me through:
1. Teaching FirstSales my business: website, offer, proof points and case studies in the knowledge base, so the AI writes like someone who knows the product.
2. Connecting my sending mailboxes and checking my sending domain: SPF, DKIM, DMARC and warm-up. If anything is unhealthy, tell me the exact DNS record to add.
3. Bringing in contacts: import my CSV or CRM export into a clean list, remove duplicates and bad emails, and block domains I must never email (customers, competitors, my own).
4. Building my first campaign: the right list, senders, steps and timing. Write the sequence with me, show me the drafts, and do not launch until I say yes.
5. Setting up Signals if it fits: find people engaging with LinkedIn posts about topics my buyers care about, and turn them into leads.
6. Inviting my team and giving each person the right access.

Once campaigns run, show me how to work the reply inbox from here: which replies need an answer, draft responses in my voice, and move good conversations into deals. If I use Cal.com, connect it so follow-ups can offer my booking link (not the first email).

Throughout, as you learn about my business, proactively suggest and help create:
- Reply templates for the questions and objections my prospects are likely to raise, based on my product, site and codebase if you can see them.
- Campaign ideas and segments worth testing, with the reason for each.

Safety rules:
- Show every change as a dry run (--dry-run) first and wait for my yes. Never send emails, launch campaigns or delete anything without my yes.
- Tell me before anything that spends credits, and how many.

Be opinionated. If the docs give a sensible default, just use it. Don't make me choose between five options.