skill-workflow-runner
by hjamet
README.md
# 🚀 `mcp-skill-workflow-runner`
> **Serveur FastMCP Déterministe pour l'Exécution Progressive de Compétences (Skills) & Workflows Antigravity.**
---
## 📖 Sommaire
1. [Vision & Principes Fondamentaux](#-vision--principes-fondamentaux)
2. [Format Déclaratif YAML (Niveau 1)](#-format-déclaratif-yaml-niveau-1)
3. [Architecture du Moteur](#-architecture-du-moteur)
4. [Outils FastMCP Exposés](#-outils-fastmcp-exposés)
5. [Interface Ligne de Commande (CLI)](#-interface-ligne-de-commande-cli)
6. [Installation & Configuration Antigravity](#-installation--configuration-antigravity)
7. [Politique de Robustesse (Zéro Fallback Silencieux)](#-politique-de-robustesse)
---
## 🎯 Vision & Principes Fondamentaux
`mcp-skill-workflow-runner` applique le principe de **Divulgation Progressive Déterministe (*Deterministic Progressive Disclosure*)** pour les agents intelligents de l'écosystème Antigravity.
Au lieu d'injecter un prompt massif de 1000 lignes contenant toutes les étapes d'un workflow dans le contexte de l'agent :
1. L'agent ne reçoit à chaque instant **que l'enveloppe directive de l'étape active** (titre, instructions spécifiques, contraintes, outils mandatés, transitions possibles).
2. L'agent avance d'étape en étape via l'outil `next_step`.
3. Le moteur FastMCP évalue de façon déterministe les transitions, embranchements conditionnels (DAG) et boucles itératives.
4. L'état complet de la session est sauvegardé de manière atomique en mémoire et sur disque (`<session_id>.json`).
---
## 📜 Format Déclaratif YAML (Niveau 1)
Les workflows sont décrits directement dans le frontmatter YAML des fichiers `SKILL.md` ou `workflow.md` :
```yaml
---
name: work
description: Cycle de travail itératif en 5 étapes
workflow:
version: "1.0"
type: "loop" # "sequential" | "dag" | "loop"
initial_step: "step_1_exploration"
context_schema:
project:
type: "string"
required: true
description: "Nom du projet cible"
iteration:
type: "integer"
default: 1
steps:
- id: "step_1_exploration"
title: "💡 Étape 1 : Exploration & Questions"
section_matcher: "### 3.1"
step_type: "standard"
mandated_tools:
- "view_file"
- "recall"
constraints:
- "INTERDICTION ABSOLUE de poser une question sans recherche préalable"
next: "step_2_scouts"
- id: "step_2_scouts"
title: "🔭 Étape 2 : Déploiement des Scouts"
section_matcher: "### 3.2"
step_type: "subagent_barrier"
subagent_recommendation:
type: "research"
clustering_rule: "1 sous-agent par périmètre orthogonal distinct"
model: "flash"
next: "step_3_ask"
- id: "step_3_ask"
title: "🗣️ Étape 3 : Questionnement Décisionnel"
section_matcher: "### 3.3"
step_type: "interactive"
next: "step_4_action"
- id: "step_4_action"
title: "🚀 Étape 4 : Déploiement des Actions"
section_matcher: "### 3.4"
step_type: "subagent_barrier"
mandated_tools:
- "write_to_file"
next: "step_5_loop"
- id: "step_5_loop"
title: "🔄 Étape 5 : Relance du Cycle"
section_matcher: "### 3.5"
step_type: "loop_decision"
next: "step_1_exploration" # Boucle vers l'étape initiale
---
# Instructions Détaillées
### 3.1 Exploration & Questions
Consultez les fichiers locaux et mémoires avant de formuler des hypothèses...
### 3.2 Déploiement des Scouts
Lancez les sous-agents sur les clusters découverts...
```
---
## 🛠️ Outils FastMCP Exposés
Le serveur expose 3 outils MCP stdio déterministes :
### 1. `start_workflow`
Initialise un workflow dans un workspace donné, valide le graphe DAG, crée une session persistante et renvoie l'enveloppe de l'Étape 1.
- **Paramètres** :
- `skill_name` *(str, obligatoire)* : Nom du skill (`work`, `scout`) ou chemin de fichier.
- `workspace_dir` *(str, obligatoire)* : Répertoire racine du workspace cible pour la résolution prioritaire (`.agent/skills/`, `.agents/skills/`, `skills/`).
- `restart` *(bool, optionnel, défaut `False`)* : Si `True`, réinitialise/remplace toute session active existante. Si `False` et qu'une session existe pour ce workflow, la réutilise.
- `initial_context` *(dict, optionnel)* : Variables de contexte initiales.
### 2. `next_step`
Enregistre le livrable de l'étape courante, met à jour le contexte, résout la prochaine étape via le DAG et retourne la nouvelle enveloppe directive.
- **Paramètres** :
- `user_response` *(str, optionnel)* : Réponse ou livrable textuel.
- `step_output` *(str/dict, optionnel)* : Données structurées ou rapport d'étape.
- `transition_choice` *(str, optionnel)* : Choix explicite de transition pour les embranchements.
- `variables` *(dict, optionnel)* : Mises à jour des variables de session.
### 3. `end_workflow`
Clôture la session active, calcule les métriques d'exécution (durée, nombre d'étapes, cycles) et produit le rapport d'audit.
- **Paramètres** :
- `final_summary` *(str, optionnel)* : Résumé de clôture.
- `status` *(str, défaut: "completed")* : Statut final (`completed`, `aborted`, `paused`).
---
## 💻 Interface Ligne de Commande (CLI)
Le package inclut l'utilitaire `skill-workflow` (propulsé par Click et Rich) :
```bash
# Valider la structure d'un skill (YAML, Markdown, DAG)
skill-workflow validate work
skill-workflow validate path/to/SKILL.md
# Lister tous les workflows disponibles (local + global)
skill-workflow list
# Consulter les sessions en cours et passées
skill-workflow sessions
# Exécuter interactivement un workflow étape par étape
skill-workflow run work
# Lancer le serveur FastMCP en mode stdio
skill-workflow serve
```
---
## 📦 Installation & Configuration Antigravity
### ⚡ Installation Automatisée Tout-en-Un (Recommandé)
Les installateurs automatisés s'occupent de tout : détection de Python 3.10+, création du virtualenv, installation des dépendances en mode éditable, enregistrement dans `~/.gemini/config/mcp_config.json`, déploiement des schémas MCP dans `~/.gemini/antigravity/mcp/skill-workflow-runner/`, et création du wrapper CLI `skill-workflow`.
#### 🪟 Windows (PowerShell)
```powershell
# Exécution locale depuis le dépôt cloné :
powershell -ExecutionPolicy Bypass -File .\install.ps1
# Ou en une ligne directe (curl / irm) :
irm https://raw.githubusercontent.com/UNIL-DESI/mcp-skill-workflow-runner/main/install.ps1 | iex
```
#### 🐧 Linux / macOS (Bash)
```bash
# Exécution locale :
bash install.sh
# Ou en une ligne directe (curl) :
curl -fsSL https://raw.githubusercontent.com/UNIL-DESI/mcp-skill-workflow-runner/main/install.sh | bash
```
### ⚙️ Enregistrement Automatique Antigravity MCP
L'installateur génère et maintient l'entrée dans `~/.gemini/config/mcp_config.json` :
```json
{
"mcpServers": {
"skill-workflow-runner": {
"command": "C:\\Users\\hjamet\\Documents\\code\\mcp-skill-workflow-runner\\venv\\Scripts\\python.exe",
"args": ["-m", "mcp_skill_workflow_runner.server"],
"disabled": false,
"alwaysAllow": []
}
}
}
```
---
## 🛡️ Politique de Robustesse
- **Zéro fallback silencieux** : Toute anomalie (YAML syntaxiquement invalide, section Markdown introuvable, transition orpheline, condition non évaluable) déclenche une exception typée explicite (`WorkflowResolutionError`, `WorkflowParseError`, `SectionNotFoundError`, `InvalidDAGStructureError`, `TransitionEvaluationError`, `SessionError`).
- **Zéro pollution stdio** : Tous les logs de diagnostic sont envoyés sur `sys.stderr` pour garantir l'intégrité du protocole JSON-RPC de FastMCP sur `sys.stdout`.
- **Persistance Atomique** : Écriture systématique dans un fichier temporaire `<session_id>.tmp` suivi d'un `os.replace` atomique vers `<session_id>.json`.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues