Communitygithub.com

AgentAlertsSkill

Compétence pour configurer des automatisations de type Live Activity, notification, widget et Control Widget sur iPhone via un webhook sécurisé.

Qu'est-ce que AgentAlertsSkill ?

Agent Alerts est une compétence conçue pour les agents IA comme Codex et Claude afin d'envoyer des mises à jour en temps réel vers un iPhone via des mécanismes natifs iOS : Live Activity (Dynamic Island / écran verrouillé), notifications, widgets et Control Widget. Elle repose sur un webhook sécurisé hébergé sur andreas.ink, qui nécessite un token unique à configurer dans le gestionnaire de secrets de l'environnement d'exécution (hosted ou local). La compétence guide l'utilisateur pas à pas : connexion sur la page publique, création du token, configuration du stockage sécurisé, validation du payload via un script shell (send_webhook.sh), et test non sensible avant mise en production. Elle impose des règles strictes : ne jamais exposer le token dans le chat, utiliser des clés d'idempotence, respecter des limites de caractères (14 pour source_name, 32 pour title, 96 pour summary), et s'assurer que le planificateur est durable si l'automatisation doit persister après la session. Le payload peut être compact (champs title, summary, status, activity_id, source_name, surfaces, idempotency_key) ou complet (snake_case avec payload imbriqué). La compétence ne réalise pas elle-même les envois ; elle délègue l'exécution au runtime via une instruction précise. Elle supporte les environnements Mac locaux et les runtimes hébergés.

Compatible avec✓Claude Code✓Codex CLI✓Cursor
npx skills add AndreasInk/AgentAlertsSkill

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Configuration d'Agent Alerts

Concevez l'automatisation, configurez le webhook hébergé et déléguez les envois à l'exécution via $agent-alerts-execution. N'envoyez rien pendant la configuration sauf si l'utilisateur demande un test de validation (smoke test).

Commencez ici

Ouvrez ou dirigez l'utilisateur vers :

https://www.andreas.ink/agent

Suivez le flux de connexion actuel de la page avec Agent Alerts sur l'iPhone. Cela crée un token de publication unique pour l'exécution. Ne demandez pas à l'utilisateur de coller ce token dans la conversation.

Configurer le webhook

  1. Nommez l'exécution et terminez le flux de connexion sur la page de configuration publique.
  2. Choisissez l'emplacement du token pour l'exécution :
    • Runtime hébergé : stockez le token unique dans le gestionnaire de secrets de ce runtime sous AGENTALERTS_AGENT_TOKEN.
    • Mac local : stockez exactement une ligne, AGENTALERTS_AGENT_TOKEN=<token>, dans le fichier ~/.config/agent-alerts/token.env approuvé par l'utilisateur et définissez son mode à 0600.
  3. Demandez à l'utilisateur de saisir le token directement dans le coffre de secrets choisi, en dehors de la conversation IA. Ne lui demandez jamais de le coller dans la conversation agent.
  4. Utilisez le point de terminaison intégré dans ../agent-alerts-execution/scripts/send_webhook.sh. Définissez AGENTALERTS_WEBHOOK_URL uniquement lorsque la page de configuration fournit un point de terminaison HTTPS différent.
  5. Autorisez les connexions HTTPS sortantes uniquement vers ce point de terminaison.
  6. Autorisez le chemin absolu exact vers send_webhook.sh pour les exécutions sans surveillance. N'accordez pas un accès shell large.

Ne placez jamais le token dans une invite, une URL, une chaîne de requête, un journal, un fichier source, un fichier de paramètres suivi, un historique de shell ou un argument de commande.

Préparer et valider un test

Copiez ../agent-alerts-execution/assets/compact-webhook-payload.json vers un fichier payload modifiable et remplacez ses valeurs d'exemple. Utilisez une clé d'idempotence stable et unique pour l'événement.

Validez le payload :

../agent-alerts-execution/scripts/send_webhook.sh --check payload.json

Validez le payload, la source du token, les permissions et le point de terminaison sans envoyer :

