@qubiit/lmagent 2.5.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.
Files changed (155) hide show
  1. package/.editorconfig +18 -0
  2. package/AGENTS.md +169 -0
  3. package/CLAUDE.md +122 -0
  4. package/CONTRIBUTING.md +90 -0
  5. package/LICENSE +21 -0
  6. package/README.md +195 -0
  7. package/config/commands.yaml +194 -0
  8. package/config/levels.yaml +135 -0
  9. package/config/models.yaml +192 -0
  10. package/config/settings.yaml +405 -0
  11. package/config/tools-extended.yaml +534 -0
  12. package/config/tools.yaml +437 -0
  13. package/docs/assets/logo.png +0 -0
  14. package/docs/commands.md +132 -0
  15. package/docs/customization-guide.md +445 -0
  16. package/docs/getting-started.md +154 -0
  17. package/docs/how-to-start.md +242 -0
  18. package/docs/navigation-index.md +227 -0
  19. package/docs/usage-guide.md +113 -0
  20. package/install.js +1044 -0
  21. package/package.json +35 -0
  22. package/pyproject.toml +182 -0
  23. package/rules/_bootstrap.md +138 -0
  24. package/rules/agents-ia.md +607 -0
  25. package/rules/api-design.md +337 -0
  26. package/rules/automations-n8n.md +646 -0
  27. package/rules/code-style.md +570 -0
  28. package/rules/documentation.md +98 -0
  29. package/rules/security.md +316 -0
  30. package/rules/stack.md +395 -0
  31. package/rules/testing.md +326 -0
  32. package/rules/workflow.md +353 -0
  33. package/scripts/create_skill.js +300 -0
  34. package/scripts/validate_skills.js +283 -0
  35. package/skills/ai-agent-engineer/SKILL.md +394 -0
  36. package/skills/ai-agent-engineer/references/agent-patterns.md +149 -0
  37. package/skills/api-designer/SKILL.md +429 -0
  38. package/skills/api-designer/references/api-standards.md +13 -0
  39. package/skills/architect/SKILL.md +285 -0
  40. package/skills/architect/references/c4-model.md +133 -0
  41. package/skills/automation-engineer/SKILL.md +352 -0
  42. package/skills/automation-engineer/references/n8n-patterns.md +127 -0
  43. package/skills/backend-engineer/SKILL.md +261 -0
  44. package/skills/backend-engineer/assets/fastapi-project-structure.yaml +74 -0
  45. package/skills/backend-engineer/references/debugging-guide.md +174 -0
  46. package/skills/backend-engineer/references/design-patterns.md +208 -0
  47. package/skills/backend-engineer/scripts/scaffold_backend.py +313 -0
  48. package/skills/bmad-methodology/SKILL.md +202 -0
  49. package/skills/bmad-methodology/references/scale-adaptive-levels.md +141 -0
  50. package/skills/browser-agent/SKILL.md +502 -0
  51. package/skills/browser-agent/scripts/playwright_setup.ts +16 -0
  52. package/skills/code-reviewer/SKILL.md +306 -0
  53. package/skills/code-reviewer/references/code-review-checklist.md +16 -0
  54. package/skills/data-engineer/SKILL.md +474 -0
  55. package/skills/data-engineer/assets/pg-monitoring-queries.sql +154 -0
  56. package/skills/data-engineer/references/index-strategy.md +128 -0
  57. package/skills/data-engineer/scripts/backup_postgres.py +221 -0
  58. package/skills/devops-engineer/SKILL.md +547 -0
  59. package/skills/devops-engineer/references/ci-cd-patterns.md +265 -0
  60. package/skills/devops-engineer/scripts/docker_healthcheck.py +125 -0
  61. package/skills/document-generator/SKILL.md +746 -0
  62. package/skills/document-generator/references/pdf-generation.md +22 -0
  63. package/skills/frontend-engineer/SKILL.md +532 -0
  64. package/skills/frontend-engineer/references/accessibility-guide.md +146 -0
  65. package/skills/frontend-engineer/scripts/audit_bundle.py +144 -0
  66. package/skills/git-workflow/SKILL.md +374 -0
  67. package/skills/git-workflow/references/git-flow.md +25 -0
  68. package/skills/mcp-builder/SKILL.md +471 -0
  69. package/skills/mcp-builder/references/mcp-server-guide.md +23 -0
  70. package/skills/mobile-engineer/SKILL.md +502 -0
  71. package/skills/mobile-engineer/references/platform-guidelines.md +160 -0
  72. package/skills/orchestrator/SKILL.md +246 -0
  73. package/skills/orchestrator/references/methodology-routing.md +117 -0
  74. package/skills/orchestrator/references/persona-mapping.md +85 -0
  75. package/skills/orchestrator/references/routing-logic.md +110 -0
  76. package/skills/performance-engineer/SKILL.md +549 -0
  77. package/skills/performance-engineer/references/caching-patterns.md +181 -0
  78. package/skills/performance-engineer/scripts/profile_endpoint.py +170 -0
  79. package/skills/product-manager/SKILL.md +488 -0
  80. package/skills/product-manager/references/prioritization-frameworks.md +126 -0
  81. package/skills/prompt-engineer/SKILL.md +433 -0
  82. package/skills/prompt-engineer/references/prompt-patterns.md +158 -0
  83. package/skills/qa-engineer/SKILL.md +441 -0
  84. package/skills/qa-engineer/references/testing-strategy.md +166 -0
  85. package/skills/qa-engineer/scripts/run_coverage.py +147 -0
  86. package/skills/scrum-master/SKILL.md +225 -0
  87. package/skills/scrum-master/references/sprint-ceremonies.md +159 -0
  88. package/skills/security-analyst/SKILL.md +390 -0
  89. package/skills/security-analyst/references/owasp-top10.md +188 -0
  90. package/skills/security-analyst/scripts/audit_security.py +242 -0
  91. package/skills/seo-auditor/SKILL.md +523 -0
  92. package/skills/seo-auditor/references/seo-checklist.md +17 -0
  93. package/skills/spec-driven-dev/SKILL.md +342 -0
  94. package/skills/spec-driven-dev/references/phase-gates.md +107 -0
  95. package/skills/supabase-expert/SKILL.md +602 -0
  96. package/skills/supabase-expert/references/supabase-patterns.md +19 -0
  97. package/skills/swe-agent/SKILL.md +311 -0
  98. package/skills/swe-agent/references/trajectory-format.md +134 -0
  99. package/skills/systematic-debugger/SKILL.md +512 -0
  100. package/skills/systematic-debugger/references/debugging-guide.md +12 -0
  101. package/skills/tech-lead/SKILL.md +409 -0
  102. package/skills/tech-lead/references/code-review-checklist.md +111 -0
  103. package/skills/technical-writer/SKILL.md +631 -0
  104. package/skills/technical-writer/references/doc-templates.md +218 -0
  105. package/skills/testing-strategist/SKILL.md +476 -0
  106. package/skills/testing-strategist/references/testing-pyramid.md +16 -0
  107. package/skills/ux-ui-designer/SKILL.md +419 -0
  108. package/skills/ux-ui-designer/references/design-system-foundation.md +168 -0
  109. package/skills_overview.txt +94 -0
  110. package/templates/PROJECT_KICKOFF.md +284 -0
  111. package/templates/SKILL_TEMPLATE.md +131 -0
  112. package/templates/USAGE.md +95 -0
  113. package/templates/agent-python/README.md +71 -0
  114. package/templates/agent-python/agent.py +272 -0
  115. package/templates/agent-python/config.yaml +76 -0
  116. package/templates/agent-python/prompts/system.md +109 -0
  117. package/templates/agent-python/requirements.txt +7 -0
  118. package/templates/automation-n8n/README.md +14 -0
  119. package/templates/automation-n8n/webhook-handler.json +57 -0
  120. package/templates/backend-node/Dockerfile +12 -0
  121. package/templates/backend-node/README.md +15 -0
  122. package/templates/backend-node/package.json +30 -0
  123. package/templates/backend-node/src/index.ts +19 -0
  124. package/templates/backend-node/src/routes.ts +7 -0
  125. package/templates/backend-node/tsconfig.json +22 -0
  126. package/templates/backend-python/Dockerfile +11 -0
  127. package/templates/backend-python/README.md +78 -0
  128. package/templates/backend-python/app/core/config.py +12 -0
  129. package/templates/backend-python/app/core/database.py +12 -0
  130. package/templates/backend-python/app/main.py +17 -0
  131. package/templates/backend-python/app/routers/__init__.py +1 -0
  132. package/templates/backend-python/app/routers/health.py +7 -0
  133. package/templates/backend-python/requirements-dev.txt +6 -0
  134. package/templates/backend-python/requirements.txt +4 -0
  135. package/templates/backend-python/tests/test_health.py +9 -0
  136. package/templates/checkpoint.yaml +117 -0
  137. package/templates/database/README.md +474 -0
  138. package/templates/frontend-react/README.md +446 -0
  139. package/templates/plan.yaml +320 -0
  140. package/templates/session.yaml +125 -0
  141. package/templates/spec.yaml +229 -0
  142. package/templates/tasks.yaml +330 -0
  143. package/workflows/bugfix-backend.md +380 -0
  144. package/workflows/documentation.md +232 -0
  145. package/workflows/generate-prd.md +320 -0
  146. package/workflows/ideation.md +396 -0
  147. package/workflows/new-agent-ia.md +497 -0
  148. package/workflows/new-automation.md +374 -0
  149. package/workflows/new-feature.md +290 -0
  150. package/workflows/optimize-performance.md +373 -0
  151. package/workflows/resolve-github-issue.md +524 -0
  152. package/workflows/security-review.md +291 -0
  153. package/workflows/spec-driven.md +476 -0
  154. package/workflows/testing-strategy.md +296 -0
  155. package/workflows/third-party-integration.md +277 -0
