security-audit-cli — Skill Audit de Sécurité TricorderKit

SkillSecurity

TricorderKit security audit: secret scanning, dependency audit vs CVE, permission checks, risky pattern analysis, anonymization verification before public release. Triggers: audit securite, scan secrets, verifie les fuites, check anonymisation, security scan.

Available today. Use it from your connected AI after setup.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the security-audit-cli skill

What this skill tells your AI

The instructions your AI receives, as published by geekfamilycorp/tricorderkit in plugins/security-audit-cli/skills/security-audit-cli/SKILL.md and read by ahel’s review.

Version : 0.1.0 — 16/05/2026 Ancrage : TricorderKit v0.8 — Phase 5 active Statut : Scaffoldé — en développement


🎯 Rôle & déclencheurs

security-audit-cli est le gardien de sécurité de l'écosystème TricorderKit. Il détecte les fuites de secrets, les permissions excessives, les dépendances vulnérables et les patterns de code à risque — avant qu'ils n'atteignent le dépôt public.

Responsabilités

  1. Secret scanning — détecter clés API, tokens, mots de passe dans les fichiers sources
  2. Dependency audit — scanner requirements.txt, package.json, pyproject.toml vs CVE connus
  3. Permission check — vérifier les permissions fichiers (exécutables non intentionnels, .env exposés)
  4. Pattern check — détecter anti-patterns sécurité (eval(), subprocess shell=True, hardcoded paths)
  5. Anonymisation check — vérifier l'absence de termes privés dans les fichiers destinés au repo public

Déclencheurs

  • Commande : /tk:security audit (scan complet)
  • Commande : /tk:security check-anonymization <file>
  • Avant tout push vers un repo GitHub public
  • En CI/CD (exit code 2 si CRITICAL bloque le push)

Ce qu'il N'EST PAS

  • ❌ Un scanner SAST complet (Bandit/Semgrep font ça — security-audit-cli les orchestre)
  • ❌ Un gestionnaire de secrets (HashiCorp Vault / SOPS font ça)
  • ❌ Un firewall réseau ou WAF

⚙️ Architecture

plugins/security-audit-cli/
├── README.md                  ← Guide d'utilisation
├── SKILL.md                   ← Ce fichier
├── manifest.yml               ← Compatible cli-forge
├── secret_scanner.py          ← Regex patterns API keys, tokens, passwords
├── pattern_checker.py         ← Anti-patterns code (eval, shell=True, etc.)
├── anonymization_checker.py   ← Détection termes privés pour push public
└── scripts/
    └── security_runner.py     ← CLI principale (Typer) — entrypoint

Tests dans tests/test_security_audit.py (racine du projet) — 16 tests PASS.


🔍 Règles de détection

Secret Scanner — patterns CRITICAL

PatternExemple détecté
API Key génériqueapi_key = "sk-...", API_KEY=abc123
Token GitHubghp_..., github_pat_...
Token Anthropicsk-ant-...
Clé AWSAKIA[0-9A-Z]{16}
Password hardcodépassword = "...", passwd = "..."
Connection string DBpostgresql://user:pass@host/db

Anonymisation — termes privés bloquants (push public)

Déclarer les termes privés dans linked_project/project_config/project.yaml → champ private_terms[]. TricorderKit charge cette liste au runtime pour bloquer tout push public contenant des données métier.

Exemple de configuration :

# linked_project/project_config/project.yaml
private_terms:
  - MyPrivateProjectName
  - MyPrivateAppName
  - my-private-cli

Pattern Checker — sévérité HIGH

  • eval( dans du code Python non test
  • subprocess.*shell=True sans commentaire justificatif
  • os.system( sans whitelist explicite
  • pickle.loads( sur input non validé

📤 Output Contract

{
  "status": "success|partial|error|dry_run",
  "skill_name": "security-audit-cli",
  "skill_version": "0.1.0",
  "timestamp": "...",
  "output": {
    "summary": "Audit OK — 0 secret, 0 CVE critique, 2 warnings pattern",
    "data": {
      "secrets_found": 0,
      "cve_critical": 0,
      "cve_high": 0,
      "pattern_warnings": 2,
      "anonymization_violations": 0,
      "files_scanned": 47,
      "findings": []
    },
    "files_created": ["reports/security/security_report_2026-05-16.md"],
    "next_steps": ["Corriger pattern eval() dans plugins/x/y.py:L42"]
  }
}

🚀 Commandes CLI

# Audit complet du repo
python plugins/security-audit-cli/security_runner.py audit

# Scanner uniquement les secrets
python plugins/security-audit-cli/security_runner.py scan-secrets --path plugins/

# Vérifier anonymisation avant push public
python plugins/security-audit-cli/security_runner.py check-anon --path plugins/tk-orchestrator/

# Auditer les dépendances
python plugins/security-audit-cli/security_runner.py audit-deps

# Dry-run complet
python plugins/security-audit-cli/security_runner.py audit --dry-run

🛡️ Niveaux de sévérité

NiveauCritèresComportement CI
CRITICALSecret exposé, terme privé dans repo publicBloquer push — exit 2
HIGHPattern dangereux, CVE score >= 9.0Warning — exit 1
MEDIUMCVE score 7.0–8.9, permission incorrecteWarning — exit 0
LOWCVE score < 7.0, style recommendationInfo — exit 0

📊 Notes de fiabilité

ÉlémentNiveauCommentaire
Secret scanning regex✅ ConfirméPatterns battle-tested (gitleaks / trufflehog patterns)
Anonymisation check✅ ConfirméCritique pour workflow public/privé TricorderKit
Dependency audit🟡 ProbableDépend de pip-audit — disponible Python 3.10+
Pattern check🟡 ProbableFaux positifs possibles sur code commenté
Intégration CI🟠 À vérifierHook pre-push Git à configurer

security-audit-cli v0.1.0 — 16/05/2026 — TricorderKit v0.8

Signals

GitHub stars
30
Forks
1
Last commit
Aug 2026
Advanced
Item type
skill
Key
security-audit-cli
Source
github.com/geekfamilycorp/tricorderkit