citadel-ai 10.4.0 → 11.0.0
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.
- package/GETTING-STARTED.md +21 -8
- package/README.fr.md +87 -178
- package/README.md +88 -190
- package/dist/cli/ide-rules.js +73 -33
- package/dist/cli/ide-rules.js.map +1 -1
- package/dist/cli/index.js +74 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts +4 -0
- package/dist/cli/init.js +202 -177
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/run.js +29 -2
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/skills.d.ts +1 -1
- package/dist/cli/skills.js +156 -3
- package/dist/cli/skills.js.map +1 -1
- package/dist/cli/update.js +153 -75
- package/dist/cli/update.js.map +1 -1
- package/dist/core/gates.js +2 -1
- package/dist/core/gates.js.map +1 -1
- package/dist/core/memory.d.ts +24 -1
- package/dist/core/memory.js +383 -15
- package/dist/core/memory.js.map +1 -1
- package/dist/core/orchestrator.js +6 -0
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/core/project-layout.d.ts +22 -0
- package/dist/core/project-layout.js +23 -0
- package/dist/core/project-layout.js.map +1 -0
- package/dist/core/types.d.ts +41 -0
- package/package.json +2 -2
package/GETTING-STARTED.md
CHANGED
|
@@ -52,12 +52,20 @@ You'll see something like:
|
|
|
52
52
|
✅ CITADEL installed! 42 agents ready.
|
|
53
53
|
|
|
54
54
|
AGENTS.md Codex rules (lean, phased loading)
|
|
55
|
+
citadel/
|
|
56
|
+
├── STATUS.md
|
|
57
|
+
├── CONTEXT.md
|
|
58
|
+
├── DECISIONS.md
|
|
59
|
+
├── ARCHITECTURE.md
|
|
60
|
+
├── TOKENS.md
|
|
61
|
+
├── RUNBOOK.md
|
|
62
|
+
├── HANDOFF.md
|
|
63
|
+
└── specs/
|
|
55
64
|
.citadel/
|
|
56
|
-
├──
|
|
57
|
-
├──
|
|
58
|
-
├──
|
|
59
|
-
|
|
60
|
-
└── gates/ Gate progress (gitignored)
|
|
65
|
+
├── state/ Session state (gitignored)
|
|
66
|
+
├── gates/ Gate progress (gitignored)
|
|
67
|
+
├── teams/ Delivery pods
|
|
68
|
+
└── skills/ Rules and specialist skills
|
|
61
69
|
```
|
|
62
70
|
|
|
63
71
|
**Step 5: Start chatting**
|
|
@@ -89,10 +97,11 @@ Your AI now works like a team of 42 specialists instead of one generalist brain.
|
|
|
89
97
|
When you describe what you want to build:
|
|
90
98
|
|
|
91
99
|
1. **The C-Suite asks questions first** — product, architecture, security, data, growth. You answer.
|
|
92
|
-
2. **Then specs get drafted** — PRD, architecture decisions, security requirements. Saved in
|
|
100
|
+
2. **Then specs get drafted** — PRD, architecture decisions, security requirements. Saved in `citadel/specs/`.
|
|
93
101
|
3. **Makers build** — specialized agents write code per domain (backend, frontend, mobile, etc.)
|
|
94
102
|
4. **Checkers review** — independent agents validate the work (the builder never reviews their own code)
|
|
95
103
|
5. **Security has veto power** — nothing ships without a security check
|
|
104
|
+
6. **Token budget stays visible** — you can check `citadel/TOKENS.md` or `status` before a session gets too expensive
|
|
96
105
|
|
|
97
106
|
## Useful commands (in the chat)
|
|
98
107
|
|
|
@@ -101,9 +110,13 @@ You can say these things to your AI at any time:
|
|
|
101
110
|
| What you say | What happens |
|
|
102
111
|
|-------------|-------------|
|
|
103
112
|
| "help" or "I'm stuck" | ATLAS explains where you are and what to do next |
|
|
104
|
-
| "status" | Shows
|
|
113
|
+
| "status" | Shows phase, gate, and token budget |
|
|
114
|
+
| "estimate login flow" | Estimates context pressure before the next heavy task |
|
|
115
|
+
| "start" | Runs the clarification and planning flow |
|
|
105
116
|
| "build [feature]" | Starts the build with the right maker agents |
|
|
117
|
+
| "fix [bug]" | Runs the hotfix flow with change-impact review |
|
|
106
118
|
| "review" | Runs the checker team on your code |
|
|
119
|
+
| "ship" | Runs release readiness and rollback checks |
|
|
107
120
|
| "@bruce security check" | Asks the CISO to audit security |
|
|
108
121
|
| Any description of what you want | ATLAS routes to the right expert |
|
|
109
122
|
|
|
@@ -120,7 +133,7 @@ If your IDE reads project files for context (most AI IDEs do), yes. CITADEL crea
|
|
|
120
133
|
Yes. Run `npx citadel-ai init` in your project folder. It won't modify your existing code — it only adds CITADEL files.
|
|
121
134
|
|
|
122
135
|
**What if I want to remove CITADEL?**
|
|
123
|
-
Delete the `.citadel/`
|
|
136
|
+
Delete the `citadel/` and `.citadel/` folders plus the rule files (AGENTS.md, CLAUDE.md, GEMINI.md, .cursorrules, .windsurfrules). Your project code is untouched.
|
|
124
137
|
|
|
125
138
|
**Is this free?**
|
|
126
139
|
Yes. MIT license. Free forever.
|
package/README.fr.md
CHANGED
|
@@ -1,236 +1,145 @@
|
|
|
1
|
-
#
|
|
1
|
+
# CITADEL
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Construis avec l'IA sans finir avec une app fragile.
|
|
4
4
|
|
|
5
|
-
CITADEL
|
|
5
|
+
CITADEL est une couche de gouvernance légère pour les outils de code assistés par IA. Il aide les solo founders, les PMs et les petites équipes à transformer leurs idées en MVPs solides en poussant l'IA à :
|
|
6
|
+
|
|
7
|
+
- poser les bonnes questions avant de coder
|
|
8
|
+
- garder la mémoire du projet entre les sessions
|
|
9
|
+
- séparer la construction de la review
|
|
10
|
+
- vérifier les risques avant le shipping
|
|
11
|
+
- montrer le budget token avant que le contexte parte en vrille
|
|
6
12
|
|
|
7
13
|
[](https://www.npmjs.com/package/citadel-ai)
|
|
8
14
|
[](https://opensource.org/licenses/MIT)
|
|
9
15
|
|
|
10
|
-
```bash
|
|
11
|
-
npx citadel-ai init
|
|
12
|
-
```
|
|
13
|
-
|
|
14
16
|
Fonctionne avec **Codex** · **Claude Code** · **Cursor** · **Antigravity** · **Windsurf**
|
|
15
17
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
## C'est pour toi ?
|
|
19
|
-
|
|
20
|
-
### CITADEL est fait pour
|
|
18
|
+
## C'est pour qui ?
|
|
21
19
|
|
|
22
|
-
|
|
23
|
-
- Les opérationnels et PMs qui vibecodent des outils internes
|
|
24
|
-
- Les growth builders qui shippent vite sans équipe dev dédiée
|
|
25
|
-
- Les développeurs non-traditionnels qui veulent des garde-fous, pas du gatekeeping
|
|
20
|
+
CITADEL est fait pour :
|
|
26
21
|
|
|
27
|
-
|
|
22
|
+
- les solo founders qui construisent avec l'IA
|
|
23
|
+
- les PMs qui veulent transformer une idée en outil ou en MVP
|
|
24
|
+
- les petites équipes sans vraie organisation engineering
|
|
28
25
|
|
|
29
|
-
|
|
30
|
-
- Les devs seniors qui ont déjà une discipline d'architecture solide
|
|
31
|
-
- Les équipes qui ont besoin d'une plateforme CI/CD de production
|
|
32
|
-
- Les débutants complets qui n'ont jamais rien construit avec l'IA
|
|
26
|
+
CITADEL n'est pas fait pour :
|
|
33
27
|
|
|
34
|
-
|
|
28
|
+
- ceux qui cherchent des prompts one-shot
|
|
29
|
+
- les équipes qui ont déjà un process engineering très solide
|
|
30
|
+
- les besoins enterprise complets dès le départ
|
|
35
31
|
|
|
36
|
-
##
|
|
32
|
+
## Pourquoi l'utiliser ?
|
|
37
33
|
|
|
38
|
-
|
|
34
|
+
Sans structure, coder avec l'IA est souvent impressionnant au début, puis douloureux quelques semaines plus tard.
|
|
39
35
|
|
|
40
|
-
|
|
41
|
-
- Personne ne review — le builder valide son propre travail (et rate ses propres erreurs)
|
|
42
|
-
- Le contexte se perd — l'IA oublie ce qui a été décidé 3 messages plus tôt
|
|
43
|
-
- Aucun standard — code spaghetti, magic numbers, business logic partout
|
|
44
|
-
- La sécurité est un afterthought — auth, encryption, compliance arrivent "plus tard" (jamais)
|
|
36
|
+
Problèmes classiques :
|
|
45
37
|
|
|
46
|
-
|
|
38
|
+
- l'IA code avant que le besoin soit clair
|
|
39
|
+
- elle oublie les décisions prises dans les sessions précédentes
|
|
40
|
+
- elle casse des parties qui marchaient déjà
|
|
41
|
+
- personne ne review le travail indépendamment
|
|
42
|
+
- le projet devient difficile à faire évoluer
|
|
47
43
|
|
|
48
|
-
|
|
44
|
+
CITADEL ajoute du process autour de ton IA pour que tu puisses aller vite sans construire une house of cards.
|
|
49
45
|
|
|
50
46
|
## Ce que CITADEL fait
|
|
51
47
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
**Force la réflexion stratégique d'abord.** Avant tout code, un C-Suite virtuel pose des questions sur ton produit, ton architecture, la sécurité, les données et la croissance. Tu réponds. Ensuite les specs sont rédigées. Pas l'inverse.
|
|
55
|
-
|
|
56
|
-
**Sépare la construction de la review.** L'agent qui écrit le code n'est jamais celui qui le review. Comme dans toute organisation d'ingénierie sérieuse.
|
|
57
|
-
|
|
58
|
-
**Impose des checks de sécurité avant le shipping.** 5 gates obligatoires de l'inception au déploiement. La sécurité a un droit de veto — sans exception.
|
|
59
|
-
|
|
60
|
-
**Garde la mémoire du projet entre les sessions.** Décisions, erreurs, choix d'architecture — tout est persisté localement. L'IA ne repart pas de zéro à chaque fois.
|
|
61
|
-
|
|
62
|
-
**Charge uniquement ce qui est nécessaire.** Au lieu de charger les 42 profils d'agents en contexte (et de cramer ton quota de tokens), CITADEL ne charge que l'équipe pertinente pour la phase en cours. 88% de tokens en moins.
|
|
63
|
-
|
|
64
|
-
---
|
|
48
|
+
Après l'installation, ton IA va :
|
|
65
49
|
|
|
66
|
-
|
|
50
|
+
1. Poser des questions avant d'écrire du code
|
|
51
|
+
2. Écrire le plan du projet et les décisions importantes
|
|
52
|
+
3. Utiliser des rôles spécialisés pour construire
|
|
53
|
+
4. Utiliser des rôles séparés pour reviewer
|
|
54
|
+
5. Garder une mémoire projet pour reprendre proprement la session suivante
|
|
67
55
|
|
|
68
|
-
|
|
69
|
-
|--|------|-------------|
|
|
70
|
-
| Démarrage | "Fais-moi une app" → l'IA fonce dans le code | Le C-Suite demande : c'est pour qui ? quelles données ? quelle sécurité ? |
|
|
71
|
-
| Architecture | Ce que l'IA décide sur le moment | ADR explicite, reviewé par un agent architecture dédié |
|
|
72
|
-
| Qualité du code | On espère que ça tient | Standards enforcés : 200 lignes/fichier, erreurs typées, pas de magic numbers |
|
|
73
|
-
| Review | Tu relis toi-même (et tu rates des trucs) | Agents checkers indépendants avec une perspective différente |
|
|
74
|
-
| Sécurité | "On ajoutera l'auth plus tard" | Review sécurité à chaque gate. Droit de veto sur le déploiement |
|
|
75
|
-
| Session suivante | L'IA a tout oublié | La mémoire persiste décisions, erreurs et contexte projet |
|
|
76
|
-
| Consommation tokens | Contexte complet à chaque message (~14K tokens) | Chargement par phase (~1 800 tokens par phase) |
|
|
56
|
+
Sous le capot, CITADEL utilise une organisation structurée avec stratégie, makers, checkers, mémoire et gates. Tu n'as pas besoin d'apprendre toute cette mécanique pour en tirer de la valeur.
|
|
77
57
|
|
|
78
|
-
|
|
58
|
+
## Installation en 2 minutes
|
|
79
59
|
|
|
80
|
-
|
|
60
|
+
Dans ton dossier projet :
|
|
81
61
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
### Étape 2 : Verrouiller la stratégie
|
|
86
|
-
PRD, décisions d'architecture, exigences sécurité, modèle de données — tout écrit dans `.citadel/specs/` après tes réponses.
|
|
87
|
-
|
|
88
|
-
### Étape 3 : Construire avec séparation des rôles
|
|
89
|
-
Des agents makers spécialisés construisent par domaine (backend, frontend, mobile, API, auth, data). Chacun suit des standards de code stricts.
|
|
90
|
-
|
|
91
|
-
### Étape 4 : Reviewer avant de shipper
|
|
92
|
-
Des agents checkers indépendants valident la qualité du code, les tests, la performance, la sécurité, l'accessibilité. Builder ≠ reviewer — toujours.
|
|
93
|
-
|
|
94
|
-
### Étape 5 : Shipper avec mémoire
|
|
95
|
-
Décisions, erreurs et contexte persistent dans `.citadel/memory/`. La session suivante reprend là où tu t'es arrêté.
|
|
96
|
-
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
## Démarrage rapide
|
|
100
|
-
|
|
101
|
-
### Option 1 : Copie-colle dans ton chat IA (le plus simple)
|
|
102
|
-
|
|
103
|
-
Ouvre ton IDE IA (Codex, Cursor, Antigravity, Claude Code, Windsurf) et colle ça :
|
|
104
|
-
|
|
105
|
-
```
|
|
106
|
-
Lance cette commande dans le terminal : npx citadel-ai init
|
|
107
|
-
Puis lis le fichier AGENTS.md, CLAUDE.md ou GEMINI.md qui a été créé et suis ses instructions.
|
|
62
|
+
```bash
|
|
63
|
+
npx citadel-ai init
|
|
108
64
|
```
|
|
109
65
|
|
|
110
|
-
|
|
66
|
+
Ensuite, ouvre ton IDE IA et commence à parler.
|
|
111
67
|
|
|
112
|
-
|
|
68
|
+
Si ton IA ne sait pas quoi faire, dis-lui :
|
|
113
69
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
npx citadel-ai init
|
|
70
|
+
```text
|
|
71
|
+
Suis CITADEL. Pose des questions d'abord, fais un plan, protège ce qui ne doit pas casser, puis construis, review, et shippe proprement.
|
|
118
72
|
```
|
|
119
73
|
|
|
120
|
-
|
|
74
|
+
## Ce qui est installé
|
|
121
75
|
|
|
122
|
-
|
|
76
|
+
CITADEL ajoute :
|
|
123
77
|
|
|
124
|
-
|
|
78
|
+
- des fichiers de règles IDE comme `AGENTS.md`, `CLAUDE.md`, `.cursorrules`
|
|
79
|
+
- un hub projet visible `citadel/` pour le statut, le contexte, les décisions, l'architecture, le runbook et le handoff
|
|
80
|
+
- une télémétrie token visible dans `citadel/TOKENS.md`
|
|
81
|
+
- un moteur caché `.citadel/` pour l'état interne, les gates, les équipes, les agents et les skills
|
|
125
82
|
|
|
126
|
-
|
|
83
|
+
Dans la plupart des cas, tu n'as rien à configurer à la main.
|
|
127
84
|
|
|
128
|
-
## Ce qui
|
|
85
|
+
## Ce qui se passe ensuite
|
|
129
86
|
|
|
130
|
-
|
|
131
|
-
ton-projet/
|
|
132
|
-
├── AGENTS.md ← Chargé auto par Codex
|
|
133
|
-
├── CLAUDE.md ← Chargé auto par Claude Code
|
|
134
|
-
├── GEMINI.md ← Chargé auto par Antigravity
|
|
135
|
-
├── .cursorrules ← Chargé auto par Cursor
|
|
136
|
-
├── .windsurfrules ← Chargé auto par Windsurf
|
|
137
|
-
├── .claude/commands/ ← /citadel-help, /citadel-build, /citadel-review...
|
|
138
|
-
├── .cursor/commands/
|
|
139
|
-
├── .citadel/
|
|
140
|
-
│ ├── agents/ ← 42 personas d'agents complètes (référence)
|
|
141
|
-
│ ├── teams/ ← 12 fichiers équipe et pods de delivery (chargement par phase)
|
|
142
|
-
│ ├── specs/ ← PRD, ADR, Sécurité, Data Model, Growth
|
|
143
|
-
│ ├── memory/ ← État persistant (gitignored)
|
|
144
|
-
│ └── gates/ ← Suivi des gates (gitignored)
|
|
145
|
-
```
|
|
87
|
+
Une fois installé, le flow est simple :
|
|
146
88
|
|
|
147
|
-
|
|
89
|
+
1. Tu décris ce que tu veux construire
|
|
90
|
+
2. Tu réponds aux questions de clarification
|
|
91
|
+
3. Tu valides le plan
|
|
92
|
+
4. Tu laisses l'IA construire ou corriger le bon morceau
|
|
93
|
+
5. Tu laisses l'IA reviewer avant de shipper
|
|
148
94
|
|
|
149
|
-
|
|
150
|
-
|-----|-----------------|
|
|
151
|
-
| Claude Code | `/citadel-help` |
|
|
152
|
-
| Cursor | `/citadel-help` |
|
|
153
|
-
| Codex | Commence à chatter (`AGENTS.md` est chargé) |
|
|
154
|
-
| Antigravity | Commence à chatter |
|
|
155
|
-
| Windsurf | Commence à chatter |
|
|
95
|
+
## Commandes
|
|
156
96
|
|
|
157
|
-
CLI optionnel (nécessite une clé API) :
|
|
158
97
|
```bash
|
|
159
|
-
|
|
98
|
+
npx citadel-ai init
|
|
99
|
+
npx citadel-ai update
|
|
160
100
|
npx citadel-ai run
|
|
101
|
+
npx citadel-ai status
|
|
102
|
+
npx citadel-ai estimate "flow login"
|
|
103
|
+
npx citadel-ai agents
|
|
161
104
|
```
|
|
162
105
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
## Pourquoi c'est différent
|
|
166
|
-
|
|
167
|
-
La plupart des frameworks IA donnent **plus d'agents**. CITADEL donne **plus de discipline**.
|
|
168
|
-
|
|
169
|
-
- **Organisation > cerveau unique.** 42 agents avec des rôles, règles et personnalités distincts — mais chargés par phase, pas tous en même temps.
|
|
170
|
-
- **Gouvernance > vitesse.** Questions avant specs. Review avant ship. Veto sécurité avant déploiement.
|
|
171
|
-
- **Mémoire > amnésie.** Décisions, choix d'architecture et erreurs passées persistent localement entre les sessions.
|
|
172
|
-
- **Efficacité > force brute.** Chargement de contexte par phase : ~1 800 tokens au lieu de ~14 000.
|
|
173
|
-
|
|
174
|
-
---
|
|
106
|
+
Dans Claude Code ou Cursor, tu peux aussi utiliser :
|
|
175
107
|
|
|
176
|
-
|
|
108
|
+
- `/citadel-start`
|
|
109
|
+
- `/citadel-help`
|
|
110
|
+
- `/citadel-build`
|
|
111
|
+
- `/citadel-fix`
|
|
112
|
+
- `/citadel-review`
|
|
113
|
+
- `/citadel-ship`
|
|
114
|
+
- `/citadel-estimate`
|
|
115
|
+
- `/citadel-snapshot`
|
|
116
|
+
- `/citadel-status`
|
|
177
117
|
|
|
178
|
-
|
|
118
|
+
## Si tu n'as jamais utilisé de terminal
|
|
179
119
|
|
|
180
|
-
|
|
120
|
+
Voir [GETTING-STARTED.md](GETTING-STARTED.md).
|
|
181
121
|
|
|
182
|
-
|
|
122
|
+
## Limites
|
|
183
123
|
|
|
184
|
-
|
|
124
|
+
- CITADEL améliore la façon dont ton IA travaille, mais ne remplace pas le jugement
|
|
125
|
+
- c'est surtout utile pour les MVPs, les outils internes et les produits early-stage
|
|
126
|
+
- le projet évolue encore
|
|
185
127
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
---
|
|
189
|
-
|
|
190
|
-
## Limites connues
|
|
191
|
-
|
|
192
|
-
- **Early stage.** C'est la v1, en développement actif. Des aspérités sont à prévoir.
|
|
193
|
-
- **Pas autonome.** CITADEL structure le travail IA — il ne tourne pas sans supervision.
|
|
194
|
-
- **Pas un remplacement d'équipe.** Excellent pour les MVPs et l'outillage interne. Pour scaler en production, il faut de vrais développeurs et un CTO.
|
|
195
|
-
- **Dépendant de l'IDE.** Le chargement par phase dépend de comment ton IDE lit les fichiers de contexte. Le comportement varie.
|
|
196
|
-
|
|
197
|
-
---
|
|
198
|
-
|
|
199
|
-
## Roadmap
|
|
200
|
-
|
|
201
|
-
- [ ] Wizard d'onboarding (10 premières minutes guidées)
|
|
202
|
-
- [ ] Vidéo démo (60 secondes)
|
|
203
|
-
- [ ] Optimisations spécifiques par IDE
|
|
204
|
-
- [ ] Système de plugins pour agents personnalisés
|
|
205
|
-
- [ ] Cas d'usage non-code (équipes growth, marketing, ops)
|
|
206
|
-
|
|
207
|
-
---
|
|
208
|
-
|
|
209
|
-
## Commandes CLI
|
|
210
|
-
|
|
211
|
-
| Commande | Description |
|
|
212
|
-
|---------|-------------|
|
|
213
|
-
| `npx citadel-ai init` | Installe CITADEL dans ton projet |
|
|
214
|
-
| `npx citadel-ai update` | Met à jour le framework (garde tes données) |
|
|
215
|
-
| `npx citadel-ai run` | CLI interactif (nécessite clé API) |
|
|
216
|
-
| `npx citadel-ai agents` | Liste les 42 agents |
|
|
217
|
-
| `npx citadel-ai status` | Phase & gate en cours |
|
|
218
|
-
| `npx citadel-ai help` | Toutes les commandes |
|
|
128
|
+
## Pourquoi c'est différent
|
|
219
129
|
|
|
220
|
-
|
|
130
|
+
La plupart des setups IA cherchent surtout à générer plus de code.
|
|
221
131
|
|
|
222
|
-
|
|
132
|
+
CITADEL cherche surtout à obtenir :
|
|
223
133
|
|
|
224
|
-
|
|
134
|
+
- de meilleures décisions avant le code
|
|
135
|
+
- une meilleure mémoire entre les sessions
|
|
136
|
+
- des changements plus sûrs
|
|
137
|
+
- une meilleure review avant le shipping
|
|
225
138
|
|
|
226
|
-
|
|
139
|
+
## English
|
|
227
140
|
|
|
228
|
-
|
|
141
|
+
Version anglaise : [README.md](README.md)
|
|
229
142
|
|
|
230
143
|
## Licence
|
|
231
144
|
|
|
232
145
|
MIT
|
|
233
|
-
|
|
234
|
-
---
|
|
235
|
-
|
|
236
|
-
Construit avec 🏰 par des humains qui parlent aux machines.
|