Skip to content

Référence API Scripts : Interface Scripts Node.js

Ce Que Vous Apprendrez

  • Comprendre complètement l'interface API scripts d'Everything Claude Code
  • Utiliser la détection de plateforme et les fonctions utilitaires multiplateformes
  • Configurer et utiliser le mécanisme de détection automatique du gestionnaire de paquets
  • Écrire des scripts Hook personnalisés pour étendre les capacités d'automatisation
  • Déboguer et modifier les implémentations de scripts existantes

Votre Situation Actuelle

Vous savez déjà qu'Everything Claude Code dispose de nombreux scripts d'automatisation, mais vous rencontrez ces problèmes :

  • "Quelles API ces scripts Node.js fournissent-ils exactement ?"
  • "Comment personnaliser les scripts Hook ?"
  • "Quelle est la priorité de détection du gestionnaire de paquets ?"
  • "Comment implémenter la compatibilité multiplateforme dans les scripts ?"

Ce tutoriel vous fournira un manuel de référence complet de l'API Scripts.

Concept Fondamental

Le système de scripts d'Everything Claude Code se divise en deux catégories :

  1. Bibliothèque d'outils partagés (scripts/lib/) - Fournit des fonctions et API multiplateformes
  2. Scripts Hook (scripts/hooks/) - Logique d'automatisation déclenchée lors d'événements spécifiques

Tous les scripts supportent Windows, macOS et Linux, implémentés avec des modules natifs Node.js.

Structure des Scripts

scripts/
├── lib/
│   ├── utils.js              # Fonctions utilitaires générales
│   └── package-manager.js    # Détection du gestionnaire de paquets
├── hooks/
│   ├── session-start.js       # Hook SessionStart
│   ├── session-end.js         # Hook SessionEnd
│   ├── pre-compact.js        # Hook PreCompact
│   ├── suggest-compact.js     # Hook PreToolUse
│   └── evaluate-session.js   # Hook Stop
└── setup-package-manager.js   # Script de configuration du gestionnaire de paquets

lib/utils.js - Fonctions Utilitaires Générales

Ce module fournit des fonctions utilitaires multiplateformes, incluant la détection de plateforme, les opérations de fichiers, les commandes système, etc.

Détection de Plateforme

javascript
const {
  isWindows,
  isMacOS,
  isLinux
} = require('./lib/utils');
FonctionTypeValeur de RetourDescription
isWindowsbooleantrue/falseSi la plateforme actuelle est Windows
isMacOSbooleantrue/falseSi la plateforme actuelle est macOS
isLinuxbooleantrue/falseSi la plateforme actuelle est Linux

Principe d'implémentation : Basé sur le jugement de process.platform

javascript
const isWindows = process.platform === 'win32';
const isMacOS = process.platform === 'darwin';
const isLinux = process.platform === 'linux';

Outils de Répertoire

javascript
const {
  getHomeDir,
  getClaudeDir,
  getSessionsDir,
  getLearnedSkillsDir,
  getTempDir,
  ensureDir
} = require('./lib/utils');

getHomeDir()

Obtient le répertoire personnel de l'utilisateur (compatible multiplateforme)

Valeur de retour : string - Chemin du répertoire personnel

Exemple :

javascript
const homeDir = getHomeDir();
// Windows: C:\Users\username
// macOS: /Users/username
// Linux: /home/username

getClaudeDir()

Obtient le répertoire de configuration de Claude Code

Valeur de retour : string - Chemin du répertoire ~/.claude

Exemple :

javascript
const claudeDir = getClaudeDir();
// /Users/username/.claude

getSessionsDir()

Obtient le répertoire des fichiers de session

Valeur de retour : string - Chemin du répertoire ~/.claude/sessions

Exemple :

javascript
const sessionsDir = getSessionsDir();
// /Users/username/.claude/sessions

getLearnedSkillsDir()

Obtient le répertoire des compétences apprises

Valeur de retour : string - Chemin du répertoire ~/.claude/skills/learned

Exemple :

javascript
const learnedDir = getLearnedSkillsDir();
// /Users/username/.claude/skills/learned

getTempDir()

Obtient le répertoire temporaire du système (multiplateforme)

Valeur de retour : string - Chemin du répertoire temporaire

Exemple :

javascript
const tempDir = getTempDir();
// macOS: /var/folders/...
// Linux: /tmp
// Windows: C:\Users\username\AppData\Local\Temp

ensureDir(dirPath)

Assure l'existence du répertoire, le crée s'il n'existe pas

Paramètres :

  • dirPath (string) - Chemin du répertoire

Valeur de retour : string - Chemin du répertoire

Exemple :

