@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.
- package/.editorconfig +18 -0
- package/AGENTS.md +169 -0
- package/CLAUDE.md +122 -0
- package/CONTRIBUTING.md +90 -0
- package/LICENSE +21 -0
- package/README.md +195 -0
- package/config/commands.yaml +194 -0
- package/config/levels.yaml +135 -0
- package/config/models.yaml +192 -0
- package/config/settings.yaml +405 -0
- package/config/tools-extended.yaml +534 -0
- package/config/tools.yaml +437 -0
- package/docs/assets/logo.png +0 -0
- package/docs/commands.md +132 -0
- package/docs/customization-guide.md +445 -0
- package/docs/getting-started.md +154 -0
- package/docs/how-to-start.md +242 -0
- package/docs/navigation-index.md +227 -0
- package/docs/usage-guide.md +113 -0
- package/install.js +1044 -0
- package/package.json +35 -0
- package/pyproject.toml +182 -0
- package/rules/_bootstrap.md +138 -0
- package/rules/agents-ia.md +607 -0
- package/rules/api-design.md +337 -0
- package/rules/automations-n8n.md +646 -0
- package/rules/code-style.md +570 -0
- package/rules/documentation.md +98 -0
- package/rules/security.md +316 -0
- package/rules/stack.md +395 -0
- package/rules/testing.md +326 -0
- package/rules/workflow.md +353 -0
- package/scripts/create_skill.js +300 -0
- package/scripts/validate_skills.js +283 -0
- package/skills/ai-agent-engineer/SKILL.md +394 -0
- package/skills/ai-agent-engineer/references/agent-patterns.md +149 -0
- package/skills/api-designer/SKILL.md +429 -0
- package/skills/api-designer/references/api-standards.md +13 -0
- package/skills/architect/SKILL.md +285 -0
- package/skills/architect/references/c4-model.md +133 -0
- package/skills/automation-engineer/SKILL.md +352 -0
- package/skills/automation-engineer/references/n8n-patterns.md +127 -0
- package/skills/backend-engineer/SKILL.md +261 -0
- package/skills/backend-engineer/assets/fastapi-project-structure.yaml +74 -0
- package/skills/backend-engineer/references/debugging-guide.md +174 -0
- package/skills/backend-engineer/references/design-patterns.md +208 -0
- package/skills/backend-engineer/scripts/scaffold_backend.py +313 -0
- package/skills/bmad-methodology/SKILL.md +202 -0
- package/skills/bmad-methodology/references/scale-adaptive-levels.md +141 -0
- package/skills/browser-agent/SKILL.md +502 -0
- package/skills/browser-agent/scripts/playwright_setup.ts +16 -0
- package/skills/code-reviewer/SKILL.md +306 -0
- package/skills/code-reviewer/references/code-review-checklist.md +16 -0
- package/skills/data-engineer/SKILL.md +474 -0
- package/skills/data-engineer/assets/pg-monitoring-queries.sql +154 -0
- package/skills/data-engineer/references/index-strategy.md +128 -0
- package/skills/data-engineer/scripts/backup_postgres.py +221 -0
- package/skills/devops-engineer/SKILL.md +547 -0
- package/skills/devops-engineer/references/ci-cd-patterns.md +265 -0
- package/skills/devops-engineer/scripts/docker_healthcheck.py +125 -0
- package/skills/document-generator/SKILL.md +746 -0
- package/skills/document-generator/references/pdf-generation.md +22 -0
- package/skills/frontend-engineer/SKILL.md +532 -0
- package/skills/frontend-engineer/references/accessibility-guide.md +146 -0
- package/skills/frontend-engineer/scripts/audit_bundle.py +144 -0
- package/skills/git-workflow/SKILL.md +374 -0
- package/skills/git-workflow/references/git-flow.md +25 -0
- package/skills/mcp-builder/SKILL.md +471 -0
- package/skills/mcp-builder/references/mcp-server-guide.md +23 -0
- package/skills/mobile-engineer/SKILL.md +502 -0
- package/skills/mobile-engineer/references/platform-guidelines.md +160 -0
- package/skills/orchestrator/SKILL.md +246 -0
- package/skills/orchestrator/references/methodology-routing.md +117 -0
- package/skills/orchestrator/references/persona-mapping.md +85 -0
- package/skills/orchestrator/references/routing-logic.md +110 -0
- package/skills/performance-engineer/SKILL.md +549 -0
- package/skills/performance-engineer/references/caching-patterns.md +181 -0
- package/skills/performance-engineer/scripts/profile_endpoint.py +170 -0
- package/skills/product-manager/SKILL.md +488 -0
- package/skills/product-manager/references/prioritization-frameworks.md +126 -0
- package/skills/prompt-engineer/SKILL.md +433 -0
- package/skills/prompt-engineer/references/prompt-patterns.md +158 -0
- package/skills/qa-engineer/SKILL.md +441 -0
- package/skills/qa-engineer/references/testing-strategy.md +166 -0
- package/skills/qa-engineer/scripts/run_coverage.py +147 -0
- package/skills/scrum-master/SKILL.md +225 -0
- package/skills/scrum-master/references/sprint-ceremonies.md +159 -0
- package/skills/security-analyst/SKILL.md +390 -0
- package/skills/security-analyst/references/owasp-top10.md +188 -0
- package/skills/security-analyst/scripts/audit_security.py +242 -0
- package/skills/seo-auditor/SKILL.md +523 -0
- package/skills/seo-auditor/references/seo-checklist.md +17 -0
- package/skills/spec-driven-dev/SKILL.md +342 -0
- package/skills/spec-driven-dev/references/phase-gates.md +107 -0
- package/skills/supabase-expert/SKILL.md +602 -0
- package/skills/supabase-expert/references/supabase-patterns.md +19 -0
- package/skills/swe-agent/SKILL.md +311 -0
- package/skills/swe-agent/references/trajectory-format.md +134 -0
- package/skills/systematic-debugger/SKILL.md +512 -0
- package/skills/systematic-debugger/references/debugging-guide.md +12 -0
- package/skills/tech-lead/SKILL.md +409 -0
- package/skills/tech-lead/references/code-review-checklist.md +111 -0
- package/skills/technical-writer/SKILL.md +631 -0
- package/skills/technical-writer/references/doc-templates.md +218 -0
- package/skills/testing-strategist/SKILL.md +476 -0
- package/skills/testing-strategist/references/testing-pyramid.md +16 -0
- package/skills/ux-ui-designer/SKILL.md +419 -0
- package/skills/ux-ui-designer/references/design-system-foundation.md +168 -0
- package/skills_overview.txt +94 -0
- package/templates/PROJECT_KICKOFF.md +284 -0
- package/templates/SKILL_TEMPLATE.md +131 -0
- package/templates/USAGE.md +95 -0
- package/templates/agent-python/README.md +71 -0
- package/templates/agent-python/agent.py +272 -0
- package/templates/agent-python/config.yaml +76 -0
- package/templates/agent-python/prompts/system.md +109 -0
- package/templates/agent-python/requirements.txt +7 -0
- package/templates/automation-n8n/README.md +14 -0
- package/templates/automation-n8n/webhook-handler.json +57 -0
- package/templates/backend-node/Dockerfile +12 -0
- package/templates/backend-node/README.md +15 -0
- package/templates/backend-node/package.json +30 -0
- package/templates/backend-node/src/index.ts +19 -0
- package/templates/backend-node/src/routes.ts +7 -0
- package/templates/backend-node/tsconfig.json +22 -0
- package/templates/backend-python/Dockerfile +11 -0
- package/templates/backend-python/README.md +78 -0
- package/templates/backend-python/app/core/config.py +12 -0
- package/templates/backend-python/app/core/database.py +12 -0
- package/templates/backend-python/app/main.py +17 -0
- package/templates/backend-python/app/routers/__init__.py +1 -0
- package/templates/backend-python/app/routers/health.py +7 -0
- package/templates/backend-python/requirements-dev.txt +6 -0
- package/templates/backend-python/requirements.txt +4 -0
- package/templates/backend-python/tests/test_health.py +9 -0
- package/templates/checkpoint.yaml +117 -0
- package/templates/database/README.md +474 -0
- package/templates/frontend-react/README.md +446 -0
- package/templates/plan.yaml +320 -0
- package/templates/session.yaml +125 -0
- package/templates/spec.yaml +229 -0
- package/templates/tasks.yaml +330 -0
- package/workflows/bugfix-backend.md +380 -0
- package/workflows/documentation.md +232 -0
- package/workflows/generate-prd.md +320 -0
- package/workflows/ideation.md +396 -0
- package/workflows/new-agent-ia.md +497 -0
- package/workflows/new-automation.md +374 -0
- package/workflows/new-feature.md +290 -0
- package/workflows/optimize-performance.md +373 -0
- package/workflows/resolve-github-issue.md +524 -0
- package/workflows/security-review.md +291 -0
- package/workflows/spec-driven.md +476 -0
- package/workflows/testing-strategy.md +296 -0
- 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.
|