@icarusmx/creta 1.5.14 → 1.5.16

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/README.md CHANGED
@@ -1,12 +1,34 @@
1
1
  # 🏛️ Creta CLI
2
2
 
3
- **Creta** es el compañero CLI que evoluciona contigo - desde tus primeros comandos hasta tu carrera profesional.
3
+ [![npm version](https://img.shields.io/npm/v/@icarusmx/creta.svg)](https://www.npmjs.com/package/@icarusmx/creta)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+ [![Node.js](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen)](https://nodejs.org/)
6
+
7
+ **El compañero CLI que evoluciona contigo - desde tus primeros comandos hasta tu carrera profesional.**
4
8
 
5
9
  > "Salgamos de este laberinto" 🏛️
6
10
 
7
- ## 🌱 Un CLI que crece con el desarrollador
11
+ ---
12
+
13
+ ## 📖 Tabla de Contenidos
14
+
15
+ - [¿Qué es Creta?](#-qué-es-creta)
16
+ - [Instalación](#-instalación)
17
+ - [Arquitectura](#-arquitectura)
18
+ - [Phase 1: Aprendiz](#-phase-1-aprendiz-live) (✅ LIVE)
19
+ - [Phase 2: Desarrollador](#-phase-2-desarrollador-coming-soon) (🚧 v1.5.0)
20
+ - [Phase 3: Constructor](#-phase-3-constructor-vision) (🔮 v2.0.0+)
21
+ - [Utilidades](#-utilidades-actuales)
22
+ - [Filosofía](#-filosofía-creta)
23
+ - [Desarrollo](#-desarrollo)
24
+ - [Roadmap](#-roadmap)
25
+ - [Contribuir](#-contribuir)
26
+
27
+ ---
8
28
 
9
- Creta no es una herramienta que "terminas" y dejas atrás. Se adapta a tu nivel:
29
+ ## 🌱 ¿Qué es Creta?
30
+
31
+ Creta no es una herramienta que "terminas" y dejas atrás. **Es un compañero que se adapta a tu nivel**, evolucionando contigo desde estudiante hasta profesional:
10
32
 
11
33
  ```
12
34
  🎓 Aprendiz → 💻 Desarrollador → 🏗️ Constructor
@@ -14,12 +36,19 @@ Learn interactively Quick references Professional workflow
14
36
  creta sintaxis creta ls creta requirement
15
37
  ```
16
38
 
17
- **Versión actual:** 1.4.16 (Phase 1 - Aprendiz)
18
- **Próxima:** 1.5.0 (Phase 2 - Desarrollador)
39
+ **Versión actual:** 1.5.14 (Phase 1 - Aprendiz completado)
40
+ **Próxima:** 1.5.15 (Phase 2 - Sistema de ayuda)
41
+
42
+ ### ¿Por qué Creta?
43
+
44
+ - **🇪🇸 Spanish-First:** Aprende en tu idioma nativo, sin barrera de traducción
45
+ - **🔁 Aprendizaje Cíclico:** Integrado con Discord + YouTube para experiencia completa
46
+ - **🔒 Práctica Segura:** Ejecuta comandos reales en sandboxes aislados
47
+ - **📈 Evoluciona Contigo:** Nunca te quedas sin tu compañero a medida que creces
19
48
 
20
49
  ---
21
50
 
22
- ## Instalación
51
+ ## 📦 Instalación
23
52
 
24
53
  ```bash
25
54
  # Instalación global (recomendado)
@@ -27,6 +56,175 @@ npm install -g @icarusmx/creta
27
56
 
28
57
  # Uso directo con npx (sin instalar)
29
58
  npx @icarusmx/creta
59
+
60
+ # Verificar instalación
61
+ creta --version
62
+ ```
63
+
64
+ **Requisitos:**
65
+ - Node.js ≥ 18.0.0
66
+ - Sistema operativo: macOS, Linux, Windows (WSL)
67
+
68
+ ---
69
+
70
+ ## 🏗️ Arquitectura
71
+
72
+ Creta está diseñado como un sistema modular de 3 fases que evoluciona con las necesidades del desarrollador.
73
+
74
+ ### Vista General del Sistema
75
+
76
+ ```mermaid
77
+ graph TB
78
+ subgraph "🏛️ Creta CLI - Arquitectura de 3 Fases"
79
+ subgraph "Phase 1: Aprendiz (v1.4.16) ✅ LIVE"
80
+ A1[CLI Principal]
81
+ A2[Sistema de Menús]
82
+ A3[Ejecutores]
83
+ A4[Sistema Sandbox]
84
+ A5[Generador de Portafolios]
85
+
86
+ A1 --> A2
87
+ A2 --> A3
88
+ A3 --> A4
89
+ A3 --> A5
90
+ end
91
+
92
+ subgraph "Phase 2: Desarrollador (v1.5.0) 🚧 EN DEV"
93
+ B1[Sistema de Ayuda]
94
+ B2[Formateador de Comandos]
95
+ B3[Contenido de Referencia]
96
+
97
+ B1 --> B2
98
+ B2 --> B3
99
+ end
100
+
101
+ subgraph "Phase 3: Constructor (v2.0+) 🔮 VISION"
102
+ C1[Sistema de Auth]
103
+ C2[API Client]
104
+ C3[Gestor de Workflow]
105
+
106
+ C1 --> C2
107
+ C2 --> C3
108
+ end
109
+ end
110
+
111
+ subgraph "Componentes Clave"
112
+ D1[MenuBuilder]
113
+ D2[LessonBuilder]
114
+ D3[SandboxManager]
115
+ D4[CommandValidator]
116
+ D5[CommandExecutor]
117
+ D6[UserState]
118
+
119
+ A2 -.utiliza.-> D1
120
+ A3 -.utiliza.-> D2
121
+ A4 -.utiliza.-> D3
122
+ A4 -.utiliza.-> D4
123
+ A4 -.utiliza.-> D5
124
+ A1 -.mantiene.-> D6
125
+ end
126
+
127
+ subgraph "Datos"
128
+ E1[(Lecciones<br/>Enunciados + Sintaxis)]
129
+ E2[(Menús<br/>Configuración)]
130
+ E3[(Estado Usuario<br/>~/.creta/user.json)]
131
+ E4[(Sandboxes<br/>/tmp/creta-*)]
132
+
133
+ D2 --> E1
134
+ D1 --> E2
135
+ D6 --> E3
136
+ D3 --> E4
137
+ end
138
+
139
+ subgraph "Ecosistema Externo"
140
+ F1[Discord Server]
141
+ F2[YouTube Videos]
142
+ F3[npm Registry]
143
+
144
+ A1 <-.hash redemption.-> F1
145
+ F1 <-.unlock videos.-> F2
146
+ F3 <-.npx @icarusmx/creta.-> A1
147
+ end
148
+
149
+ style A1 fill:#4CAF50
150
+ style B1 fill:#FF9800
151
+ style C1 fill:#9C27B0
152
+ style D3 fill:#2196F3
153
+ style D6 fill:#F44336
154
+ ```
155
+
156
+ **[Ver diagrama completo →](docs/system-architecture.mmd)**
157
+
158
+ ### Flujo de Comandos
159
+
160
+ ```mermaid
161
+ graph LR
162
+ Start([Usuario ejecuta comando]) --> Entry[bin/creta.js<br/>Entry Point]
163
+
164
+ Entry --> Router{Detectar<br/>patrón de comando}
165
+
166
+ Router -->|creta| MainMenu[Menú Principal]
167
+ Router -->|creta sintaxis| SintaxisExec[SintaxisExecutor]
168
+ Router -->|creta enunciados| EnunciadosExec[EnunciadosExecutor]
169
+ Router -->|creta proyectos| ProyectosExec[ProyectosExecutor]
170
+ Router -->|creta portafolio| PortfolioExec[PortfolioExecutor]
171
+ Router -->|creta exercises| ExercisesExec[ExercisesExecutor]
172
+ Router -->|creta papers| PapersExec[PapersExecutor]
173
+ Router -->|creta help| HelpCmd[help.js]
174
+ Router -->|creta ls<br/>creta git status| CmdHelp[CommandHelpExecutor<br/>Phase 2 🚧]
175
+
176
+ SintaxisExec --> LessonBuilder[LessonBuilder]
177
+ EnunciadosExec --> LessonBuilder
178
+ ProyectosExec --> ProjectBuilder[ProjectBuilder]
179
+
180
+ LessonBuilder --> Interactive{¿Lección<br/>interactiva?}
181
+ Interactive -->|Sí| Sandbox[SandboxManager<br/>Práctica real]
182
+ Interactive -->|No| Display[Mostrar contenido]
183
+
184
+ Sandbox --> Validator[CommandValidator]
185
+ Validator --> Executor[CommandExecutor]
186
+ Executor --> TmpDir[/tmp/creta-practice-*]
187
+
188
+ PortfolioExec --> LevelMod[LevelModifier]
189
+ LevelMod --> SvelteTemplate[Template SvelteKit 5]
190
+
191
+ MainMenu --> MenuBuilder[MenuBuilder]
192
+ MenuBuilder --> UserState[(UserState<br/>~/.creta/user.json)]
193
+
194
+ CmdHelp --> HelpData[(command-help/<br/>Contenido de ayuda)]
195
+ HelpData --> Formatter[CommandHelpFormatter]
196
+
197
+ style Entry fill:#4CAF50
198
+ style Router fill:#FF9800
199
+ style Sandbox fill:#2196F3
200
+ style CmdHelp fill:#9C27B0
201
+ style UserState fill:#F44336
202
+ ```
203
+
204
+ **[Ver diagrama de routing →](docs/cli-routing.mmd)**
205
+
206
+ ### Estructura del Proyecto
207
+
208
+ ```
209
+ cli/
210
+ ├── bin/creta.js # Punto de entrada principal
211
+ ├── lib/
212
+ │ ├── cli/index.js # Lógica core del CLI
213
+ │ ├── builders/ # MenuBuilder, LessonBuilder, ProjectBuilder
214
+ │ ├── data/ # Contenido de lecciones y ayuda
215
+ │ │ ├── lessons/
216
+ │ │ │ ├── enunciados/ # 7 conceptos OOP fundamentales
217
+ │ │ │ └── sintaxis/ # 5 lecciones de sintaxis
218
+ │ │ └── command-help/ # Phase 2: Sistema de ayuda
219
+ │ ├── executors/ # Ejecutores de comandos
220
+ │ ├── sandbox/ # Sistema de práctica interactiva
221
+ │ │ ├── SandboxManager.js
222
+ │ │ ├── CommandValidator.js
223
+ │ │ └── CommandExecutor.js
224
+ │ └── utils/ # UserState, greeting, input/output
225
+ ├── templates/
226
+ │ └── sveltekit-portfolio/ # Template de portafolio
227
+ └── docs/ # Diagramas Mermaid
30
228
  ```
31
229
 
32
230
  ---
@@ -37,27 +235,63 @@ npx @icarusmx/creta
37
235
 
38
236
  ### El Flujo de Aprendizaje
39
237
 
40
- Creta es parte de un ecosistema educativo que combina **Discord**, **CLI** y **videos**:
238
+ Creta es parte de un ecosistema educativo completo que combina **Discord**, **CLI** y **videos educativos**:
41
239
 
240
+ ```mermaid
241
+ sequenceDiagram
242
+ participant Student as 🎓 Estudiante
243
+ participant Discord as 💬 Discord Server
244
+ participant CLI as 🏛️ Creta CLI
245
+ participant Sandbox as 🔒 Sandbox /tmp
246
+ participant YouTube as 📺 YouTube
247
+
248
+ Note over Student,YouTube: Ciclo de Aprendizaje Interactivo
249
+
250
+ Student->>Discord: 1. Únete al server
251
+ Discord->>Student: "Aprende tus primeros comandos"
252
+ Discord->>Student: "Instala Node.js"
253
+
254
+ Student->>CLI: 2. npx @icarusmx/creta
255
+ CLI->>Student: Menú principal interactivo
256
+
257
+ Student->>CLI: 3. creta sintaxis
258
+ CLI->>Student: Lista de lecciones disponibles
259
+
260
+ Student->>CLI: 4. Seleccionar "Primeros comandos"
261
+ CLI->>Sandbox: Crear sandbox en /tmp/creta-practice-*
262
+ Sandbox-->>CLI: Sandbox listo
263
+ CLI->>Student: Prompt interactivo (práctica real)
264
+
265
+ Student->>CLI: 5. Ejecutar: ls
266
+ CLI->>Sandbox: Validar y ejecutar comando
267
+ Sandbox-->>CLI: Resultado real del comando
268
+ CLI->>Student: ✅ Correcto! + Explicación
269
+
270
+ Student->>CLI: 6. Ejecutar: mkdir proyectos
271
+ CLI->>Sandbox: Validar y ejecutar
272
+ Sandbox-->>CLI: Directorio creado
273
+ CLI->>Student: ✅ Estado persiste entre pasos
274
+
275
+ Student->>CLI: 7. Completar todos los pasos
276
+ CLI->>CLI: Generar hash único
277
+ CLI->>Student: 🎉 Hash: abc123xyz
278
+
279
+ Student->>Discord: 8. /redeem abc123xyz
280
+ Discord->>Discord: Validar hash
281
+ Discord->>Student: 🔓 Link YouTube oculto
282
+
283
+ Student->>YouTube: 9. Ver video educativo
284
+ YouTube->>Student: Conceptos OOP, Git, etc.
285
+
286
+ Note over Student,CLI: 10. Regresa al CLI para practicar más
287
+
288
+ Student->>CLI: creta enunciados
289
+ CLI->>Student: 7 conceptos OOP para explorar
290
+
291
+ Note over Student,YouTube: 🔁 El ciclo continúa...
42
292
  ```
43
- Discord Server
44
- Aprende tus primeros comandos
45
- ↓ Instala Node.js
46
-
47
- npx @icarusmx/creta
48
- ↓ Practica comandos interactivos
49
- ↓ Completa lecciones
50
- ↓ Obtén un hash especial
51
-
52
- Discord: /redeem <hash>
53
- ↓ Recibe link de YouTube oculto
54
-
55
- Videos educativos
56
- ↓ Aprende conceptos
57
- ↓ Regresa al CLI para practicar
58
-
59
- 🔁 Ciclo continuo de aprendizaje
60
- ```
293
+
294
+ **[Ver flujo completo →](docs/learning-flow.mmd)**
61
295
 
62
296
  ### Comandos de Aprendizaje
63
297
 
@@ -93,22 +327,86 @@ creta sintaxis
93
327
  - 🔁 **Estado persistente:** Los cambios se mantienen entre pasos
94
328
  - 🧹 **Auto-limpieza:** Sandboxes se limpian automáticamente
95
329
 
330
+ **¿Cómo funciona internamente?**
331
+
332
+ ```mermaid
333
+ sequenceDiagram
334
+ participant Student as 🎓 Estudiante
335
+ participant SM as SandboxManager
336
+ participant CV as CommandValidator
337
+ participant CE as CommandExecutor
338
+ participant FS as 💾 Sistema de Archivos
339
+
340
+ Note over Student,FS: Sistema de Práctica Interactiva Segura
341
+
342
+ Student->>SM: Iniciar lección interactiva
343
+ SM->>SM: Limpiar sandboxes antiguos
344
+ SM->>FS: Crear /tmp/creta-practice-{timestamp}
345
+ FS-->>SM: Sandbox creado
346
+ SM->>Student: Prompt: "Ejecuta: ls"
347
+
348
+ Student->>SM: Ingresa: ls
349
+ SM->>CV: Validar comando
350
+
351
+ alt Comando válido
352
+ CV-->>SM: ✅ Válido
353
+ SM->>CE: Ejecutar en sandbox
354
+ CE->>FS: chdir(/tmp/creta-practice-*)
355
+ CE->>FS: exec('ls')
356
+ FS-->>CE: Resultado
357
+ CE-->>SM: stdout + stderr
358
+ SM->>Student: ✅ Correcto!<br/>Resultado: [archivos]
359
+ SM->>Student: Explicación del comando
360
+ else Comando inválido
361
+ CV-->>SM: ❌ Inválido
362
+ SM->>Student: ❌ Incorrecto<br/>Esperaba: ls<br/>Hint: lista archivos
363
+ end
364
+
365
+ Student->>SM: Siguiente paso: "mkdir proyectos"
366
+ SM->>CV: Validar
367
+ CV-->>SM: ✅ Válido
368
+ SM->>CE: Ejecutar
369
+ CE->>FS: exec('mkdir proyectos')
370
+ FS-->>CE: Directorio creado
371
+ CE-->>SM: Éxito
372
+ SM->>Student: ✅ Carpeta creada
373
+
374
+ Note over SM,FS: Estado persiste entre pasos
375
+
376
+ Student->>SM: "ls" (verificar)
377
+ SM->>CE: Ejecutar
378
+ CE->>FS: exec('ls')
379
+ FS-->>CE: proyectos/ <- ¡Persiste!
380
+ SM->>Student: ✅ proyectos/
381
+
382
+ Student->>SM: Completar lección
383
+ SM->>SM: Generar hash
384
+ SM->>Student: 🎉 Hash: abc123xyz
385
+ SM->>FS: Cleanup al salir del CLI
386
+ FS-->>SM: Sandbox eliminado
387
+
388
+ Note over Student,FS: Seguro: Todo en /tmp/, nunca toca archivos reales
389
+ ```
390
+
391
+ **[Ver diagrama del sandbox →](docs/sandbox-system.mmd)**
392
+
96
393
  ### 📚 Curriculum Completo
97
394
 
98
- **4 Lecciones de Sintaxis (con práctica interactiva):**
395
+ **5 Lecciones de Sintaxis (con práctica interactiva):**
99
396
  1. **Primeros comandos** - `ls`, `mkdir`, `cd` en sandbox real
100
397
  2. **Git** - Control de versiones con definiciones rigurosas
101
398
  3. **Combina comandos** - Standard streams (stdin/stdout/stderr) + piping
102
399
  4. **Escribe scripts** - Automatización desde `echo` hasta scripts de deployment
400
+ 5. **curl y pipes** - HTTP requests y procesamiento de datos
103
401
 
104
402
  **7 Enunciados Fundamentales (Conceptos OOP):**
105
- 1. Sistema - Descomposición de bibliotecas digitales
106
- 2. Solicitudes - Chat system object requests
107
- 3. Única forma - Cajas fuertes digitales
108
- 4. Firmas - Calculadora financiera
109
- 5. Conjunto - Music player interfaces
110
- 6. Énfasis - Banking system design
111
- 7. Objeto - Datos + procedimientos que operan sobre datos
403
+ 1. **Sistema** - Descomposición de bibliotecas digitales
404
+ 2. **Solicitudes** - Chat system object requests
405
+ 3. **Única forma** - Cajas fuertes digitales
406
+ 4. **Firmas** - Calculadora financiera
407
+ 5. **Conjunto** - Music player interfaces
408
+ 6. **Énfasis** - Banking system design
409
+ 7. **Objeto** - Datos + procedimientos que operan sobre datos
112
410
 
113
411
  ### 🚀 Generación de Portafolios
114
412
 
@@ -130,7 +428,7 @@ creta portafolio-3
130
428
 
131
429
  ---
132
430
 
133
- ## 💻 Phase 2: Desarrollador (COMING SOON - v1.5.0)
431
+ ## 💻 Phase 2: Desarrollador (COMING SOON)
134
432
 
135
433
  **Para junior devs que necesitan referencias rápidas**
136
434
 
@@ -149,6 +447,7 @@ creta git status
149
447
  creta mkdir
150
448
  creta wc
151
449
  creta grep
450
+ creta curl
152
451
  ```
153
452
 
154
453
  ### Por qué mejor que `man`:
@@ -159,11 +458,11 @@ creta grep
159
458
  - 🔗 **Conectado a tu aprendizaje** - Links a lecciones si necesitas profundizar
160
459
  - 🚀 **Sin context-switching** - No Google, no browser, solo terminal
161
460
 
162
- **Status:** 🚧 En desarrollo - Ships en v1.5.0
461
+ **Status:** 🚧 En desarrollo - Ships en v1.5.15
163
462
 
164
463
  ---
165
464
 
166
- ## 🏗️ Phase 3: Constructor (VISION - v2.0.0+)
465
+ ## 🏗️ Phase 3: Constructor (VISION)
167
466
 
168
467
  **Para profesionales trabajando en proyectos de Icarus**
169
468
 
@@ -212,6 +511,21 @@ creta icarus-terminal
212
511
  # Revertir personalización de terminal
213
512
  creta revert-terminal
214
513
 
514
+ # Tutorial para configurar Neovim
515
+ creta vim
516
+
517
+ # Tutorial para crear Pull Requests
518
+ creta pr
519
+
520
+ # Ver guías de AWS
521
+ creta aws
522
+
523
+ # Acceder a papers académicos
524
+ creta papers
525
+
526
+ # Generar ejercicios en PDF
527
+ creta exercises
528
+
215
529
  # Mostrar ayuda
216
530
  creta help
217
531
  creta ayuda
@@ -279,25 +593,6 @@ Creta almacena estos datos en tu sistema:
279
593
 
280
594
  ## 🔧 Desarrollo
281
595
 
282
- ### Estructura del Proyecto
283
-
284
- ```
285
- cli/
286
- ├── bin/creta.js # Punto de entrada
287
- ├── lib/
288
- │ ├── cli/index.js # Lógica principal del CLI
289
- │ ├── builders/ # MenuBuilder, LessonBuilder
290
- │ ├── data/ # Lecciones, menús, mensajes
291
- │ ├── executors/ # Ejecutores de sintaxis, enunciados, proyectos
292
- │ ├── sandbox/ # Sistema de práctica interactiva
293
- │ │ ├── SandboxManager.js
294
- │ │ ├── CommandValidator.js
295
- │ │ └── CommandExecutor.js
296
- │ └── utils/ # User state, greeting, etc.
297
- └── templates/
298
- └── sveltekit-portfolio/ # Template de portafolio
299
- ```
300
-
301
596
  ### Comandos de Desarrollo
302
597
 
303
598
  ```bash
@@ -307,51 +602,130 @@ node bin/creta.js
307
602
  # Probar comando específico
308
603
  node bin/creta.js sintaxis
309
604
  node bin/creta.js portafolio
605
+ node bin/creta.js ls # Phase 2 command help
310
606
 
311
- # Publicar a npm (incrementar versión primero)
607
+ # Publicar a npm (incrementar versión primero en package.json)
312
608
  npm publish
313
609
 
314
- # O usar el script de deployment
610
+ # O usar el script de deployment rápido
315
611
  ./deploy-patch.sh
316
612
  ```
317
613
 
318
614
  ### Tecnologías
319
615
 
320
- - **Runtime:** Node.js (ES modules, no TypeScript)
616
+ - **Runtime:** Node.js ≥ 18.0.0 (ES modules, no TypeScript)
321
617
  - **CLI Framework:** Vanilla Node.js con readline
618
+ - **Formatting:** chalk v5
322
619
  - **Template Engine:** SvelteKit 5 + Tailwind CSS 4
323
620
  - **Package Manager:** npm
324
621
  - **Publicado como:** `@icarusmx/creta` (acceso público)
325
622
 
623
+ ### Arquitectura de Componentes
624
+
625
+ ```mermaid
626
+ classDiagram
627
+ class SandboxManager {
628
+ +createSandbox() string
629
+ +executeStep(command, expected) Result
630
+ +cleanup() void
631
+ +validateCommand(input, expected) boolean
632
+ }
633
+
634
+ class CommandValidator {
635
+ +validate(input, expected) ValidationResult
636
+ +isExactMatch(input, expected) boolean
637
+ +provideHint(expected) string
638
+ }
639
+
640
+ class CommandExecutor {
641
+ +execute(command, workingDir) ExecutionResult
642
+ +captureOutput(command) Output
643
+ +handleError(error) ErrorInfo
644
+ }
645
+
646
+ class LessonBuilder {
647
+ +buildLesson(lessonData) Lesson
648
+ +renderContent(lesson) string
649
+ +handleInteractive(lesson) void
650
+ +generateHash(completion) string
651
+ }
652
+
653
+ class MenuBuilder {
654
+ +buildMenu(menuConfig) Menu
655
+ +displayOptions(menu) void
656
+ +handleSelection(choice) void
657
+ +navigate(path) void
658
+ }
659
+
660
+ class UserState {
661
+ +load() UserData
662
+ +save(data) void
663
+ +updateProgress(lesson) void
664
+ +getCompletedLessons() string[]
665
+ +resetState() void
666
+ }
667
+
668
+ class PortfolioExecutor {
669
+ +generatePortfolio(level) void
670
+ +applyLevel(template, level) Project
671
+ +copyTemplate(source, dest) void
672
+ }
673
+
674
+ class CommandHelpExecutor {
675
+ +showHelp(command) void
676
+ +findHelpContent(command) HelpData
677
+ +formatHelp(content) string
678
+ +linkToLesson(lesson) string
679
+ }
680
+
681
+ SandboxManager --> CommandValidator : usa
682
+ SandboxManager --> CommandExecutor : usa
683
+ LessonBuilder --> SandboxManager : interactivo
684
+ MenuBuilder --> UserState : lee/escribe
685
+ PortfolioExecutor --> LevelModifier : modifica
686
+ CommandHelpExecutor --> HelpFormatter : formatea
687
+
688
+ note for SandboxManager "Core del sistema de práctica\nAísla ejecución en /tmp/"
689
+ note for CommandHelpExecutor "Phase 2 - Sistema de ayuda\nReemplaza 'man' en español"
690
+ note for UserState "Persiste en ~/.creta/user.json\nNo requiere autenticación"
691
+ ```
692
+
693
+ **[Ver diagrama de interfaces →](docs/main-interfaces.mmd)**
694
+
326
695
  ---
327
696
 
328
697
  ## 🗺️ Roadmap
329
698
 
330
- ### ✅ Ahora: Phase 1 Complete (v1.4.16)
331
- - Core curriculum (7 enunciados + 4 sintaxis)
699
+ ### ✅ Ahora: Phase 1 Complete (v1.5.14)
700
+ - Core curriculum (7 enunciados + 5 sintaxis)
332
701
  - Interactive practice system
333
702
  - Portfolio generation
334
703
  - User state tracking
704
+ - Exercises and papers system
335
705
 
336
- ### 🚀 Próximo: Phase 2 Launch (v1.5.0)
337
- - Command reference system (`creta ls`)
706
+ ### 🚀 Próximo: Phase 2 Launch (v1.5.15)
707
+ - Command reference system (`creta ls`, `creta git status`)
338
708
  - Reemplazar `man` para estudiantes
709
+ - 10 comandos esenciales documentados
339
710
  - Polish existing content
340
- - Neovim curriculum
711
+ - Enhanced command help with examples
341
712
 
342
713
  ### 📈 3-6 meses: Phase 2 Expansion
343
- - Advanced command references
714
+ - Advanced command references (30+ commands)
344
715
  - Hash/YouTube loop completado
345
716
  - Scythe integration (tokens)
346
717
  - 500+ monthly active users
718
+ - Community-contributed help content
347
719
 
348
720
  ### 🏗️ 6-12 meses: Phase 3 Vision
349
- - Authentication system
721
+ - Authentication system (JWT/OAuth)
350
722
  - Requirement management (`creta requirement`)
351
723
  - Team workspace features
724
+ - Ticket tracking y workflow
352
725
  - Constructor tools live
726
+ - Professional developer features
353
727
 
354
- Ver **[ROADMAP.md](./ROADMAP.md)** para detalles completos.
728
+ **Ver [ROADMAP.md](./ROADMAP.md) para detalles completos.**
355
729
 
356
730
  ---
357
731
 
@@ -361,16 +735,19 @@ Ver **[ROADMAP.md](./ROADMAP.md)** para detalles completos.
361
735
  - Monthly active learners
362
736
  - Lessons completed per user
363
737
  - Hash redemption rate
738
+ - Discord ↔ CLI ↔ YouTube loop completion
364
739
 
365
740
  **Phase 2 (Desarrollador):**
366
741
  - `creta [command]` usage vs `man [command]`
367
742
  - Command reference engagement
743
+ - Student preference surveys
368
744
  - Time saved vs Google/man
369
745
 
370
746
  **Phase 3 (Constructor):**
371
- - Authenticated users
372
- - Daily active professionals
747
+ - Authenticated daily active users
373
748
  - Tickets managed through Creta
749
+ - Team adoption rate
750
+ - Professional workflow efficiency
374
751
 
375
752
  ---
376
753
 
@@ -379,17 +756,42 @@ Ver **[ROADMAP.md](./ROADMAP.md)** para detalles completos.
379
756
  Este proyecto es parte de [Icarus](https://icarus.mx), una escuela de software enfocada en formar desarrolladores mediante la construcción de proyectos reales.
380
757
 
381
758
  **Queremos contribuciones que:**
382
- - Agreguen nuevas lecciones de sintaxis
383
- - Mejoren la experiencia de aprendizaje
384
- - Expandan el sistema de ayuda de comandos
385
- - Compartan feedback de estudiantes
759
+ - Agreguen nuevas lecciones de sintaxis
760
+ - Mejoren la experiencia de aprendizaje
761
+ - Expandan el sistema de ayuda de comandos
762
+ - Compartan feedback de estudiantes
763
+ - ✅ Mejoren la documentación
764
+ - ✅ Reporten bugs o issues
765
+
766
+ ### Cómo contribuir
767
+
768
+ 1. **Fork** el repositorio
769
+ 2. **Crea una rama** para tu feature: `git checkout -b feature/nueva-leccion`
770
+ 3. **Commit** tus cambios: `git commit -m "Add new lesson: grep basics"`
771
+ 4. **Push** a tu fork: `git push origin feature/nueva-leccion`
772
+ 5. **Abre un Pull Request** describiendo tus cambios
773
+
774
+ ### Guías de contribución
775
+
776
+ - **Lecciones:** Deben ser interactivas, en español, con ejemplos claros
777
+ - **Command help:** Formato consistente, ejemplos prácticos, links a lecciones
778
+ - **Código:** ES modules, sin TypeScript, archivos < 300 líneas
779
+ - **Commits:** Mensajes descriptivos en español o inglés
386
780
 
387
781
  ---
388
782
 
389
783
  ## 📄 Licencia
390
784
 
391
- ISC
785
+ MIT © Guillermo Rodríguez López
786
+
787
+ ---
788
+
789
+ ## 🔗 Enlaces
790
+
791
+ - **npm:** [@icarusmx/creta](https://www.npmjs.com/package/@icarusmx/creta)
792
+ - **Icarus:** [icarus.mx](https://icarus.mx)
793
+ - **Discord:** [Únete al server de Icarus](https://discord.gg/icarus)
392
794
 
393
795
  ---
394
796
 
395
- 🏛️ **Hecho con <3 por [icarus.mx](https://icarus.mx)** - Salgamos de este laberinto
797
+ 🏛️ **Hecho con ❤️ por [icarus.mx](https://icarus.mx)** - Salgamos de este laberinto