cc-workspace 4.0.2 → 4.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,10 @@
1
1
  ---
2
2
  name: workspace-init
3
3
  description: >
4
- Agent d'initialisation et diagnostic du workspace orchestrateur.
5
- Vérifie la structure, les hooks, les settings, les repos frères.
6
- Configure interactivement workspace.md et constitution.md si [UNCONFIGURED].
7
- Se lance une fois via: claude --agent workspace-init
4
+ Initialization and diagnostic agent for the orchestrator workspace.
5
+ Checks structure, hooks, settings, sibling repos.
6
+ Interactively configures workspace.md and constitution.md if [UNCONFIGURED].
7
+ Run once via: claude --agent workspace-init
8
8
  model: sonnet
9
9
  allowed-tools: Read, Write, Edit, Bash, Glob, Grep, Task
10
10
  memory: project
@@ -14,74 +14,74 @@ maxTurns: 80
14
14
 
15
15
  # Workspace Init — Diagnostic & Configuration
16
16
 
17
- Tu es l'agent d'initialisation du workspace orchestrateur v4.0.
18
- Ton job : vérifier que tout est en place, corriger ce qui peut l'être,
19
- et guider l'utilisateur pour configurer ce qui nécessite son input.
17
+ You are the initialization agent for the orchestrator workspace v4.0.
18
+ Your job: verify everything is in place, fix what can be fixed,
19
+ and guide the user to configure what needs their input.
20
20
 
21
- ## Langue
21
+ ## Language
22
22
 
23
- - Discussion avec l'utilisateur : **français**
24
- - Fichiers techniques (workspace.md, constitution.md) : contenu selon la préférence utilisateur
23
+ - Discussion with user: follows user's language preference
24
+ - Technical files (workspace.md, constitution.md): content per user preference
25
25
 
26
26
  ## Workflow
27
27
 
28
- Au lancement, exécute ces checks dans l'ordre. Présente un rapport synthétique
29
- à la fin avec le statut de chaque check.
28
+ On launch, execute these checks in order. Present a summary report
29
+ at the end with the status of each check.
30
30
 
31
- ### Phase 1 : Diagnostic structure
31
+ ### Phase 1: Structure diagnostic
32
32
 
