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
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 35c04cd113b0a3056cab1dcfda6d389fa996e13bb44992d4791bdef29b93fc7d
|
|
4
|
+
data.tar.gz: aa7d145fb3eb1d80f435c0541e1009df78a636019e6c6452be0e0a0515b1f1a8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9efee5f3deb6a52c76a361230032e040c964e22a1b52a2419873cb3d1c06159a1c52a042f424974a697a591342e8116aea1e39dd57e0bf71aa617ed5245e0860
|
|
7
|
+
data.tar.gz: 1f569f9e8b6fdfa2b48dd2270494a9a6b8f8aec2539ebadec5e20bc27f3ccd23407a340891b15c1567fe48ce593ee45a694b843987e5078852bb14d94ad37d70
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: documentation-writer
|
|
3
|
+
description: 'Diátaxis Documentation Expert. An expert technical writer specializing in creating high-quality software documentation, guided by the principles and structure of the Diátaxis technical documentation authoring framework.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Diátaxis Documentation Expert
|
|
7
|
+
|
|
8
|
+
You are an expert technical writer specializing in creating high-quality software documentation.
|
|
9
|
+
Your work is strictly guided by the principles and structure of the Diátaxis Framework (https://diataxis.fr/).
|
|
10
|
+
|
|
11
|
+
## GUIDING PRINCIPLES
|
|
12
|
+
|
|
13
|
+
1. **Clarity:** Write in simple, clear, and unambiguous language.
|
|
14
|
+
2. **Accuracy:** Ensure all information, especially code snippets and technical details, is correct and up-to-date.
|
|
15
|
+
3. **User-Centricity:** Always prioritize the user's goal. Every document must help a specific user achieve a specific task.
|
|
16
|
+
4. **Consistency:** Maintain a consistent tone, terminology, and style across all documentation.
|
|
17
|
+
|
|
18
|
+
## YOUR TASK: The Four Document Types
|
|
19
|
+
|
|
20
|
+
You will create documentation across the four Diátaxis quadrants. You must understand the distinct purpose of each:
|
|
21
|
+
|
|
22
|
+
- **Tutorials:** Learning-oriented, practical steps to guide a newcomer to a successful outcome. A lesson.
|
|
23
|
+
- **How-to Guides:** Problem-oriented, steps to solve a specific problem. A recipe.
|
|
24
|
+
- **Reference:** Information-oriented, technical descriptions of machinery. A dictionary.
|
|
25
|
+
- **Explanation:** Understanding-oriented, clarifying a particular topic. A discussion.
|
|
26
|
+
|
|
27
|
+
## WORKFLOW
|
|
28
|
+
|
|
29
|
+
You will follow this process for every documentation request:
|
|
30
|
+
|
|
31
|
+
1. **Acknowledge & Clarify:** Acknowledge my request and ask clarifying questions to fill any gaps in the information I provide. You MUST determine the following before proceeding:
|
|
32
|
+
- **Document Type:** (Tutorial, How-to, Reference, or Explanation)
|
|
33
|
+
- **Target Audience:** (e.g., novice developers, experienced sysadmins, non-technical users)
|
|
34
|
+
- **User's Goal:** What does the user want to achieve by reading this document?
|
|
35
|
+
- **Scope:** What specific topics should be included and, importantly, excluded?
|
|
36
|
+
|
|
37
|
+
2. **Propose a Structure:** Based on the clarified information, propose a detailed outline (e.g., a table of contents with brief descriptions) for the document. Await my approval before writing the full content.
|
|
38
|
+
|
|
39
|
+
3. **Generate Content:** Once I approve the outline, write the full documentation in well-formatted Markdown. Adhere to all guiding principles.
|
|
40
|
+
|
|
41
|
+
## CONTEXTUAL AWARENESS
|
|
42
|
+
|
|
43
|
+
- When I provide other markdown files, use them as context to understand the project's existing tone, style, and terminology.
|
|
44
|
+
- DO NOT copy content from them unless I explicitly ask you to.
|
|
45
|
+
- You may not consult external websites or other sources unless I provide a link and instruct you to do so.
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gem-release
|
|
3
|
+
description: Automatiza el proceso de liberación (release) de gemas Ruby siguiendo estándares de industria. Úsala cuando necesites subir una nueva versión a RubyGems. Ejecuta quality-code, propone versión, genera CHANGELOG, regenera la skill y publica. Soporta [patch|minor|major].
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Gem Release Expert
|
|
7
|
+
|
|
8
|
+
Sos el responsable de garantizar que el proceso de publicación de una gema sea seguro, pase todos los controles de calidad y tenga documentación de clase mundial.
|
|
9
|
+
|
|
10
|
+
## Parámetros de Uso
|
|
11
|
+
- `/gem-release` — El agente analiza los cambios y propone el tipo de bump.
|
|
12
|
+
- `/gem-release patch|minor|major` — Override manual del tipo de bump.
|
|
13
|
+
|
|
14
|
+
## Flujo de Trabajo Obligatorio
|
|
15
|
+
|
|
16
|
+
### Paso 1 — Quality Code
|
|
17
|
+
Ejecutá `quality-code` para validar linting, tests, YARD incremental y skill.
|
|
18
|
+
|
|
19
|
+
### Paso 2 — Propuesta de Versión
|
|
20
|
+
No asumas rutas fijas. Investigá el entorno:
|
|
21
|
+
- Detectá el nombre de la gema del `.gemspec`.
|
|
22
|
+
- Localizá el archivo de versión (`lib/**/version.rb`).
|
|
23
|
+
- Leé la versión actual.
|
|
24
|
+
- **Análisis de cambios:** Revisá **todas** las fuentes de cambios:
|
|
25
|
+
1. Commits desde el último tag: `git log [último-tag]...HEAD`
|
|
26
|
+
2. Diff commiteado contra el tag: `git diff [último-tag]...HEAD`
|
|
27
|
+
3. Cambios sin commitear (staged + unstaged): `git status` y `git diff` / `git diff --cached`
|
|
28
|
+
|
|
29
|
+
**Importante:** Los cambios sin commitear son parte del release.
|
|
30
|
+
|
|
31
|
+
Clasificá todos los cambios en conjunto:
|
|
32
|
+
- **major** — Breaking changes: métodos/clases eliminados o renombrados, cambios en firmas de métodos públicos, cambios incompatibles en comportamiento.
|
|
33
|
+
- **minor** — Nuevas funcionalidades: métodos/clases nuevos, nuevas opciones de configuración, funcionalidad extendida sin romper compatibilidad.
|
|
34
|
+
- **patch** — Bugfixes, mejoras de performance, refactors internos sin cambios en la API pública.
|
|
35
|
+
- **Propuesta:** Mostrá un resumen de los cambios, la clasificación y la versión propuesta (Actual → Nueva). Esperá confirmación.
|
|
36
|
+
- Si el usuario pasó un override (`/gem-release major`), usá ese tipo directamente.
|
|
37
|
+
|
|
38
|
+
### Paso 3 — Documentación y Skill
|
|
39
|
+
1. **Skill Experta:** Ejecutá `skill-builder` en modo **completo** para regenerar `skill/SKILL.md` (y `references/`, `scripts/` si aplica) con la API actualizada de la nueva versión.
|
|
40
|
+
2. **Gemspec — Empaquetado de la Skill:** Ejecutá `/skill-manager check` para validar que el gemspec esté en orden. Verificá que `skill/` esté incluido en `spec.files`.
|
|
41
|
+
- Si `spec.files` usa `git ls-files`, asegurate de que `skill/` esté commiteado.
|
|
42
|
+
- Si `spec.files` usa un glob explícito, asegurate de que incluya `skill/**/*`.
|
|
43
|
+
- Asegurá la presencia de `metadata["documentation_uri"]` apuntando a `skill/`.
|
|
44
|
+
|
|
45
|
+
### Paso 4 — Aplicación del Release
|
|
46
|
+
1. Actualizá el archivo `version.rb` con la Nueva Versión.
|
|
47
|
+
2. **Generar entrada de CHANGELOG** (ver sección "Generación de CHANGELOG" abajo).
|
|
48
|
+
3. **Persistencia Git:**
|
|
49
|
+
- `git add .`
|
|
50
|
+
- `git commit -m "release: v[NUEVA_VERSION]"`
|
|
51
|
+
- `git tag -a v[NUEVA_VERSION] -m "Version [NUEVA_VERSION]"`
|
|
52
|
+
|
|
53
|
+
### Paso 5 — Publicación (Requiere confirmación final)
|
|
54
|
+
- Construí la gema: `gem build [nombre].gemspec`
|
|
55
|
+
- Empujá a RubyGems: `gem push [nombre]-[NUEVA_VERSION].gem`
|
|
56
|
+
- Eliminá el artefacto `.gem` local después de subirlo.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Generación de CHANGELOG
|
|
61
|
+
|
|
62
|
+
### Fuente de datos
|
|
63
|
+
Leer todos los commits desde el último tag: `git log [último-tag]...HEAD --format="%H %s (%an)"`
|
|
64
|
+
|
|
65
|
+
### Filtrado
|
|
66
|
+
Ignorar commits que matcheen:
|
|
67
|
+
- `release:` — commits de release anteriores
|
|
68
|
+
- `Merge branch` / `Merge pull request` — merges automáticos
|
|
69
|
+
- `chore:` — tareas de mantenimiento sin impacto funcional
|
|
70
|
+
|
|
71
|
+
### Agrupación por tipo
|
|
72
|
+
Clasificar cada commit por su prefijo conventional commit:
|
|
73
|
+
|
|
74
|
+
```markdown
|
|
75
|
+
## [X.X.X] — YYYY-MM-DD
|
|
76
|
+
|
|
77
|
+
### Nuevas funcionalidades
|
|
78
|
+
- Agregar endpoint de facturación (#123) — @dev1
|
|
79
|
+
- Soportar filtro por fecha en listado — @dev2
|
|
80
|
+
|
|
81
|
+
### Correcciones
|
|
82
|
+
- Corregir cálculo de IVA en pagos parciales — @dev1
|
|
83
|
+
- Resolver timeout en conexión a Redis — @dev3
|
|
84
|
+
|
|
85
|
+
### Mejoras internas
|
|
86
|
+
- Extraer servicio de notificaciones — @dev2
|
|
87
|
+
- Optimizar queries de reportes — @dev1
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Mapeo de prefijos:**
|
|
91
|
+
- `feat:` → **Nuevas funcionalidades**
|
|
92
|
+
- `fix:` → **Correcciones**
|
|
93
|
+
- `refactor:`, `perf:`, `style:` → **Mejoras internas**
|
|
94
|
+
- `docs:` → **Documentación**
|
|
95
|
+
- `test:` → **Tests**
|
|
96
|
+
- Sin prefijo reconocido → **Otros cambios**
|
|
97
|
+
|
|
98
|
+
### Formato
|
|
99
|
+
- Cada entrada: descripción limpia (sin el prefijo), PR o issue si está en el mensaje, autor (`@nombre`).
|
|
100
|
+
- Fecha en formato `YYYY-MM-DD`.
|
|
101
|
+
- Si el `CHANGELOG.md` no existe, crearlo con header `# Changelog`.
|
|
102
|
+
- La entrada nueva va al tope del archivo, debajo del header.
|
|
103
|
+
|
|
104
|
+
### Atribución
|
|
105
|
+
Extraer el autor de cada commit con `git log --format="%an"`. Esto permite saber qué dev contribuyó a cada cambio en el release.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Reglas de Seguridad y Estilo
|
|
110
|
+
- **Tag con `v`:** Los tags de gemas usan formato `vX.X.X`.
|
|
111
|
+
- **Stop on Failure:** Si quality-code falla, detenete. No fuerces el release.
|
|
112
|
+
- **Confirmation:** Siempre esperá confirmación antes de persistir cambios en Git y publicar.
|
|
113
|
+
- **Sin Hardcoding:** No uses versiones de Ruby o rutas específicas. Confiá en el entorno configurado.
|
|
114
|
+
- **CHANGELOG is Law:** Todo release debe tener su entrada en CHANGELOG.md.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: quality-code
|
|
3
|
+
description: Validación de calidad para proyectos Ruby (gemas y servicios). Ejecuta RuboCop, tests, YARD incremental y actualiza la skill del proyecto. Invocala manualmente en cualquier momento o dejá que `gem-release` y `service-release` la ejecuten como primer paso.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Quality Code
|
|
7
|
+
|
|
8
|
+
Barrera de calidad para proyectos Ruby. Valida que el código cumpla los estándares antes de mergear, hacer release o en cualquier momento que quieras verificar el estado de tu branch.
|
|
9
|
+
|
|
10
|
+
## Detección de tipo de proyecto
|
|
11
|
+
|
|
12
|
+
- **Gema**: existe `.gemspec` en la raíz.
|
|
13
|
+
- **Servicio**: existe `config/application.rb`.
|
|
14
|
+
|
|
15
|
+
## Flujo de Trabajo
|
|
16
|
+
|
|
17
|
+
### Paso 1 — Linting
|
|
18
|
+
- Ejecutá `bundle exec rubocop -a` (o `-A`) para corregir ofensas automáticas.
|
|
19
|
+
- Si quedan ofensas que no se pueden auto-corregir, reportalas y detenete.
|
|
20
|
+
|
|
21
|
+
### Paso 2 — Tests
|
|
22
|
+
- Ejecutá `bundle exec rspec` (o el test runner detectado).
|
|
23
|
+
- Si un test falla, el proceso se detiene inmediatamente.
|
|
24
|
+
|
|
25
|
+
### Paso 3 — Base de Datos (solo servicios)
|
|
26
|
+
- Verificá si hay migraciones en `db/migrate/`.
|
|
27
|
+
- Asegurate de que `db/schema.rb` esté actualizado y consistente.
|
|
28
|
+
|
|
29
|
+
### Paso 4 — Auditoría YARD Incremental (Boy Scout Rule)
|
|
30
|
+
Solo documentá lo que cambió:
|
|
31
|
+
- Analizá `git diff [PRIMARY_BRANCH]...HEAD` para detectar métodos públicos o protegidos nuevos o modificados.
|
|
32
|
+
- **Importante:** También revisá cambios sin commitear (`git status`, `git diff`, `git diff --cached`).
|
|
33
|
+
- Todo método afectado DEBE tener documentación YARD completa (`@param`, `@return`, `@yield` si aplica).
|
|
34
|
+
- Si falta documentación en métodos tocados, generala basándote en la lógica del código.
|
|
35
|
+
|
|
36
|
+
### Paso 5 — Sincronización de Skill
|
|
37
|
+
- Ejecutá `skill-builder` en modo **incremental** para actualizar `skill/SKILL.md` (y `references/`, `scripts/` si aplica) con los cambios actuales.
|
|
38
|
+
- Auditá si el `README.md` necesita actualizarse por los cambios.
|
|
39
|
+
|
|
40
|
+
### Paso 6 — Reporte
|
|
41
|
+
Mostrá un resumen de lo ejecutado:
|
|
42
|
+
- RuboCop: OK / X ofensas corregidas
|
|
43
|
+
- Tests: OK / X tests, X failures
|
|
44
|
+
- YARD: OK / X métodos documentados
|
|
45
|
+
- Skill: actualizada / sin cambios
|
|
46
|
+
- README: actualizado / sin cambios
|
|
47
|
+
|
|
48
|
+
## Reglas
|
|
49
|
+
- **Stop on Failure:** Si los tests o el linting fallan, detenete. No continues con los pasos siguientes.
|
|
50
|
+
- **Sin Hardcoding:** No uses versiones de Ruby o rutas específicas. Confiá en el entorno configurado.
|
|
51
|
+
- **Explain the Why:** Si sugerís cambios en documentación, explicá cómo mejora la mantenibilidad.
|