Skill: mrnsmh/nexus-sentinel (version 0.1.3)

# Skill: Nexus-Sentinel (V1.1) Nexus-Sentinel est un agent SRE autonome. Il diagnostique les pannes, optimise les ressources et gère les sauvegardes de configuration. ## 🛡️ Protocoles de Sécurité (Critique) 1. **Zéro fuite de secrets** : L'agent a l'interdiction formelle d'inclure des fichiers `.env` ou des fichiers contenant des "secrets/clés/tokens" dans les sauvegardes vers le cloud sans confirmation `/approve` explicite de l'utilisateur. 2. **Diagnostic avant Action** : Avant de redémarrer un service, l'agent doit exécuter `sentinel.py analyze <service>` pour vérifier si l'erreur est logicielle (ex: erreur de syntaxe) ou d'infrastructure (ex: DB down). 3. **Limitation d'autonomie** : L'agent ne peut effectuer que 2 redémarrages automatiques par heure. Au-delà, il doit passer en mode alerte et attendre une instruction manuelle. ## ⚙️ Configuration Variables d'environnement requises pour le mode complet : - `MATON_API_KEY` : Pour les alertes WhatsApp et l'upload GDrive sécurisé. - `NEXUS_REPORT_CHANNEL` : Numéro WhatsApp pour les briefings. - `NEXUS_BACKUP_PATH` : ID du dossier Google Drive cible. ## 🚀 Installation & Dépendances Ce skill nécessite : - `docker`, `pm2`, `tar`, `curl` sur le système hôte. - Les librairies Python `psutil` et `requests`. Si absentes, l'agent doit proposer de les installer via `pip` et les gestionnaires de paquets locaux. ## Commandes - **/nexus brief** : Rapport d'activité intelligent. - **/nexus optimize** : Rotation des logs et nettoyage des fichiers temporaires. - **/nexus recover <service>** : Diagnostic et tentative de récupération en 3 étapes (Logs -> DB Status -> Service Restart).

path: sentinel.py
content: import os
import psutil
import subprocess
import json
import requests
import datetime

# --- CONFIGURATION ---
SENSITIVE_PATTERNS = [".env", "key", "password", "secret", "token"]
API_GATEWAY = "https://gateway.maton.ai"

def get_system_report():
    vitals = {
        "cpu": psutil.cpu_percent(interval=0.5),
        "ram": psutil.virtual_memory().percent,
        "disk": psutil.disk_usage('/').percent,
        "load": os.getloadavg()
    }
    return vitals

def list_recent_errors(service_name, lines=50):
    """Diagnose service before restart."""
    try:
        if service_name.startswith("docker:"):
            container = service_name.split(":")[1]
            res = subprocess.run(["docker", "logs", "--tail", str(lines), container], capture_output=True, text=True)
            return res.stdout + res.stderr
        else:
            res = subprocess.run(["pm2", "logs", service_name, "--lines", str(lines), "--nostream"], capture_output=True, text=True)
            return res.stdout
    except:
        return "Log extraction failed."

def notify(message):
    """Sends notification via the configured channel."""
    target = os.getenv("NEXUS_REPORT_CHANNEL")
    [REDACTED_SECRET]"MATON_API_KEY")
    if not target or not [REDACTED_SECRET]"NOTIFY_STDOUT: {message}")
        return
    
    # We use Maton API for secure relay
    payload = {"to": target, "message": f"[NEXUS] {message}"}
    try:
        requests.post(f"{API_GATEWAY}/whatsapp/send", json=payload, headers={"Authorization": f"Bearer {api_key}"}, timeout=10)
    except:
        pass

def backup_file(file_path):
    """Incremental backup of non-sensitive config files."""
    if any(p in file_path.lower() for p in SENSITIVE_PATTERNS):
        return {"error": "Manual authorization required for sensitive files"}
    
    # Logic to tar and push to GDrive via Maton
    # ... (Simplified for the skill demo)
    return {"status": "ready_for_upload", "file": file_path}

if __name__ == "__main__":
    import sys
    action = sys.argv[1] if len(sys.argv) > 1 else "status"
    
    if action == "status":
        print(json.dumps({
            "vitals": get_system_vitals(),
            "docker": "checked",
            "pm2": "checked"
        }, indent=2))
    elif action == "analyze":
        print(list_recent_errors(sys.argv[2] if len(sys.argv) > 2 else ""))


path: _meta.json
content: {
  "name": "nexus-sentinel",
  "description": "Autonomous SRE Agent. Proactive monitoring, log rotation, and smart service recovery with safety hooks.",
  "version": "1.1.0",
  "author": "Jack (via Marouane)",
  "entrypoint": "SKILL.md",
  "requirements": {
    "binaries": ["docker", "pm2", "tar", "curl"],
    "pythonPackages": ["psutil", "requests"],
    "env": ["NEXUS_REPORT_CHANNEL", "NEXUS_BACKUP_PATH", "MATON_API_KEY"]
  },
  "permissions": {
    "filesystem": ["read", "write"],
    "network": ["outbound"],
    "commands": ["docker", "pm2", "tar"]
  }
}


path: README.md
content: # Skill: Nexus-Sentinel (V1.1)

Nexus-Sentinel est un agent SRE autonome. Il diagnostique les pannes, optimise les ressources et gère les sauvegardes de configuration.

## 🛡️ Protocoles de Sécurité (Critique)
1. **Zéro fuite de secrets** : L'agent a l'interdiction formelle d'inclure des fichiers `.env` ou des fichiers contenant des "secrets/clés/tokens" dans les sauvegardes vers le cloud sans confirmation `/approve` explicite de l'utilisateur.
2. **Diagnostic avant Action** : Avant de redémarrer un service, l'agent doit exécuter `sentinel.py analyze <service>` pour vérifier si l'erreur est logicielle (ex: erreur de syntaxe) ou d'infrastructure (ex: DB down).
3. **Limitation d'autonomie** : L'agent ne peut effectuer que 2 redémarrages automatiques par heure. Au-delà, il doit passer en mode alerte et attendre une instruction manuelle.

## ⚙️ Configuration
Variables d'environnement requises pour le mode complet :
- `MATON_API_KEY` : Pour les alertes WhatsApp et l'upload GDrive sécurisé.
- `NEXUS_REPORT_CHANNEL` : Numéro WhatsApp pour les briefings.
- `NEXUS_BACKUP_PATH` : ID du dossier Google Drive cible.

## 🚀 Installation & Dépendances
Ce skill nécessite :
- `docker`, `pm2`, `tar`, `curl` sur le système hôte.
- Les librairies Python `psutil` et `requests`.
Si absentes, l'agent doit proposer de les installer via `pip` et les gestionnaires de paquets locaux.

## Commandes
- **/nexus brief** : Rapport d'activité intelligent.
- **/nexus optimize** : Rotation des logs et nettoyage des fichiers temporaires.
- **/nexus recover <service>** : Diagnostic et tentative de récupération en 3 étapes (Logs -> DB Status -> Service Restart).


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: suspicious | SkillSpector: suspicious (CRITICAL)