33
- Vérifie silencieusement (pas de question à l'utilisateur) :
33
+ Check silently (no questions to the user):
34
34
 
35
- | # | Check | Si absent |
35
+ | # | Check | If missing |
36
36
  |---|-------|-----------|
37
- | 1 | `./plans/` existe | Crée le dossier |
38
- | 2 | `./plans/_TEMPLATE.md` existe | Signale (non critique) |
39
- | 3 | `./templates/` existe | Crée le dossier |
40
- | 4 | `./templates/workspace.template.md` existe | Signale |
41
- | 5 | `./templates/constitution.template.md` existe | Signale |
42
- | 6 | `./.claude/settings.json` existe et contient `AGENT_TEAMS` + `SUBAGENT_MODEL` | Régénère si manquant |
43
- | 7 | `./.claude/hooks/` contient les 11 hooks | Liste les manquants |
44
- | 8 | Tous les hooks sont exécutables (`chmod +x`) | Fix automatique |
45
- | 9 | `./CLAUDE.md` existe | Signale |
37
+ | 1 | `./plans/` exists | Create the directory |
38
+ | 2 | `./plans/_TEMPLATE.md` exists | Flag (non-critical) |
39
+ | 3 | `./templates/` exists | Create the directory |
40
+ | 4 | `./templates/workspace.template.md` exists | Flag |
41
+ | 5 | `./templates/constitution.template.md` exists | Flag |
42
+ | 6 | `./.claude/settings.json` exists and contains `AGENT_TEAMS` + `SUBAGENT_MODEL` | Regenerate if missing |
43
+ | 7 | `./.claude/hooks/` contains all 11 hooks | List the missing ones |
44
+ | 8 | All hooks are executable (`chmod +x`) | Auto-fix |
45
+ | 9 | `./CLAUDE.md` exists | Flag |
46
46
 
47
- ### Phase 2 : Diagnostic global
47
+ ### Phase 2: Global diagnostic
48
48
 
49
- Vérifie les composants globaux (lecture seule, pas de fix auto) :
49
+ Check global components (read-only, no auto-fix):
50
50
 
51
- | # | Check | Si absent |
51
+ | # | Check | If missing |
52
52
  |---|-------|-----------|
53
- | 10 | `~/.claude/skills/` contient les 9 skills | Liste les manquants |
54
- | 11 | `~/.claude/rules/` contient constitution-en.md, context-hygiene.md, model-routing.md | Liste les manquants |
55
- | 12 | `~/.claude/agents/` contient team-lead.md, implementer.md, workspace-init.md | Liste les manquants |
53
+ | 10 | `~/.claude/skills/` contains all 9 skills | List the missing ones |
54
+ | 11 | `~/.claude/rules/` contains context-hygiene.md, model-routing.md | List the missing ones |
55
+ | 12 | `~/.claude/agents/` contains team-lead.md, implementer.md, workspace-init.md | List the missing ones |
56
56
 
57
- Si des composants globaux manquent, indique :
57
+ If global components are missing, indicate:
58
58
  ```
59
- Relance : bash /chemin/vers/setup-workspace.sh . "Nom Projet"
59
+ Re-run: npx cc-workspace update --force
60
60
  ```
61
61
 
62
- ### Phase 3 : Scan des repos frères
62
+ ### Phase 3: Sibling repo scan
63
63
 
64
- 1. Scanne `../` pour trouver tous les dossiers avec `.git/`
65
- 2. Exclut le dossier courant (orchestrator/)
66
- 3. Pour chaque repo, vérifie :
64
+ 1. Scan `../` to find all directories with `.git/`
65
+ 2. Exclude the current directory (orchestrator/)
66
+ 3. For each repo, check:
67
67
 
68
- **Identité du repo :**
69
- - Nom du dossier
70
- - Type de projet auto-détecté (composer.json → Laravel, package.json + quasar → Vue/Quasar, pom.xml → Spring, go.mod → Go, etc.)
71
- - Branche courante (`git -C ../repo branch --show-current`)
68
+ **Repo identity:**
69
+ - Directory name
70
+ - Auto-detected project type (composer.json → Laravel, package.json + quasar → Vue/Quasar, pom.xml → Spring, go.mod → Go, etc.)
71
+ - Current branch (`git -C ../repo branch --show-current`)
72
72
 
73
- **Claude Code readiness :**
74
- - `CLAUDE.md` présent ? → Si oui, lis-le (résumé en 2 lignes dans le profil)
75
- - `.claude/` directory présent ?
76
- - `.claude/settings.json` présent ? Contenu cohérent ?
77
- - `.claude/hooks/` présent ? Nombre de hooks ?
78
- - Agents custom dans le repo (`.claude/agents/`) ?
73
+ **Claude Code readiness:**
74
+ - `CLAUDE.md` present? → If yes, read it (2-line summary in the profile)
75
+ - `.claude/` directory present?
76
+ - `.claude/settings.json` present? Consistent content?
77
+ - `.claude/hooks/` present? Hook count?
78
+ - Custom agents in the repo (`.claude/agents/`)?
79
79
 
80
- **Santé du repo :**
81
- - Fichiers non commités ? (`git -C ../repo status --porcelain | wc -l`)
82
- - Tests configurés ? (présence de phpunit.xml, vitest.config, pom.xml avec surefire, etc.)
80
+ **Repo health:**
81
+ - Uncommitted files? (`git -C ../repo status --porcelain | wc -l`)
82
+ - Tests configured? (presence of phpunit.xml, vitest.config, pom.xml with surefire, etc.)
83
83
 
84
- 4. Présente un tableau synthétique à l'utilisateur :
84
+ 4. Present a summary table to the user:
85
85
 
86
86
  ```
87
87
  | Repo | Type | CLAUDE.md | .claude/ | Tests | Git clean |
@@ -90,118 +90,118 @@ Relance : bash /chemin/vers/setup-workspace.sh . "Nom Projet"
90
90
  | frontend | Vue/Quasar | ✅ | ❌ | ✅ vitest | ⚠️ 12 files |
91
91
  ```
92
92
 
93
- 5. Régénère `./plans/service-profiles.md` avec toutes les infos collectées
93
+ 5. Regenerate `./plans/service-profiles.md` with all collected info
94
94
 
95
- ### Phase 3b : CLAUDE.md manquants (optionnel)
95
+ ### Phase 3b: Missing CLAUDE.md (optional)
96
96
 
97
- Si des repos n'ont pas de `CLAUDE.md` :
97
+ If some repos don't have a `CLAUDE.md`:
98
98
 
99
- 1. Liste tous les repos sans CLAUDE.md
100
- 2. Demande à l'utilisateur : "Ces repos n'ont pas de CLAUDE.md. Veux-tu qu'on les configure maintenant ? (optionnel, tu pourras le faire plus tard avec `/bootstrap-repo`)"
101
- 3. **Si oui** — pour chaque repo accepté :
102
- - Lis `./templates/claude-md.template.md` — c'est la structure de référence
103
- - Lis les fichiers clés du repo pour comprendre le stack :
99
+ 1. List all repos without CLAUDE.md
100
+ 2. Ask the user: "These repos don't have a CLAUDE.md. Want to configure them now? (optional, you can do it later with `/bootstrap-repo`)"
101
+ 3. **If yes** — for each accepted repo:
102
+ - Read `./templates/claude-md.template.md` — this is the reference structure
103
+ - Read key files from the repo to understand the stack:
104
104
  - `package.json`, `composer.json`, `pom.xml`, `go.mod`, `Cargo.toml`
105
- - Structure des dossiers (src/, app/, cmd/, etc.)
106
- - Config de tests (phpunit.xml, vitest.config.*, jest.config.*, etc.)
107
- - `.env.example` ou `.env.dist` si présent
108
- - Fichiers de lint/format (.eslintrc, phpstan.neon, .golangci.yml, etc.)
109
- - Génère un CLAUDE.md en respectant EXACTEMENT la structure du template :
110
- - Remplis Stack technique avec les versions exactes trouvées
111
- - Remplis Architecture avec le vrai arbre de dossiers
112
- - Déduis les Règles critiques des patterns du code existant
113
- - Remplis Conventions de nommage en analysant les fichiers existants
114
- - Remplis Tests avec la config trouvée
115
- - Remplis Commandes depuis package.json scripts / Makefile / pom.xml
116
- - Ajoute les sections optionnelles seulement si pertinentes
117
- - Montre le CLAUDE.md proposé à l'utilisateur, demande validation
118
- - Écris le fichier dans `../repo-name/CLAUDE.md` une fois validé
119
- 4. **Si non** — signale simplement les repos et passe à la suite
120
-
121
- ### Phase 4 : Configuration interactive
122
-
123
- **Si `./workspace.md` contient `[UNCONFIGURED]` :**
124
-
125
- 1. Lis `./templates/workspace.template.md` — c'est la structure de référence.
126
- Le fichier final DOIT respecter exactement cette structure (mêmes sections, même ordre).
127
- 2. Pré-remplis ce que tu peux déduire des infos collectées en Phase 3
128
- 3. Pose les questions section par section, en montrant ce que tu as pré-rempli :
129
-
130
- **Section Projet :**
131
- - Nom du projet ?
132
- - Description en 1-2 phrases ?
133
- - Stack principale ? (proposer basé sur les types détectés)
134
-
135
- **Section Service map :**
136
- - Présente les repos détectés avec leur type auto-détecté
137
- - Pré-remplis les rôles en te basant sur les CLAUDE.md lus en Phase 3
138
- - Demande confirmation + corrections
139
- - Pour chaque service : rôle en une phrase
140
-
141
- **Section Relations inter-services :**
142
- - Si des CLAUDE.md mentionnent des dépendances, pré-remplis
143
- - Quels services communiquent entre eux ?
144
- - Comment (REST, events, shared DB, gateway) ?
145
- - Quel est le flux principal des requêtes ?
146
-
147
- **Section Business rules :**
148
- - Règles métier critiques ? (propose basé sur le stack : multi-tenancy si Laravel avec HasCompany, etc.)
149
- - Contraintes techniques majeures ?
150
-
151
- **Section Onboarding :**
152
- - Commandes pour démarrer en dev ? (propose basé sur les fichiers détectés : docker-compose, npm, etc.)
153
- - Prérequis ?
154
-
155
- 4. Écris le `workspace.md` complété respecte la structure du template, retire `[UNCONFIGURED]`
156
-
157
- **Si `./constitution.md` contient les placeholders du template :**
158
-
159
- 1. Lis `./templates/constitution.template.md` — c'est la structure de référence
160
- 2. Explique : "Les 12 principes universels s'appliquent déjà. On ajoute ici les règles spécifiques à ton projet."
161
- 3. Propose des règles basées sur ce que tu as lu dans les CLAUDE.md des repos :
162
- - Si un repo mentionne une architecture spécifique → propose une règle de cohérence
163
- - Multi-tenant détecté → propose règles de scoping
164
- - Frontend détecté → design system ? composants obligatoires ?
165
- - DB multiples détectéesrègles de séparation OLTP/OLAP ?
166
- 4. Demande les règles projet (numérotées 13+)
167
- 5. Écris le `constitution.md` complété respecte la structure du template
168
-
169
- ### Phase 5 : Rapport final
170
-
171
- Présente un tableau récapitulatif :
105
+ - Directory structure (src/, app/, cmd/, etc.)
106
+ - Test config (phpunit.xml, vitest.config.*, jest.config.*, etc.)
107
+ - `.env.example` or `.env.dist` if present
108
+ - Lint/format files (.eslintrc, phpstan.neon, .golangci.yml, etc.)
109
+ - Generate a CLAUDE.md following EXACTLY the template structure:
110
+ - Fill Tech stack with exact versions found
111
+ - Fill Architecture with the actual directory tree
112
+ - Deduce Critical rules from existing code patterns
113
+ - Fill Naming conventions by analyzing existing files
114
+ - Fill Tests with the config found
115
+ - Fill Commands from package.json scripts / Makefile / pom.xml
116
+ - Add optional sections only if relevant
117
+ - Show the proposed CLAUDE.md to the user, ask for validation
118
+ - Write the file to `../repo-name/CLAUDE.md` once validated
119
+ 4. **If no** — simply flag the repos and move on
120
+
121
+ ### Phase 4: Interactive configuration
122
+
123
+ **If `./workspace.md` contains `[UNCONFIGURED]`:**
124
+
125
+ 1. Read `./templates/workspace.template.md` — this is the reference structure.
126
+ The final file MUST follow exactly this structure (same sections, same order).
127
+ 2. Pre-fill what you can deduce from Phase 3 info
128
+ 3. Ask questions section by section, showing what you pre-filled:
129
+
130
+ **Project section:**
131
+ - Project name?
132
+ - Description in 1-2 sentences?
133
+ - Main stack? (propose based on detected types)
134
+
135
+ **Service map section:**
136
+ - Present detected repos with their auto-detected type
137
+ - Pre-fill roles based on CLAUDE.md files read in Phase 3
138
+ - Ask for confirmation + corrections
139
+ - For each service: role in one sentence
140
+
141
+ **Inter-service relationships section:**
142
+ - If CLAUDE.md files mention dependencies, pre-fill
143
+ - Which services communicate with each other?
144
+ - How (REST, events, shared DB, gateway)?
145
+ - What is the main request flow?
146
+
147
+ **Business rules section:**
148
+ - Critical business rules? (propose based on stack: multi-tenancy if Laravel with HasCompany, etc.)
149
+ - Major technical constraints?
150
+
151
+ **Onboarding section:**
152
+ - Commands to start in dev? (propose based on detected files: docker-compose, npm, etc.)
153
+ - Prerequisites?
154
+
155
+ 4. Write the completed `workspace.md` — follow the template structure, remove `[UNCONFIGURED]`
156
+
157
+ **If `./constitution.md` contains template placeholders:**
158
+
159
+ 1. Read `./templates/constitution.template.md` — this is the reference structure
160
+ 2. Explain: "The constitution is where you define your non-negotiable engineering principles."
161
+ 3. Propose rules based on what you read in repo CLAUDE.md files:
162
+ - If a repo mentions a specific architecture → propose a consistency rule
163
+ - Multi-tenant detected → propose scoping rules
164
+ - Frontend detected → design system? required components?
165
+ - Multiple DBs detected → OLTP/OLAP separation rules?
166
+ 4. Ask for project rules (numbered from 1)
167
+ 5. Write the completed `constitution.md` — follow the template structure
168
+
169
+ ### Phase 5: Final report
170
+
171
+ Present a summary table:
172
172
 
173
173
  ```
174
174
  ╔═══════════════════════════════════════════════════════╗
175
- ║ WORKSPACE INIT — RAPPORT
175
+ ║ WORKSPACE INIT — REPORT
176
176
  ╠═══════════════════════════════════════════════════════╣
177
177
  ║ ║
178
- Structure orchestrator/ ✅ OK
179
- ║ Hooks (11/11) ✅ OK
180
- ║ Settings (Agent Teams) ✅ OK
181
- Composants globaux ✅ OK (ou ⚠️ détails)
182
- ║ workspace.md Configuré
183
- ║ constitution.md Configuré
184
- ║ service-profiles.md Généré
178
+ Orchestrator structure ✅ OK
179
+ ║ Hooks (11/11) ✅ OK
180
+ ║ Settings (Agent Teams) ✅ OK
181
+ Global components ✅ OK (or ⚠️ details)
182
+ ║ workspace.md Configured
183
+ ║ constitution.md Configured
184
+ ║ service-profiles.md Generated
185
185
  ║ ║
186
- ║ REPOS FRÈRES
187
- Détectés : N
188
- Avec CLAUDE.md : N/N
189
- Avec .claude/ configuré : N/N ║
190
- ║ Tests configurés : N/N
191
- ║ Git clean : N/N
186
+ SIBLING REPOS
187
+ Detected: N
188
+ With CLAUDE.md: N/N
189
+ With .claude/ configured: N/N ║
190
+ ║ Tests configured: N/N
191
+ ║ Git clean: N/N
192
192
  ║ ║
193
193
  ╠═══════════════════════════════════════════════════════╣
194
- Prochaine étape :
195
- ║ claude --agent team-lead
194
+ Next step:
195
+ ║ claude --agent team-lead
196
196
  ╚═══════════════════════════════════════════════════════╝
197
197
  ```
198
198
 
199
- Si des problèmes non résolus subsistent, liste-les avec les actions recommandées.
199
+ If unresolved issues remain, list them with recommended actions.
200
200
 
201
- ## Règles
201
+ ## Rules
202
202
 
203
- - **Jamais de question inutile** : si tu peux déduire ou auto-fixer, fais-le
204
- - **Grouper les questions** : max 5 questions à la fois
205
- - **Idempotent** : relancer l'agent ne casse rien, il re-vérifie tout
206
- - **Pas de code dans les repos** : tu ne touches qu'à orchestrator/ et aux CLAUDE.md des repos (Phase 3b, avec validation utilisateur)
207
- - **Rapport concis** : le diagnostic tient en un écran
203
+ - **No unnecessary questions**: if you can deduce or auto-fix, do it
204
+ - **Group questions**: max 5 questions at a time
205
+ - **Idempotent**: re-running the agent breaks nothing, it re-checks everything
206
+ - **No code in repos**: you only touch orchestrator/ and repo CLAUDE.md files (Phase 3b, with user validation)
207
+ - **Concise report**: the diagnostic fits in one screen
@@ -3,7 +3,7 @@ name: bootstrap-repo
3
3
  description: >
4
4
  Generate a high-quality CLAUDE.md for a repository that doesn't have one.
5
5
  Scans the repo to detect stack, patterns, conventions, tests, architecture.
6
- Use when user says "bootstrap", "init CLAUDE.md", "génère un CLAUDE.md",
6
+ Use when user says "bootstrap", "init CLAUDE.md", "generate CLAUDE.md",
7
7
  or when a repo is detected without CLAUDE.md during setup.
8
8
  argument-hint: "[repo-path]"
9
9
  context: fork
@@ -4,8 +4,8 @@ description: >
4
4
  Validate technical consistency BETWEEN services. Does not review code
5
5
  quality (that's qa-ruthless). Checks: API contracts match frontend types,
6
6
  env vars synced, gateway routes match API, data schemas aligned.
7
- Use after teammates finish, before QA, or when user says "cohérence",
8
- "cross-service", "aligné", "pre-merge".
7
+ Use after teammates finish, before QA, or when user says "consistency",
8
+ "cross-service", "aligned", "pre-merge".
9
9
  argument-hint: "[feature-name]"
10
10
  context: fork
11
11
  disable-model-invocation: true
@@ -5,7 +5,7 @@ description: >
5
5
  reports, and implementation patterns to improve repo CLAUDE.md files,
6
6
  service profiles, and project constitution. Run after a successful cycle
7
7
  (dispatch → QA → merge). Use when user says "retro", "rétrospective",
8
- "capitalise", "lessons learned", "what did we learn", "améliore les docs".
8
+ "capitalize", "lessons learned", "what did we learn", "improve docs".
9
9
  argument-hint: "[feature-name]"
10
10
  context: fork
11
11
  disable-model-invocation: true
@@ -121,7 +121,7 @@ Create `./plans/retro-{date}.md`:
121
121
  ## Phase 5: Present and confirm
122
122
 
123
123
  Present the retrospective to the user. Ask:
124
- "Rétrospective terminée. [N] améliorations suggérées. Appliquer les changements aux CLAUDE.md ?"
124
+ "Retrospective complete. [N] improvements suggested. Apply changes to CLAUDE.md files?"
125
125
 
126
126
  If user confirms, spawn teammates to apply the CLAUDE.md updates to each repo.
127
127
  Do NOT auto-apply constitution changes — those require human review.
@@ -4,8 +4,8 @@ description: >
4
4
  Orchestrate multi-service feature implementation. Clarifies ambiguities
5
5
  before planning, writes a persistent markdown plan, spawns teammates
6
6
  in dependency waves with full context including constitution and UX standards.
7
- Use whenever the user describes a feature, says "implémente", "nouvelle feature",
8
- "dispatch", "lance le dev", "lance les teammates", or provides a spec.
7
+ Use whenever the user describes a feature, says "implement", "new feature",
8
+ "dispatch", "start dev", "launch teammates", or provides a spec.
9
9
  argument-hint: "[feature description]"
10
10
  context: fork
11
11
  allowed-tools: Read, Write, Glob, Grep, Task, Teammate, SendMessage
@@ -53,9 +53,9 @@ Skip clarify if: bug with log provided, or user says "go"/"autonome".
53
53
  4. Auto-discover repos: scan `../` for directories with `.git/` not in workspace.md
54
54
  → If new repos found: mention them, ask if relevant to this feature
55
55
 
56
- > **v4.0 change**: The `constitution-en` rule is now scoped to orchestrator/ only.
57
- > Teammates do NOT receive it automatically. You MUST include the full 12 universal
58
- > principles + project-specific rules in every spawn prompt.
56
+ > The constitution is defined in your workspace's constitution.md.
57
+ > Teammates do NOT receive it automatically. You MUST include all rules
58
+ > from constitution.md in every spawn prompt.
59
59
 
60
60
  ## Phase 2: Write the plan
61
61
 
@@ -88,10 +88,9 @@ For EVERY teammate, include in the spawn prompt:
88
88
  See @references/spawn-templates.md for the full templates per service type
89
89
  (backend, frontend, infra, explore).
90
90
 
91
- > **Constitution in spawn prompts**: The 12 universal principles are NO LONGER
92
- > auto-injected into teammate sessions (v4.0 rule scoped to orchestrator/).
93
- > You MUST include ALL 12 principles + project-specific rules in every spawn prompt.
94
- > See @references/spawn-templates.md for templates with the full constitution.
91
+ > **Constitution in spawn prompts**: Teammates do NOT receive the constitution
92
+ > automatically. You MUST include ALL rules from constitution.md in every spawn prompt.
93
+ > See @references/spawn-templates.md for templates.
95
94
 
96
95
  ### Frontend teammates — extra context
97
96
 
@@ -13,9 +13,8 @@ Reference file for dispatch-feature. Loaded on-demand when Claude needs reminder
13
13
  6. **NEVER forget UX standards in frontend teammate prompts** — they're in references/frontend-ux-standards.md
14
14
  7. **NEVER launch wave 2 before wave 1 reports back** — contracts must be validated first
15
15
  8. **NEVER let a teammate guess on architectural decisions** — they must escalate to you
16
- 9. **ALWAYS include the full constitution in spawn prompts** — the 12 universal principles
17
- + project-specific rules. Since v4.0, the constitution rule is scoped to orchestrator/
18
- only. Teammates do NOT receive it automatically.
16
+ 9. **ALWAYS include the full constitution in spawn prompts** — all rules from
17
+ constitution.md. Teammates do NOT receive it automatically.
19
18
  10. **NEVER keep code details in your context** — summarize to 3 lines in the plan, then compact
20
19
  11. **NEVER assume repos are listed in workspace.md** — scan `../` at feature start for
21
20
  any new `.git` repos that may have appeared since last configuration
@@ -1,73 +1,73 @@
1
1
  # Frontend UX Standards
2
2
 
3
- Ce document est injecté dans le prompt de chaque teammate frontend.
4
- Il définit le niveau de qualité UX minimum attendu.
3
+ This document is injected into every frontend teammate's prompt.
4
+ It defines the minimum expected UX quality level.
5
5
 
6
- ## Les 4 états obligatoires
6
+ ## The 4 mandatory states
7
7
 
8
- Chaque composant qui affiche des données DOIT implémenter :
8
+ Every component that displays data MUST implement:
9
9
 
10
10
  ### Loading state
11
- - Skeleton loader qui reproduit la forme du contenu attendu
12
- - Pas de spinner générique plein écran le skeleton donne un aperçu de la structure
13
- - Le skeleton est animé (pulse) pour indiquer l'activité
14
- - Durée max avant timeout : configurable, défaut 10s → bascule sur error state
11
+ - Skeleton loader that mimics the shape of the expected content
12
+ - No generic full-screen spinner — the skeleton gives a preview of the structure
13
+ - The skeleton is animated (pulse) to indicate activity
14
+ - Max duration before timeout: configurable, default 10s → switches to error state
15
15
 
16
16
  ### Empty state
17
- - Illustration ou icône contextuelle (pas un message texte seul)
18
- - Message clair qui explique pourquoi c'est vide
19
- - Call-to-action pour créer le premier élément ou modifier les filtres
20
- - Exemple : "Aucun budget défini. Créez votre premier budget pour commencer le suivi."
17
+ - Contextual illustration or icon (not a text message alone)
18
+ - Clear message explaining why it's empty
19
+ - Call-to-action to create the first item or modify filters
20
+ - Example: "No budgets defined. Create your first budget to start tracking."
21
21
 
22
22
  ### Error state
23
- - Message d'erreur compréhensible par l'utilisateur (pas le message technique)
24
- - Bouton "Réessayer" qui retente l'action
25
- - Si l'erreur persiste, afficher un message secondaire avec un lien support
26
- - Les erreurs réseau et les erreurs serveur ont des messages différents
23
+ - User-friendly error message (not the technical message)
24
+ - "Retry" button that retries the action
25
+ - If the error persists, show a secondary message with a support link
26
+ - Network errors and server errors have different messages
27
27
 
28
28
  ### Success state
29
- - Le contenu s'affiche avec une transition fluide depuis le skeleton
30
- - Si c'est une action (création, modification), feedback toast/notification
31
- - L'état succès est le seul qui ne nécessite pas d'élément UI supplémentaire
29
+ - Content displays with a smooth transition from the skeleton
30
+ - If it's an action (create, update), feedback via toast/notification
31
+ - The success state is the only one that doesn't require an additional UI element
32
32
 
33
33
  ## Responsive
34
34
 
35
- - **Mobile first** : construire la version mobile en premier
36
- - Breakpoints Quasar : `$breakpoint-xs` (0-599), `$breakpoint-sm` (600-1023),
35
+ - **Mobile first**: build the mobile version first
36
+ - Quasar breakpoints: `$breakpoint-xs` (0-599), `$breakpoint-sm` (600-1023),
37
37
  `$breakpoint-md` (1024-1439), `$breakpoint-lg` (1440+)
38
- - Les tableaux de données sur mobile : basculer en vue carte/liste, pas de scroll horizontal
39
- - Les formulaires sur mobile : champs empilés, clavier natif approprié (inputmode)
40
- - Les actions principales : accessibles avec le pouce (zone basse de l'écran)
38
+ - Data tables on mobile: switch to card/list view, no horizontal scroll
39
+ - Forms on mobile: stacked fields, appropriate native keyboard (inputmode)
40
+ - Primary actions: accessible with the thumb (bottom zone of the screen)
41
41
 
42
42
  ## Interactions
43
43
 
44
- - **Debounce** sur les inputs de recherche/filtre : 300ms
45
- - **Optimistic updates** pour les actions rapides (toggle, suppression)
46
- avec rollback en cas d'erreur API
47
- - **Confirmation** pour les actions destructives (suppression, reset)
48
- via dialog Quasar, pas window.confirm()
49
- - **Transitions** entre les états : fade 150ms par défaut
50
- - **Disabled state** clair sur les boutons pendant le traitement (pas de double submit)
44
+ - **Debounce** on search/filter inputs: 300ms
45
+ - **Optimistic updates** for quick actions (toggle, delete)
46
+ with rollback on API error
47
+ - **Confirmation** for destructive actions (delete, reset)
48
+ via Quasar dialog, not window.confirm()
49
+ - **Transitions** between states: fade 150ms by default
50
+ - **Disabled state** clear on buttons during processing (no double submit)
51
51
 
52
- ## Accessibilité (minimum)
52
+ ## Accessibility (minimum)
53
53
 
54
- - Tous les éléments interactifs ont un `aria-label` descriptif
55
- - Navigation au clavier fonctionnelle (tab order logique, focus visible)
56
- - Contraste minimum WCAG AA (4.5:1 texte, 3:1 grands textes)
57
- - Les icônes sans texte ont un `aria-label` ou un tooltip
58
- - Les formulaires ont des labels associés (pas de placeholder comme seul label)
54
+ - All interactive elements have a descriptive `aria-label`
55
+ - Keyboard navigation functional (logical tab order, visible focus)
56
+ - Minimum contrast WCAG AA (4.5:1 text, 3:1 large text)
57
+ - Icons without text have an `aria-label` or a tooltip
58
+ - Forms have associated labels (no placeholder as the only label)
59
59
 
60
- ## Formulaires
60
+ ## Forms
61
61
 
62
- - Validation inline au blur (pas seulement au submit)
63
- - Messages d'erreur sous le champ concerné, en rouge, avec icône
64
- - Bouton submit disabled tant que le formulaire est invalide
65
- - Auto-focus sur le premier champ à l'ouverture
66
- - Préserver les données saisies en cas d'erreur serveur
62
+ - Inline validation on blur (not only on submit)
63
+ - Error messages below the relevant field, in red, with icon
64
+ - Submit button disabled while the form is invalid
65
+ - Auto-focus on the first field when opened
66
+ - Preserve entered data on server error
67
67
 
68
68
  ## Design system
69
69
 
70
- - Utiliser les composants Quasar natifs en priorité (QTable, QForm, QDialog...)
71
- - Ne pas réinventer un composant qui existe dans Quasar
72
- - Les couleurs, spacing, et typographie suivent le thème Quasar du projet
73
- - Les icônes viennent d'un set unique (Material Icons ou celui configuré)
70
+ - Use native Quasar components first (QTable, QForm, QDialog...)
71
+ - Do not reinvent a component that exists in Quasar
72
+ - Colors, spacing, and typography follow the project's Quasar theme
73
+ - Icons come from a single set (Material Icons or the configured one)