javascript
const dir = ensureDir('/path/to/new/dir');
// Si le répertoire n'existe pas, il sera créé récursivement

Outils de Date et Heure

javascript
const {
  getDateString,
  getTimeString,
  getDateTimeString
} = require('./lib/utils');

getDateString()

Obtient la date actuelle (format : YYYY-MM-DD)

Valeur de retour : string - Chaîne de date

Exemple :

javascript
const date = getDateString();
// '2026-01-25'

getTimeString()

Obtient l'heure actuelle (format : HH:MM)

Valeur de retour : string - Chaîne d'heure

Exemple :

javascript
const time = getTimeString();
// '14:30'

getDateTimeString()

Obtient la date et l'heure actuelles (format : YYYY-MM-DD HH:MM:SS)

Valeur de retour : string - Chaîne de date et heure

Exemple :

javascript
const datetime = getDateTimeString();
// '2026-01-25 14:30:45'

Opérations de Fichiers

javascript
const {
  findFiles,
  readFile,
  writeFile,
  appendFile,
  replaceInFile,
  countInFile,
  grepFile
} = require('./lib/utils');

findFiles(dir, pattern, options)

Recherche des fichiers correspondant au motif dans un répertoire (alternative multiplateforme à find)

Paramètres :

  • dir (string) - Répertoire à rechercher
  • pattern (string) - Motif de fichier (ex : "*.tmp", "*.md")
  • options (object, optionnel) - Options
    • maxAge (number) - Âge maximum du fichier en jours
    • recursive (boolean) - Recherche récursive ou non

Valeur de retour : Array<{path: string, mtime: number}> - Liste des fichiers correspondants, triés par date de modification décroissante

Exemple :

javascript
// Rechercher les fichiers .tmp des 7 derniers jours
const recentFiles = findFiles('/tmp', '*.tmp', { maxAge: 7 });
// [{ path: '/tmp/session.tmp', mtime: 1737804000000 }]

// Rechercher récursivement tous les fichiers .md
const allMdFiles = findFiles('./docs', '*.md', { recursive: true });

Compatibilité Multiplateforme

Cette fonction fournit une fonctionnalité de recherche de fichiers multiplateforme, ne dépend pas de la commande Unix find, et fonctionne donc normalement sous Windows.

readFile(filePath)

Lecture sécurisée d'un fichier texte

Paramètres :

  • filePath (string) - Chemin du fichier

Valeur de retour : string | null - Contenu du fichier, retourne null en cas d'échec de lecture

Exemple :

javascript
const content = readFile('/path/to/file.txt');
if (content !== null) {
  console.log(content);
}

writeFile(filePath, content)

Écriture dans un fichier texte

Paramètres :

  • filePath (string) - Chemin du fichier
  • content (string) - Contenu du fichier

Valeur de retour : Aucune

Exemple :

javascript
writeFile('/path/to/file.txt', 'Hello, World!');
// Si le répertoire n'existe pas, il sera créé automatiquement

appendFile(filePath, content)

Ajoute du contenu à un fichier texte

Paramètres :

  • filePath (string) - Chemin du fichier
  • content (string) - Contenu à ajouter

Valeur de retour : Aucune

Exemple :

javascript
appendFile('/path/to/log.txt', 'New log entry\n');

replaceInFile(filePath, search, replace)

Remplace du texte dans un fichier (alternative multiplateforme à sed)

Paramètres :

  • filePath (string) - Chemin du fichier
  • search (string | RegExp) - Contenu à rechercher
  • replace (string) - Contenu de remplacement

Valeur de retour : boolean - Si le remplacement a réussi

Exemple :

javascript
const success = replaceInFile('/path/to/file.txt', 'old text', 'new text');
// true: remplacement réussi
// false: fichier inexistant ou échec de lecture

countInFile(filePath, pattern)

Compte le nombre d'occurrences d'un motif dans un fichier

Paramètres :

  • filePath (string) - Chemin du fichier
  • pattern (string | RegExp) - Motif à compter

Valeur de retour : number - Nombre de correspondances

Exemple :

javascript
const count = countInFile('/path/to/file.txt', /error/g);
// 5

grepFile(filePath, pattern)

Recherche un motif dans un fichier et retourne les lignes et numéros de ligne correspondants

Paramètres :

  • filePath (string) - Chemin du fichier
  • pattern (string | RegExp) - Motif à rechercher

Valeur de retour : Array<{lineNumber: number, content: string}> - Liste des lignes correspondantes

Exemple :

javascript
const matches = grepFile('/path/to/file.txt', /function\s+\w+/);
// [{ lineNumber: 10, content: 'function test() {...}' }]