원클릭으로
sklein-create-node-project
Créer un nouveau projet Node.js basé sur les préférences de Stéphane Klein.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Créer un nouveau projet Node.js basé sur les préférences de Stéphane Klein.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Créer un nouveau projet Node.js avec PostgreSQL (raw SQL, migrations, conteneur Podman) basé sur les préférences de Stéphane Klein. Use when user wants to create a Node.js project with PostgreSQL, migrations, or raw SQL.
Initialize ADR/agents/docs infrastructure in a project
Génère le template (template/), le script generate.sh, le vars-example.yaml, et le SKILL.md d'un projet à partir d'un projet source existant. Use when user wants to create a project scaffolding template from an existing project.
Conventions HTTP API de Stéphane Klein — nommage, verbes, codes, pagination, erreurs, versioning, HATEOAS, filtres, embedding, upload, OpenAPI. Utiliser lors de la création, modification ou review d'une API HTTP.
Gère la todo list de Stéphane via la banque mémoire hindsight `todo` et le sous-agent `@todo`. Use when user says: ajoute à ma todo, marque comme fait, liste mes tâches, supprime une tâche, bloque/débloque une tâche, quelles sont mes priorités, importe ça dans ma todo, ou colle un bloc de texte contenant plusieurs tâches.
Guide pour la création de nouveaux skills
| name | sklein-create-node-project |
| description | Créer un nouveau projet Node.js basé sur les préférences de Stéphane Klein. |
Créer un nouveau projet Node.js basé sur les préférences de Stéphane Klein.
Ce skill est activé lorsque l'utilisateur demande de créer un projet Node.js, par exemple :
Si l'utilisateur n'a pas fourni de PROJECT_SHORT_DESCRIPTION, l'agent doit lui demander brièvement avant de procéder :
« Quel est le but de ce projet ? (1–2 phrases) »
Si l'utilisateur refuse de donner une description, l'agent peut utiliser une chaîne vide et continuer la génération.
L'agent doit demander à l'utilisateur (use question tool) :
« Utiliserez-vous Jujutsu (jj) pour ce projet ? (Oui/Non) »
USE_JUJUTSU = trueUSE_JUJUTSU = falseCette information sera transmise au template AGENTS.md.
L'agent doit demander à l'utilisateur (use question tool) :
« Voulez-vous inclure la gestion de variables d'environnement secrètes (fichier
.secret) ? »
Si Oui : demander ensuite :
« Voulez-vous intégrer gopass pour la gestion des secrets ? »
INCLUDE_GOPASS_SETUP_SECRET = trueINCLUDE_GOPASS_SETUP_SECRET = falseINCLUDE_ENVIRONMENT_SECRETS = true
Si Non : INCLUDE_ENVIRONMENT_SECRETS = false et INCLUDE_GOPASS_SETUP_SECRET = false
Si l'utilisateur a fourni une PROJECT_SHORT_DESCRIPTION, l'agent évalue si elle est suffisante et optimale en termes de :
Si la description semble insuffisante ou non optimale, l'agent la reformule directement en anglais (une seule version).
Cette version reformulée est utilisée directement dans les templates, sans validation utilisateur.
L'agent doit déterminer PROJECT_SLUG automatiquement :
Dérivation depuis PROJECT_NAME :
Mon Super Projet → mon-super-projetVérification du dossier cible :
TARGET_DIR comme baseDemande de confirmation :
PROJECT_NAME contient des caractères spéciaux ambigus ou si le PROJECT_SLUG résultant semble incohérent, demander confirmation à l'utilisateurPROJECT_SLUG déduit et demander : « Le nom du repository GitHub sera {{project_slug}}. Est-ce correct ? »PROJECT_SLUG personnaliséPROJECT_NAME (requis) : nom du projet. Peut contenir des tirets, pas d'espaces.PROJECT_SHORT_DESCRIPTION : courte explication du projet et de son but (1–2 phrases).PROJECT_SLUG (optionnel) : nom du repository GitHub (minuscules, tirets, pas d'espaces). Si non fourni, il est déduit automatiquement de PROJECT_NAME.TARGET_DIR (optionnel) : chemin absolu ou relatif du répertoire cible. Par défaut : le dossier courant.AUTHOR_NAME = Stéphane KleinAvant toute génération, l'agent doit récupérer dynamiquement :
Dernière version LTS de Node.js via https://nodejs.org/dist/index.json :
lts n'est pas false.date décroissante et prendre la dernière version (ex: 22.14.0).v.Dernière version de pnpm via curl -s https://registry.npmjs.org/pnpm/latest | jq -r '.version' :
10.8.0Dernière version de Biome via curl -s https://registry.npmjs.org/@biomejs/biome/latest | jq -r '.version' :
2.3.11Si l'une de ces requêtes échoue ou retourne une donnée inutilisable, l'agent doit échouer proprement et informer l'utilisateur que la création du projet est impossible sans les versions à jour.
Avant d'écrire quoi que ce soit, l'agent doit vérifier si les fichiers cibles existent déjà dans TARGET_DIR.
Si un ou plusieurs de ces fichiers existent déjà, l'agent doit prévenir l'utilisateur, lister les fichiers concernés, et demander une confirmation explicite avant d'écraser. Sans confirmation, l'opération s'arrête.
Une fois les versions récupérées et les conflits résolus (ou confirmés par l'utilisateur) :
Créer un fichier YAML temporaire /tmp/opencode/vars.yaml :
author_name: Stéphane Klein
project_name: "{{PROJECT_NAME}}"
project_slug: "{{PROJECT_SLUG}}"
project_short_description: "{{PROJECT_SHORT_DESCRIPTION}}"
use_jujutsu: {{USE_JUJUTSU}}
last_node_lts_version: "{{LAST_NODE_LTS_VERSION}}"
last_pnpm_version: "{{LAST_PNPM_VERSION}}"
last_biome_version: "{{LAST_BIOME_VERSION}}"
include_environment_secrets: {{INCLUDE_ENVIRONMENT_SECRETS}}
include_gopass_setup_secret: {{INCLUDE_GOPASS_SETUP_SECRET}}
Exécuter generate.sh :
/home/sklein/.config/opencode/skill/sklein-create-node-project/generate.sh \
/home/sklein/.config/opencode/skill/sklein-create-node-project/template \
/tmp/opencode/vars.yaml \
"{{TARGET_DIR}}"
Supprimer le fichier temporaire après exécution.
L'agent ne doit PAS exécuter pnpm install ni aucune autre commande d'installation.
Ce skill a un périmètre strict : initialiser le projet et rien d'autre.
Une fois les fichiers créés et la confirmation envoyée, l'agent doit s'arrêter. Il ne doit en aucun cas :
pnpm install, pnpm dev, pnpm build, pnpm test, git init, etc.)L'initialisation est terminée quand les fichiers sont écrits. L'utilisateur décidera lui-même de la suite.
Après avoir écrit les fichiers, l'agent confirme le succès à l'utilisateur en listant les fichiers créés et le répertoire cible, puis s'arrête.