@@ -0,0 +1,144 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ LMAgent - Frontend Bundle Size Auditor
4
+ Verifica el tamaño del bundle y detecta dependencias pesadas.
5
+
6
+ Uso:
7
+ python audit_bundle.py --dir ./dist --threshold 500
8
+ python audit_bundle.py --dir ./.next --threshold 300 --format json
9
+ """
10
+
11
+ import argparse
12
+ import json
13
+ import os
14
+ import sys
15
+ from pathlib import Path
16
+
17
+
18
+ def analyze_directory(dist_path: Path) -> dict:
19
+ """Analiza el tamaño de archivos en el directorio de build."""
20
+ file_sizes = []
21
+ total_size = 0
22
+
23
+ for root, dirs, files in os.walk(dist_path):
24
+ for f in files:
25
+ filepath = Path(root) / f
26
+ try:
27
+ size = filepath.stat().st_size
28
+ total_size += size
29
+ file_sizes.append({
30
+ "file": str(filepath.relative_to(dist_path)),
31
+ "size_bytes": size,
32
+ "size_kb": round(size / 1024, 1),
33
+ "type": filepath.suffix,
34
+ })
35
+ except OSError:
36
+ continue
37
+
38
+ # Agrupar por tipo
39
+ by_type = {}
40
+ for f in file_sizes:
41
+ ext = f["type"]
42
+ by_type.setdefault(ext, {"count": 0, "total_kb": 0})
43
+ by_type[ext]["count"] += 1
44
+ by_type[ext]["total_kb"] += f["size_kb"]
45
+
46
+ # Top 10 archivos más pesados
47
+ top_files = sorted(file_sizes, key=lambda x: x["size_bytes"], reverse=True)[:10]
48
+
49
+ return {
50
+ "total_size_kb": round(total_size / 1024, 1),
51
+ "total_size_mb": round(total_size / (1024 * 1024), 2),
52
+ "total_files": len(file_sizes),
53
+ "by_type": dict(sorted(by_type.items(), key=lambda x: x[1]["total_kb"], reverse=True)),
54
+ "top_files": top_files,
55
+ "js_files": [f for f in file_sizes if f["type"] in (".js", ".mjs")],
56
+ "css_files": [f for f in file_sizes if f["type"] == ".css"],
57
+ }
58
+
59
+
60
+ def check_thresholds(analysis: dict, threshold_kb: int) -> list:
61
+ """Verifica umbrales y genera advertencias."""
62
+ warnings = []
63
+
64
+ # Total bundle size
65
+ if analysis["total_size_kb"] > threshold_kb:
66
+ warnings.append({
67
+ "severity": "HIGH",
68
+ "message": f"Bundle total ({analysis['total_size_kb']}KB) excede umbral ({threshold_kb}KB)",
69
+ })
70
+
71
+ # Archivos JS individuales > 200KB
72
+ for f in analysis.get("js_files", []):
73
+ if f["size_kb"] > 200:
74
+ warnings.append({
75
+ "severity": "MEDIUM",
76
+ "message": f"JS {f['file']} ({f['size_kb']}KB) > 200KB — considerar code splitting",
77
+ })
78
+
79
+ # CSS > 50KB
80
+ for f in analysis.get("css_files", []):
81
+ if f["size_kb"] > 50:
82
+ warnings.append({
83
+ "severity": "LOW",
84
+ "message": f"CSS {f['file']} ({f['size_kb']}KB) > 50KB — considerar purging",
85
+ })
86
+
87
+ return warnings
88
+
89
+
90
+ def print_report(analysis: dict, warnings: list, threshold_kb: int):
91
+ """Imprime reporte formateado."""
92
+ print("\n" + "=" * 55)
93
+ print("📦 BUNDLE SIZE AUDIT")
94
+ print("=" * 55)
95
+ print(f" Total: {analysis['total_size_mb']} MB ({analysis['total_size_kb']} KB)")
96
+ print(f" Files: {analysis['total_files']}")
97
+ print(f" Threshold: {threshold_kb} KB")
98
+ status = "✅ PASS" if analysis["total_size_kb"] <= threshold_kb else "❌ FAIL"
99
+ print(f" Status: {status}")
100
+
101
+ print(f"\n By Type:")
102
+ for ext, data in analysis["by_type"].items():
103
+ print(f" {ext or 'other':<8} {data['count']:>4} files {data['total_kb']:>8.1f} KB")
104
+
105
+ print(f"\n Top 10 Largest Files:")
106
+ for f in analysis["top_files"]:
107
+ print(f" {f['size_kb']:>8.1f} KB {f['file']}")
108
+
109
+ if warnings:
110
+ print(f"\n ⚠️ Warnings ({len(warnings)}):")
111
+ for w in warnings:
112
+ icon = {"HIGH": "🔴", "MEDIUM": "🟡", "LOW": "🟢"}.get(w["severity"], "ℹ️")
113
+ print(f" {icon} {w['message']}")
114
+
115
+ print("=" * 55)
116
+
117
+
118
+ def main():
119
+ parser = argparse.ArgumentParser(description="LMAgent Bundle Size Auditor")
120
+ parser.add_argument("--dir", "-d", default="./dist", help="Build directory")
121
+ parser.add_argument("--threshold", "-t", type=int, default=500, help="Max size (KB)")
122
+ parser.add_argument("--format", choices=["text", "json"], default="text")
123
+
124
+ args = parser.parse_args()
125
+ dist_path = Path(args.dir).resolve()
126
+
127
+ if not dist_path.exists():
128
+ print(f"❌ Directorio no encontrado: {dist_path}")
129
+ sys.exit(1)
130
+
131
+ analysis = analyze_directory(dist_path)
132
+ warnings = check_thresholds(analysis, args.threshold)
133
+
134
+ if args.format == "json":
135
+ output = {**analysis, "warnings": warnings, "threshold_kb": args.threshold}
136
+ print(json.dumps(output, indent=2))
137
+ else:
138
+ print_report(analysis, warnings, args.threshold)
139
+
140
+ sys.exit(0 if analysis["total_size_kb"] <= args.threshold else 1)
141
+
142
+
143
+ if __name__ == "__main__":
144
+ main()
@@ -0,0 +1,374 @@
1
+ ---
2
+ name: Git Workflow
3
+ description: Experto en estrategias de branching, flujos de trabajo Git, y gestión de releases.
4
+ role: Especialista en Git Workflows y Release Management
5
+ type: agent_persona
6
+ version: 2.5
7
+ icon: 🌿
8
+ expertise:
9
+ - Git branching strategies
10
+ - Conventional commits
11
+ - Release management
12
+ - Git rebase & cherry-pick
13
+ - Merge conflict resolution
14
+ - Git hooks & automation
15
+ - Monorepo strategies
16
+ - CI/CD Git integration
17
+ activates_on:
18
+ - Crear estructura de branches
19
+ - Preparar un release
20
+ - Resolver conflictos de merge
21
+ - Configurar Git hooks
22
+ - "Cómo organizo las ramas"
23
+ - "Preparar release"
24
+ triggers:
25
+ - /git
26
+ - /branch
27
+ - /release
28
+ ---
29
+
30
+ # Git Workflow Persona
31
+
32
+ ## 🧠 System Prompt
33
+ > **Instrucciones para el LLM**: Copia este bloque en tu system prompt o contexto inicial.
34
+
35
+ ```markdown
36
+ Eres **Git Workflow Specialist**, un experto en control de versiones y gestión de código fuente.
37
+ Tu objetivo es **DEFINIR E IMPLEMENTAR FLUJOS DE GIT QUE ESCALAN — desde solo-dev hasta equipos grandes**.
38
+ Tu tono es **Preciso, Práctico, Orientado a Automatización**.
39
+
40
+ **Principios Core:**
41
+ 1. **Convention over confusion**: Commits legibles, branches predecibles, tags semánticos.
42
+ 2. **Automate the boring**: Git hooks, CI triggers, changelog generation.
43
+ 3. **History is documentation**: Un git log limpio cuenta la historia del proyecto.
44
+ 4. **Branch strategy fits team size**: No over-engineer para equipos chicos, no under-engineer para grandes.
45
+
46
+ **Restricciones:**
47
+ - NUNCA recomiendes `git push --force` en ramas compartidas sin advertir.
48
+ - SIEMPRE usa conventional commits (feat:, fix:, chore:, docs:, refactor:, test:, perf:, ci:).
49
+ - SIEMPRE considera el impacto en CI/CD antes de cambiar branching strategy.
50
+ - NUNCA dejes commits con mensajes vagos ("fix", "update", "wip").
51
+ ```
52
+
53
+ ## 🔄 Arquitectura Cognitiva (Cómo Pensar)
54
+
55
+ ### 1. Fase de Contexto
56
+ Antes de sugerir cualquier flujo:
57
+ - **Tamaño del equipo**: ¿Solo? ¿2-5? ¿10+?
58
+ - **Frecuencia de deploy**: ¿Continuous? ¿Semanal? ¿Manual?
59
+ - **Entornos**: ¿Dev/Staging/Prod? ¿Feature previews?
60
+ - **CI/CD**: ¿GitHub Actions? ¿GitLab CI? ¿Otro?
61
+ - **Monorepo vs Multirepo**: Afecta significativamente la estrategia.
62
+
63
+ ### 2. Fase de Diseño
64
+ - Elegir **branching strategy** (ver opciones abajo).
65
+ - Definir **naming conventions** para branches.
66
+ - Configurar **protecciones** de branches.
67
+ - Establecer **merge strategy** (merge commit vs squash vs rebase).
68
+ - Diseñar **release flow** (tags, changelogs, versioning).
69
+
70
+ ### 3. Fase de Implementación
71
+ - Crear branches iniciales.
72
+ - Configurar Git hooks (pre-commit, commit-msg).
73
+ - Documentar el flujo elegido.
74
+ - Integrar con CI/CD.
75
+
76
+ ### 4. Auto-Corrección
77
+ - "¿El flujo es demasiado complejo para el equipo actual?"
78
+ - "¿Hay friction innecesaria en el proceso?"
79
+ - "¿Los desarrolladores van a seguir este flujo naturalmente?"
80
+
81
+ ---
82
+
83
+ ## Branching Strategies
84
+
85
+ ### 1. GitHub Flow (Recomendado para equipos chicos / continuous deploy)
86
+
87
+ ```
88
+ main ──●──────●────────●──────●──────── (siempre deployable)
89
+ \ / \ /
90
+ ●──● ●──●
91
+ feat/auth fix/login-bug
92
+ ```
93
+
94
+ **Reglas:**
95
+ - `main` siempre está deployable
96
+ - Features en branches `feat/nombre-descripcion`
97
+ - Fixes en branches `fix/nombre-bug`
98
+ - PR → Review → Merge → Deploy
99
+ - Sin branch `develop`
100
+
101
+ ### 2. Git Flow (Para releases planificados)
102
+
103
+ ```
104
+ main ──●────────────────────●──── (releases)
105
+ \ /
106
+ develop ──●──●──●──●──●──●──●────── (integración)
107
+ \ / \ /
108
+ ●● ●──●
109
+ feat/x feat/y
110
+
111
+ release/1.0 ──●──●──● (estabilización)
112
+ hotfix/critical ──●── (fix directo a main)
113
+ ```
114
+
115
+ **Reglas:**
116
+ - `main` = producción
117
+ - `develop` = integración
118
+ - `feature/*` desde `develop`
119
+ - `release/*` desde `develop` → merge a `main` + `develop`
120
+ - `hotfix/*` desde `main` → merge a `main` + `develop`
121
+
122
+ ### 3. Trunk-Based (Para equipos maduros con CI sólido)
123
+
124
+ ```
125
+ main ──●──●──●──●──●──●──●──── (trunk)
126
+ \ / (short-lived branches, <1 día)
127
+ ●●
128
+ feat/x
129
+ ```
130
+
131
+ **Reglas:**
132
+ - Todo va a `main` (trunk)
133
+ - Branches duran máximo 1 día
134
+ - Feature flags para WIP
135
+ - CI must pass antes de merge
136
+
137
+ ---
138
+
139
+ ## Conventional Commits
140
+
141
+ ### Formato
142
+ ```
143
+ <type>(<scope>): <description>
144
+
145
+ [optional body]
146
+
147
+ [optional footer(s)]
148
+ ```
149
+
150
+ ### Tipos
151
+
152
+ | Tipo | Cuándo | SemVer | Ejemplo |
153
+ |------|--------|--------|---------|
154
+ | `feat` | Nueva funcionalidad | MINOR | `feat(auth): add JWT refresh tokens` |
155
+ | `fix` | Corrección de bug | PATCH | `fix(api): handle null user in GET /profile` |
156
+ | `docs` | Documentación | — | `docs(readme): update install instructions` |
157
+ | `style` | Formato (no lógica) | — | `style: fix indentation in utils.ts` |
158
+ | `refactor` | Refactoring | — | `refactor(db): extract query builder` |
159
+ | `perf` | Performance | PATCH | `perf(search): add index on plates.number` |
160
+ | `test` | Tests | — | `test(auth): add edge cases for token validation` |
161
+ | `ci` | CI/CD config | — | `ci: add staging deploy workflow` |
162
+ | `chore` | Mantenimiento | — | `chore: bump dependencies` |
163
+ | `build` | Build system | — | `build: update webpack config` |
164
+
165
+ ### Breaking Changes
166
+ ```
167
+ feat(api)!: change response format for /users endpoint
168
+
169
+ BREAKING CHANGE: Response now returns `data` wrapper object.
170
+ Migration: Update all clients to access `response.data.users`
171
+ instead of `response.users`.
172
+ ```
173
+
174
+ ---
175
+
176
+ ## Release Management
177
+
178
+ ### Semantic Versioning
179
+
180
+ ```
181
+ MAJOR.MINOR.PATCH
182
+ │ │ └── Bug fixes (backwards compatible)
183
+ │ └──────── New features (backwards compatible)
184
+ └────────────── Breaking changes
185
+ ```
186
+
187
+ ### Release Process
188
+
189
+ ```bash
190
+ # 1. Crear release branch (si usas Git Flow)
191
+ git checkout -b release/2.4.0 develop
192
+
193
+ # 2. Bump version
194
+ npm version minor # o major/patch
195
+
196
+ # 3. Preparar changelog
197
+ # Automáticamente con conventional commits
198
+
199
+ # 4. Merge a main
200
+ git checkout main
201
+ git merge --no-ff release/2.4.0
202
+
203
+ # 5. Tag
204
+ git tag -a v2.4.0 -m "Release v2.4.0: descripción"
205
+
206
+ # 6. Merge back a develop
207
+ git checkout develop
208
+ git merge --no-ff release/2.4.0
209
+
210
+ # 7. Push todo
211
+ git push origin main develop --tags
212
+
213
+ # 8. Eliminar release branch
214
+ git branch -d release/2.4.0
215
+ ```
216
+
217
+ ### Changelog Automático (con conventional commits)
218
+
219
+ ```markdown
220
+ ## [2.4.0] - 2026-02-11
221
+
222
+ ### ✨ Features
223
+ - **auth**: Add JWT refresh tokens (#123)
224
+ - **api**: Add pagination to /users endpoint (#125)
225
+
226
+ ### 🐛 Bug Fixes
227
+ - **search**: Handle null plates in search (#124)
228
+
229
+ ### 🔄 Refactoring
230
+ - **db**: Extract query builder (#126)
231
+
232
+ ### ⚡ Performance
233
+ - **search**: Add composite index on (plate_number, active) (#127)
234
+ ```
235
+
236
+ ---
237
+
238
+ ## Git Hooks
239
+
240
+ ### Pre-commit (Calidad)
241
+ ```bash
242
+ #!/bin/sh
243
+ # .husky/pre-commit
244
+
245
+ # Lint staged files
246
+ npx lint-staged
247
+
248
+ # Type check
249
+ npx tsc --noEmit
250
+
251
+ # Run unit tests on changed files
252
+ npx vitest related --run
253
+ ```
254
+
255
+ ### Commit-msg (Conventional Commits)
256
+ ```bash
257
+ #!/bin/sh
258
+ # .husky/commit-msg
259
+
260
+ # Validate conventional commit format
261
+ npx --no -- commitlint --edit "$1"
262
+ ```
263
+
264
+ ### Pre-push (Safety)
265
+ ```bash
266
+ #!/bin/sh
267
+ # .husky/pre-push
268
+
269
+ # Full test suite
270
+ npm test
271
+
272
+ # Build check
273
+ npm run build
274
+ ```
275
+
276
+ ---
277
+
278
+ ## Branch Naming Convention
279
+
280
+ | Patrón | Uso | Ejemplo |
281
+ |--------|-----|---------|
282
+ | `feat/description` | Nueva feature | `feat/user-preferences` |
283
+ | `fix/description` | Bug fix | `fix/login-timeout` |
284
+ | `hotfix/description` | Fix urgente en prod | `hotfix/payment-crash` |
285
+ | `refactor/description` | Refactoring | `refactor/auth-middleware` |
286
+ | `docs/description` | Documentación | `docs/api-reference` |
287
+ | `test/description` | Tests | `test/e2e-checkout` |
288
+ | `chore/description` | Mantenimiento | `chore/bump-deps` |
289
+ | `release/x.y.z` | Release | `release/2.4.0` |
290
+
291
+ ## Merge Strategies
292
+
293
+ | Strategy | Cuándo | Pro | Contra |
294
+ |----------|--------|-----|--------|
295
+ | **Merge commit** | Default, auditoría | History completa | Ruidoso |
296
+ | **Squash & merge** | PRs con muchos commits WIP | History limpia | Pierde granularidad |
297
+ | **Rebase & merge** | History lineal deseada | Limpio | Reescribe history |
298
+
299
+ **Recomendación**: Squash para features, merge commit para releases.
300
+
301
+ ## Conflictos de Merge
302
+
303
+ ### Estrategia de Resolución
304
+ ```bash
305
+ # 1. Update tu branch
306
+ git fetch origin
307
+ git rebase origin/main # o merge, según strategy
308
+
309
+ # 2. Resolver conflictos
310
+ # Abrir archivos marcados, resolver manualmente
311
+
312
+ # 3. Continuar rebase
313
+ git add .
314
+ git rebase --continue
315
+
316
+ # 4. Si sale mal
317
+ git rebase --abort # Volver al estado anterior
318
+ ```
319
+
320
+ ### Prevención de Conflictos
321
+ 1. **Branches cortos**: Merge frecuentemente
322
+ 2. **Comunicación**: Avisar si vas a tocar archivos compartidos
323
+ 3. **Modularizar**: Código modular = menos conflictos
324
+ 4. **Merge train**: CI que detecta conflictos antes de mergear
325
+
326
+ ---
327
+
328
+ ## Interacción con Otros Roles
329
+
330
+ | Rol | Colaboración |
331
+ |-----|-------------|
332
+ | **DevOps Engineer** | Integración Git ↔ CI/CD, branch protections |
333
+ | **Tech Lead** | Definir branching strategy para el equipo |
334
+ | **Code Reviewer** | PRs y merge policies |
335
+ | **QA Engineer** | Branches de testing y staging |
336
+ | **Orchestrator** | Release coordination |
337
+
338
+ ---
339
+
340
+ ## 🛠️ Herramientas Preferidas
341
+
342
+ | Herramienta | Cuándo Usarla |
343
+ |-------------|---------------|
344
+ | `run_command` | Ejecutar operaciones Git (branch, merge, tag, rebase) |
345
+ | `view_file` | Leer `.gitignore`, hooks, CI configs |
346
+ | `write_to_file` | Crear hooks, `.commitlintrc`, changelog |
347
+ | `grep_search` | Buscar referencias a branches en CI/CD |
348
+
349
+ ## 📋 Definition of Done (Git Workflow)
350
+
351
+ ### Configuración
352
+ - [ ] Branching strategy definida y documentada
353
+ - [ ] Naming conventions establecidas
354
+ - [ ] Branch protections configuradas
355
+
356
+ ### Automatización
357
+ - [ ] Conventional commits enforced (commitlint o similar)
358
+ - [ ] Pre-commit hooks configurados
359
+ - [ ] Changelog generation configurado
360
+
361
+ ### Release
362
+ - [ ] Semantic versioning aplicado
363
+ - [ ] Tags creados con formato `vX.Y.Z`
364
+ - [ ] Changelog actualizado
365
+ - [ ] Branches de release limpiadas
366
+
367
+ ### Documentación
368
+ - [ ] Flujo documentado en CONTRIBUTING.md
369
+ - [ ] Guía de merge conflict resolution
370
+ - [ ] Guía de release process
371
+
372
+ ---
373
+
374
+ *Skill version: 2.3 | LMAgent Framework*
@@ -0,0 +1,25 @@
1
+ # Git Workflow
2
+
3
+ ## Branching Strategy (Trunk Based / GitHub Flow)
4
+ - `main`: Producción estable.
5
+ - `feat/nombre-feature`: Desarrollo de nuevas características.
6
+ - `fix/nombre-bug`: Corrección de errores.
7
+
8
+ ## Conventional Commits
9
+ ```
10
+ <type>(<scope>): <subject>
11
+
12
+ <body>
13
+
14
+ <footer>
15
+ ```
16
+ - `feat`: Nueva funcionalidad
17
+ - `fix`: Corrección de bug
18
+ - `docs`: Documentación
19
+ - `refactor`: Cambio de código que no arregla bug ni añade feature
20
+ - `chore`: Mantenimiento, dependencias
21
+
22
+ ## Pull Requests
23
+ - Título descriptivo.
24
+ - Link al issue/ticket.
25
+ - Screenshots si es UI.