@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,337 @@
|
|
|
1
|
+
# LMAgent API Design Rules
|
|
2
|
+
|
|
3
|
+
> **Tipo**: `rule` | **Versión**: 2.1 | **Actualización**: 2026-01
|
|
4
|
+
|
|
5
|
+
## 📌 Quick Reference
|
|
6
|
+
|
|
7
|
+
| Regla | Patrón |
|
|
8
|
+
|-------|--------|
|
|
9
|
+
| **URLs** | Sustantivos en plural: `/users`, `/orders` |
|
|
10
|
+
| **Métodos** | GET (leer), POST (crear), PUT (reemplazar), DELETE (eliminar) |
|
|
11
|
+
| **Versionado** | `/api/v1/...` en URL |
|
|
12
|
+
| **Paginación** | `?page=1&limit=20` |
|
|
13
|
+
| **Respuesta** | `{ "data": ..., "meta": ... }` |
|
|
14
|
+
| **Error** | `{ "error": { "code": "...", "message": "..." } }` |
|
|
15
|
+
|
|
16
|
+
### Status Codes
|
|
17
|
+
| Código | Uso |
|
|
18
|
+
|--------|-----|
|
|
19
|
+
| 200 | OK (GET, PUT, PATCH) |
|
|
20
|
+
| 201 | Created (POST) |
|
|
21
|
+
| 204 | No Content (DELETE) |
|
|
22
|
+
| 400 | Bad Request |
|
|
23
|
+
| 401 | Unauthorized |
|
|
24
|
+
| 403 | Forbidden |
|
|
25
|
+
| 404 | Not Found |
|
|
26
|
+
| 422 | Validation Error |
|
|
27
|
+
|
|
28
|
+
### 👥 Roles que usan esta regla
|
|
29
|
+
`backend-engineer`, `architect`, `automation-engineer`
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
Este documento define las reglas para diseño de APIs REST.
|
|
34
|
+
|
|
35
|
+
## 🎯 Principios
|
|
36
|
+
|
|
37
|
+
1. **Consistency**: Mismos patrones en todos los endpoints
|
|
38
|
+
2. **Predictability**: Comportamiento esperado
|
|
39
|
+
3. **Developer Experience**: Fácil de usar y documentar
|
|
40
|
+
4. **Backward Compatibility**: No romper clientes existentes
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## URL Structure
|
|
45
|
+
|
|
46
|
+
### Recursos
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
# ✅ BUENO: Sustantivos en plural
|
|
50
|
+
GET /api/v1/users
|
|
51
|
+
GET /api/v1/users/{id}
|
|
52
|
+
POST /api/v1/users
|
|
53
|
+
PUT /api/v1/users/{id}
|
|
54
|
+
DELETE /api/v1/users/{id}
|
|
55
|
+
|
|
56
|
+
# ❌ MALO: Verbos en URL
|
|
57
|
+
GET /api/v1/getUsers
|
|
58
|
+
POST /api/v1/createUser
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Recursos Anidados
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
# Relaciones
|
|
65
|
+
GET /api/v1/users/{id}/orders # Órdenes de un usuario
|
|
66
|
+
GET /api/v1/orders/{id}/items # Items de una orden
|
|
67
|
+
|
|
68
|
+
# Límite: máximo 2 niveles de anidación
|
|
69
|
+
# ❌ MALO
|
|
70
|
+
GET /api/v1/users/{id}/orders/{oid}/items/{iid}/reviews
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Query Parameters
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
# Filtrado
|
|
77
|
+
GET /api/v1/users?status=active&role=admin
|
|
78
|
+
|
|
79
|
+
# Paginación
|
|
80
|
+
GET /api/v1/users?page=1&limit=20
|
|
81
|
+
|
|
82
|
+
# Ordenamiento
|
|
83
|
+
GET /api/v1/users?sort=created_at&order=desc
|
|
84
|
+
|
|
85
|
+
# Búsqueda
|
|
86
|
+
GET /api/v1/users?search=john
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## HTTP Methods
|
|
92
|
+
|
|
93
|
+
| Método | Uso | Idempotente |
|
|
94
|
+
|--------|-----|-------------|
|
|
95
|
+
| GET | Obtener recursos | Sí |
|
|
96
|
+
| POST | Crear recurso | No |
|
|
97
|
+
| PUT | Reemplazar recurso | Sí |
|
|
98
|
+
| PATCH | Actualizar parcial | No* |
|
|
99
|
+
| DELETE | Eliminar recurso | Sí |
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Status Codes
|
|
104
|
+
|
|
105
|
+
### Success (2xx)
|
|
106
|
+
|
|
107
|
+
| Code | Uso |
|
|
108
|
+
|------|-----|
|
|
109
|
+
| 200 | OK - GET, PUT, PATCH exitoso |
|
|
110
|
+
| 201 | Created - POST exitoso |
|
|
111
|
+
| 204 | No Content - DELETE exitoso |
|
|
112
|
+
|
|
113
|
+
### Client Errors (4xx)
|
|
114
|
+
|
|
115
|
+
| Code | Uso |
|
|
116
|
+
|------|-----|
|
|
117
|
+
| 400 | Bad Request - Input inválido |
|
|
118
|
+
| 401 | Unauthorized - No autenticado |
|
|
119
|
+
| 403 | Forbidden - Sin permiso |
|
|
120
|
+
| 404 | Not Found - Recurso no existe |
|
|
121
|
+
| 409 | Conflict - Conflicto (ej: duplicate) |
|
|
122
|
+
| 422 | Unprocessable - Validación falló |
|
|
123
|
+
| 429 | Too Many Requests - Rate limit |
|
|
124
|
+
|
|
125
|
+
### Server Errors (5xx)
|
|
126
|
+
|
|
127
|
+
| Code | Uso |
|
|
128
|
+
|------|-----|
|
|
129
|
+
| 500 | Internal Server Error |
|
|
130
|
+
| 502 | Bad Gateway |
|
|
131
|
+
| 503 | Service Unavailable |
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Response Format
|
|
136
|
+
|
|
137
|
+
### Success Response
|
|
138
|
+
|
|
139
|
+
```json
|
|
140
|
+
{
|
|
141
|
+
"data": {
|
|
142
|
+
"id": "uuid",
|
|
143
|
+
"name": "Example",
|
|
144
|
+
"createdAt": "2024-01-21T00:00:00Z"
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// Lista con paginación
|
|
149
|
+
{
|
|
150
|
+
"data": [...],
|
|
151
|
+
"meta": {
|
|
152
|
+
"page": 1,
|
|
153
|
+
"limit": 20,
|
|
154
|
+
"total": 150,
|
|
155
|
+
"totalPages": 8
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Error Response
|
|
161
|
+
|
|
162
|
+
```json
|
|
163
|
+
{
|
|
164
|
+
"error": {
|
|
165
|
+
"code": "VALIDATION_ERROR",
|
|
166
|
+
"message": "Invalid request data",
|
|
167
|
+
"details": [
|
|
168
|
+
{
|
|
169
|
+
"field": "email",
|
|
170
|
+
"message": "Invalid email format"
|
|
171
|
+
}
|
|
172
|
+
]
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Naming Conventions
|
|
180
|
+
|
|
181
|
+
### JSON Fields
|
|
182
|
+
|
|
183
|
+
```json
|
|
184
|
+
// ✅ BUENO: camelCase
|
|
185
|
+
{
|
|
186
|
+
"userId": "123",
|
|
187
|
+
"createdAt": "2024-01-21",
|
|
188
|
+
"isActive": true
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// ❌ MALO: snake_case (a menos que sea estándar del proyecto)
|
|
192
|
+
{
|
|
193
|
+
"user_id": "123"
|
|
194
|
+
}
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Consistencia de Nombres
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
# Singular para un recurso
|
|
201
|
+
GET /users/123 → { "user": {...} }
|
|
202
|
+
|
|
203
|
+
# Plural para colecciones
|
|
204
|
+
GET /users → { "users": [...] }
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Versionado
|
|
210
|
+
|
|
211
|
+
### URL Versioning (Recomendado)
|
|
212
|
+
|
|
213
|
+
```
|
|
214
|
+
/api/v1/users
|
|
215
|
+
/api/v2/users
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Header Versioning (Alternativa)
|
|
219
|
+
|
|
220
|
+
```
|
|
221
|
+
Accept: application/vnd.api+json; version=1
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## Paginación
|
|
227
|
+
|
|
228
|
+
### Offset-based
|
|
229
|
+
|
|
230
|
+
```json
|
|
231
|
+
GET /users?page=2&limit=20
|
|
232
|
+
|
|
233
|
+
{
|
|
234
|
+
"data": [...],
|
|
235
|
+
"meta": {
|
|
236
|
+
"page": 2,
|
|
237
|
+
"limit": 20,
|
|
238
|
+
"total": 150,
|
|
239
|
+
"totalPages": 8
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Cursor-based (para grandes datasets)
|
|
245
|
+
|
|
246
|
+
```json
|
|
247
|
+
GET /users?cursor=eyJpZCI6MTAwfQ&limit=20
|
|
248
|
+
|
|
249
|
+
{
|
|
250
|
+
"data": [...],
|
|
251
|
+
"meta": {
|
|
252
|
+
"nextCursor": "eyJpZCI6MTIwfQ",
|
|
253
|
+
"hasMore": true
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## Filtrado y Búsqueda
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
# Filtros exactos
|
|
264
|
+
GET /users?status=active
|
|
265
|
+
|
|
266
|
+
# Filtros con operadores
|
|
267
|
+
GET /users?age[gte]=18&age[lte]=65
|
|
268
|
+
|
|
269
|
+
# Búsqueda full-text
|
|
270
|
+
GET /users?q=john
|
|
271
|
+
|
|
272
|
+
# Campos específicos
|
|
273
|
+
GET /users?fields=id,name,email
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## HATEOAS (Opcional)
|
|
279
|
+
|
|
280
|
+
```json
|
|
281
|
+
{
|
|
282
|
+
"data": {
|
|
283
|
+
"id": "123",
|
|
284
|
+
"name": "Order"
|
|
285
|
+
},
|
|
286
|
+
"links": {
|
|
287
|
+
"self": "/orders/123",
|
|
288
|
+
"items": "/orders/123/items",
|
|
289
|
+
"customer": "/users/456"
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
## Rate Limiting
|
|
297
|
+
|
|
298
|
+
### Headers
|
|
299
|
+
|
|
300
|
+
```http
|
|
301
|
+
X-RateLimit-Limit: 100
|
|
302
|
+
X-RateLimit-Remaining: 95
|
|
303
|
+
X-RateLimit-Reset: 1705795200
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
### Respuesta 429
|
|
307
|
+
|
|
308
|
+
```json
|
|
309
|
+
{
|
|
310
|
+
"error": {
|
|
311
|
+
"code": "RATE_LIMIT_EXCEEDED",
|
|
312
|
+
"message": "Too many requests",
|
|
313
|
+
"retryAfter": 60
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## Checklist de API Design
|
|
321
|
+
|
|
322
|
+
```markdown
|
|
323
|
+
## Nuevo Endpoint
|
|
324
|
+
- [ ] URL sigue convención de recursos
|
|
325
|
+
- [ ] Método HTTP correcto
|
|
326
|
+
- [ ] Status codes apropiados
|
|
327
|
+
- [ ] Request validado
|
|
328
|
+
- [ ] Response consistente
|
|
329
|
+
- [ ] Documentación OpenAPI
|
|
330
|
+
- [ ] Tests escritos
|
|
331
|
+
|
|
332
|
+
## Breaking Changes
|
|
333
|
+
- [ ] Nueva versión de API
|
|
334
|
+
- [ ] Deprecation notice
|
|
335
|
+
- [ ] Migration guide
|
|
336
|
+
- [ ] Timeline de sunset
|
|
337
|
+
```
|