Référence des Commandes (/epure, Skill /setup-repo & CLI)
EPURE s'utilise à travers deux surfaces complémentaires :
- Le skill d'agent local
/setup-repo(.agents/skills/setup-repo/SKILL.md— méthode privilégiée pour initialiser ou reconfigurer un dépôt, ses Rulesets et son roster dynamique de reviewers dansreviewers_dir, par défaut.agents/reviewers/*.md). - Les commandes slash sur les Issues GitHub (
/epure ...) pour piloter le cycle de vie d'une fonctionnalité au quotidien depuis l'interface GitHub.
1. Commandes Slash sur les Issues GitHub (/epure)
Toutes les commandes /epure se postent sous forme de commentaires sur une Issue GitHub. Chaque commande est protégée par une Porte de Permissions Fail-Closed : l'auteur du commentaire doit détenir la permission write ou admin sur le dépôt.
| Commande | Catégorie (Q101) | Phase Cible | Description |
|---|---|---|---|
/epure plan | Jalon Humain Obligatoire 1 | grilling | Initialise refs/epure/state/<issue>, inspecte les fichiers du dépôt via les outils d'exploration (list_repo_files, read_repo_file, search_in_repo_file) et démarre l'entretien d'architecture structuré (Grill). |
| (Tout commentaire humain pendant le Grill) | Jalon Humain Obligatoire 1 | grilling | Continuité implicite du Grill (Q84) : traite les réponses humaines via last_processed_comment_id. S'il reste des points ouverts (frontier_resolved: false), publie le round suivant. Dès que la frontière est résolue (frontier_resolved: true), publie une Synthèse des Décisions et attend la validation humaine (/epure to-spec) avant de générer la spec et les tickets. |
/epure to-spec | Validation Humaine de la Frontière | spec | Valide la frontière de cadrage du Grill (ou force la fin du cadrage), exécute l'Audit de Spécification Goldfish zéro-contexte (runGoldfishSpecAudit), et génère GLOSSARY.md, les ADRs, DESIGN.md et docs/specs/<slug>.md (incluant EpicGoalContract) sur plan/*, puis passe en phase spec (awaiting_human_approval). Tout commentaire libre en phase spec révise la spécification sur plan/*. |
/epure to-tickets | Validation Humaine de la Spécification | tickets | Valide la spécification sur plan/* et la découpe en un graphe orienté acyclique (DAG) de sous-issues GitHub (blocked_by, ready-for-agent), câble le graphe relationnel GitHub natif (sub_issues + dependencies/blocked_by) et passe en phase tickets (awaiting_human_approval) avant /epure approve. |
/epure approve | Jalon Humain Obligatoire 2 | implementation | Intègre directement les artefacts de plan/* (GLOSSARY.md en fusion additive, réconciliation monotone et sémantique des ADRs en collision, docs/specs/<slug>.md, DESIGN.md) dans feature/<issue>-<slug> sans PR intermédiaire plan/* -> dev (ADR-0031, ADR-0032), scelle le mandat signé spec_sha dans refs/epure/state/<issue> et exécute le DAG de tickets (task/* -> feature/*). |
/epure continue | Reprise d'Exécution | implementation | Reprend l'orchestration après la résolution d'une suspension needs-human, d'un conflit Git 3-way ou à l'issue de la CI externe (waiting_ticket_ci / waiting_feature_ci, ADR-0031). |
/epure sync (alias /epure rebase) | Synchronisation Git | implementation | Synchronise dev -> feature/<issue>-<slug> (et propage feature/* -> active_task_branch) avec fusion additive de GLOSSARY.md, réconciliation monotone des ADRs, résolution 3-way assistée par LLM et validation Sandbox Stage 1 avant commit (ADR-0031, ADR-0032). |
/epure status | Commande Facultative | (Lecture seule) | Lit refs/epure/state/<issue> et publie un rapport à jour de la phase courante, du spec_sha verrouillé et de l'état de chaque ticket sans modifier le code. |
/epure cancel (alias /epure stop) | Commande Facultative | cancelled | Marque le mandat comme cancelled dans refs/epure/state/<issue>, bloque toute nouvelle exécution de ticket et conserve les branches et traces d'audit existantes. |
Aide-mémoire contextuel repliable (
<details>) : Chaque commentaire d'issue, corps de sous-issue de ticket et description de Pull Request publié par EPURE intègre automatiquement en pied de message un bloc repliable<details>(⌨️ Commandes /epure disponibles) récapitulant les commandes disponibles et mettant en évidence la prochaine action recommandée selon la phase courante (grilling,spec,tickets,implementation,suspended,cancelledoucompleted).
2. Pipeline Événementiel GitHub Actions & Custom Actions (epure-ci-actions-flow)
Fonctionnement Détaillé du Pipeline epure-issue-command.yml
- Job 1 — Contrôle d'Autorisation Préalable Sans Secret (
authorize-commandviaactions/authorize-command) :- Déclenché sur
issue_comment.createdavec uniquementGITHUB_TOKEN(contents: read,issues: write) et aucun secret d'agent ou de LLM. - Vérifie que l'auteur du commentaire est un humain disposant de la permission effective
writeouadminviaGET /repos/{owner}/{repo}/collaborators/{username}/permission. - Grâce à
allow_implicit_planning_reply: "true", tout commentaire humain en texte libre (sans commande slash) posté pendant les phasesgrillingouspecest automatiquement routé comme une commandereply.
- Déclenché sur
- Job 2 — Orchestration Isolée sous Environnement d'Agent (
orchestrate-commandviaactions/orchestrate-issue) :- S'exécute sur
ubuntu-26.04dans l'environnement GitHub dédié (environment: <llm-env>,epure-agentpar défaut ; autres exemples :llm,openai,anthropicougemini) uniquement après validation parauthorize-command(ou lors d'un événement de continuation CI autorisé). - Reçoit les secrets cloisonnés dans l'environnement (
EPURE_AGENT_APP_ID,EPURE_AGENT_APP_PRIVATE_KEYetLLM_API_KEYou clé fournisseur) et installe l'outillage de sandbox noyau (bubblewrap,landrun,rtk). - Lors de
/epure to-tickets, crée les sous-issues GitHub et câble nativement le graphe relationnel GitHub (sub_issuesparent-enfant +dependencies/blocked_by).
- S'exécute sur
- Réveil Événementiel Automatique de la CI (
check_suite.completed/workflow_run.completed) :- Avec
async_ci_continuation: "true", dès l'ouverture d'une PRtask/* -> feature/*(waiting_ticket_ci) oufeature/* -> dev(waiting_feature_ci), l'orchestrateur persiste la PR et lehead_shadansrefs/epure/state/<issue>et termine immédiatement (exit 0) pour libérer le runner GitHub Actions. - Dès que la CI externe se termine sur
task/*oufeature/*, l'événementcheck_suite.completedouworkflow_run.completedréveilleorchestrate-commandaveccommand: "continue",trigger_head_shaettrigger_branchafin d'exécuter la revue multi-agents Stage 3, le squash sémantique IA ou un round d'auto-remédiation unifié.
- Avec
- Portes de Contrat PR & Promotion de Release Protégée :
- Sur
pull_request(dev,main,feature/**),epure-check.yml(actions/epure-contract),pr-title.ymletci.ymls'exécutent encontents: readsans aucun secret privilégié. - Sur
workflow_dispatchhumain (semver_tag,expected_dev_sha),release.ymlappelle le workflow réutilisablerelease-promote.ymld'EPURE, qui s'exécute dans l'environnement protégéenvironment: release(EPURE_RELEASE_APP_ID,EPURE_RELEASE_APP_PRIVATE_KEY), vérifie la frontière de rôle avecactions/verify-app-role, promeutdev -> mainen fast-forward, pose le tag et publie la GitHub Release.
- Sur
3. Skill d'Agent de Bootstrap (/setup-repo — Recommandé)
Le skill .agents/skills/setup-repo/SKILL.md est la façon privilégiée d'initialiser ou de mettre à jour un dépôt consommateur EPURE depuis n'importe quel agent de développement compatible Skills :
/setup-repo <owner>/<repo>Ce que fait le skill /setup-repo
- Analyse du projet : inspecte la stack (
package.json,pyproject.toml,Cargo.toml,go.mod,Makefile), la structure des modulessrc/et la présence ou non d'une interface utilisateur. - Simulation (
--dry-run) : exécutedist/cli/setup-repo.mjs --dry-runet présente le plan complet au mainteneur avant toute écriture. - Conception dynamique du roster de reviewers (
reviewers_dir, par défaut.agents/reviewers/*.md) : crée, conçoit et adapte les reviewers spécialisés en fonction des composants réels du projet (socle transversearchitecture-reviewer,security-reviewer,spec-parity-reviewer,standards-reviewer,user-advocate+ spécialistes métier/UI sur mesure avec routagepaths:). - Application idempotente (
--apply --apply-github-settings) : écrit.github/agents.yml,.github/zizmor.yml,renovate.json, les workflows appelants épinglés par SHA, configure le dépôt en squash-only et installe les 3 Repository Rulesets.
4. CLI Sous-Jacente de Bootstrap (dist/cli/setup-repo.mjs)
Invoquée automatiquement par le skill /setup-repo (ou exécutable manuellement en ligne de commande) :
node dist/cli/setup-repo.mjs \
--repo <owner>/<name> \
--target-dir <chemin> \
[--pinned-sha <sha-40-caracteres>] \
[--dry-run | --apply] \
[--apply-github-settings] \
[--no-frontend-reviewers] \
[--domain-reviewers <slug1,slug2>] \
[--reviewers-dir <chemin>] \
[--llm-env <nom-env>] \
[--model <fournisseur/modèle>] \
[--planning-model <fournisseur/modèle>] \
[--implementation-model <fournisseur/modèle>] \
[--review-model <fournisseur/modèle>] \
[--agent-app-id <id>] \
[--release-app-id <id>] \
[--require-pr-approvals <N>] \
[--json]| Option | Valeur par défaut | Description |
|---|---|---|
--repo <owner/name> | (Obligatoire) | Identifiant du dépôt GitHub cible (ex. my-org/craft-calculator). |
--target-dir <chemin> (alias --dir, --repo-root) | Répertoire courant | Chemin local où sont écrits .github/agents.yml, .github/zizmor.yml, renovate.json, les workflows et les prompts des reviewers (<reviewers_dir>/*.md). |
--pinned-sha <sha> | Dernier SHA EPURE | SHA Git immuable de 40 caractères de Giskard-AI/epure utilisé pour épingler les workflows appelants générés. |
--dry-run | true (si --apply omis) | Affiche le plan complet de bootstrap sans modifier aucun fichier ni appeler d'API d'écriture. |
--apply | false | Écrit les fichiers de configuration (.github/agents.yml, .github/zizmor.yml, renovate.json), les workflows appelants et le socle des prompts de reviewers (<reviewers_dir>/*.md, par défaut .agents/reviewers/*.md). |
--apply-github-settings | false | Applique le mode squash-only et les 3 Repository Rulesets via l'API REST GitHub. |
--no-frontend-reviewers | false | Omet frontend-reviewer, accessibility-reviewer et design-reviewer pour les dépôts sans UI. |
--domain-reviewers <csv> | Aucun | Génère des fichiers <reviewers_dir>/<slug>-reviewer.md supplémentaires pour les sous-domaines métier. |
--reviewers-dir <chemin> | .agents/reviewers | Répertoire du roster de reviewers écrit dans .github/agents.yml (reviewers_dir) et lu par l'orchestrateur depuis dev (p. ex. --reviewers-dir .cursor/agents pour une équipe souhaitant que Cursor charge les reviewers comme sous-agents). Les chemins absolus, les segments ./.. et les chemins sous src/ sont rejetés en fail-closed avec SECURITY_INVARIANT_VIOLATION. |
--llm-env <nom-env> | epure-agent | Nom de l'environnement GitHub ([A-Za-z0-9._-]) écrit dans .github/agents.yml (llm_environment) et utilisé par le job orchestrate-command de .github/workflows/epure-issue-command.yml. Doit correspondre au --llm-env de l'assistant. |
--model <fournisseur/modèle> | — | Définit en une fois models.planning, models.implementation et models.review. |
--planning-model <fournisseur/modèle> | anthropic/claude-sonnet-4-20250514 | Définit models.planning. |
--implementation-model <fournisseur/modèle> | anthropic/claude-sonnet-4-20250514 | Définit models.implementation. |
--review-model <fournisseur/modèle> | openai/gpt-4.1 | Définit models.review. |
--agent-app-id <id> | Optionnel | ID numérique de <owner>-epure-agent ajouté en Bypass Actor PR sur epure-feature-governance (feature/*). |
--release-app-id <id> | Optionnel | ID numérique de <owner>-epure-release ajouté comme unique Bypass Actor sur epure-release-immutability (main et v*). |
--require-pr-approvals <N> | 0 | Nombre d'approbations humaines requises sur dev (0 pour compatibilité mainteneur solo ; >=1 en équipe). |
--json | false | Affiche le résultat structuré complet SetupRepoResult au format JSON sur la sortie standard au lieu du résumé Markdown. |
5. Assistant Interactif GitHub Apps (setup-github-apps-wizard.sh)
bash scripts/wizards/setup-github-apps-wizard.sh \
--repo <owner>/<name> \
--llm-env <nom-env>Accompagne pas à pas un mainteneur humain dans la création des deux GitHub Apps (<owner>-epure-agent et <owner>-epure-release) via l'Approche 2 (flux local GitHub App Manifest en 1 clic) ou l'Approche 1 de repli (enregistrement manuel guidé étape par étape), crée les environnements GitHub isolés (<llm-env> — libre et agnostique du fournisseur LLM, epure-agent par défaut ; autres exemples : llm, openai, anthropic, gemini — ainsi que release), et configure les 5 secrets dans leurs environnements respectifs (EPURE_AGENT_APP_ID, EPURE_AGENT_APP_PRIVATE_KEY et LLM_API_KEY dans --env <llm-env> ; EPURE_RELEASE_APP_ID et EPURE_RELEASE_APP_PRIVATE_KEY dans --env release).

