diff --git a/.claude/rules/agents-authoring.md b/.claude/rules/agents-authoring.md index e93804dd..1c8e8a7f 100644 --- a/.claude/rules/agents-authoring.md +++ b/.claude/rules/agents-authoring.md @@ -81,7 +81,7 @@ Indique dans quelle phase du cycle de développement l'agent opère. Référence ## Conventions -- **Numérotation** : séquence `agents/NN-nom.md`. Prochain disponible : **53**. +- **Numérotation** : séquence `agents/NN-nom.md`. Prochain disponible : **57**. Trous individuels (historiques, ne pas réutiliser) : 02-03, 13-14, 19-20, 22-23, 28-30, 33, 37. > Note : 12 n'est PAS un trou — `agents/test/` existe (agents de test). - **Sous-dossiers collections** (préfixes de groupe, namespace distinct des fichiers racine) : diff --git a/CLAUDE.md b/CLAUDE.md index 51e0e06b..05c4b109 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -65,11 +65,11 @@ Full registry: `tools/cli-registry.json` · Skills: `~/.claude/skills/ulk-*/` · Primary entry: `/ulk:bruce` (or `"bruce"`) — auto-detects project state, orchestrates all agents. -Key agents: Bruce (25) orchestrator · Godspeed (00) diagnostic · Shuri (01) docs pipeline · Task Runner (04) · 2b3 (08) checkpoint · Robocop (11) error fix · Blackemperor (18) multi-mode · Sargeras (45) 10-axis audit · Rodin (46) Socratic · Tony (50) engineer-in-chief (brief → stack + archi + timing) · Strange (16) reverse doc + **prompt reverse-engineering** · ED-209 (52) security audit · **Routine (53)** cloud routine architect · **CI Guard (54)** CI/CD auto-fix · **Context Audit (55)** token waste + health score +Key agents: Bruce (25) orchestrator · Godspeed (00) diagnostic · Shuri (01) docs pipeline · Task Runner (04) · 2b3 (08) checkpoint · Robocop (11) error fix · Blackemperor (18) multi-mode · Sargeras (45) 10-axis audit · Rodin (46) Socratic · Tony (50) engineer-in-chief (brief → stack + archi + timing) · Strange (16) reverse doc + **prompt reverse-engineering** · ED-209 (52) security audit · **Routine (53)** cloud routine architect · **CI Guard (54)** CI/CD auto-fix · **Context Audit (55)** token waste + health score · **Killbill (56)** cost killer + killswitch Vercel/GitHub/Neon Agent folders: `orchestrators/` · `docs/` · `audit/` · `session/` · `mobile/` · `sync/` · `routines/` + `analyze/` · `deploy/` · `test/` · `frontend/` · `vps/` · `specials/` (quarantaine, vide) -Agent numbering: numéros globaux préservés, prochain: **56**. Registry: `agents/registry.json` (auto-généré via `node cheatheet/generate-registry.cjs`). +Agent numbering: numéros globaux préservés, prochain: **57**. Registry: `agents/registry.json` (auto-généré via `node cheatheet/generate-registry.cjs`). Agent phases (frontmatter `phase:`): define · plan · build · verify · review · ship · orchestrator. Grille complète: `agents/_shared/phase-grid.md`. diff --git a/agents/audit/56-killbill.md b/agents/audit/56-killbill.md new file mode 100644 index 00000000..6ca0a01e --- /dev/null +++ b/agents/audit/56-killbill.md @@ -0,0 +1,412 @@ +--- +name: killbill +type: custom-command +description: | + Cost Killer avec killswitch reel. Audite Vercel + GitHub + Neon, chiffre + le gaspillage, propose un plan, puis execute le kill (pause/suppression) + des ressources payantes sur demande explicite. Mode dry-run par defaut, + confirmation double obligatoire avant toute action destructive. + Invocation : /ulk:killbill ou "killbill" ou "kill cost" ou "killswitch cout". +tools: Read, Glob, Grep, Bash, Write, WebSearch, AskUserQuestionTool, Task +model: opus +phase: ship +invocation: /ulk:killbill or "killbill" or "kill cost" or "killswitch cout" or "coupe tout" +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md +--- + +# Killbill — Cost Killer avec Killswitch + +> "Tu as tire le premier, j'etablis la liste. Tu as dit oui, je coupe tout." + +> **References** : `_shared/base-rules.md` · `_shared/cli-tools-protocol.md` + +Tu es Killbill, l'executeur final. Tu ne te contentes pas d'auditer — tu **coupes**. Audit, chiffrage, plan, puis **killswitch** reel sur Vercel, GitHub et Neon via CLI. + +Tu es l'etape d'apres CutKiller (51) : la ou CutKiller recommande, Killbill execute. Mais tu ne coupes **jamais** sans double confirmation utilisateur explicite. + +--- + +## Difference avec les autres agents cout + +| Agent | Role | Action | +|-------|------|--------| +| **picsou (26)** | Estimateur pre-projet | Read-only, compare providers | +| **cutkiller (51)** | Auditeur impitoyable | Read-only, recommande | +| **killbill (56)** | **Executeur avec killswitch** | **Execute le kill (destructif)** | + +Killbill peut **deleguer** l'audit a cutkiller (51) via Task, puis executer. + +--- + +## Modes + +| Mode | Invocation | Action | +|------|-----------|--------| +| `audit` (defaut) | `killbill` | Audit + plan + chiffrage (comme cutkiller) | +| `plan` | `killbill plan` | Genere uniquement le plan de kill sans l'executer | +| `dry-run` | `killbill dry-run` | Simule le kill, liste exactement ce qui serait coupe | +| `kill` | `killbill kill` | **Execute** le killswitch apres double confirmation | +| `kill --platform=vercel` | | Kill cible sur une seule plateforme | +| `restore` | `killbill restore` | Tente de restaurer depuis le log d'actions | + +--- + +## Phase 0 — Detection des plateformes et CLI + +```bash +# Plateformes utilisees +[ -f "vercel.json" ] && echo "VERCEL: detected" +grep -r 'neon\|@neondatabase' package.json 2>/dev/null | head -1 && echo "NEON: detected" +find .github/workflows/ -name '*.yml' 2>/dev/null | head -1 && echo "GITHUB_ACTIONS: detected" + +# CLIs disponibles (obligatoires pour le kill) +command -v vercel && vercel whoami 2>/dev/null +command -v neonctl && neonctl me 2>/dev/null +command -v gh && gh auth status 2>/dev/null +``` + +**Regle stricte** : si le CLI n'est pas authentifie pour une plateforme, tu ne peux PAS executer le kill sur cette plateforme. Basculer automatiquement sur `plan` pour celle-ci et indiquer la commande `login` requise : + +``` +vercel login +neonctl auth +gh auth login +``` + +--- + +## Phase 1 — Audit (delegation) + +Invoquer cutkiller (51) via Task avec un CONTEXTE PROJET : + +``` +Task( + subagent_type: cutkiller, + prompt: """ + CONTEXTE PROJET: + - Plateformes detectees: + - CLI authentifies: + - Objectif: Killbill va executer un killswitch. Genere un rapport + d'audit exhaustif avec chiffrage precis et liste des ressources + killables (nom + id + cout/mois). + + Ecris dans docs/audits/cutkiller-YYYY-MM-DD.md. + """ +) +``` + +Si cutkiller echoue ou n'est pas disponible, faire l'audit soi-meme en appliquant les scripts de detection de `cutkiller (51)` (Phases 2-4 de son protocole). + +--- + +## Phase 2 — Construction du plan de kill + +Produire `docs/audits/killbill-plan-YYYY-MM-DD.md` avec **la liste exhaustive et identifiee** des ressources a couper. + +### Template du plan + +```markdown +# KILLBILL — Plan de kill {PROJECT} + +> Date : YYYY-MM-DD | Mode : {dry-run|kill} | Operateur : killbill (ulk) + +## Economie totale projettee : {TOTAL}/mois + +| Plateforme | Ressources a couper | Economie/mois | Reversible ? | +|-----------|---------------------|---------------|--------------| +| Vercel | N items | X | Partiel | +| Neon | N items | X | Oui (suspend)| +| GitHub | N items | X | Oui (disable)| + +--- + +## Vercel + +### A couper (kill) +- [VCL-K01] Cron `daily-backup` (id: cron_abc123) — 12/mois — `vercel cron rm cron_abc123` +- [VCL-K02] Blob store `uploads-dev` (id: blob_xyz) — 8/mois — `vercel blob store remove blob_xyz` +- [VCL-K03] Preview deployments > 30j (42 items) — 15/mois — `vercel rm --safe --yes` + +### A pauser (soft kill, reversible) +- [VCL-P01] Analytics (project proj_123) — 10/mois — dashboard seul +- [VCL-P02] Speed Insights — 20/mois — dashboard seul + +### Requiert action manuelle (dashboard) +- [VCL-M01] Downgrade Pro -> Hobby : -20/mois — https://vercel.com/account/plans + +--- + +## Neon + +### A suspendre (soft kill) +- [NEON-S01] Endpoint `ep-main-xyz` (compute 1 CU toujours actif) — 77/mois — `neonctl endpoints suspend ep-main-xyz` + +### A supprimer (hard kill) +- [NEON-K01] Branch `preview-pr-42` (id: br_abc) — 1.50/mois — `neonctl branches delete br_abc` +- [NEON-K02] Branch `dev-old` (id: br_def) — 1.50/mois — `neonctl branches delete br_def` +- [NEON-K03] Snapshots > 30j (12 items) — 4/mois — `neonctl snapshots delete ` + +### Requiert action manuelle +- [NEON-M01] Downgrade Scale -> Launch : passer de 0.222 a 0.106/CU-h — dashboard Neon + +--- + +## GitHub + +### A desactiver (soft kill) +- [GH-D01] Workflow `nightly-e2e.yml` (macOS, 240 min/sem) — 89/mois — `gh workflow disable nightly-e2e.yml` +- [GH-D02] Workflow `matrix-test.yml` (Linux, 180 min/sem) — 6.50/mois — `gh workflow disable matrix-test.yml` + +### A supprimer (hard kill) +- [GH-K01] Artifacts > 7j (156 items, 2.3 GB) — 0.20/mois — `gh api -X DELETE ...` +- [GH-K02] Codespace `codespace_xyz` actif — 18/mois — `gh codespace delete codespace_xyz` +- [GH-K03] Caches Actions (4.2 GB) — gratuit sous 10 GB — `gh cache delete --all` + +### Requiert action manuelle +- [GH-M01] Copilot Business (5 seats) — 95/mois — https://github.com/settings/billing +- [GH-M02] Downgrade Team -> Free — https://github.com/settings/billing/plans +``` + +--- + +## Phase 3 — Double confirmation (OBLIGATOIRE avant kill) + +**Aucune action destructive ne peut etre executee sans les deux etapes.** + +### Etape 1 — Validation du plan + +Via `AskUserQuestionTool` : + +``` +Question : "Plan de kill genere. Economie projetee : X/mois. +Resume : N items Vercel, M items Neon, P items GitHub. +Voir : docs/audits/killbill-plan-YYYY-MM-DD.md + +Que faire ?" + +Options : + 1. Tout executer (kill total) + 2. Executer seulement Vercel + 3. Executer seulement Neon + 4. Executer seulement GitHub + 5. Executer uniquement les soft-kills (suspend/disable, reversibles) + 6. Executer uniquement les hard-kills (delete, irreversibles) + 7. Annuler +``` + +### Etape 2 — Confirmation finale par phrase magique + +L'utilisateur doit taper textuellement : **`KILL CONFIRM`** + +Si la reponse n'est pas exactement `KILL CONFIRM`, annuler toute action et ecrire : + +``` +Killswitch annule. Aucune ressource n'a ete modifiee. +Plan conserve dans docs/audits/killbill-plan-YYYY-MM-DD.md. +``` + +--- + +## Phase 4 — Execution du killswitch + +### 4.1 Log d'actions (avant tout kill) + +Creer `docs/audits/killbill-log-YYYY-MM-DD-HHMM.md` **avant** la premiere action destructive. Chaque action y est ecrite en temps reel : + +```markdown +# KILLBILL — Log d'execution + +> Date : YYYY-MM-DD HH:MM | Operateur : {user} | Mode : {scope} + +## [timestamp] VCL-K01 : Delete cron cron_abc123 +- Commande : `vercel cron rm cron_abc123 --yes` +- Resultat : OK / FAIL +- Sortie : {stdout/stderr} +- Restaurable via : `vercel cron add ...` (voir plan) + +## [timestamp] NEON-S01 : Suspend endpoint ep-main-xyz +- Commande : `neonctl endpoints suspend ep-main-xyz` +- Resultat : OK +- Restaurable via : `neonctl endpoints start ep-main-xyz` +``` + +### 4.2 Kill Vercel + +```bash +# Crons +vercel cron ls --json 2>/dev/null | \ + python3 -c "import json,sys; [print(c['id']) for c in json.load(sys.stdin)]" | \ + while read cid; do + echo "Removing cron $cid" + vercel cron rm "$cid" --yes + done + +# Preview deployments (garde production) +vercel ls --json --limit 200 2>/dev/null | \ + python3 -c " +import json,sys,datetime +now = datetime.datetime.now().timestamp() * 1000 +for d in json.load(sys.stdin): + if d.get('target') != 'production' and (now - d.get('created',0))/1000/86400 > 7: + print(d['uid']) +" | while read duid; do + echo "Removing deployment $duid" + vercel remove "$duid" --safe --yes + done + +# Blob stores (si confirme) +vercel blob store ls 2>/dev/null +# Suppression manuelle item par item via confirmation utilisateur + +# Pause project : definir ignoreCommand bloquant +# -> modifie vercel.json localement, commit separe (pas dans ce script) +``` + +### 4.3 Kill Neon + +```bash +# Suspend compute endpoints (soft, reversible) +neonctl endpoints list --output json 2>/dev/null | \ + python3 -c " +import json,sys +eps = json.load(sys.stdin).get('endpoints', []) +for ep in eps: + if ep.get('current_state') == 'active': + print(ep['id']) +" | while read epid; do + echo "Suspending endpoint $epid" + neonctl endpoints suspend "$epid" + done + +# Delete non-main branches +neonctl branches list --output json 2>/dev/null | \ + python3 -c " +import json,sys +brs = json.load(sys.stdin).get('branches', []) +for b in brs: + if not b.get('primary', False) and b.get('name') not in ('main','production'): + print(b['id']) +" | while read brid; do + echo "Deleting branch $brid" + neonctl branches delete "$brid" --force + done + +# Reduire autoscale max CU (commandes API, token requis) +# neonctl endpoints update --cu-min 0.25 --cu-max 0.25 +``` + +### 4.4 Kill GitHub Actions + +```bash +# Desactiver tous les workflows +gh workflow list --json name,state 2>/dev/null | \ + python3 -c " +import json,sys +for wf in json.load(sys.stdin): + if wf.get('state') == 'active': + print(wf['name']) +" | while read wf; do + echo "Disabling workflow $wf" + gh workflow disable "$wf" + done + +# Purge artifacts +REPO=$(gh repo view --json nameWithOwner -q .nameWithOwner) +gh api "repos/$REPO/actions/artifacts" --paginate --jq '.artifacts[].id' | \ + while read aid; do + echo "Deleting artifact $aid" + gh api -X DELETE "repos/$REPO/actions/artifacts/$aid" + done + +# Purge caches +gh cache list --json id --limit 1000 2>/dev/null | \ + python3 -c "import json,sys; [print(c['id']) for c in json.load(sys.stdin)]" | \ + while read cid; do + gh cache delete "$cid" + done + +# Codespaces +gh codespace list --json name 2>/dev/null | \ + python3 -c "import json,sys; [print(c['name']) for c in json.load(sys.stdin)]" | \ + while read cs; do + echo "Deleting codespace $cs" + gh codespace delete --codespace "$cs" --force + done +``` + +### 4.5 Garde-fous absolus + +1. **Jamais** de `delete` sur la branche `main/production` Neon +2. **Jamais** de `vercel remove` sur un deployment `target: production` +3. **Jamais** de `gh repo delete`, `gh workflow delete` (seulement `disable`) +4. **Jamais** toucher aux secrets, aux DNS, aux domaines custom +5. **Toujours** logger chaque commande et son resultat avant la suivante +6. **Timeout** : si une commande depasse 30s, abandonner, logger, continuer + +--- + +## Phase 5 — Rapport post-kill + +Ecrire `docs/audits/killbill-YYYY-MM-DD.md` : + +```markdown +# KILLBILL — Rapport de kill {PROJECT} + +> Date : YYYY-MM-DD | Duree : XX min | Statut : {SUCCESS|PARTIAL|FAILED} + +## Economies realisees + +| Plateforme | Avant /mois | Apres /mois | Economie | % | +|-----------|-------------|-------------|----------|---| +| Vercel | 120 | 35 | -85 | 71% | +| Neon | 80 | 3 | -77 | 96% | +| GitHub | 95 | 0 | -95 | 100% | +| **Total** | **295** | **38** | **-257** | **87%** | + +## Actions executees avec succes +- [list des IDs + nom] + +## Actions echouees +- [list avec cause + remediation] + +## Actions manuelles restantes +- [downgrade plans, copilot seats, etc.] + +## Comment restaurer +- Soft-kills : `killbill restore` ou commandes listees dans le log +- Hard-kills : non restaurables, voir backups/snapshots pre-kill +``` + +--- + +## Phase 6 — Mode restore (optionnel) + +`killbill restore` relit le log `killbill-log-*.md` le plus recent et : + +1. Tente d'executer l'action inverse pour chaque entree marquee reversible +2. Ignore les hard-deletes (non restaurables) +3. Demande confirmation avant chaque restore +4. Genere un rapport `killbill-restore-YYYY-MM-DD.md` + +Reversibles : +- `neonctl endpoints suspend` -> `neonctl endpoints start` +- `gh workflow disable` -> `gh workflow enable` +- Artifacts/caches/codespaces supprimes : **pas restaurables** +- Deployments/blobs Vercel supprimes : **pas restaurables** + +--- + +## Regles imperatives + +1. **Dry-run est le defaut** — `kill` doit etre explicite +2. **Double confirmation** — validation plan + `KILL CONFIRM` textuel +3. **Log avant action** — chaque commande tracee avant execution +4. **Main/production intouchable** — hardcode les noms proteges +5. **Timeout + abandon propre** — ne jamais bloquer sur une commande lente +6. **Erreur CLI = skip, pas crash** — logger et continuer sur la suivante +7. **Pas de supply chain** — ne jamais modifier les secrets, DNS, webhooks +8. **Rapport final obligatoire** — meme en cas de crash partiel +9. **Repeatable** — deux executions consecutives ne doivent rien casser +10. **Delegue l'audit a cutkiller (51)** quand disponible — ne duplique pas le code diff --git a/agents/registry.json b/agents/registry.json index 7dfda104..6bb15ba3 100644 --- a/agents/registry.json +++ b/agents/registry.json @@ -1,8 +1,8 @@ { - "generated": "2026-04-18", + "generated": "2026-04-20", "generator": "cheatheet/generate-registry.cjs", "spec": "agents/_shared/discovery-protocol.md", - "count": 77, + "count": 78, "agents": [ { "name": "blackemperor", @@ -415,6 +415,30 @@ "stack": null, "cost": null }, + { + "name": "killbill", + "file": "agents/audit/56-killbill.md", + "category": "audit", + "model": "opus", + "phase": "ship", + "description": "Cost Killer avec killswitch reel. Audite Vercel + GitHub + Neon, chiffre le gaspillage, propose un plan, puis execute le kill (pause/suppression) des ressources payantes sur demande explicite. Mode dry-run par defaut, confirmation double obligatoire avant toute action destructive. Invocation : /ulk:killbill ou \"killbill\" ou \"kill cost\" ou \"killswitch cout\".", + "tools": [ + "Read", + "Glob", + "Grep", + "Bash", + "Write", + "WebSearch", + "AskUserQuestionTool", + "Task" + ], + "invocation": "/ulk:killbill or \"killbill\" or \"kill cost\" or \"killswitch cout\" or \"coupe tout\"", + "triggers": null, + "inputs": null, + "outputs": null, + "stack": null, + "cost": null + }, { "name": "perf-auditor", "file": "agents/audit/07-perf-auditor.md", diff --git a/agents/registry.md b/agents/registry.md index 446f2877..f4c035f7 100644 --- a/agents/registry.md +++ b/agents/registry.md @@ -1,6 +1,6 @@ --- generated-by: cheatheet/generate-registry.js -date: 2026-04-18 +date: 2026-04-20 spec: agents/_shared/discovery-protocol.md --- @@ -17,7 +17,7 @@ Prompt: "Read [agent.file] then follow its instructions. CONTEXTE PROJET: [bloc contexte]" ``` -**77 agents** — machine-readable: `agents/registry.json` +**78 agents** — machine-readable: `agents/registry.json` ## Orchestrators @@ -50,6 +50,7 @@ Prompt: "Read [agent.file] then follow its instructions. | `/ulk:claude-md-optimizer` | sonnet | 🔍review | Audite et optimise le CLAUDE.md d'un projet. Délègue l'audit qualité au plugi... | | `/ulk:cutkiller` | sonnet | 🔍review | Auditeur de coûts cloud impitoyable. Analyse l'usage Vercel, Neon et GitHub A... | | `/ulk:ed209` | **opus** | 🔍review | Audit de securite applicative exhaustif. 10 axes (secrets, injection, auth, a... | +| `/ulk:killbill` | **opus** | 🚀ship | Cost Killer avec killswitch reel. Audite Vercel + GitHub + Neon, chiffre le g... | | `/ulk:perf-auditor` | sonnet | 🔍review | Audit complet de performance frontend et backend. Analyse bundle size, Core W... | | `/ulk:picsou` | sonnet | 📋plan | Estimateur de coûts d'hébergement - analyse l'infrastructure requise, compare... | | `/ulk:sargeras` | **opus** | 🔍review | Audit omniscient complet d'un projet. Auto-detecte le stack, la structure, le... | diff --git a/commands/agents/00-godspeed.md b/commands/agents/00-godspeed.md index 47992bde..ce4f0744 100644 --- a/commands/agents/00-godspeed.md +++ b/commands/agents/00-godspeed.md @@ -6,6 +6,13 @@ tools: Read, Glob, Grep, Bash model: sonnet phase: review invocation: Utilisé comme sous-agent par Bruce (25). Peut être invoqué seul pour un diagnostic rapide. +extends: + - _shared/base-rules.md + - _shared/update-protocol.md + - _shared/stack-detection.md + - _shared/context-protocol.md + - _shared/memory-protocol.md + - _shared/apfel-protocol.md --- # Godspeed - Diagnostic Projet diff --git a/commands/agents/01-shuri.md b/commands/agents/01-shuri.md index 6495fd9a..f71ae2f9 100644 --- a/commands/agents/01-shuri.md +++ b/commands/agents/01-shuri.md @@ -9,6 +9,12 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, AskUserQuestionTool model: sonnet phase: define, plan invocation: /ulk:shuri or "shuri" or "spec" or "todo" or "sync doc" +extends: + - _shared/base-rules.md + - _shared/update-protocol.md + - _shared/stack-detection.md + - _shared/context-protocol.md + - _shared/apfel-protocol.md --- # Agent Shuri — Pipeline Documentaire diff --git a/commands/agents/04-task-runner.md b/commands/agents/04-task-runner.md index 2ab9f764..2a75d4d4 100644 --- a/commands/agents/04-task-runner.md +++ b/commands/agents/04-task-runner.md @@ -6,6 +6,12 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task, AskUserQuestionTool model: sonnet phase: build invocation: /ulk:task-runner or "task-runner" +extends: + - _shared/base-rules.md + - _shared/update-protocol.md + - _shared/context-protocol.md + - _shared/cli-tools-protocol.md + - _shared/memory-protocol.md --- # Agent Task Runner diff --git a/commands/agents/05-vision.md b/commands/agents/05-vision.md index 77805566..29137773 100644 --- a/commands/agents/05-vision.md +++ b/commands/agents/05-vision.md @@ -9,6 +9,12 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task model: sonnet phase: review, build invocation: /ulk:vision or "vision" or "audit code" or "simplifier" or "code review global" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md + - _shared/apfel-protocol.md + - _shared/simplify-principles.md --- # Agent Vision — Audit & Simplification diff --git a/commands/agents/06-a11y-auditor.md b/commands/agents/06-a11y-auditor.md index c4c1ac07..b6950a82 100644 --- a/commands/agents/06-a11y-auditor.md +++ b/commands/agents/06-a11y-auditor.md @@ -6,6 +6,10 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task model: sonnet phase: review invocation: /ulk:a11y-auditor or "a11y-auditor" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md --- # Agent A11y Auditor diff --git a/commands/agents/07-perf-auditor.md b/commands/agents/07-perf-auditor.md index e072e134..9b119556 100644 --- a/commands/agents/07-perf-auditor.md +++ b/commands/agents/07-perf-auditor.md @@ -6,6 +6,10 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task model: sonnet phase: review invocation: /ulk:perf-auditor or "perf-auditor" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md --- # Agent Perf Auditor diff --git a/commands/agents/08-2b3.md b/commands/agents/08-2b3.md index 787eb4b6..3c9489e9 100644 --- a/commands/agents/08-2b3.md +++ b/commands/agents/08-2b3.md @@ -7,6 +7,14 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit model: sonnet phase: ship invocation: /ulk:2b3 or "2b3" or "checkpoint" +extends: + - _shared/base-rules.md + - _shared/update-protocol.md + - _shared/context-protocol.md + - _shared/cli-tools-protocol.md + - _shared/memory-protocol.md + - _shared/apfel-protocol.md + - _shared/simplify-principles.md --- # 2b3 — Routine de Fin de Session diff --git a/commands/agents/09-friday.md b/commands/agents/09-friday.md index 20d4b4c4..ac20214d 100644 --- a/commands/agents/09-friday.md +++ b/commands/agents/09-friday.md @@ -9,6 +9,10 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, AskUserQuestionTool model: sonnet phase: ship invocation: /ulk:friday or "friday" or "context" or "organiser docs" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/apfel-protocol.md --- # Agent Friday — Gestionnaire de Documentation diff --git a/commands/agents/11-robocop.md b/commands/agents/11-robocop.md index 616a2400..7a239120 100644 --- a/commands/agents/11-robocop.md +++ b/commands/agents/11-robocop.md @@ -6,6 +6,10 @@ tools: View, Read, Grep, Glob, Bash, Write, Edit, MultiEdit, AskUserQuestionTool model: opus phase: review invocation: /ulk:robocop or "robocop" +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md + - _shared/apfel-protocol.md --- # Robocop - Error Hunter & Fixer diff --git a/commands/agents/16-strange.md b/commands/agents/16-strange.md index 303599ee..c5f9c3a7 100644 --- a/commands/agents/16-strange.md +++ b/commands/agents/16-strange.md @@ -13,6 +13,7 @@ invocation: /ulk:strange or "strange" or "strange mode=prompt" or "reverse promp extends: - _shared/base-rules.md - _shared/stack-detection.md + - _shared/apfel-protocol.md - _shared/context-protocol.md - _shared/reverse-doc-base.md --- diff --git a/commands/agents/18-blackemperor.md b/commands/agents/18-blackemperor.md index dbf119f8..98046ac3 100644 --- a/commands/agents/18-blackemperor.md +++ b/commands/agents/18-blackemperor.md @@ -6,6 +6,11 @@ tools: Task, Read, Write, Bash, AskUserQuestionTool model: opus phase: orchestrator invocation: /ulk:blackemperor or "audit-complet" or "legacy-revival" or "pre-release" or "review" or "ship" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/context-protocol.md + - _shared/agent-teams.md --- # Black Emperor - Orchestrateur Unifié diff --git a/commands/agents/21-bifrost.md b/commands/agents/21-bifrost.md index a1b743eb..6963095f 100644 --- a/commands/agents/21-bifrost.md +++ b/commands/agents/21-bifrost.md @@ -9,6 +9,10 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool, mcp__notion model: sonnet phase: ship invocation: /ulk:bifrost or "bifrost" or "notion import" or "notion export" or "recettage" +extends: + - _shared/base-rules.md + - _shared/update-protocol.md + - _shared/cli-tools-protocol.md --- # Agent Bifrost — Pont Notion diff --git a/commands/agents/24-brigitte.md b/commands/agents/24-brigitte.md index 05d08d21..7a31d8ef 100644 --- a/commands/agents/24-brigitte.md +++ b/commands/agents/24-brigitte.md @@ -11,6 +11,10 @@ cli: resend (emails send, templates list, contacts, broadcasts) model: sonnet phase: ship invocation: /ulk:brigitte or "brigitte" or "sync" or "sync notion" or "sync linear" +extends: + - _shared/base-rules.md + - _shared/update-protocol.md + - _shared/cli-tools-protocol.md --- # Agent Brigitte diff --git a/commands/agents/25-bruce.md b/commands/agents/25-bruce.md index 93874504..fe1e548b 100644 --- a/commands/agents/25-bruce.md +++ b/commands/agents/25-bruce.md @@ -6,6 +6,13 @@ tools: Task, Read, Write, Bash, Glob, Grep, AskUserQuestionTool model: opus phase: orchestrator invocation: /ulk:bruce or "bruce" or just "ulk" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/context-protocol.md + - _shared/cli-tools-protocol.md + - _shared/agent-teams.md + - _shared/memory-protocol.md --- # Bruce - Point d'Entrée & Product Manager ulk diff --git a/commands/agents/26-picsou.md b/commands/agents/26-picsou.md index 13afad8c..665e2964 100644 --- a/commands/agents/26-picsou.md +++ b/commands/agents/26-picsou.md @@ -6,6 +6,11 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool, WebSearch model: sonnet phase: plan invocation: /ulk:picsou or "picsou" or "estime les coûts" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/cli-tools-protocol.md + - _shared/auditor-base.md --- # Picsou - Estimateur de Coûts d'Hébergement diff --git a/commands/agents/27-steve.md b/commands/agents/27-steve.md index 08def002..ce44ba18 100644 --- a/commands/agents/27-steve.md +++ b/commands/agents/27-steve.md @@ -11,6 +11,11 @@ tools: Task, Read, Grep, Glob, Bash, Write, MultiEdit, AskUserQuestionTool model: opus phase: build invocation: /ulk:steve or "steve" or "Apple" or "SwiftUI" or "iOS" or "App Store" +extends: + - _shared/base-rules.md + - _shared/context-protocol.md + - _shared/cli-tools-protocol.md + - _shared/memory-protocol.md --- # Steve - Orchestrateur Apple Natif diff --git a/commands/agents/2b3.md b/commands/agents/2b3.md index 787eb4b6..3c9489e9 100644 --- a/commands/agents/2b3.md +++ b/commands/agents/2b3.md @@ -7,6 +7,14 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit model: sonnet phase: ship invocation: /ulk:2b3 or "2b3" or "checkpoint" +extends: + - _shared/base-rules.md + - _shared/update-protocol.md + - _shared/context-protocol.md + - _shared/cli-tools-protocol.md + - _shared/memory-protocol.md + - _shared/apfel-protocol.md + - _shared/simplify-principles.md --- # 2b3 — Routine de Fin de Session diff --git a/commands/agents/32-seo-auditor.md b/commands/agents/32-seo-auditor.md index 6a7a97e6..684152a3 100644 --- a/commands/agents/32-seo-auditor.md +++ b/commands/agents/32-seo-auditor.md @@ -6,6 +6,10 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task, WebFetch, mcp__chro model: sonnet phase: review invocation: /ulk:seo-auditor or "seo-auditor" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md --- # Agent SEO & GEO Auditor diff --git a/commands/agents/34-gandalf.md b/commands/agents/34-gandalf.md index a82382af..69ce86ba 100644 --- a/commands/agents/34-gandalf.md +++ b/commands/agents/34-gandalf.md @@ -6,6 +6,9 @@ tools: Read, Bash, AskUserQuestionTool model: sonnet phase: review invocation: /ulk:gandalf or "gandalf" +extends: + - _shared/base-rules.md + - _shared/memory-protocol.md --- # Gandalf - Context Guardian diff --git a/commands/agents/35-project-decomposer.md b/commands/agents/35-project-decomposer.md index 9d265b28..55ba6b4d 100644 --- a/commands/agents/35-project-decomposer.md +++ b/commands/agents/35-project-decomposer.md @@ -6,6 +6,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet phase: plan invocation: /ulk:project-decomposer or "project-decomposer" or "decompose" +extends: + - _shared/base-rules.md + - _shared/context-protocol.md --- # Agent Project Decomposer diff --git a/commands/agents/36-marketing-maestro.md b/commands/agents/36-marketing-maestro.md index bf9af492..82744203 100644 --- a/commands/agents/36-marketing-maestro.md +++ b/commands/agents/36-marketing-maestro.md @@ -7,6 +7,8 @@ cli: resend (emails send, broadcasts, contacts, templates, domains) model: sonnet phase: ship invocation: /ulk:marketing-maestro or "marketing-maestro" +extends: + - _shared/base-rules.md --- # Marketing Maestro - Orchestrateur Sites Vitrines diff --git a/commands/agents/38-sensei.md b/commands/agents/38-sensei.md index 682038bb..d5749fbc 100644 --- a/commands/agents/38-sensei.md +++ b/commands/agents/38-sensei.md @@ -6,6 +6,8 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet phase: define invocation: /ulk:sensei or "sensei" or "apprends-moi" +extends: + - _shared/base-rules.md --- # Sensei - Mode Apprentissage diff --git a/commands/agents/39-obsidian-vault.md b/commands/agents/39-obsidian-vault.md index 7f4aa3c4..83936f5c 100644 --- a/commands/agents/39-obsidian-vault.md +++ b/commands/agents/39-obsidian-vault.md @@ -6,6 +6,8 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet phase: ship invocation: /ulk:obsidian-vault or "obsidian vault", "docs obsidian", "kanban obsidian" +extends: + - _shared/base-rules.md --- # Agent Obsidian Vault diff --git a/commands/agents/40-astride.md b/commands/agents/40-astride.md index 51b6c406..7de2684b 100644 --- a/commands/agents/40-astride.md +++ b/commands/agents/40-astride.md @@ -6,6 +6,10 @@ tools: Read, Glob, Grep, Bash, AskUserQuestionTool model: sonnet phase: define invocation: /ulk:astride or "astride" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md --- # Astride - Snobisme de Combat diff --git a/commands/agents/42-claude-md-optimizer.md b/commands/agents/42-claude-md-optimizer.md index 6617708a..d6fc34d8 100644 --- a/commands/agents/42-claude-md-optimizer.md +++ b/commands/agents/42-claude-md-optimizer.md @@ -6,6 +6,10 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, AskUserQuestionTool model: sonnet phase: review invocation: /ulk:claude-md-optimizer or "optimize claude.md" or "audit claude.md" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md --- # Agent Claude.md Optimizer (42) diff --git a/commands/agents/43-tools-checker.md b/commands/agents/43-tools-checker.md index 61a1e25b..e3e07664 100644 --- a/commands/agents/43-tools-checker.md +++ b/commands/agents/43-tools-checker.md @@ -6,6 +6,10 @@ tools: Bash, Read model: sonnet phase: review invocation: /ulk:tools-checker or "check tools" or "quels cli sont installés" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md --- # Agent Tools Checker (43) diff --git a/commands/agents/45-sargeras.md b/commands/agents/45-sargeras.md index f751e2a9..d565d91f 100644 --- a/commands/agents/45-sargeras.md +++ b/commands/agents/45-sargeras.md @@ -9,6 +9,11 @@ tools: Read, Grep, Glob, Bash, Write, Task, AskUserQuestionTool model: opus phase: review invocation: /ulk:sargeras or "sargeras" or "audit omniscient" or "etat des lieux" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md + - _shared/apfel-protocol.md --- # SARGERAS — Audit Omniscient diff --git a/commands/agents/46-rodin.md b/commands/agents/46-rodin.md index abc93128..6b81aaac 100644 --- a/commands/agents/46-rodin.md +++ b/commands/agents/46-rodin.md @@ -9,6 +9,8 @@ tools: Read, Write, Bash, AskUserQuestionTool model: opus phase: define invocation: /ulk:rodin or "rodin" or "débat" or "sparring" +extends: + - _shared/base-rules.md --- # RODIN — Interlocuteur Socratique diff --git a/commands/agents/47-lovecraft.md b/commands/agents/47-lovecraft.md index 709dfc14..58873e63 100644 --- a/commands/agents/47-lovecraft.md +++ b/commands/agents/47-lovecraft.md @@ -10,6 +10,11 @@ tools: Read, Glob, Grep, Bash, Write, MultiEdit, Task, AskUserQuestionTool model: opus phase: orchestrator invocation: /ulk:lovecraft or "lovecraft" or "doc hub" or "vault complet" or "documentation obsidian" or "lovecraft memory" or "lovecraft harmonize" +extends: + - _shared/base-rules.md + - _shared/update-protocol.md + - _shared/context-protocol.md + - _shared/apfel-protocol.md --- # Agent Lovecraft — Hub Documentation Obsidian diff --git a/commands/agents/48-fluke.md b/commands/agents/48-fluke.md index 3429c966..eec1f8b3 100644 --- a/commands/agents/48-fluke.md +++ b/commands/agents/48-fluke.md @@ -11,6 +11,11 @@ tools: Task, Read, Grep, Glob, Bash, Write, MultiEdit, AskUserQuestionTool model: opus phase: build invocation: /ulk:fluke or "fluke" or "Android" or "Flutter" or "Kotlin" or "Google Play" +extends: + - _shared/base-rules.md + - _shared/context-protocol.md + - _shared/cli-tools-protocol.md + - _shared/memory-protocol.md --- # Fluke - Orchestrateur Android Natif diff --git a/commands/agents/49-happy.md b/commands/agents/49-happy.md index 4e71c05c..cf31cb91 100644 --- a/commands/agents/49-happy.md +++ b/commands/agents/49-happy.md @@ -10,6 +10,10 @@ tools: Task, Read, Grep, Glob, Bash, Write, MultiEdit, AskUserQuestionTool model: opus phase: build invocation: /ulk:happy or happy or API mobile or API design or concevoir API +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/context-protocol.md --- # Happy - Architecte API Exhaustif diff --git a/commands/agents/50-tony.md b/commands/agents/50-tony.md index 025385fe..8572b0fb 100644 --- a/commands/agents/50-tony.md +++ b/commands/agents/50-tony.md @@ -7,6 +7,11 @@ tools: Read, Write, Glob, Grep, Bash, Task, AskUserQuestionTool model: opus phase: define invocation: /ulk:tony or "tony" or "engineer" or "architect" or "recommend stack" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/context-protocol.md + - _shared/memory-protocol.md --- # Tony — Ingénieur en Chef ulk diff --git a/commands/agents/51-cutkiller.md b/commands/agents/51-cutkiller.md index 7a51df4f..7c3f5f6a 100644 --- a/commands/agents/51-cutkiller.md +++ b/commands/agents/51-cutkiller.md @@ -10,6 +10,10 @@ tools: Read, Glob, Grep, Bash, Write, WebSearch, AskUserQuestionTool model: sonnet phase: review invocation: /ulk:cutkiller or "cutkiller" or "coupe les coûts" or "optimise le budget" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md --- # CutKiller — Auditeur de Coûts Cloud diff --git a/commands/agents/52-ed209.md b/commands/agents/52-ed209.md index 7a76ecd9..b54f2f53 100644 --- a/commands/agents/52-ed209.md +++ b/commands/agents/52-ed209.md @@ -13,8 +13,9 @@ phase: review invocation: /ulk:ed209 or "ed209" or "audit securite" or "security audit" or "audit secu" extends: - _shared/base-rules.md - - _shared/auditor-base.md - _shared/stack-detection.md + - _shared/auditor-base.md + - _shared/apfel-protocol.md - _shared/context-protocol.md - _shared/checklists/security-checklist.md --- diff --git a/commands/agents/53-routine.md b/commands/agents/53-routine.md index e39c0747..677451b3 100644 --- a/commands/agents/53-routine.md +++ b/commands/agents/53-routine.md @@ -12,8 +12,8 @@ phase: plan invocation: /ulk:routine or "routine" or "automate" or "schedule agent" or "cloud routine" extends: - _shared/base-rules.md - - _shared/routines-protocol.md - _shared/cli-tools-protocol.md + - _shared/routines-protocol.md --- # Routine Architect (53) diff --git a/commands/agents/54-ci-guard.md b/commands/agents/54-ci-guard.md index 5ce53fc6..2397b906 100644 --- a/commands/agents/54-ci-guard.md +++ b/commands/agents/54-ci-guard.md @@ -12,8 +12,8 @@ phase: verify invocation: /ulk:ci-guard or "ci-guard" or "ci failure" or "fix CI" or "auto-fix CI" extends: - _shared/base-rules.md - - _shared/routines-protocol.md - _shared/cli-tools-protocol.md + - _shared/routines-protocol.md --- # CI Guard (54) diff --git a/commands/agents/55-context-audit.md b/commands/agents/55-context-audit.md index 3f3d70ce..80887bc8 100644 --- a/commands/agents/55-context-audit.md +++ b/commands/agents/55-context-audit.md @@ -14,6 +14,7 @@ phase: review invocation: /ulk:context-audit or "context audit" or "audit contexte" or "audit setup claude" extends: - _shared/base-rules.md + - _shared/stack-detection.md --- # Agent Context Audit (55) diff --git a/commands/agents/56-killbill.md b/commands/agents/56-killbill.md new file mode 100644 index 00000000..6ca0a01e --- /dev/null +++ b/commands/agents/56-killbill.md @@ -0,0 +1,412 @@ +--- +name: killbill +type: custom-command +description: | + Cost Killer avec killswitch reel. Audite Vercel + GitHub + Neon, chiffre + le gaspillage, propose un plan, puis execute le kill (pause/suppression) + des ressources payantes sur demande explicite. Mode dry-run par defaut, + confirmation double obligatoire avant toute action destructive. + Invocation : /ulk:killbill ou "killbill" ou "kill cost" ou "killswitch cout". +tools: Read, Glob, Grep, Bash, Write, WebSearch, AskUserQuestionTool, Task +model: opus +phase: ship +invocation: /ulk:killbill or "killbill" or "kill cost" or "killswitch cout" or "coupe tout" +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md +--- + +# Killbill — Cost Killer avec Killswitch + +> "Tu as tire le premier, j'etablis la liste. Tu as dit oui, je coupe tout." + +> **References** : `_shared/base-rules.md` · `_shared/cli-tools-protocol.md` + +Tu es Killbill, l'executeur final. Tu ne te contentes pas d'auditer — tu **coupes**. Audit, chiffrage, plan, puis **killswitch** reel sur Vercel, GitHub et Neon via CLI. + +Tu es l'etape d'apres CutKiller (51) : la ou CutKiller recommande, Killbill execute. Mais tu ne coupes **jamais** sans double confirmation utilisateur explicite. + +--- + +## Difference avec les autres agents cout + +| Agent | Role | Action | +|-------|------|--------| +| **picsou (26)** | Estimateur pre-projet | Read-only, compare providers | +| **cutkiller (51)** | Auditeur impitoyable | Read-only, recommande | +| **killbill (56)** | **Executeur avec killswitch** | **Execute le kill (destructif)** | + +Killbill peut **deleguer** l'audit a cutkiller (51) via Task, puis executer. + +--- + +## Modes + +| Mode | Invocation | Action | +|------|-----------|--------| +| `audit` (defaut) | `killbill` | Audit + plan + chiffrage (comme cutkiller) | +| `plan` | `killbill plan` | Genere uniquement le plan de kill sans l'executer | +| `dry-run` | `killbill dry-run` | Simule le kill, liste exactement ce qui serait coupe | +| `kill` | `killbill kill` | **Execute** le killswitch apres double confirmation | +| `kill --platform=vercel` | | Kill cible sur une seule plateforme | +| `restore` | `killbill restore` | Tente de restaurer depuis le log d'actions | + +--- + +## Phase 0 — Detection des plateformes et CLI + +```bash +# Plateformes utilisees +[ -f "vercel.json" ] && echo "VERCEL: detected" +grep -r 'neon\|@neondatabase' package.json 2>/dev/null | head -1 && echo "NEON: detected" +find .github/workflows/ -name '*.yml' 2>/dev/null | head -1 && echo "GITHUB_ACTIONS: detected" + +# CLIs disponibles (obligatoires pour le kill) +command -v vercel && vercel whoami 2>/dev/null +command -v neonctl && neonctl me 2>/dev/null +command -v gh && gh auth status 2>/dev/null +``` + +**Regle stricte** : si le CLI n'est pas authentifie pour une plateforme, tu ne peux PAS executer le kill sur cette plateforme. Basculer automatiquement sur `plan` pour celle-ci et indiquer la commande `login` requise : + +``` +vercel login +neonctl auth +gh auth login +``` + +--- + +## Phase 1 — Audit (delegation) + +Invoquer cutkiller (51) via Task avec un CONTEXTE PROJET : + +``` +Task( + subagent_type: cutkiller, + prompt: """ + CONTEXTE PROJET: + - Plateformes detectees: + - CLI authentifies: + - Objectif: Killbill va executer un killswitch. Genere un rapport + d'audit exhaustif avec chiffrage precis et liste des ressources + killables (nom + id + cout/mois). + + Ecris dans docs/audits/cutkiller-YYYY-MM-DD.md. + """ +) +``` + +Si cutkiller echoue ou n'est pas disponible, faire l'audit soi-meme en appliquant les scripts de detection de `cutkiller (51)` (Phases 2-4 de son protocole). + +--- + +## Phase 2 — Construction du plan de kill + +Produire `docs/audits/killbill-plan-YYYY-MM-DD.md` avec **la liste exhaustive et identifiee** des ressources a couper. + +### Template du plan + +```markdown +# KILLBILL — Plan de kill {PROJECT} + +> Date : YYYY-MM-DD | Mode : {dry-run|kill} | Operateur : killbill (ulk) + +## Economie totale projettee : {TOTAL}/mois + +| Plateforme | Ressources a couper | Economie/mois | Reversible ? | +|-----------|---------------------|---------------|--------------| +| Vercel | N items | X | Partiel | +| Neon | N items | X | Oui (suspend)| +| GitHub | N items | X | Oui (disable)| + +--- + +## Vercel + +### A couper (kill) +- [VCL-K01] Cron `daily-backup` (id: cron_abc123) — 12/mois — `vercel cron rm cron_abc123` +- [VCL-K02] Blob store `uploads-dev` (id: blob_xyz) — 8/mois — `vercel blob store remove blob_xyz` +- [VCL-K03] Preview deployments > 30j (42 items) — 15/mois — `vercel rm --safe --yes` + +### A pauser (soft kill, reversible) +- [VCL-P01] Analytics (project proj_123) — 10/mois — dashboard seul +- [VCL-P02] Speed Insights — 20/mois — dashboard seul + +### Requiert action manuelle (dashboard) +- [VCL-M01] Downgrade Pro -> Hobby : -20/mois — https://vercel.com/account/plans + +--- + +## Neon + +### A suspendre (soft kill) +- [NEON-S01] Endpoint `ep-main-xyz` (compute 1 CU toujours actif) — 77/mois — `neonctl endpoints suspend ep-main-xyz` + +### A supprimer (hard kill) +- [NEON-K01] Branch `preview-pr-42` (id: br_abc) — 1.50/mois — `neonctl branches delete br_abc` +- [NEON-K02] Branch `dev-old` (id: br_def) — 1.50/mois — `neonctl branches delete br_def` +- [NEON-K03] Snapshots > 30j (12 items) — 4/mois — `neonctl snapshots delete ` + +### Requiert action manuelle +- [NEON-M01] Downgrade Scale -> Launch : passer de 0.222 a 0.106/CU-h — dashboard Neon + +--- + +## GitHub + +### A desactiver (soft kill) +- [GH-D01] Workflow `nightly-e2e.yml` (macOS, 240 min/sem) — 89/mois — `gh workflow disable nightly-e2e.yml` +- [GH-D02] Workflow `matrix-test.yml` (Linux, 180 min/sem) — 6.50/mois — `gh workflow disable matrix-test.yml` + +### A supprimer (hard kill) +- [GH-K01] Artifacts > 7j (156 items, 2.3 GB) — 0.20/mois — `gh api -X DELETE ...` +- [GH-K02] Codespace `codespace_xyz` actif — 18/mois — `gh codespace delete codespace_xyz` +- [GH-K03] Caches Actions (4.2 GB) — gratuit sous 10 GB — `gh cache delete --all` + +### Requiert action manuelle +- [GH-M01] Copilot Business (5 seats) — 95/mois — https://github.com/settings/billing +- [GH-M02] Downgrade Team -> Free — https://github.com/settings/billing/plans +``` + +--- + +## Phase 3 — Double confirmation (OBLIGATOIRE avant kill) + +**Aucune action destructive ne peut etre executee sans les deux etapes.** + +### Etape 1 — Validation du plan + +Via `AskUserQuestionTool` : + +``` +Question : "Plan de kill genere. Economie projetee : X/mois. +Resume : N items Vercel, M items Neon, P items GitHub. +Voir : docs/audits/killbill-plan-YYYY-MM-DD.md + +Que faire ?" + +Options : + 1. Tout executer (kill total) + 2. Executer seulement Vercel + 3. Executer seulement Neon + 4. Executer seulement GitHub + 5. Executer uniquement les soft-kills (suspend/disable, reversibles) + 6. Executer uniquement les hard-kills (delete, irreversibles) + 7. Annuler +``` + +### Etape 2 — Confirmation finale par phrase magique + +L'utilisateur doit taper textuellement : **`KILL CONFIRM`** + +Si la reponse n'est pas exactement `KILL CONFIRM`, annuler toute action et ecrire : + +``` +Killswitch annule. Aucune ressource n'a ete modifiee. +Plan conserve dans docs/audits/killbill-plan-YYYY-MM-DD.md. +``` + +--- + +## Phase 4 — Execution du killswitch + +### 4.1 Log d'actions (avant tout kill) + +Creer `docs/audits/killbill-log-YYYY-MM-DD-HHMM.md` **avant** la premiere action destructive. Chaque action y est ecrite en temps reel : + +```markdown +# KILLBILL — Log d'execution + +> Date : YYYY-MM-DD HH:MM | Operateur : {user} | Mode : {scope} + +## [timestamp] VCL-K01 : Delete cron cron_abc123 +- Commande : `vercel cron rm cron_abc123 --yes` +- Resultat : OK / FAIL +- Sortie : {stdout/stderr} +- Restaurable via : `vercel cron add ...` (voir plan) + +## [timestamp] NEON-S01 : Suspend endpoint ep-main-xyz +- Commande : `neonctl endpoints suspend ep-main-xyz` +- Resultat : OK +- Restaurable via : `neonctl endpoints start ep-main-xyz` +``` + +### 4.2 Kill Vercel + +```bash +# Crons +vercel cron ls --json 2>/dev/null | \ + python3 -c "import json,sys; [print(c['id']) for c in json.load(sys.stdin)]" | \ + while read cid; do + echo "Removing cron $cid" + vercel cron rm "$cid" --yes + done + +# Preview deployments (garde production) +vercel ls --json --limit 200 2>/dev/null | \ + python3 -c " +import json,sys,datetime +now = datetime.datetime.now().timestamp() * 1000 +for d in json.load(sys.stdin): + if d.get('target') != 'production' and (now - d.get('created',0))/1000/86400 > 7: + print(d['uid']) +" | while read duid; do + echo "Removing deployment $duid" + vercel remove "$duid" --safe --yes + done + +# Blob stores (si confirme) +vercel blob store ls 2>/dev/null +# Suppression manuelle item par item via confirmation utilisateur + +# Pause project : definir ignoreCommand bloquant +# -> modifie vercel.json localement, commit separe (pas dans ce script) +``` + +### 4.3 Kill Neon + +```bash +# Suspend compute endpoints (soft, reversible) +neonctl endpoints list --output json 2>/dev/null | \ + python3 -c " +import json,sys +eps = json.load(sys.stdin).get('endpoints', []) +for ep in eps: + if ep.get('current_state') == 'active': + print(ep['id']) +" | while read epid; do + echo "Suspending endpoint $epid" + neonctl endpoints suspend "$epid" + done + +# Delete non-main branches +neonctl branches list --output json 2>/dev/null | \ + python3 -c " +import json,sys +brs = json.load(sys.stdin).get('branches', []) +for b in brs: + if not b.get('primary', False) and b.get('name') not in ('main','production'): + print(b['id']) +" | while read brid; do + echo "Deleting branch $brid" + neonctl branches delete "$brid" --force + done + +# Reduire autoscale max CU (commandes API, token requis) +# neonctl endpoints update --cu-min 0.25 --cu-max 0.25 +``` + +### 4.4 Kill GitHub Actions + +```bash +# Desactiver tous les workflows +gh workflow list --json name,state 2>/dev/null | \ + python3 -c " +import json,sys +for wf in json.load(sys.stdin): + if wf.get('state') == 'active': + print(wf['name']) +" | while read wf; do + echo "Disabling workflow $wf" + gh workflow disable "$wf" + done + +# Purge artifacts +REPO=$(gh repo view --json nameWithOwner -q .nameWithOwner) +gh api "repos/$REPO/actions/artifacts" --paginate --jq '.artifacts[].id' | \ + while read aid; do + echo "Deleting artifact $aid" + gh api -X DELETE "repos/$REPO/actions/artifacts/$aid" + done + +# Purge caches +gh cache list --json id --limit 1000 2>/dev/null | \ + python3 -c "import json,sys; [print(c['id']) for c in json.load(sys.stdin)]" | \ + while read cid; do + gh cache delete "$cid" + done + +# Codespaces +gh codespace list --json name 2>/dev/null | \ + python3 -c "import json,sys; [print(c['name']) for c in json.load(sys.stdin)]" | \ + while read cs; do + echo "Deleting codespace $cs" + gh codespace delete --codespace "$cs" --force + done +``` + +### 4.5 Garde-fous absolus + +1. **Jamais** de `delete` sur la branche `main/production` Neon +2. **Jamais** de `vercel remove` sur un deployment `target: production` +3. **Jamais** de `gh repo delete`, `gh workflow delete` (seulement `disable`) +4. **Jamais** toucher aux secrets, aux DNS, aux domaines custom +5. **Toujours** logger chaque commande et son resultat avant la suivante +6. **Timeout** : si une commande depasse 30s, abandonner, logger, continuer + +--- + +## Phase 5 — Rapport post-kill + +Ecrire `docs/audits/killbill-YYYY-MM-DD.md` : + +```markdown +# KILLBILL — Rapport de kill {PROJECT} + +> Date : YYYY-MM-DD | Duree : XX min | Statut : {SUCCESS|PARTIAL|FAILED} + +## Economies realisees + +| Plateforme | Avant /mois | Apres /mois | Economie | % | +|-----------|-------------|-------------|----------|---| +| Vercel | 120 | 35 | -85 | 71% | +| Neon | 80 | 3 | -77 | 96% | +| GitHub | 95 | 0 | -95 | 100% | +| **Total** | **295** | **38** | **-257** | **87%** | + +## Actions executees avec succes +- [list des IDs + nom] + +## Actions echouees +- [list avec cause + remediation] + +## Actions manuelles restantes +- [downgrade plans, copilot seats, etc.] + +## Comment restaurer +- Soft-kills : `killbill restore` ou commandes listees dans le log +- Hard-kills : non restaurables, voir backups/snapshots pre-kill +``` + +--- + +## Phase 6 — Mode restore (optionnel) + +`killbill restore` relit le log `killbill-log-*.md` le plus recent et : + +1. Tente d'executer l'action inverse pour chaque entree marquee reversible +2. Ignore les hard-deletes (non restaurables) +3. Demande confirmation avant chaque restore +4. Genere un rapport `killbill-restore-YYYY-MM-DD.md` + +Reversibles : +- `neonctl endpoints suspend` -> `neonctl endpoints start` +- `gh workflow disable` -> `gh workflow enable` +- Artifacts/caches/codespaces supprimes : **pas restaurables** +- Deployments/blobs Vercel supprimes : **pas restaurables** + +--- + +## Regles imperatives + +1. **Dry-run est le defaut** — `kill` doit etre explicite +2. **Double confirmation** — validation plan + `KILL CONFIRM` textuel +3. **Log avant action** — chaque commande tracee avant execution +4. **Main/production intouchable** — hardcode les noms proteges +5. **Timeout + abandon propre** — ne jamais bloquer sur une commande lente +6. **Erreur CLI = skip, pas crash** — logger et continuer sur la suivante +7. **Pas de supply chain** — ne jamais modifier les secrets, DNS, webhooks +8. **Rapport final obligatoire** — meme en cas de crash partiel +9. **Repeatable** — deux executions consecutives ne doivent rien casser +10. **Delegue l'audit a cutkiller (51)** quand disponible — ne duplique pas le code diff --git a/commands/agents/a11y-auditor.md b/commands/agents/a11y-auditor.md index c4c1ac07..b6950a82 100644 --- a/commands/agents/a11y-auditor.md +++ b/commands/agents/a11y-auditor.md @@ -6,6 +6,10 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task model: sonnet phase: review invocation: /ulk:a11y-auditor or "a11y-auditor" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md --- # Agent A11y Auditor diff --git a/commands/agents/astride.md b/commands/agents/astride.md index 51b6c406..7de2684b 100644 --- a/commands/agents/astride.md +++ b/commands/agents/astride.md @@ -6,6 +6,10 @@ tools: Read, Glob, Grep, Bash, AskUserQuestionTool model: sonnet phase: define invocation: /ulk:astride or "astride" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md --- # Astride - Snobisme de Combat diff --git a/commands/agents/bifrost.md b/commands/agents/bifrost.md index a1b743eb..6963095f 100644 --- a/commands/agents/bifrost.md +++ b/commands/agents/bifrost.md @@ -9,6 +9,10 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool, mcp__notion model: sonnet phase: ship invocation: /ulk:bifrost or "bifrost" or "notion import" or "notion export" or "recettage" +extends: + - _shared/base-rules.md + - _shared/update-protocol.md + - _shared/cli-tools-protocol.md --- # Agent Bifrost — Pont Notion diff --git a/commands/agents/blackemperor.md b/commands/agents/blackemperor.md index dbf119f8..98046ac3 100644 --- a/commands/agents/blackemperor.md +++ b/commands/agents/blackemperor.md @@ -6,6 +6,11 @@ tools: Task, Read, Write, Bash, AskUserQuestionTool model: opus phase: orchestrator invocation: /ulk:blackemperor or "audit-complet" or "legacy-revival" or "pre-release" or "review" or "ship" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/context-protocol.md + - _shared/agent-teams.md --- # Black Emperor - Orchestrateur Unifié diff --git a/commands/agents/brigitte.md b/commands/agents/brigitte.md index 05d08d21..7a31d8ef 100644 --- a/commands/agents/brigitte.md +++ b/commands/agents/brigitte.md @@ -11,6 +11,10 @@ cli: resend (emails send, templates list, contacts, broadcasts) model: sonnet phase: ship invocation: /ulk:brigitte or "brigitte" or "sync" or "sync notion" or "sync linear" +extends: + - _shared/base-rules.md + - _shared/update-protocol.md + - _shared/cli-tools-protocol.md --- # Agent Brigitte diff --git a/commands/agents/bruce.md b/commands/agents/bruce.md index 93874504..fe1e548b 100644 --- a/commands/agents/bruce.md +++ b/commands/agents/bruce.md @@ -6,6 +6,13 @@ tools: Task, Read, Write, Bash, Glob, Grep, AskUserQuestionTool model: opus phase: orchestrator invocation: /ulk:bruce or "bruce" or just "ulk" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/context-protocol.md + - _shared/cli-tools-protocol.md + - _shared/agent-teams.md + - _shared/memory-protocol.md --- # Bruce - Point d'Entrée & Product Manager ulk diff --git a/commands/agents/ci-guard.md b/commands/agents/ci-guard.md index 5ce53fc6..2397b906 100644 --- a/commands/agents/ci-guard.md +++ b/commands/agents/ci-guard.md @@ -12,8 +12,8 @@ phase: verify invocation: /ulk:ci-guard or "ci-guard" or "ci failure" or "fix CI" or "auto-fix CI" extends: - _shared/base-rules.md - - _shared/routines-protocol.md - _shared/cli-tools-protocol.md + - _shared/routines-protocol.md --- # CI Guard (54) diff --git a/commands/agents/claude-md-optimizer.md b/commands/agents/claude-md-optimizer.md index 6617708a..d6fc34d8 100644 --- a/commands/agents/claude-md-optimizer.md +++ b/commands/agents/claude-md-optimizer.md @@ -6,6 +6,10 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, AskUserQuestionTool model: sonnet phase: review invocation: /ulk:claude-md-optimizer or "optimize claude.md" or "audit claude.md" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md --- # Agent Claude.md Optimizer (42) diff --git a/commands/agents/context-audit.md b/commands/agents/context-audit.md index 3f3d70ce..80887bc8 100644 --- a/commands/agents/context-audit.md +++ b/commands/agents/context-audit.md @@ -14,6 +14,7 @@ phase: review invocation: /ulk:context-audit or "context audit" or "audit contexte" or "audit setup claude" extends: - _shared/base-rules.md + - _shared/stack-detection.md --- # Agent Context Audit (55) diff --git a/commands/agents/cutkiller.md b/commands/agents/cutkiller.md index 7a51df4f..7c3f5f6a 100644 --- a/commands/agents/cutkiller.md +++ b/commands/agents/cutkiller.md @@ -10,6 +10,10 @@ tools: Read, Glob, Grep, Bash, Write, WebSearch, AskUserQuestionTool model: sonnet phase: review invocation: /ulk:cutkiller or "cutkiller" or "coupe les coûts" or "optimise le budget" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md --- # CutKiller — Auditeur de Coûts Cloud diff --git a/commands/agents/ed209.md b/commands/agents/ed209.md index 7a76ecd9..b54f2f53 100644 --- a/commands/agents/ed209.md +++ b/commands/agents/ed209.md @@ -13,8 +13,9 @@ phase: review invocation: /ulk:ed209 or "ed209" or "audit securite" or "security audit" or "audit secu" extends: - _shared/base-rules.md - - _shared/auditor-base.md - _shared/stack-detection.md + - _shared/auditor-base.md + - _shared/apfel-protocol.md - _shared/context-protocol.md - _shared/checklists/security-checklist.md --- diff --git a/commands/agents/fluke.md b/commands/agents/fluke.md index 3429c966..eec1f8b3 100644 --- a/commands/agents/fluke.md +++ b/commands/agents/fluke.md @@ -11,6 +11,11 @@ tools: Task, Read, Grep, Glob, Bash, Write, MultiEdit, AskUserQuestionTool model: opus phase: build invocation: /ulk:fluke or "fluke" or "Android" or "Flutter" or "Kotlin" or "Google Play" +extends: + - _shared/base-rules.md + - _shared/context-protocol.md + - _shared/cli-tools-protocol.md + - _shared/memory-protocol.md --- # Fluke - Orchestrateur Android Natif diff --git a/commands/agents/friday.md b/commands/agents/friday.md index 20d4b4c4..ac20214d 100644 --- a/commands/agents/friday.md +++ b/commands/agents/friday.md @@ -9,6 +9,10 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, AskUserQuestionTool model: sonnet phase: ship invocation: /ulk:friday or "friday" or "context" or "organiser docs" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/apfel-protocol.md --- # Agent Friday — Gestionnaire de Documentation diff --git a/commands/agents/gandalf.md b/commands/agents/gandalf.md index a82382af..69ce86ba 100644 --- a/commands/agents/gandalf.md +++ b/commands/agents/gandalf.md @@ -6,6 +6,9 @@ tools: Read, Bash, AskUserQuestionTool model: sonnet phase: review invocation: /ulk:gandalf or "gandalf" +extends: + - _shared/base-rules.md + - _shared/memory-protocol.md --- # Gandalf - Context Guardian diff --git a/commands/agents/godspeed.md b/commands/agents/godspeed.md index 47992bde..ce4f0744 100644 --- a/commands/agents/godspeed.md +++ b/commands/agents/godspeed.md @@ -6,6 +6,13 @@ tools: Read, Glob, Grep, Bash model: sonnet phase: review invocation: Utilisé comme sous-agent par Bruce (25). Peut être invoqué seul pour un diagnostic rapide. +extends: + - _shared/base-rules.md + - _shared/update-protocol.md + - _shared/stack-detection.md + - _shared/context-protocol.md + - _shared/memory-protocol.md + - _shared/apfel-protocol.md --- # Godspeed - Diagnostic Projet diff --git a/commands/agents/happy.md b/commands/agents/happy.md index 4e71c05c..cf31cb91 100644 --- a/commands/agents/happy.md +++ b/commands/agents/happy.md @@ -10,6 +10,10 @@ tools: Task, Read, Grep, Glob, Bash, Write, MultiEdit, AskUserQuestionTool model: opus phase: build invocation: /ulk:happy or happy or API mobile or API design or concevoir API +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/context-protocol.md --- # Happy - Architecte API Exhaustif diff --git a/commands/agents/killbill.md b/commands/agents/killbill.md new file mode 100644 index 00000000..6ca0a01e --- /dev/null +++ b/commands/agents/killbill.md @@ -0,0 +1,412 @@ +--- +name: killbill +type: custom-command +description: | + Cost Killer avec killswitch reel. Audite Vercel + GitHub + Neon, chiffre + le gaspillage, propose un plan, puis execute le kill (pause/suppression) + des ressources payantes sur demande explicite. Mode dry-run par defaut, + confirmation double obligatoire avant toute action destructive. + Invocation : /ulk:killbill ou "killbill" ou "kill cost" ou "killswitch cout". +tools: Read, Glob, Grep, Bash, Write, WebSearch, AskUserQuestionTool, Task +model: opus +phase: ship +invocation: /ulk:killbill or "killbill" or "kill cost" or "killswitch cout" or "coupe tout" +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md +--- + +# Killbill — Cost Killer avec Killswitch + +> "Tu as tire le premier, j'etablis la liste. Tu as dit oui, je coupe tout." + +> **References** : `_shared/base-rules.md` · `_shared/cli-tools-protocol.md` + +Tu es Killbill, l'executeur final. Tu ne te contentes pas d'auditer — tu **coupes**. Audit, chiffrage, plan, puis **killswitch** reel sur Vercel, GitHub et Neon via CLI. + +Tu es l'etape d'apres CutKiller (51) : la ou CutKiller recommande, Killbill execute. Mais tu ne coupes **jamais** sans double confirmation utilisateur explicite. + +--- + +## Difference avec les autres agents cout + +| Agent | Role | Action | +|-------|------|--------| +| **picsou (26)** | Estimateur pre-projet | Read-only, compare providers | +| **cutkiller (51)** | Auditeur impitoyable | Read-only, recommande | +| **killbill (56)** | **Executeur avec killswitch** | **Execute le kill (destructif)** | + +Killbill peut **deleguer** l'audit a cutkiller (51) via Task, puis executer. + +--- + +## Modes + +| Mode | Invocation | Action | +|------|-----------|--------| +| `audit` (defaut) | `killbill` | Audit + plan + chiffrage (comme cutkiller) | +| `plan` | `killbill plan` | Genere uniquement le plan de kill sans l'executer | +| `dry-run` | `killbill dry-run` | Simule le kill, liste exactement ce qui serait coupe | +| `kill` | `killbill kill` | **Execute** le killswitch apres double confirmation | +| `kill --platform=vercel` | | Kill cible sur une seule plateforme | +| `restore` | `killbill restore` | Tente de restaurer depuis le log d'actions | + +--- + +## Phase 0 — Detection des plateformes et CLI + +```bash +# Plateformes utilisees +[ -f "vercel.json" ] && echo "VERCEL: detected" +grep -r 'neon\|@neondatabase' package.json 2>/dev/null | head -1 && echo "NEON: detected" +find .github/workflows/ -name '*.yml' 2>/dev/null | head -1 && echo "GITHUB_ACTIONS: detected" + +# CLIs disponibles (obligatoires pour le kill) +command -v vercel && vercel whoami 2>/dev/null +command -v neonctl && neonctl me 2>/dev/null +command -v gh && gh auth status 2>/dev/null +``` + +**Regle stricte** : si le CLI n'est pas authentifie pour une plateforme, tu ne peux PAS executer le kill sur cette plateforme. Basculer automatiquement sur `plan` pour celle-ci et indiquer la commande `login` requise : + +``` +vercel login +neonctl auth +gh auth login +``` + +--- + +## Phase 1 — Audit (delegation) + +Invoquer cutkiller (51) via Task avec un CONTEXTE PROJET : + +``` +Task( + subagent_type: cutkiller, + prompt: """ + CONTEXTE PROJET: + - Plateformes detectees: + - CLI authentifies: + - Objectif: Killbill va executer un killswitch. Genere un rapport + d'audit exhaustif avec chiffrage precis et liste des ressources + killables (nom + id + cout/mois). + + Ecris dans docs/audits/cutkiller-YYYY-MM-DD.md. + """ +) +``` + +Si cutkiller echoue ou n'est pas disponible, faire l'audit soi-meme en appliquant les scripts de detection de `cutkiller (51)` (Phases 2-4 de son protocole). + +--- + +## Phase 2 — Construction du plan de kill + +Produire `docs/audits/killbill-plan-YYYY-MM-DD.md` avec **la liste exhaustive et identifiee** des ressources a couper. + +### Template du plan + +```markdown +# KILLBILL — Plan de kill {PROJECT} + +> Date : YYYY-MM-DD | Mode : {dry-run|kill} | Operateur : killbill (ulk) + +## Economie totale projettee : {TOTAL}/mois + +| Plateforme | Ressources a couper | Economie/mois | Reversible ? | +|-----------|---------------------|---------------|--------------| +| Vercel | N items | X | Partiel | +| Neon | N items | X | Oui (suspend)| +| GitHub | N items | X | Oui (disable)| + +--- + +## Vercel + +### A couper (kill) +- [VCL-K01] Cron `daily-backup` (id: cron_abc123) — 12/mois — `vercel cron rm cron_abc123` +- [VCL-K02] Blob store `uploads-dev` (id: blob_xyz) — 8/mois — `vercel blob store remove blob_xyz` +- [VCL-K03] Preview deployments > 30j (42 items) — 15/mois — `vercel rm --safe --yes` + +### A pauser (soft kill, reversible) +- [VCL-P01] Analytics (project proj_123) — 10/mois — dashboard seul +- [VCL-P02] Speed Insights — 20/mois — dashboard seul + +### Requiert action manuelle (dashboard) +- [VCL-M01] Downgrade Pro -> Hobby : -20/mois — https://vercel.com/account/plans + +--- + +## Neon + +### A suspendre (soft kill) +- [NEON-S01] Endpoint `ep-main-xyz` (compute 1 CU toujours actif) — 77/mois — `neonctl endpoints suspend ep-main-xyz` + +### A supprimer (hard kill) +- [NEON-K01] Branch `preview-pr-42` (id: br_abc) — 1.50/mois — `neonctl branches delete br_abc` +- [NEON-K02] Branch `dev-old` (id: br_def) — 1.50/mois — `neonctl branches delete br_def` +- [NEON-K03] Snapshots > 30j (12 items) — 4/mois — `neonctl snapshots delete ` + +### Requiert action manuelle +- [NEON-M01] Downgrade Scale -> Launch : passer de 0.222 a 0.106/CU-h — dashboard Neon + +--- + +## GitHub + +### A desactiver (soft kill) +- [GH-D01] Workflow `nightly-e2e.yml` (macOS, 240 min/sem) — 89/mois — `gh workflow disable nightly-e2e.yml` +- [GH-D02] Workflow `matrix-test.yml` (Linux, 180 min/sem) — 6.50/mois — `gh workflow disable matrix-test.yml` + +### A supprimer (hard kill) +- [GH-K01] Artifacts > 7j (156 items, 2.3 GB) — 0.20/mois — `gh api -X DELETE ...` +- [GH-K02] Codespace `codespace_xyz` actif — 18/mois — `gh codespace delete codespace_xyz` +- [GH-K03] Caches Actions (4.2 GB) — gratuit sous 10 GB — `gh cache delete --all` + +### Requiert action manuelle +- [GH-M01] Copilot Business (5 seats) — 95/mois — https://github.com/settings/billing +- [GH-M02] Downgrade Team -> Free — https://github.com/settings/billing/plans +``` + +--- + +## Phase 3 — Double confirmation (OBLIGATOIRE avant kill) + +**Aucune action destructive ne peut etre executee sans les deux etapes.** + +### Etape 1 — Validation du plan + +Via `AskUserQuestionTool` : + +``` +Question : "Plan de kill genere. Economie projetee : X/mois. +Resume : N items Vercel, M items Neon, P items GitHub. +Voir : docs/audits/killbill-plan-YYYY-MM-DD.md + +Que faire ?" + +Options : + 1. Tout executer (kill total) + 2. Executer seulement Vercel + 3. Executer seulement Neon + 4. Executer seulement GitHub + 5. Executer uniquement les soft-kills (suspend/disable, reversibles) + 6. Executer uniquement les hard-kills (delete, irreversibles) + 7. Annuler +``` + +### Etape 2 — Confirmation finale par phrase magique + +L'utilisateur doit taper textuellement : **`KILL CONFIRM`** + +Si la reponse n'est pas exactement `KILL CONFIRM`, annuler toute action et ecrire : + +``` +Killswitch annule. Aucune ressource n'a ete modifiee. +Plan conserve dans docs/audits/killbill-plan-YYYY-MM-DD.md. +``` + +--- + +## Phase 4 — Execution du killswitch + +### 4.1 Log d'actions (avant tout kill) + +Creer `docs/audits/killbill-log-YYYY-MM-DD-HHMM.md` **avant** la premiere action destructive. Chaque action y est ecrite en temps reel : + +```markdown +# KILLBILL — Log d'execution + +> Date : YYYY-MM-DD HH:MM | Operateur : {user} | Mode : {scope} + +## [timestamp] VCL-K01 : Delete cron cron_abc123 +- Commande : `vercel cron rm cron_abc123 --yes` +- Resultat : OK / FAIL +- Sortie : {stdout/stderr} +- Restaurable via : `vercel cron add ...` (voir plan) + +## [timestamp] NEON-S01 : Suspend endpoint ep-main-xyz +- Commande : `neonctl endpoints suspend ep-main-xyz` +- Resultat : OK +- Restaurable via : `neonctl endpoints start ep-main-xyz` +``` + +### 4.2 Kill Vercel + +```bash +# Crons +vercel cron ls --json 2>/dev/null | \ + python3 -c "import json,sys; [print(c['id']) for c in json.load(sys.stdin)]" | \ + while read cid; do + echo "Removing cron $cid" + vercel cron rm "$cid" --yes + done + +# Preview deployments (garde production) +vercel ls --json --limit 200 2>/dev/null | \ + python3 -c " +import json,sys,datetime +now = datetime.datetime.now().timestamp() * 1000 +for d in json.load(sys.stdin): + if d.get('target') != 'production' and (now - d.get('created',0))/1000/86400 > 7: + print(d['uid']) +" | while read duid; do + echo "Removing deployment $duid" + vercel remove "$duid" --safe --yes + done + +# Blob stores (si confirme) +vercel blob store ls 2>/dev/null +# Suppression manuelle item par item via confirmation utilisateur + +# Pause project : definir ignoreCommand bloquant +# -> modifie vercel.json localement, commit separe (pas dans ce script) +``` + +### 4.3 Kill Neon + +```bash +# Suspend compute endpoints (soft, reversible) +neonctl endpoints list --output json 2>/dev/null | \ + python3 -c " +import json,sys +eps = json.load(sys.stdin).get('endpoints', []) +for ep in eps: + if ep.get('current_state') == 'active': + print(ep['id']) +" | while read epid; do + echo "Suspending endpoint $epid" + neonctl endpoints suspend "$epid" + done + +# Delete non-main branches +neonctl branches list --output json 2>/dev/null | \ + python3 -c " +import json,sys +brs = json.load(sys.stdin).get('branches', []) +for b in brs: + if not b.get('primary', False) and b.get('name') not in ('main','production'): + print(b['id']) +" | while read brid; do + echo "Deleting branch $brid" + neonctl branches delete "$brid" --force + done + +# Reduire autoscale max CU (commandes API, token requis) +# neonctl endpoints update --cu-min 0.25 --cu-max 0.25 +``` + +### 4.4 Kill GitHub Actions + +```bash +# Desactiver tous les workflows +gh workflow list --json name,state 2>/dev/null | \ + python3 -c " +import json,sys +for wf in json.load(sys.stdin): + if wf.get('state') == 'active': + print(wf['name']) +" | while read wf; do + echo "Disabling workflow $wf" + gh workflow disable "$wf" + done + +# Purge artifacts +REPO=$(gh repo view --json nameWithOwner -q .nameWithOwner) +gh api "repos/$REPO/actions/artifacts" --paginate --jq '.artifacts[].id' | \ + while read aid; do + echo "Deleting artifact $aid" + gh api -X DELETE "repos/$REPO/actions/artifacts/$aid" + done + +# Purge caches +gh cache list --json id --limit 1000 2>/dev/null | \ + python3 -c "import json,sys; [print(c['id']) for c in json.load(sys.stdin)]" | \ + while read cid; do + gh cache delete "$cid" + done + +# Codespaces +gh codespace list --json name 2>/dev/null | \ + python3 -c "import json,sys; [print(c['name']) for c in json.load(sys.stdin)]" | \ + while read cs; do + echo "Deleting codespace $cs" + gh codespace delete --codespace "$cs" --force + done +``` + +### 4.5 Garde-fous absolus + +1. **Jamais** de `delete` sur la branche `main/production` Neon +2. **Jamais** de `vercel remove` sur un deployment `target: production` +3. **Jamais** de `gh repo delete`, `gh workflow delete` (seulement `disable`) +4. **Jamais** toucher aux secrets, aux DNS, aux domaines custom +5. **Toujours** logger chaque commande et son resultat avant la suivante +6. **Timeout** : si une commande depasse 30s, abandonner, logger, continuer + +--- + +## Phase 5 — Rapport post-kill + +Ecrire `docs/audits/killbill-YYYY-MM-DD.md` : + +```markdown +# KILLBILL — Rapport de kill {PROJECT} + +> Date : YYYY-MM-DD | Duree : XX min | Statut : {SUCCESS|PARTIAL|FAILED} + +## Economies realisees + +| Plateforme | Avant /mois | Apres /mois | Economie | % | +|-----------|-------------|-------------|----------|---| +| Vercel | 120 | 35 | -85 | 71% | +| Neon | 80 | 3 | -77 | 96% | +| GitHub | 95 | 0 | -95 | 100% | +| **Total** | **295** | **38** | **-257** | **87%** | + +## Actions executees avec succes +- [list des IDs + nom] + +## Actions echouees +- [list avec cause + remediation] + +## Actions manuelles restantes +- [downgrade plans, copilot seats, etc.] + +## Comment restaurer +- Soft-kills : `killbill restore` ou commandes listees dans le log +- Hard-kills : non restaurables, voir backups/snapshots pre-kill +``` + +--- + +## Phase 6 — Mode restore (optionnel) + +`killbill restore` relit le log `killbill-log-*.md` le plus recent et : + +1. Tente d'executer l'action inverse pour chaque entree marquee reversible +2. Ignore les hard-deletes (non restaurables) +3. Demande confirmation avant chaque restore +4. Genere un rapport `killbill-restore-YYYY-MM-DD.md` + +Reversibles : +- `neonctl endpoints suspend` -> `neonctl endpoints start` +- `gh workflow disable` -> `gh workflow enable` +- Artifacts/caches/codespaces supprimes : **pas restaurables** +- Deployments/blobs Vercel supprimes : **pas restaurables** + +--- + +## Regles imperatives + +1. **Dry-run est le defaut** — `kill` doit etre explicite +2. **Double confirmation** — validation plan + `KILL CONFIRM` textuel +3. **Log avant action** — chaque commande tracee avant execution +4. **Main/production intouchable** — hardcode les noms proteges +5. **Timeout + abandon propre** — ne jamais bloquer sur une commande lente +6. **Erreur CLI = skip, pas crash** — logger et continuer sur la suivante +7. **Pas de supply chain** — ne jamais modifier les secrets, DNS, webhooks +8. **Rapport final obligatoire** — meme en cas de crash partiel +9. **Repeatable** — deux executions consecutives ne doivent rien casser +10. **Delegue l'audit a cutkiller (51)** quand disponible — ne duplique pas le code diff --git a/commands/agents/lovecraft.md b/commands/agents/lovecraft.md index 709dfc14..58873e63 100644 --- a/commands/agents/lovecraft.md +++ b/commands/agents/lovecraft.md @@ -10,6 +10,11 @@ tools: Read, Glob, Grep, Bash, Write, MultiEdit, Task, AskUserQuestionTool model: opus phase: orchestrator invocation: /ulk:lovecraft or "lovecraft" or "doc hub" or "vault complet" or "documentation obsidian" or "lovecraft memory" or "lovecraft harmonize" +extends: + - _shared/base-rules.md + - _shared/update-protocol.md + - _shared/context-protocol.md + - _shared/apfel-protocol.md --- # Agent Lovecraft — Hub Documentation Obsidian diff --git a/commands/agents/marketing-maestro.md b/commands/agents/marketing-maestro.md index bf9af492..82744203 100644 --- a/commands/agents/marketing-maestro.md +++ b/commands/agents/marketing-maestro.md @@ -7,6 +7,8 @@ cli: resend (emails send, broadcasts, contacts, templates, domains) model: sonnet phase: ship invocation: /ulk:marketing-maestro or "marketing-maestro" +extends: + - _shared/base-rules.md --- # Marketing Maestro - Orchestrateur Sites Vitrines diff --git a/commands/agents/obsidian-vault.md b/commands/agents/obsidian-vault.md index 7f4aa3c4..83936f5c 100644 --- a/commands/agents/obsidian-vault.md +++ b/commands/agents/obsidian-vault.md @@ -6,6 +6,8 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet phase: ship invocation: /ulk:obsidian-vault or "obsidian vault", "docs obsidian", "kanban obsidian" +extends: + - _shared/base-rules.md --- # Agent Obsidian Vault diff --git a/commands/agents/perf-auditor.md b/commands/agents/perf-auditor.md index e072e134..9b119556 100644 --- a/commands/agents/perf-auditor.md +++ b/commands/agents/perf-auditor.md @@ -6,6 +6,10 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task model: sonnet phase: review invocation: /ulk:perf-auditor or "perf-auditor" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md --- # Agent Perf Auditor diff --git a/commands/agents/picsou.md b/commands/agents/picsou.md index 13afad8c..665e2964 100644 --- a/commands/agents/picsou.md +++ b/commands/agents/picsou.md @@ -6,6 +6,11 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool, WebSearch model: sonnet phase: plan invocation: /ulk:picsou or "picsou" or "estime les coûts" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/cli-tools-protocol.md + - _shared/auditor-base.md --- # Picsou - Estimateur de Coûts d'Hébergement diff --git a/commands/agents/project-decomposer.md b/commands/agents/project-decomposer.md index 9d265b28..55ba6b4d 100644 --- a/commands/agents/project-decomposer.md +++ b/commands/agents/project-decomposer.md @@ -6,6 +6,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet phase: plan invocation: /ulk:project-decomposer or "project-decomposer" or "decompose" +extends: + - _shared/base-rules.md + - _shared/context-protocol.md --- # Agent Project Decomposer diff --git a/commands/agents/robocop.md b/commands/agents/robocop.md index 616a2400..7a239120 100644 --- a/commands/agents/robocop.md +++ b/commands/agents/robocop.md @@ -6,6 +6,10 @@ tools: View, Read, Grep, Glob, Bash, Write, Edit, MultiEdit, AskUserQuestionTool model: opus phase: review invocation: /ulk:robocop or "robocop" +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md + - _shared/apfel-protocol.md --- # Robocop - Error Hunter & Fixer diff --git a/commands/agents/rodin.md b/commands/agents/rodin.md index abc93128..6b81aaac 100644 --- a/commands/agents/rodin.md +++ b/commands/agents/rodin.md @@ -9,6 +9,8 @@ tools: Read, Write, Bash, AskUserQuestionTool model: opus phase: define invocation: /ulk:rodin or "rodin" or "débat" or "sparring" +extends: + - _shared/base-rules.md --- # RODIN — Interlocuteur Socratique diff --git a/commands/agents/routine.md b/commands/agents/routine.md index e39c0747..677451b3 100644 --- a/commands/agents/routine.md +++ b/commands/agents/routine.md @@ -12,8 +12,8 @@ phase: plan invocation: /ulk:routine or "routine" or "automate" or "schedule agent" or "cloud routine" extends: - _shared/base-rules.md - - _shared/routines-protocol.md - _shared/cli-tools-protocol.md + - _shared/routines-protocol.md --- # Routine Architect (53) diff --git a/commands/agents/sargeras.md b/commands/agents/sargeras.md index f751e2a9..d565d91f 100644 --- a/commands/agents/sargeras.md +++ b/commands/agents/sargeras.md @@ -9,6 +9,11 @@ tools: Read, Grep, Glob, Bash, Write, Task, AskUserQuestionTool model: opus phase: review invocation: /ulk:sargeras or "sargeras" or "audit omniscient" or "etat des lieux" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md + - _shared/apfel-protocol.md --- # SARGERAS — Audit Omniscient diff --git a/commands/agents/sensei.md b/commands/agents/sensei.md index 682038bb..d5749fbc 100644 --- a/commands/agents/sensei.md +++ b/commands/agents/sensei.md @@ -6,6 +6,8 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet phase: define invocation: /ulk:sensei or "sensei" or "apprends-moi" +extends: + - _shared/base-rules.md --- # Sensei - Mode Apprentissage diff --git a/commands/agents/seo-auditor.md b/commands/agents/seo-auditor.md index 6a7a97e6..684152a3 100644 --- a/commands/agents/seo-auditor.md +++ b/commands/agents/seo-auditor.md @@ -6,6 +6,10 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task, WebFetch, mcp__chro model: sonnet phase: review invocation: /ulk:seo-auditor or "seo-auditor" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md --- # Agent SEO & GEO Auditor diff --git a/commands/agents/shuri.md b/commands/agents/shuri.md index 6495fd9a..f71ae2f9 100644 --- a/commands/agents/shuri.md +++ b/commands/agents/shuri.md @@ -9,6 +9,12 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, AskUserQuestionTool model: sonnet phase: define, plan invocation: /ulk:shuri or "shuri" or "spec" or "todo" or "sync doc" +extends: + - _shared/base-rules.md + - _shared/update-protocol.md + - _shared/stack-detection.md + - _shared/context-protocol.md + - _shared/apfel-protocol.md --- # Agent Shuri — Pipeline Documentaire diff --git a/commands/agents/steve.md b/commands/agents/steve.md index 08def002..ce44ba18 100644 --- a/commands/agents/steve.md +++ b/commands/agents/steve.md @@ -11,6 +11,11 @@ tools: Task, Read, Grep, Glob, Bash, Write, MultiEdit, AskUserQuestionTool model: opus phase: build invocation: /ulk:steve or "steve" or "Apple" or "SwiftUI" or "iOS" or "App Store" +extends: + - _shared/base-rules.md + - _shared/context-protocol.md + - _shared/cli-tools-protocol.md + - _shared/memory-protocol.md --- # Steve - Orchestrateur Apple Natif diff --git a/commands/agents/strange.md b/commands/agents/strange.md index 303599ee..c5f9c3a7 100644 --- a/commands/agents/strange.md +++ b/commands/agents/strange.md @@ -13,6 +13,7 @@ invocation: /ulk:strange or "strange" or "strange mode=prompt" or "reverse promp extends: - _shared/base-rules.md - _shared/stack-detection.md + - _shared/apfel-protocol.md - _shared/context-protocol.md - _shared/reverse-doc-base.md --- diff --git a/commands/agents/task-runner.md b/commands/agents/task-runner.md index 2ab9f764..2a75d4d4 100644 --- a/commands/agents/task-runner.md +++ b/commands/agents/task-runner.md @@ -6,6 +6,12 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task, AskUserQuestionTool model: sonnet phase: build invocation: /ulk:task-runner or "task-runner" +extends: + - _shared/base-rules.md + - _shared/update-protocol.md + - _shared/context-protocol.md + - _shared/cli-tools-protocol.md + - _shared/memory-protocol.md --- # Agent Task Runner diff --git a/commands/agents/tony.md b/commands/agents/tony.md index 025385fe..8572b0fb 100644 --- a/commands/agents/tony.md +++ b/commands/agents/tony.md @@ -7,6 +7,11 @@ tools: Read, Write, Glob, Grep, Bash, Task, AskUserQuestionTool model: opus phase: define invocation: /ulk:tony or "tony" or "engineer" or "architect" or "recommend stack" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/context-protocol.md + - _shared/memory-protocol.md --- # Tony — Ingénieur en Chef ulk diff --git a/commands/agents/tools-checker.md b/commands/agents/tools-checker.md index 61a1e25b..e3e07664 100644 --- a/commands/agents/tools-checker.md +++ b/commands/agents/tools-checker.md @@ -6,6 +6,10 @@ tools: Bash, Read model: sonnet phase: review invocation: /ulk:tools-checker or "check tools" or "quels cli sont installés" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md --- # Agent Tools Checker (43) diff --git a/commands/agents/vision.md b/commands/agents/vision.md index 77805566..29137773 100644 --- a/commands/agents/vision.md +++ b/commands/agents/vision.md @@ -9,6 +9,12 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task model: sonnet phase: review, build invocation: /ulk:vision or "vision" or "audit code" or "simplifier" or "code review global" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md + - _shared/apfel-protocol.md + - _shared/simplify-principles.md --- # Agent Vision — Audit & Simplification diff --git a/commands/analyze/analyze-astro.md b/commands/analyze/analyze-astro.md index ca8084b2..892473e9 100644 --- a/commands/analyze/analyze-astro.md +++ b/commands/analyze/analyze-astro.md @@ -6,6 +6,9 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task model: sonnet phase: review invocation: /ulk:analyze:astro or "analyze astro" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md --- # Agent Astro Analyzer diff --git a/commands/analyze/analyze-next.md b/commands/analyze/analyze-next.md index 7b30c4fa..c6bc2b8c 100644 --- a/commands/analyze/analyze-next.md +++ b/commands/analyze/analyze-next.md @@ -6,6 +6,9 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task model: sonnet phase: review invocation: /ulk:analyze:next or "analyze next" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md --- # Agent Next.js Analyzer diff --git a/commands/analyze/analyze-nuxt.md b/commands/analyze/analyze-nuxt.md index 235e093f..6557022b 100644 --- a/commands/analyze/analyze-nuxt.md +++ b/commands/analyze/analyze-nuxt.md @@ -6,6 +6,9 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task model: sonnet phase: review invocation: /ulk:analyze:nuxt or "analyze nuxt" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md --- # Agent Nuxt Analyzer diff --git a/commands/analyze/analyze-spip.md b/commands/analyze/analyze-spip.md index 670cf3eb..6061f1a1 100644 --- a/commands/analyze/analyze-spip.md +++ b/commands/analyze/analyze-spip.md @@ -6,6 +6,9 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task model: sonnet phase: review invocation: /ulk:analyze:spip or "analyze spip" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md --- # Agent SPIP Analyzer diff --git a/commands/analyze/analyze-swiftui.md b/commands/analyze/analyze-swiftui.md index 2a7ab3c2..90dc0460 100644 --- a/commands/analyze/analyze-swiftui.md +++ b/commands/analyze/analyze-swiftui.md @@ -6,6 +6,9 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task model: sonnet phase: review invocation: /ulk:analyze:swiftui or "analyze swiftui" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md --- # Agent SwiftUI Analyzer diff --git a/commands/analyze/astro.md b/commands/analyze/astro.md index ca8084b2..892473e9 100644 --- a/commands/analyze/astro.md +++ b/commands/analyze/astro.md @@ -6,6 +6,9 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task model: sonnet phase: review invocation: /ulk:analyze:astro or "analyze astro" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md --- # Agent Astro Analyzer diff --git a/commands/analyze/next.md b/commands/analyze/next.md index 7b30c4fa..c6bc2b8c 100644 --- a/commands/analyze/next.md +++ b/commands/analyze/next.md @@ -6,6 +6,9 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task model: sonnet phase: review invocation: /ulk:analyze:next or "analyze next" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md --- # Agent Next.js Analyzer diff --git a/commands/analyze/nuxt.md b/commands/analyze/nuxt.md index 235e093f..6557022b 100644 --- a/commands/analyze/nuxt.md +++ b/commands/analyze/nuxt.md @@ -6,6 +6,9 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task model: sonnet phase: review invocation: /ulk:analyze:nuxt or "analyze nuxt" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md --- # Agent Nuxt Analyzer diff --git a/commands/analyze/spip.md b/commands/analyze/spip.md index 670cf3eb..6061f1a1 100644 --- a/commands/analyze/spip.md +++ b/commands/analyze/spip.md @@ -6,6 +6,9 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task model: sonnet phase: review invocation: /ulk:analyze:spip or "analyze spip" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md --- # Agent SPIP Analyzer diff --git a/commands/analyze/swiftui.md b/commands/analyze/swiftui.md index 2a7ab3c2..90dc0460 100644 --- a/commands/analyze/swiftui.md +++ b/commands/analyze/swiftui.md @@ -6,6 +6,9 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task model: sonnet phase: review invocation: /ulk:analyze:swiftui or "analyze swiftui" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md --- # Agent SwiftUI Analyzer diff --git a/commands/deploy/aws.md b/commands/deploy/aws.md index 2c3821b7..a34e0a71 100644 --- a/commands/deploy/aws.md +++ b/commands/deploy/aws.md @@ -5,6 +5,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:deploy-aws +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md phase: ship --- diff --git a/commands/deploy/cloudflare.md b/commands/deploy/cloudflare.md index 4e91f812..1c20a24c 100644 --- a/commands/deploy/cloudflare.md +++ b/commands/deploy/cloudflare.md @@ -5,6 +5,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:deploy-cloudflare +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md phase: ship --- diff --git a/commands/deploy/deploy-aws.md b/commands/deploy/deploy-aws.md index 2c3821b7..a34e0a71 100644 --- a/commands/deploy/deploy-aws.md +++ b/commands/deploy/deploy-aws.md @@ -5,6 +5,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:deploy-aws +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md phase: ship --- diff --git a/commands/deploy/deploy-cloudflare.md b/commands/deploy/deploy-cloudflare.md index 4e91f812..1c20a24c 100644 --- a/commands/deploy/deploy-cloudflare.md +++ b/commands/deploy/deploy-cloudflare.md @@ -5,6 +5,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:deploy-cloudflare +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md phase: ship --- diff --git a/commands/deploy/deploy-docker.md b/commands/deploy/deploy-docker.md index 0381ac81..7706d69e 100644 --- a/commands/deploy/deploy-docker.md +++ b/commands/deploy/deploy-docker.md @@ -5,6 +5,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:deploy-docker +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md phase: ship --- diff --git a/commands/deploy/deploy-fly.md b/commands/deploy/deploy-fly.md index 3955a2d2..81ad9e9f 100644 --- a/commands/deploy/deploy-fly.md +++ b/commands/deploy/deploy-fly.md @@ -5,6 +5,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:deploy-fly +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md phase: ship invocation: /ulk:deploy:fly or "deploy fly" or "déployer sur fly" --- diff --git a/commands/deploy/deploy-netlify.md b/commands/deploy/deploy-netlify.md index 88792d06..227c9eee 100644 --- a/commands/deploy/deploy-netlify.md +++ b/commands/deploy/deploy-netlify.md @@ -5,6 +5,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:deploy-netlify +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md phase: ship --- diff --git a/commands/deploy/deploy-vercel.md b/commands/deploy/deploy-vercel.md index 398608b4..9dbbfc78 100644 --- a/commands/deploy/deploy-vercel.md +++ b/commands/deploy/deploy-vercel.md @@ -5,6 +5,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:deploy-vercel +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md phase: ship --- diff --git a/commands/deploy/docker.md b/commands/deploy/docker.md index 0381ac81..7706d69e 100644 --- a/commands/deploy/docker.md +++ b/commands/deploy/docker.md @@ -5,6 +5,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:deploy-docker +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md phase: ship --- diff --git a/commands/deploy/fly.md b/commands/deploy/fly.md index 3955a2d2..81ad9e9f 100644 --- a/commands/deploy/fly.md +++ b/commands/deploy/fly.md @@ -5,6 +5,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:deploy-fly +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md phase: ship invocation: /ulk:deploy:fly or "deploy fly" or "déployer sur fly" --- diff --git a/commands/deploy/netlify.md b/commands/deploy/netlify.md index 88792d06..227c9eee 100644 --- a/commands/deploy/netlify.md +++ b/commands/deploy/netlify.md @@ -5,6 +5,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:deploy-netlify +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md phase: ship --- diff --git a/commands/deploy/vercel.md b/commands/deploy/vercel.md index 398608b4..9dbbfc78 100644 --- a/commands/deploy/vercel.md +++ b/commands/deploy/vercel.md @@ -5,6 +5,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:deploy-vercel +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md phase: ship --- diff --git a/commands/frontend/00-orchestrateur.md b/commands/frontend/00-orchestrateur.md index fe26c80e..58806c88 100644 --- a/commands/frontend/00-orchestrateur.md +++ b/commands/frontend/00-orchestrateur.md @@ -9,6 +9,10 @@ tools: Read, Task, AskUserQuestionTool model: sonnet phase: orchestrator invocation: /ulk:frontend:orchestrateur or /ulk:frontend:bundle or "frontend orchestrateur" or "audit frontend complet" or "bundle frontend" +extends: + - _shared/base-rules.md + - _shared/context-protocol.md + - _shared/agent-teams.md --- # Frontend Orchestrateur diff --git a/commands/frontend/02-frontend-qa.md b/commands/frontend/02-frontend-qa.md index aa352119..fdb3f7e2 100644 --- a/commands/frontend/02-frontend-qa.md +++ b/commands/frontend/02-frontend-qa.md @@ -11,6 +11,10 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool, mcp__chrome-dev model: sonnet phase: verify, review invocation: /ulk:frontend:frontend-qa or /ulk:frontend-qa or "frontend-qa" or "audit frontend" or "audit landing" or "audit shadcn" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md --- # Frontend QA Agent diff --git a/commands/frontend/03-visual-auditor.md b/commands/frontend/03-visual-auditor.md index b90f12c7..6e16149a 100644 --- a/commands/frontend/03-visual-auditor.md +++ b/commands/frontend/03-visual-auditor.md @@ -6,6 +6,10 @@ tools: Task, Read, Write, Bash, Glob, AskUserQuestionTool, mcp__chrome-devtools_ model: sonnet phase: verify invocation: /ulk:frontend:visual-auditor or /ulk:visual-auditor or "visual-auditor" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md --- # Visual Auditor - Agent d'Audit Visuel diff --git a/commands/frontend/04-backoffice-auditor.md b/commands/frontend/04-backoffice-auditor.md index de5abe25..11725467 100644 --- a/commands/frontend/04-backoffice-auditor.md +++ b/commands/frontend/04-backoffice-auditor.md @@ -9,6 +9,10 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task, AskUserQuestionTool model: sonnet phase: review invocation: /ulk:frontend:backoffice-auditor or /ulk:backoffice-auditor or "audit backoffice" or "audit consistency" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md --- # Agent Back Office Auditor diff --git a/commands/frontend/05-svg-analyzer.md b/commands/frontend/05-svg-analyzer.md index 0e5dadcb..ea83bf8a 100644 --- a/commands/frontend/05-svg-analyzer.md +++ b/commands/frontend/05-svg-analyzer.md @@ -6,6 +6,8 @@ tools: Task, View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet phase: build invocation: /ulk:frontend:svg-analyzer or /ulk:svg-analyzer or "svg-analyzer" or "analyse SVG" +extends: + - _shared/base-rules.md --- # SVG Analyzer - Analyseur de Projet & Générateur SVG diff --git a/commands/frontend/06-pencil-generator.md b/commands/frontend/06-pencil-generator.md index f38ac254..0a7a0d37 100644 --- a/commands/frontend/06-pencil-generator.md +++ b/commands/frontend/06-pencil-generator.md @@ -6,6 +6,8 @@ tools: Task, View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet phase: build invocation: /ulk:frontend:pencil-generator or /ulk:pencil-generator or "pencil-generator" or "génère les pencil" +extends: + - _shared/base-rules.md --- # Pencil Page Generator - Jean-Marie diff --git a/commands/frontend/07-shadcn-migrator.md b/commands/frontend/07-shadcn-migrator.md index 9c1c6a46..986402d1 100644 --- a/commands/frontend/07-shadcn-migrator.md +++ b/commands/frontend/07-shadcn-migrator.md @@ -5,6 +5,8 @@ tools: Read, Grep, Glob, Bash, Write, Task, AskUserQuestionTool, mcp__shadcn__li model: sonnet phase: review invocation: /ulk:frontend:shadcn-migrator or "audit ui" or "migration shadcn" or "convertir en shadcn" or "plan migration UI" or "audite le projet" +extends: + - _shared/base-rules.md --- # shadcn-migrator — Audit UI & Plan de Migration vers shadcn/ui diff --git a/commands/frontend/31-ranma.md b/commands/frontend/31-ranma.md index 6503a01b..bec70bc5 100644 --- a/commands/frontend/31-ranma.md +++ b/commands/frontend/31-ranma.md @@ -6,6 +6,8 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task, AskUserQuestionTool model: sonnet phase: plan invocation: /ulk:ranma or "ranma" or "migration" +extends: + - _shared/base-rules.md --- # Agent Ranma - Planificateur de Migration diff --git a/commands/frontend/backoffice-auditor.md b/commands/frontend/backoffice-auditor.md index de5abe25..11725467 100644 --- a/commands/frontend/backoffice-auditor.md +++ b/commands/frontend/backoffice-auditor.md @@ -9,6 +9,10 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task, AskUserQuestionTool model: sonnet phase: review invocation: /ulk:frontend:backoffice-auditor or /ulk:backoffice-auditor or "audit backoffice" or "audit consistency" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md --- # Agent Back Office Auditor diff --git a/commands/frontend/frontend-orchestrateur.md b/commands/frontend/frontend-orchestrateur.md index fe26c80e..58806c88 100644 --- a/commands/frontend/frontend-orchestrateur.md +++ b/commands/frontend/frontend-orchestrateur.md @@ -9,6 +9,10 @@ tools: Read, Task, AskUserQuestionTool model: sonnet phase: orchestrator invocation: /ulk:frontend:orchestrateur or /ulk:frontend:bundle or "frontend orchestrateur" or "audit frontend complet" or "bundle frontend" +extends: + - _shared/base-rules.md + - _shared/context-protocol.md + - _shared/agent-teams.md --- # Frontend Orchestrateur diff --git a/commands/frontend/frontend-qa.md b/commands/frontend/frontend-qa.md index aa352119..fdb3f7e2 100644 --- a/commands/frontend/frontend-qa.md +++ b/commands/frontend/frontend-qa.md @@ -11,6 +11,10 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool, mcp__chrome-dev model: sonnet phase: verify, review invocation: /ulk:frontend:frontend-qa or /ulk:frontend-qa or "frontend-qa" or "audit frontend" or "audit landing" or "audit shadcn" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md --- # Frontend QA Agent diff --git a/commands/frontend/pencil-generator.md b/commands/frontend/pencil-generator.md index f38ac254..0a7a0d37 100644 --- a/commands/frontend/pencil-generator.md +++ b/commands/frontend/pencil-generator.md @@ -6,6 +6,8 @@ tools: Task, View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet phase: build invocation: /ulk:frontend:pencil-generator or /ulk:pencil-generator or "pencil-generator" or "génère les pencil" +extends: + - _shared/base-rules.md --- # Pencil Page Generator - Jean-Marie diff --git a/commands/frontend/ranma.md b/commands/frontend/ranma.md index 6503a01b..bec70bc5 100644 --- a/commands/frontend/ranma.md +++ b/commands/frontend/ranma.md @@ -6,6 +6,8 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task, AskUserQuestionTool model: sonnet phase: plan invocation: /ulk:ranma or "ranma" or "migration" +extends: + - _shared/base-rules.md --- # Agent Ranma - Planificateur de Migration diff --git a/commands/frontend/shadcn-migrator.md b/commands/frontend/shadcn-migrator.md index 9c1c6a46..986402d1 100644 --- a/commands/frontend/shadcn-migrator.md +++ b/commands/frontend/shadcn-migrator.md @@ -5,6 +5,8 @@ tools: Read, Grep, Glob, Bash, Write, Task, AskUserQuestionTool, mcp__shadcn__li model: sonnet phase: review invocation: /ulk:frontend:shadcn-migrator or "audit ui" or "migration shadcn" or "convertir en shadcn" or "plan migration UI" or "audite le projet" +extends: + - _shared/base-rules.md --- # shadcn-migrator — Audit UI & Plan de Migration vers shadcn/ui diff --git a/commands/frontend/svg-analyzer.md b/commands/frontend/svg-analyzer.md index 0e5dadcb..ea83bf8a 100644 --- a/commands/frontend/svg-analyzer.md +++ b/commands/frontend/svg-analyzer.md @@ -6,6 +6,8 @@ tools: Task, View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet phase: build invocation: /ulk:frontend:svg-analyzer or /ulk:svg-analyzer or "svg-analyzer" or "analyse SVG" +extends: + - _shared/base-rules.md --- # SVG Analyzer - Analyseur de Projet & Générateur SVG diff --git a/commands/frontend/visual-auditor.md b/commands/frontend/visual-auditor.md index b90f12c7..6e16149a 100644 --- a/commands/frontend/visual-auditor.md +++ b/commands/frontend/visual-auditor.md @@ -6,6 +6,10 @@ tools: Task, Read, Write, Bash, Glob, AskUserQuestionTool, mcp__chrome-devtools_ model: sonnet phase: verify invocation: /ulk:frontend:visual-auditor or /ulk:visual-auditor or "visual-auditor" +extends: + - _shared/base-rules.md + - _shared/stack-detection.md + - _shared/auditor-base.md --- # Visual Auditor - Agent d'Audit Visuel diff --git a/commands/test/e2e.md b/commands/test/e2e.md index 58bb3381..7b7058db 100644 --- a/commands/test/e2e.md +++ b/commands/test/e2e.md @@ -5,6 +5,8 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task model: sonnet type: custom-command invocation: /ulk:test-e2e +extends: + - _shared/base-rules.md phase: verify --- diff --git a/commands/test/test-e2e.md b/commands/test/test-e2e.md index 58bb3381..7b7058db 100644 --- a/commands/test/test-e2e.md +++ b/commands/test/test-e2e.md @@ -5,6 +5,8 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task model: sonnet type: custom-command invocation: /ulk:test-e2e +extends: + - _shared/base-rules.md phase: verify --- diff --git a/commands/test/test-unit.md b/commands/test/test-unit.md index e28b22db..fa74ccfc 100644 --- a/commands/test/test-unit.md +++ b/commands/test/test-unit.md @@ -5,6 +5,8 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task model: sonnet type: custom-command invocation: /ulk:test-unit +extends: + - _shared/base-rules.md phase: verify --- diff --git a/commands/test/unit.md b/commands/test/unit.md index e28b22db..fa74ccfc 100644 --- a/commands/test/unit.md +++ b/commands/test/unit.md @@ -5,6 +5,8 @@ tools: View, Read, Grep, Glob, Bash, Write, MultiEdit, Task model: sonnet type: custom-command invocation: /ulk:test-unit +extends: + - _shared/base-rules.md phase: verify --- diff --git a/commands/vps/00-orchestrateur.md b/commands/vps/00-orchestrateur.md index efda677c..ffb0f7f7 100644 --- a/commands/vps/00-orchestrateur.md +++ b/commands/vps/00-orchestrateur.md @@ -5,6 +5,10 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool, Task model: sonnet type: custom-command invocation: /ulk:orchestrateur-vps +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md + - _shared/agent-teams.md phase: orchestrator --- diff --git a/commands/vps/01-audit.md b/commands/vps/01-audit.md index b4c49682..3bf62b14 100644 --- a/commands/vps/01-audit.md +++ b/commands/vps/01-audit.md @@ -5,6 +5,10 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:audit-vps +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md + - _shared/auditor-base.md phase: review --- diff --git a/commands/vps/02-securite.md b/commands/vps/02-securite.md index 6ae46644..0802bc89 100644 --- a/commands/vps/02-securite.md +++ b/commands/vps/02-securite.md @@ -5,6 +5,10 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:securite-vps +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md + - _shared/auditor-base.md phase: review --- diff --git a/commands/vps/03-reseau.md b/commands/vps/03-reseau.md index 2e5093c3..979611c4 100644 --- a/commands/vps/03-reseau.md +++ b/commands/vps/03-reseau.md @@ -5,6 +5,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:reseau-vps +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md phase: build --- diff --git a/commands/vps/04-docker.md b/commands/vps/04-docker.md index d8117148..78c6a214 100644 --- a/commands/vps/04-docker.md +++ b/commands/vps/04-docker.md @@ -5,6 +5,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:docker-vps +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md phase: build --- diff --git a/commands/vps/05-deploiement.md b/commands/vps/05-deploiement.md index fe87e3e7..3e928753 100644 --- a/commands/vps/05-deploiement.md +++ b/commands/vps/05-deploiement.md @@ -5,6 +5,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:deploiement-vps +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md phase: ship --- diff --git a/commands/vps/06-cicd.md b/commands/vps/06-cicd.md index cd4d2876..4394d764 100644 --- a/commands/vps/06-cicd.md +++ b/commands/vps/06-cicd.md @@ -5,6 +5,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:cicd-vps +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md phase: ship --- diff --git a/commands/vps/07-monitoring.md b/commands/vps/07-monitoring.md index 3de06d6d..352a25d5 100644 --- a/commands/vps/07-monitoring.md +++ b/commands/vps/07-monitoring.md @@ -5,6 +5,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:monitoring-vps +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md phase: verify --- diff --git a/commands/vps/08-backups.md b/commands/vps/08-backups.md index 3cce769d..0a20d701 100644 --- a/commands/vps/08-backups.md +++ b/commands/vps/08-backups.md @@ -5,6 +5,8 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:backups-vps +extends: + - _shared/base-rules.md phase: ship --- diff --git a/commands/vps/09-couts-ressources.md b/commands/vps/09-couts-ressources.md index ac6e5929..93da5a94 100644 --- a/commands/vps/09-couts-ressources.md +++ b/commands/vps/09-couts-ressources.md @@ -5,6 +5,8 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:couts-ressources-vps +extends: + - _shared/base-rules.md phase: plan --- diff --git a/commands/vps/10-incidents.md b/commands/vps/10-incidents.md index b2df6c3f..91179137 100644 --- a/commands/vps/10-incidents.md +++ b/commands/vps/10-incidents.md @@ -5,6 +5,8 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:incidents-vps +extends: + - _shared/base-rules.md phase: review --- diff --git a/commands/vps/11-migration.md b/commands/vps/11-migration.md index 823bb3c6..a247665c 100644 --- a/commands/vps/11-migration.md +++ b/commands/vps/11-migration.md @@ -5,6 +5,8 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:migration-vps +extends: + - _shared/base-rules.md phase: plan --- diff --git a/commands/vps/12-documentation.md b/commands/vps/12-documentation.md index 87f07d42..5ab77aa0 100644 --- a/commands/vps/12-documentation.md +++ b/commands/vps/12-documentation.md @@ -5,6 +5,8 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:documentation-vps +extends: + - _shared/base-rules.md phase: ship --- diff --git a/commands/vps/13-compliance.md b/commands/vps/13-compliance.md index 00080ae0..ac67f06e 100644 --- a/commands/vps/13-compliance.md +++ b/commands/vps/13-compliance.md @@ -5,6 +5,8 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:compliance-vps +extends: + - _shared/base-rules.md phase: review --- diff --git a/commands/vps/14-cleanup.md b/commands/vps/14-cleanup.md index 7e947b8d..e4b4357d 100644 --- a/commands/vps/14-cleanup.md +++ b/commands/vps/14-cleanup.md @@ -5,6 +5,8 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:cleanup-vps +extends: + - _shared/base-rules.md phase: ship --- diff --git a/commands/vps/15-environnements.md b/commands/vps/15-environnements.md index ccedd8ee..0250aa75 100644 --- a/commands/vps/15-environnements.md +++ b/commands/vps/15-environnements.md @@ -5,6 +5,8 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:environnements-vps +extends: + - _shared/base-rules.md phase: build --- diff --git a/commands/vps/16-installateur.md b/commands/vps/16-installateur.md index 099c2f69..47edfa73 100644 --- a/commands/vps/16-installateur.md +++ b/commands/vps/16-installateur.md @@ -5,6 +5,8 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:installateur-vps +extends: + - _shared/base-rules.md phase: build --- diff --git a/commands/vps/audit-vps.md b/commands/vps/audit-vps.md index b4c49682..3bf62b14 100644 --- a/commands/vps/audit-vps.md +++ b/commands/vps/audit-vps.md @@ -5,6 +5,10 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:audit-vps +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md + - _shared/auditor-base.md phase: review --- diff --git a/commands/vps/backups-vps.md b/commands/vps/backups-vps.md index 3cce769d..0a20d701 100644 --- a/commands/vps/backups-vps.md +++ b/commands/vps/backups-vps.md @@ -5,6 +5,8 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:backups-vps +extends: + - _shared/base-rules.md phase: ship --- diff --git a/commands/vps/cicd-vps.md b/commands/vps/cicd-vps.md index cd4d2876..4394d764 100644 --- a/commands/vps/cicd-vps.md +++ b/commands/vps/cicd-vps.md @@ -5,6 +5,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:cicd-vps +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md phase: ship --- diff --git a/commands/vps/cleanup-vps.md b/commands/vps/cleanup-vps.md index 7e947b8d..e4b4357d 100644 --- a/commands/vps/cleanup-vps.md +++ b/commands/vps/cleanup-vps.md @@ -5,6 +5,8 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:cleanup-vps +extends: + - _shared/base-rules.md phase: ship --- diff --git a/commands/vps/compliance-vps.md b/commands/vps/compliance-vps.md index 00080ae0..ac67f06e 100644 --- a/commands/vps/compliance-vps.md +++ b/commands/vps/compliance-vps.md @@ -5,6 +5,8 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:compliance-vps +extends: + - _shared/base-rules.md phase: review --- diff --git a/commands/vps/couts-ressources-vps.md b/commands/vps/couts-ressources-vps.md index ac6e5929..93da5a94 100644 --- a/commands/vps/couts-ressources-vps.md +++ b/commands/vps/couts-ressources-vps.md @@ -5,6 +5,8 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:couts-ressources-vps +extends: + - _shared/base-rules.md phase: plan --- diff --git a/commands/vps/deploiement-vps.md b/commands/vps/deploiement-vps.md index fe87e3e7..3e928753 100644 --- a/commands/vps/deploiement-vps.md +++ b/commands/vps/deploiement-vps.md @@ -5,6 +5,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:deploiement-vps +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md phase: ship --- diff --git a/commands/vps/docker-vps.md b/commands/vps/docker-vps.md index d8117148..78c6a214 100644 --- a/commands/vps/docker-vps.md +++ b/commands/vps/docker-vps.md @@ -5,6 +5,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:docker-vps +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md phase: build --- diff --git a/commands/vps/documentation-vps.md b/commands/vps/documentation-vps.md index 87f07d42..5ab77aa0 100644 --- a/commands/vps/documentation-vps.md +++ b/commands/vps/documentation-vps.md @@ -5,6 +5,8 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:documentation-vps +extends: + - _shared/base-rules.md phase: ship --- diff --git a/commands/vps/environnements-vps.md b/commands/vps/environnements-vps.md index ccedd8ee..0250aa75 100644 --- a/commands/vps/environnements-vps.md +++ b/commands/vps/environnements-vps.md @@ -5,6 +5,8 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:environnements-vps +extends: + - _shared/base-rules.md phase: build --- diff --git a/commands/vps/incidents-vps.md b/commands/vps/incidents-vps.md index b2df6c3f..91179137 100644 --- a/commands/vps/incidents-vps.md +++ b/commands/vps/incidents-vps.md @@ -5,6 +5,8 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:incidents-vps +extends: + - _shared/base-rules.md phase: review --- diff --git a/commands/vps/installateur-vps.md b/commands/vps/installateur-vps.md index 099c2f69..47edfa73 100644 --- a/commands/vps/installateur-vps.md +++ b/commands/vps/installateur-vps.md @@ -5,6 +5,8 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:installateur-vps +extends: + - _shared/base-rules.md phase: build --- diff --git a/commands/vps/migration-vps.md b/commands/vps/migration-vps.md index 823bb3c6..a247665c 100644 --- a/commands/vps/migration-vps.md +++ b/commands/vps/migration-vps.md @@ -5,6 +5,8 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:migration-vps +extends: + - _shared/base-rules.md phase: plan --- diff --git a/commands/vps/monitoring-vps.md b/commands/vps/monitoring-vps.md index 3de06d6d..352a25d5 100644 --- a/commands/vps/monitoring-vps.md +++ b/commands/vps/monitoring-vps.md @@ -5,6 +5,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:monitoring-vps +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md phase: verify --- diff --git a/commands/vps/orchestrateur-vps.md b/commands/vps/orchestrateur-vps.md index efda677c..ffb0f7f7 100644 --- a/commands/vps/orchestrateur-vps.md +++ b/commands/vps/orchestrateur-vps.md @@ -5,6 +5,10 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool, Task model: sonnet type: custom-command invocation: /ulk:orchestrateur-vps +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md + - _shared/agent-teams.md phase: orchestrator --- diff --git a/commands/vps/reseau-vps.md b/commands/vps/reseau-vps.md index 2e5093c3..979611c4 100644 --- a/commands/vps/reseau-vps.md +++ b/commands/vps/reseau-vps.md @@ -5,6 +5,9 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:reseau-vps +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md phase: build --- diff --git a/commands/vps/securite-vps.md b/commands/vps/securite-vps.md index 6ae46644..0802bc89 100644 --- a/commands/vps/securite-vps.md +++ b/commands/vps/securite-vps.md @@ -5,6 +5,10 @@ tools: View, Read, Grep, Glob, Bash, Write, AskUserQuestionTool model: sonnet type: custom-command invocation: /ulk:securite-vps +extends: + - _shared/base-rules.md + - _shared/cli-tools-protocol.md + - _shared/auditor-base.md phase: review --- diff --git a/docs/todo.md b/docs/todo.md index 0e631178..4a086b12 100644 --- a/docs/todo.md +++ b/docs/todo.md @@ -87,6 +87,7 @@ spec: docs/spec.md - [ ] #ULK-140 [P3] Token ledger par session dans `docs/apfel-report.md` — 2b3 Phase 5.7 : ajouter bloc agrégé tokens apfel + estimés read/edit/grep par session ; lisible par gandalf/context-audit #apfel #dx #effort-S - [ ] #ULK-141 [P3] `estimated_tokens` par fichier dans rapport godspeed — approximation chars/4 ; flagger CLAUDE.md >4000 tokens ; prioriser fichiers coûteux pour exploration #dx #quality #effort-S - [x] #ULK-111 [P3] Ingestion exports Claude Design dans brique/agamotto — Phase 0 brique accepte handoff bundle + HTML standalone en plus de Figma URL ; mode agamotto `--export claude-design` ; protocole `_shared/claude-design-protocol.md` ; skills opt-in `--with-claude-design-skills`. Tester sur export réel avant specs. Ref [#89](https://github.com/izo/Ulk/issues/89) #frontend #design #effort-M +- [ ] #ULK-142 [P1] Résoudre conflit peerDep TS site/ — `@astrojs/check@0.9.8` exige `typescript@^5` mais `site/package.json` a `typescript@^6` (renovate 783d7e4) → `npm install` échoue avec ERESOLVE dans le job CI `test`. 3 options : (a) upgrade `@astrojs/check` vers version compatible TS 6, (b) pin `typescript@^5` dans site/, (c) `--legacy-peer-deps` dans `.github/workflows/test.yml` (quick fix, masque le conflit). Bloque tout PR touchant packages/core. #ci #deps #site #effort-S ## Todo diff --git a/install/check.sh b/install/check.sh index e9f645d1..b6749424 100644 --- a/install/check.sh +++ b/install/check.sh @@ -200,12 +200,12 @@ cmd_verify() { && _check "godspeed.md" true \ || _check "godspeed.md" false - n_agents=$(ls "$AGENTS_DIR"/ulk-*.md 2>/dev/null | wc -l | tr -d ' ') + n_agents=$(find "$AGENTS_DIR" -maxdepth 1 -name 'ulk-*.md' -type f 2>/dev/null | wc -l | tr -d ' ') [ "$n_agents" -gt 0 ] \ && _check "Subagents" true "$n_agents memory agents" \ || _check "Subagents" false "none found" - n_skills=$(ls -d "$SKILLS_DIR"/ulk-*/ 2>/dev/null | wc -l | tr -d ' ') + n_skills=$(find "$SKILLS_DIR" -maxdepth 1 -name 'ulk-*' -type d 2>/dev/null | wc -l | tr -d ' ') [ "$n_skills" -gt 0 ] \ && _check "Skills (ulk)" true "$n_skills skills" \ || _check "Skills (ulk)" false "none found" @@ -277,8 +277,8 @@ cmd_status() { # ── Gather data ─────────────────────────────────────────────────────────────── local n_cmds=0 n_agents=0 n_skills_ulk=0 n_community=0 installed_ver="—" [ -d "$ULK_DIR" ] && n_cmds=$(find "$ULK_DIR" -name "*.md" 2>/dev/null | wc -l | tr -d ' ') - n_agents=$(ls "$AGENTS_DIR"/ulk-*.md 2>/dev/null | wc -l | tr -d ' ') - n_skills_ulk=$(ls -d "$SKILLS_DIR"/ulk-*/ 2>/dev/null | wc -l | tr -d ' ') + n_agents=$(find "$AGENTS_DIR" -maxdepth 1 -name 'ulk-*.md' -type f 2>/dev/null | wc -l | tr -d ' ') + n_skills_ulk=$(find "$SKILLS_DIR" -maxdepth 1 -name 'ulk-*' -type d 2>/dev/null | wc -l | tr -d ' ') for d in "$SKILLS_DIR"/figma-*/ "$SKILLS_DIR"/swift-*/ "$SKILLS_DIR"/flutter-*/ \ "$SKILLS_DIR"/addy-*/ "$SKILLS_DIR"/a11y-*/ "$SKILLS_DIR"/kepano-*/ \ "$SKILLS_DIR"/nothing-*/; do