
Skillscript — un petit langage déclaratif pour créer des workflows d'agents. Runtime, compilateur et CLI.
Automatisation sécurisée et réutilisable, écrite par des agents.
TL;DR —
npm install -g skillscript-runtime && skillfile init && skillfile dashboard. Voir Démarrage rapide.
Skillscript est né de la question : à quoi ressemblerait un Makefile s'il construisait des compétences au lieu de binaires ? La réponse est un langage contraint, inspiré de Make, et un moteur d'exécution qui transforme le raisonnement d'un agent en une automatisation persistante et inspectable. L'agent écrit la compétence, vous approuvez ce qu'elle peut faire, et elle s'exécute de la même manière à chaque fois.
Il est conçu pour les équipes qui souhaitent que les agents créent et exécutent des workflows récurrents sans leur donner un accès illimité au shell, l'installation arbitraire de paquets, ou un contrôle direct des identifiants de production.
Un agent écrit une compétence. Un humain la révise et l'approuve. Le moteur d'exécution l'exécute via des connecteurs configurés, des listes d'autorisation et des politiques de sécurité.
npm install -g skillscript-runtime
skillfile init
skillfile dashboard
Connectez ensuite votre agent au MCP : http://localhost:7878/rpc et demandez-lui d'écrire une compétence.
Les agents réinventent généralement les tâches de routine à partir de zéro. Cela augmente le coût, la latence et la dérive comportementale.
Skillscript permet à un agent de cristalliser une procédure apprise en un artefact nommé et réutilisable qui peut être :
Skillscript est uniquement de l'orchestration. Le calcul reste à l'intérieur des outils et des connecteurs ; les compétences coordonnent ces capacités via une petite grammaire déclarative. Cela peut réduire significativement l'utilisation de tokens des modèles frontaliers dans les workflows récurrents : le coût de raisonnement est payé une fois lors de la création de la compétence, et chaque exécution ultérieure se fait de manière déterministe, les sous-tâches routinières étant confiées à des modèles locaux moins coûteux.
Python et Bash restent utiles pour le travail d'implémentation. Le risque est de permettre à des scripts écrits par des agents de s'exécuter sans surveillance avec un accès illimité à la machine hôte.
Skillscript réduit cette surface d'exécution :
eval ou d'échappement de sous-processusL'objectif n'est pas de remplacer les scripts. Il est de placer les scripts et les API derrière des capacités que l'opérateur expose explicitement.
Il y a aussi une raison de passage à l'échelle. Réviser du code arbitraire signifie auditer tout ce qu'il pourrait faire, ce qui nécessite un lecteur compétent. Un skillscript place toute sa surface d'effet sur la page, de sorte que l'approbation reste gérable même lorsque les agents écrivent plus vite que quiconque ne peut lire le code, et l'opérateur qui sait ce que ses systèmes doivent permettre peut approuver sur la base des effets déclarés plutôt qu'en relisant la logique.
Une compétence est un workflow déclaratif typé avec des variables, des opérations, des dépendances et un modèle de sortie.
# Compétence : hello
# Statut : Approuvée
# Description : Saluer quelqu'un par son nom.
# Vars : WHO=world
Bonjour, ${WHO} !
C'est une compétence complète et exécutable. Le corps est rendu comme sa sortie.
Les compétences peuvent également appeler des connecteurs, bifurquer, boucler, exécuter d'autres compétences, répondre à des événements et s'exécuter selon des horaires :
# Compétence : daily-disk-check
# Statut : Approuvée
# Déclencheurs : cron:"0 6 * * *"
# Autonome : true
Snapshot written for ${NOW}.
snapshot:
shell(command="df -h --output=source,pcent,target") -> USAGE
file_write(
path="/var/log/skillscript/disk-${EVENT.fired_at_unix}.txt",
content="${USAGE}"
)
default: snapshot
Le moteur d'exécution refusera la commande shell et l'écriture de fichier tant que l'opérateur n'aura pas autorisé le binaire et le chemin.
Brouillon, inerte jusqu'à ce que vous l'approuviez.Les compétences peuvent jouer trois rôles :
| Type | Objectif |
|---|---|
| Sans tête | S'exécute de manière autonome et envoie la sortie à un système ou un humain |
| Augmentant | Prépare le contexte pour un agent frontalier |
| Modèle | Donne à un agent une procédure réutilisable à suivre |
npm install -g skillscript-runtime
skillfile init
skillfile dashboard --host 127.0.0.1 --port 7878
Ouvrez http://localhost:7878.
Utilisez --host 0.0.0.0 uniquement lorsqu'un autre conteneur ou machine doit atteindre le moteur d'exécution, et protégez l'entrée exposée de manière appropriée.
{
"mcpServers": {
"skillscript": {
"type": "http",
"url": "http://localhost:7878/rpc"
}
}
}
Créez une compétence qui salue quelqu'un par son nom.
L'agent écrit la compétence via MCP. Approuvez-la dans le tableau de bord ou la CLI :
skillfile approve hello
skillfile execute hello
Les compétences accèdent aux systèmes externes via des connecteurs configurés plutôt qu'avec des identifiants directs. Les connecteurs peuvent exposer des outils MCP, des magasins de données, des modèles locaux, des canaux de livraison d'agents, ou des capacités personnalisées du moteur d'exécution.
Contrôles importants pour l'opérateur :
Les secrets sont résolus par le moteur d'exécution et transmis uniquement aux destinations approuvées. Les compétences ne peuvent pas imprimer ou inspecter leurs valeurs brutes.
Consultez le guide de configuration et la référence des connecteurs.
skillfile lint <skill>
skillfile compile <skill>
skillfile execute <skill>
skillfile approve <skill>
skillfile diagram <skill>
skillfile fires <skill>
skillfile replay <trace_id>
skillfile health
Exécutez skillfile <commande> --help pour les options.
Skillscript est en pré-1.0. Le langage central et les contrats des connecteurs se stabilisent ; le travail d'adoption externe et de distribution est en cours.
Les rapports de bugs et les demandes de fonctionnalités sont les bienvenus via Issues. Ouvrez une Issue avant de proposer des modifications de la grammaire afin que la conception puisse être discutée au préalable.
MIT. Voir LICENSE.
| Paramètre | Valeur par défaut |
|---|
SKILLSCRIPT_SHELL_ALLOWLIST | refuser tous les binaires |
SKILLSCRIPT_FS_ALLOWLIST | refuser tous les chemins |
SKILLSCRIPT_SECURED_MODE | désactivé |
SKILLSCRIPT_MAX_DEADLINE_SECONDS | non défini (pas de plafond) |
SKILLSCRIPT_SUPERVISOR_SKILL | non défini (désactivé) |
SKILLSCRIPT_SECRET_<NAME> | non défini |