../agent-alerts-execution/scripts/send_webhook.sh --check-config payload.json

Ensuite, envoyez un seul test non sensible (smoke test) :

../agent-alerts-execution/scripts/send_webhook.sh payload.json

Pour une automatisation sans surveillance, répétez --check-config et l'envoi de test à partir du véritable runner enregistré. Les deux doivent se terminer sans invite d'approbation. Si le runner ne peut pas exécuter l'outil exact ou atteindre le point de terminaison, arrêtez avec AGENTALERTS_SCRIPT_NOT_AUTHORIZED.

Concevoir l'alerte

Définissez :

  1. Signal, source de données et déclencheur.
  2. Correspondances good, warning et critical.
  3. Conditions de saut, heures de silence et exclusions.
  4. Un activity_id stable ou un identifiant de notification.
  5. Surfaces : live_activity, widget et/ou notification.
  6. Texte de l'action et une URL cible sécurisée ou un lien profond d'application.
  7. Un planificateur durable lorsque l'alerte s'exécute plus tard ou de manière répétée.

Agent Alerts fournit les mises à jour ; il ne maintient pas une session agent active. Une exécution future ou récurrente est incomplète tant que le planificateur reste enregistré après la fermeture de la session en cours. Sinon, retournez AGENTALERTS_SCHEDULER_NOT_DURABLE.

Contrat du payload

Utilisez le corps de webhook compact pour les alertes ordinaires :

{
  "title": "Build terminé",
  "summary": "Tous les tests réussis.",
  "status": "good",
  "activity_id": "build-monitor",
  "source_name": "Codex",
  "surfaces": ["live_activity", "notification"],
  "idempotency_key": "build-monitor-2026-07-29T18-30-00Z"
}

Le webhook nécessite :

Authorization: Bearer <AGENTALERTS_AGENT_TOKEN>
Content-Type: application/json
Idempotency-Key: <même valeur que idempotency_key>

L'outil fournit ces en-têtes sans exposer le token dans les arguments du processus. Utilisez toujours l'outil ; ne recréez pas la requête manuellement.

Les envois compacts par défaut créent une activité upsertée nommée webhook, une livraison en production, et live_activity plus notification lorsque ces champs sont omis. Définissez-les explicitement lorsque l'automatisation nécessite un résultat différent.

Pour les widgets, l'état du Control Widget, les dispositions de builder ou d'autres champs avancés, utilisez le contrat complet du webhook en snake_case avec un objet payload imbriqué. Ne mélangez pas un objet payload complet avec les champs compacts title, summary, status, source_name ou deep_link.

Règles de copie et de livraison

Gardez le texte visible complet et dans ces limites :

ChampCaractères maximum
source_name14
title32
summary96

Ne comptez pas sur la troncature et n'ajoutez pas de points de suspension.

  • live_activity met à jour le Dynamic Island ou l'écran verrouillé.
  • widget nécessite son identifiant de widget, un petit instantané non secret et le rechargement activé.
  • notification nécessite un identifiant de fil stable pour le regroupement.
  • L'état du Control Widget doit être true pour les états actifs d'avertissement ou critiques et false pour les états clairs ou résolus.

Délégation à l'exécution

Écrivez une instruction d'exécution exacte :

Utilisez $agent-alerts-execution. Évaluez d'abord la condition de saut configurée.
Si un envoi est nécessaire, écrivez le JSON préparé d'Agent Alerts dans le chemin
approuvé du payload, puis invoquez le chemin autorisé absolu de send_webhook.sh
avec ce fichier. Lisez le token uniquement depuis AGENTALERTS_AGENT_TOKEN ou le
fichier token.env approuvé. Rapportez le statut retourné et les comptes de cible,
de succès et d'échec sans imprimer de secrets.

La configuration est complète uniquement lorsque le vrai runner valide la configuration et envoie sans interaction, le planificateur est durable si nécessaire, et le résultat est rapporté sans exagérer la livraison visible par l'appareil.

Skills associés