bug_bunny 4.7.0 → 4.8.1
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.
- checksums.yaml +4 -4
- data/.agents/skills/documentation-writer/SKILL.md +45 -0
- data/.agents/skills/gem-release/SKILL.md +114 -0
- data/.agents/skills/quality-code/SKILL.md +51 -0
- data/.agents/skills/rabbitmq-expert/SKILL.md +1555 -0
- data/.agents/skills/sentry/SKILL.md +135 -0
- data/.agents/skills/sentry/references/api-endpoints.md +147 -0
- data/.agents/skills/sentry/scripts/sentry.rb +194 -0
- data/.agents/skills/skill-builder/SKILL.md +232 -0
- data/.agents/skills/skill-manager/SKILL.md +172 -0
- data/.agents/skills/skill-manager/scripts/sync.rb +310 -0
- data/.agents/skills/yard/SKILL.md +311 -0
- data/.agents/skills/yard/references/tipos.md +144 -0
- data/CHANGELOG.md +21 -0
- data/CLAUDE.md +29 -220
- data/lib/bug_bunny/client.rb +4 -3
- data/lib/bug_bunny/controller.rb +10 -14
- data/lib/bug_bunny/exception.rb +1 -1
- data/lib/bug_bunny/middleware/raise_error.rb +3 -3
- data/lib/bug_bunny/observability.rb +5 -5
- data/lib/bug_bunny/producer.rb +11 -13
- data/lib/bug_bunny/railtie.rb +8 -7
- data/lib/bug_bunny/request.rb +3 -11
- data/lib/bug_bunny/resource.rb +51 -21
- data/lib/bug_bunny/routing/route_set.rb +32 -21
- data/lib/bug_bunny/version.rb +1 -1
- data/lib/bug_bunny.rb +3 -2
- data/lib/generators/bug_bunny/install/install_generator.rb +45 -5
- data/lib/tasks/bug_bunny.rake +50 -0
- data/skill/SKILL.md +230 -0
- data/skill/references/client-middleware.md +144 -0
- data/skill/references/consumer.md +104 -0
- data/skill/references/controller.md +105 -0
- data/skill/references/errores.md +97 -0
- data/skill/references/resource.md +116 -0
- data/skill/references/routing.md +82 -0
- data/skill/references/testing.md +138 -0
- data/skills-lock.json +10 -0
- data/skills.lock +24 -0
- data/skills.yml +19 -0
- metadata +27 -17
- data/.claude/commands/pr.md +0 -42
- data/.claude/commands/release.md +0 -41
- data/.claude/commands/rubocop.md +0 -22
- data/.claude/commands/test.md +0 -28
- data/.claude/commands/yard.md +0 -46
- data/docs/concepts.md +0 -140
- data/docs/howto/controller.md +0 -194
- data/docs/howto/middleware_client.md +0 -119
- data/docs/howto/middleware_consumer.md +0 -127
- data/docs/howto/rails.md +0 -214
- data/docs/howto/resource.md +0 -200
- data/docs/howto/routing.md +0 -133
- data/docs/howto/testing.md +0 -259
- data/docs/howto/tracing.md +0 -119
- data/mejoras.md +0 -33
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skill-builder
|
|
3
|
+
description: Genera o actualiza la skill empaquetada (`skill/`) para cualquier proyecto Ruby (gema o servicio). Detecta automáticamente el tipo de proyecto y analiza el código correspondiente. Soporta desde un SKILL.md simple hasta skills con references y scripts. Es invocada por `skill-manager`, `gem-release` (regeneración completa) y `quality-code` (actualización incremental).
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill Builder
|
|
7
|
+
|
|
8
|
+
Sos un experto en crear skills de conocimiento para proyectos Ruby. Tu objetivo es generar o actualizar `skill/SKILL.md` — un artefacto autocontenido que permite a cualquier agente de IA responder preguntas sobre integración, arquitectura, API, errores y antipatrones del proyecto.
|
|
9
|
+
|
|
10
|
+
## Detección de tipo de proyecto
|
|
11
|
+
|
|
12
|
+
- **Gema**: existe `.gemspec` en la raíz.
|
|
13
|
+
- **Servicio**: existe `config/application.rb`.
|
|
14
|
+
- Si ambos existen, priorizar gema.
|
|
15
|
+
|
|
16
|
+
**Distribución en gemas:** La skill queda en `skill/` en la raíz del repositorio. Al publicar con `gem-release`, `skill/` se empaqueta en el `.gem`, de modo que los consumidores acceden a la skill directamente desde la gema instalada (`Gem.loaded_specs["[name]"].gem_dir + "/skill/"`) sin descargas adicionales.
|
|
17
|
+
|
|
18
|
+
**Distribución en servicios:** La skill queda en `skill/` en la raíz del repositorio. Los consumidores la descargan vía `skill-manager sync` desde GitHub.
|
|
19
|
+
|
|
20
|
+
## Escenarios de Complejidad
|
|
21
|
+
|
|
22
|
+
La estructura de `skill/` depende de la complejidad del proyecto. `skill-manager` determina el escenario inicial, pero puede evolucionar con el tiempo:
|
|
23
|
+
|
|
24
|
+
### Escenario 1 — Proyecto simple
|
|
25
|
+
```
|
|
26
|
+
skill/
|
|
27
|
+
SKILL.md
|
|
28
|
+
```
|
|
29
|
+
La skill entera cabe en un solo archivo. Secciones autocontenidas de ≤400 tokens.
|
|
30
|
+
|
|
31
|
+
### Escenario 2 — Con referencias
|
|
32
|
+
```
|
|
33
|
+
skill/
|
|
34
|
+
SKILL.md
|
|
35
|
+
references/
|
|
36
|
+
api-detallada.md
|
|
37
|
+
errores.md
|
|
38
|
+
```
|
|
39
|
+
Cuando la API o contratos son extensos, o el catálogo de errores es grande.
|
|
40
|
+
|
|
41
|
+
### Escenario 3 — Con scripts
|
|
42
|
+
```
|
|
43
|
+
skill/
|
|
44
|
+
SKILL.md
|
|
45
|
+
scripts/
|
|
46
|
+
diagnostico.rb
|
|
47
|
+
```
|
|
48
|
+
Cuando el proyecto necesita herramientas ejecutables (diagnóstico, migración, validación).
|
|
49
|
+
|
|
50
|
+
### Escenario 4 — Completa
|
|
51
|
+
```
|
|
52
|
+
skill/
|
|
53
|
+
SKILL.md
|
|
54
|
+
references/
|
|
55
|
+
api-detallada.md
|
|
56
|
+
errores.md
|
|
57
|
+
scripts/
|
|
58
|
+
diagnostico.rb
|
|
59
|
+
migration_helper.rb
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Criterios para escalar
|
|
63
|
+
|
|
64
|
+
- **→ references/** cuando una sección de `SKILL.md` supera los 400 tokens y es conocimiento de referencia (API, contratos, errores, catálogos).
|
|
65
|
+
- **→ scripts/** cuando el proyecto necesita herramientas ejecutables para diagnóstico, migración o validación que complementen el conocimiento.
|
|
66
|
+
|
|
67
|
+
## Modos de Ejecución
|
|
68
|
+
|
|
69
|
+
- **Completo** (invocado por `gem-release` o manualmente): Regenera la skill desde cero analizando todo el código.
|
|
70
|
+
- **Incremental** (invocado por `quality-code`): Actualiza solo las secciones afectadas por el diff del PR.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Paso 1 — Descubrir el estado actual
|
|
75
|
+
|
|
76
|
+
Leer en orden:
|
|
77
|
+
1. `skill/SKILL.md` — si existe, es la skill actual.
|
|
78
|
+
2. `skill/references/` — referencias existentes.
|
|
79
|
+
3. `skill/scripts/` — scripts existentes.
|
|
80
|
+
4. `CLAUDE.md` — propósito del artefacto, arquitectura, decisiones clave.
|
|
81
|
+
|
|
82
|
+
Según el tipo de proyecto:
|
|
83
|
+
|
|
84
|
+
**Si es gema:**
|
|
85
|
+
5. `.gemspec` — nombre, descripción, dependencias.
|
|
86
|
+
6. `lib/` — API pública, responsabilidades de clases, firmas de métodos.
|
|
87
|
+
7. `spec/` o `test/` — patrones de uso, casos borde, errores esperados.
|
|
88
|
+
|
|
89
|
+
**Si es servicio:**
|
|
90
|
+
5. `config/application.rb` — nombre, configuración.
|
|
91
|
+
6. `config/routes.rb` — endpoints HTTP expuestos.
|
|
92
|
+
7. `app/` — controllers, models, services, jobs.
|
|
93
|
+
8. Queues/mensajería — contratos de eventos (Sidekiq, ActiveJob, etc.).
|
|
94
|
+
9. `db/migrate/` — esquema y evolución del modelo de datos.
|
|
95
|
+
10. `spec/` o `test/` — patrones de uso, casos borde, errores esperados.
|
|
96
|
+
|
|
97
|
+
En modo **incremental**, analizar también `git diff [PRIMARY_BRANCH]...HEAD` para identificar qué cambió.
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Paso 2 — Analizar el código y determinar escenario
|
|
102
|
+
|
|
103
|
+
**Común a ambos tipos:**
|
|
104
|
+
- **Arquitectura**: Flujo de datos, componentes core, thread safety, dependencias.
|
|
105
|
+
- **Uso**: Ejemplos de integración, patrones comunes.
|
|
106
|
+
- **Errores**: Excepciones personalizadas, causas, resoluciones.
|
|
107
|
+
- **Antipatrones**: Usos incorrectos identificados en tests o código.
|
|
108
|
+
- **Scripts necesarios**: ¿Hay flujos de diagnóstico, migración o validación que justifiquen un script?
|
|
109
|
+
|
|
110
|
+
**Específico de gemas:**
|
|
111
|
+
- **API Pública**: Bloque de configuración, clases principales, métodos públicos, parámetros.
|
|
112
|
+
|
|
113
|
+
**Específico de servicios:**
|
|
114
|
+
- **Contratos**: Endpoints HTTP, queues, eventos publicados/consumidos, webhooks.
|
|
115
|
+
- **Infraestructura**: Variables de entorno, servicios externos, bases de datos.
|
|
116
|
+
|
|
117
|
+
Con base en el análisis, determiná qué escenario de complejidad corresponde (1-4). Si la skill ya existe, evaluá si el escenario debe escalar.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Paso 3 — Generar la Skill
|
|
122
|
+
|
|
123
|
+
Generar `skill/SKILL.md` (y `references/` o `scripts/` si el escenario lo requiere).
|
|
124
|
+
|
|
125
|
+
### Reglas de escritura (RAG-optimized)
|
|
126
|
+
|
|
127
|
+
1. **Idioma: español** — Todo el contenido en español. Mantener términos técnicos estándar (ej: "middleware", "routing").
|
|
128
|
+
2. **Cada sección <= 400 tokens** — Autocontenida, sin asumir contexto de otras secciones. Si una sección supera este límite, extraerla a `references/`.
|
|
129
|
+
3. **Sin prosa introductoria** — Ir directo al contenido técnico.
|
|
130
|
+
4. **Sin frontmatter complejo** — No incluir version, profile o audiences.
|
|
131
|
+
5. **Sin duplicación** — Si un tema está en `references/`, la skill solo lo referencia.
|
|
132
|
+
|
|
133
|
+
### Estructura de SKILL.md
|
|
134
|
+
|
|
135
|
+
#### Titulo y Descripcion
|
|
136
|
+
|
|
137
|
+
```markdown
|
|
138
|
+
# [Nombre] Expert
|
|
139
|
+
|
|
140
|
+
Skill de conocimiento completo sobre [Nombre]. Consultame para cualquier pregunta sobre integración, arquitectura, API, errores y antipatrones.
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
#### Glosario
|
|
144
|
+
|
|
145
|
+
Términos del dominio. Formato: `**Término** — Definición concisa (1-3 líneas).`
|
|
146
|
+
|
|
147
|
+
#### Arquitectura
|
|
148
|
+
|
|
149
|
+
- Responsabilidad core.
|
|
150
|
+
- Mapa de componentes (diagrama ASCII).
|
|
151
|
+
- Flujo en runtime y decisiones de diseño.
|
|
152
|
+
|
|
153
|
+
**Formato de diagramas ASCII:**
|
|
154
|
+
- Cajas con `┌─┐└─┘`, flechas con `────>` (horizontal) y `│▼` (vertical).
|
|
155
|
+
- Máximo 4-5 componentes por diagrama. Si hay más, dividir en sub-diagramas por capa.
|
|
156
|
+
- Sin texto decorativo fuera de las cajas.
|
|
157
|
+
|
|
158
|
+
Ejemplo:
|
|
159
|
+
```
|
|
160
|
+
┌──────────┐ ┌──────────┐ ┌──────────┐
|
|
161
|
+
│ Request │────>│ Middleware│────>│ Handler │
|
|
162
|
+
└──────────┘ └──────────┘ └──────────┘
|
|
163
|
+
│
|
|
164
|
+
▼
|
|
165
|
+
┌──────────┐
|
|
166
|
+
│ Cache │
|
|
167
|
+
└──────────┘
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
#### API Publica (gemas)
|
|
171
|
+
|
|
172
|
+
- Bloque de configuración (tipos, defaults, restricciones).
|
|
173
|
+
- Clases y métodos (firma, parámetros, retorno).
|
|
174
|
+
- Ejemplos de código para operaciones principales.
|
|
175
|
+
- Si la API es extensa, mantener un resumen acá y extraer el detalle a `references/api-detallada.md`.
|
|
176
|
+
|
|
177
|
+
#### Contratos (servicios)
|
|
178
|
+
|
|
179
|
+
- Endpoints HTTP (método, path, parámetros, respuesta).
|
|
180
|
+
- Queues y eventos (nombre, payload, productor/consumidor).
|
|
181
|
+
- Webhooks (si aplica).
|
|
182
|
+
- Si los contratos son extensos, extraer a `references/contratos.md`.
|
|
183
|
+
|
|
184
|
+
#### FAQ
|
|
185
|
+
|
|
186
|
+
Formato Q&A estricto. H3 para la pregunta, respuesta <= 150 palabras. Sin preámbulo.
|
|
187
|
+
|
|
188
|
+
#### Antipatrones
|
|
189
|
+
|
|
190
|
+
Qué NO hacer. Por cada uno: nombre, código incorrecto, razón y alternativa.
|
|
191
|
+
|
|
192
|
+
#### Errores
|
|
193
|
+
|
|
194
|
+
Catálogo de excepciones. Por cada una: nombre, causa, reproducción y resolución.
|
|
195
|
+
Si el catálogo es extenso, mantener los errores más comunes acá y extraer el catálogo completo a `references/errores.md`.
|
|
196
|
+
|
|
197
|
+
#### Referencias (si existen)
|
|
198
|
+
|
|
199
|
+
Índice de archivos en `references/` y `scripts/` con descripción de una línea.
|
|
200
|
+
|
|
201
|
+
```markdown
|
|
202
|
+
## Referencias
|
|
203
|
+
|
|
204
|
+
- [API Detallada](references/api-detallada.md) — Documentación completa de clases y métodos
|
|
205
|
+
- [Catálogo de Errores](references/errores.md) — Todas las excepciones con resolución
|
|
206
|
+
- [Diagnóstico](scripts/diagnostico.rb) — Script para verificar configuración en runtime
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## Paso 4 — Actualizar README.md
|
|
212
|
+
|
|
213
|
+
Actualizá `README.md` (máx 150 líneas) con:
|
|
214
|
+
- Descripción en una línea.
|
|
215
|
+
- Setup básico y Quick start.
|
|
216
|
+
- Features principales.
|
|
217
|
+
- Link a `skill/SKILL.md` para conocimiento profundo.
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Paso 5 — Mostrar resumen y esperar aprobación
|
|
222
|
+
|
|
223
|
+
Mostrá un resumen de los cambios realizados:
|
|
224
|
+
- Tipo de proyecto detectado (gema o servicio).
|
|
225
|
+
- Escenario de complejidad determinado (y si escaló respecto al anterior).
|
|
226
|
+
- Secciones nuevas, modificadas o eliminadas en `SKILL.md`.
|
|
227
|
+
- Archivos nuevos o actualizados en `references/` o `scripts/`.
|
|
228
|
+
- Cambios en README.md.
|
|
229
|
+
|
|
230
|
+
Preguntá: "¿Querés ver el diff completo antes de escribir los archivos?"
|
|
231
|
+
|
|
232
|
+
**Esperá la aprobación explícita del desarrollador** antes de persistir los cambios.
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skill-manager
|
|
3
|
+
description: Configura, valida y sincroniza la infraestructura de skills en cualquier proyecto Ruby (gema o servicio). Úsala para inicializar `skills.yml`, verificar la skill del proyecto (`skill/`), sincronizar skills de dependencias a `.agents/skills/`, o validar que todo el estándar se cumpla. Requiere `skill-builder`.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill Manager
|
|
7
|
+
|
|
8
|
+
Skill unificada que gestiona toda la infraestructura de skills de un proyecto Ruby, sea gema o microservicio. Detecta automáticamente el tipo de proyecto y actúa en consecuencia.
|
|
9
|
+
|
|
10
|
+
## Detección de tipo de proyecto
|
|
11
|
+
|
|
12
|
+
- **Gema**: existe `.gemspec` en la raíz.
|
|
13
|
+
- **Servicio**: existe `config/application.rb`.
|
|
14
|
+
- Si ambos existen, priorizar gema.
|
|
15
|
+
|
|
16
|
+
## Requisitos
|
|
17
|
+
- La skill `skill-builder` debe estar disponible para generar `skill/SKILL.md`.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Flujo de Trabajo (Modo Update)
|
|
22
|
+
|
|
23
|
+
### Paso 1 — Determinar escenario de complejidad de la skill
|
|
24
|
+
Analizá el proyecto para determinar qué estructura de `skill/` corresponde:
|
|
25
|
+
|
|
26
|
+
- **Escenario 1 (simple):** Proyecto pequeño → solo `skill/SKILL.md`.
|
|
27
|
+
- **Escenario 2 (con referencias):** API extensa o catálogo de errores grande → `SKILL.md` + `references/`.
|
|
28
|
+
- **Escenario 3 (con scripts):** Necesita herramientas de diagnóstico, migración o validación → `SKILL.md` + `scripts/`.
|
|
29
|
+
- **Escenario 4 (completa):** Combina referencias y scripts → `SKILL.md` + `references/` + `scripts/`.
|
|
30
|
+
|
|
31
|
+
Si `skill/` ya existe, evaluá si el escenario debe escalar.
|
|
32
|
+
|
|
33
|
+
### Paso 2 — Generar o actualizar la skill del proyecto
|
|
34
|
+
Ejecutá `skill-builder` para generar o actualizar `skill/`. El skill-builder detecta automáticamente si es gema o servicio y analiza el código correspondiente.
|
|
35
|
+
|
|
36
|
+
### Paso 3 — Gemspec (solo gemas)
|
|
37
|
+
Si el proyecto es una gema, verificá que el `.gemspec` cumpla:
|
|
38
|
+
|
|
39
|
+
1. **`metadata["documentation_uri"]`** apuntando a la carpeta de skill.
|
|
40
|
+
- Si falta, inferí la URL desde `homepage_uri` o `source_code_uri`:
|
|
41
|
+
`spec.metadata["documentation_uri"] = "https://github.com/[ORG]/[GEM_NAME]/blob/v#{spec.version}/skill"`
|
|
42
|
+
|
|
43
|
+
2. **`spec.files` incluye `skill/`** para que la skill se empaquete dentro de la gema.
|
|
44
|
+
- Si usa `git ls-files`: verificá que `skill/` no esté en `.gitignore`.
|
|
45
|
+
- Si usa un glob explícito: asegurate de que incluya `skill/**/*`.
|
|
46
|
+
|
|
47
|
+
- Mostrá el diff y pedí confirmación antes de escribir.
|
|
48
|
+
|
|
49
|
+
### Paso 4 — Configurar skills.yml
|
|
50
|
+
Si no existe `skills.yml` en la raíz, crealo detectando dependencias en el `Gemfile` y repos conocidos.
|
|
51
|
+
|
|
52
|
+
```yaml
|
|
53
|
+
# skills.yml — Manifiesto único de skills del proyecto
|
|
54
|
+
|
|
55
|
+
# --- MCPs requeridos ---
|
|
56
|
+
# Declara qué MCPs necesita el proyecto. Las skills verifican
|
|
57
|
+
# disponibilidad antes de usarlos. Si falta alguno, avisan pero no se rompen.
|
|
58
|
+
|
|
59
|
+
mcps:
|
|
60
|
+
- github
|
|
61
|
+
- clickup
|
|
62
|
+
|
|
63
|
+
# --- Dependencias (sync) ---
|
|
64
|
+
|
|
65
|
+
gems: # Skills empaquetadas en gemas (copia local)
|
|
66
|
+
- name: mi_gema
|
|
67
|
+
|
|
68
|
+
services: # Skills de microservicios (GitHub → skill/)
|
|
69
|
+
- name: mi_servicio
|
|
70
|
+
repo: wispro/mi_servicio
|
|
71
|
+
|
|
72
|
+
skills: # Skills de repos GitHub (con path opcional)
|
|
73
|
+
# Sin path → usa convención .agents/skills/[name]/
|
|
74
|
+
- name: gem-release
|
|
75
|
+
repo: wispro/ai_knowledge
|
|
76
|
+
- name: skill-manager
|
|
77
|
+
repo: wispro/ai_knowledge
|
|
78
|
+
# Con path → para skills.sh u otros repos con estructura distinta
|
|
79
|
+
- name: rabbitmq-expert
|
|
80
|
+
repo: martinholovsky/claude-skills-generator
|
|
81
|
+
path: skills/rabbitmq-expert
|
|
82
|
+
|
|
83
|
+
# --- Configuración de skills ---
|
|
84
|
+
# Cada skill puede tener su sección de configuración específica.
|
|
85
|
+
# Las skills leen su sección del skills.yml del proyecto.
|
|
86
|
+
|
|
87
|
+
sentry:
|
|
88
|
+
projects:
|
|
89
|
+
- billing-api
|
|
90
|
+
- billing-workers
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
*Mostrá diff y pedí confirmación.*
|
|
94
|
+
|
|
95
|
+
### Paso 5 — Configurar sincronización
|
|
96
|
+
Asegurate de que el script de sync esté configurado para ejecutarse:
|
|
97
|
+
- Agregá al final de `bin/setup`:
|
|
98
|
+
```bash
|
|
99
|
+
ruby .agents/skills/skill-manager/scripts/sync.rb
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Paso 6 — Git
|
|
103
|
+
- Agregá las skills de dependencias al `.gitignore` (cada entrada declarada en `skills.yml`):
|
|
104
|
+
```gitignore
|
|
105
|
+
# Skills de dependencias (generadas por skill-manager sync)
|
|
106
|
+
.agents/skills/[dep-name]/
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Paso 7 — CLAUDE.md
|
|
110
|
+
El bloque "Knowledge Base" debe estar al **tope absoluto** del archivo:
|
|
111
|
+
```markdown
|
|
112
|
+
## Knowledge Base
|
|
113
|
+
- **Mandato Crítico:** Las skills en `.agents/skills/` incluyen conocimiento de dependencias.
|
|
114
|
+
- **Protocolo de Consulta:** El agente DEBE leer la skill de una dependencia antes de responder sobre ella.
|
|
115
|
+
- **Rebuild:** `ruby .agents/skills/skill-manager/scripts/sync.rb` actualiza las skills de dependencias.
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Script de sincronización
|
|
121
|
+
|
|
122
|
+
El script `scripts/sync.rb` lee `skills.yml` y sincroniza todas las skills de dependencias a `.agents/skills/`.
|
|
123
|
+
|
|
124
|
+
| Sección | Fuente | Mecanismo |
|
|
125
|
+
|---|---|---|
|
|
126
|
+
| `gems` | Gema Ruby instalada | Copia local desde `gem_dir/skill/` |
|
|
127
|
+
| `services` | Repo de microservicio | GitHub API → `skill/` del repo |
|
|
128
|
+
| `skills` | Repo GitHub | GitHub API → path configurable (default: `.agents/skills/[name]/`) |
|
|
129
|
+
|
|
130
|
+
### Ejecución directa
|
|
131
|
+
```bash
|
|
132
|
+
ruby .agents/skills/skill-manager/scripts/sync.rb
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Requisitos del script
|
|
136
|
+
- Ruby (stdlib — sin dependencias externas)
|
|
137
|
+
- `gh` CLI o `GITHUB_TOKEN` en el entorno (para repos privados)
|
|
138
|
+
- `skills.yml` en la raíz del proyecto
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## MCP de GitHub (opcional)
|
|
143
|
+
|
|
144
|
+
Si tenés un MCP de GitHub disponible, el agente puede usarlo para:
|
|
145
|
+
- **Inspeccionar repos** sin depender de `GITHUB_TOKEN` en el entorno.
|
|
146
|
+
- **Detectar estructura de skills** en dependencias.
|
|
147
|
+
- **Armar `skills.yml` inicial**: explorar repos del `Gemfile` y detectar cuáles tienen skill.
|
|
148
|
+
- **Verificar cambios**: comparar la skill local con la remota antes de actualizar.
|
|
149
|
+
|
|
150
|
+
Si el MCP no está disponible, se ejecuta el script de sync como fallback.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Modos de Uso
|
|
155
|
+
|
|
156
|
+
### /skill-manager check
|
|
157
|
+
Valida el cumplimiento del estándar sin modificar archivos:
|
|
158
|
+
1. Verificá que exista `skill/SKILL.md`.
|
|
159
|
+
2. Verificá consistencia: todo archivo en `references/` y `scripts/` debe estar referenciado en `SKILL.md`, y viceversa.
|
|
160
|
+
3. **(Solo gemas)** Verificá `documentation_uri` y que `spec.files` incluya `skill/`.
|
|
161
|
+
4. Verificá existencia de `skills.yml`.
|
|
162
|
+
5. Verificá `.gitignore` y `bin/setup`.
|
|
163
|
+
6. Reportá: OK o lista de errores con pasos para resolverlos.
|
|
164
|
+
|
|
165
|
+
### /skill-manager update
|
|
166
|
+
Ejecuta el flujo de trabajo completo (Pasos 1-7). Configura toda la infraestructura sin tocar contenido existente de skills.
|
|
167
|
+
|
|
168
|
+
### /skill-manager sync
|
|
169
|
+
Actualiza las skills de dependencias en `.agents/skills/`:
|
|
170
|
+
1. Si hay MCP de GitHub disponible, usalo para inspeccionar repos y descargar skills.
|
|
171
|
+
2. Si no hay MCP, ejecutá el script `scripts/sync.rb`.
|
|
172
|
+
3. Reportá qué skills se actualizaron, cuáles son nuevas y cuáles no tienen skill.
|