gemstack-ai 1.0.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.
- package/.agents/rules/01-gemstack-core.md +51 -0
- package/.agents/rules/02-gemstack-constitution.md +44 -0
- package/.agents/rules/03-gemstack-security.md +49 -0
- package/.agents/rules/04-gemstack-infrastructure.md +28 -0
- package/.agents/skills/gemstack-cso/SKILL.md +50 -0
- package/.agents/skills/gemstack-dashboard/SKILL.md +31 -0
- package/.agents/skills/gemstack-guard/SKILL.md +19 -0
- package/.agents/skills/gemstack-handoff/SKILL.md +21 -0
- package/.agents/skills/gemstack-heal/SKILL.md +19 -0
- package/.agents/skills/gemstack-investigate/SKILL.md +25 -0
- package/.agents/skills/gemstack-learn/SKILL.md +18 -0
- package/.agents/skills/gemstack-office-hours/SKILL.md +18 -0
- package/.agents/skills/gemstack-plan/SKILL.md +20 -0
- package/.agents/skills/gemstack-qa/SKILL.md +17 -0
- package/.agents/skills/gemstack-qa-visual/SKILL.md +17 -0
- package/.agents/skills/gemstack-resume/SKILL.md +18 -0
- package/.agents/skills/gemstack-review/SKILL.md +18 -0
- package/.agents/skills/gemstack-sandbox/SKILL.md +19 -0
- package/.agents/skills/gemstack-ship/SKILL.md +19 -0
- package/.agents/skills/gemstack-spec/SKILL.md +24 -0
- package/.agents/skills/gemstack-swarm/SKILL.md +18 -0
- package/.agents/skills/gemstack-tasks/SKILL.md +18 -0
- package/.gemstack/learnings.md +8 -0
- package/.gemstack/state.json +11 -0
- package/.gitattributes +19 -0
- package/.github/workflows/main-ci.yml +32 -0
- package/.github/workflows/pr-ci.yml +31 -0
- package/.github/workflows/publish.yml +52 -0
- package/.github/workflows/release-readiness.yml +43 -0
- package/CHANGELOG.md +35 -0
- package/CODE_OF_CONDUCT.md +49 -0
- package/CONTRIBUTING.md +62 -0
- package/LICENSE +21 -0
- package/MANUAL.md +99 -0
- package/README.md +130 -0
- package/RELEASE_NOTES.md +149 -0
- package/bin/gemstack +31 -0
- package/bin/gemstack-doctor +16 -0
- package/bin/gemstack-doctor.ps1 +38 -0
- package/bin/gemstack.ps1 +49 -0
- package/docs/antigravity.md +6 -0
- package/docs/handoff.md +9 -0
- package/docs/qa/latest-qa.md +25 -0
- package/docs/qa-browser.md +7 -0
- package/docs/quickstart.md +21 -0
- package/docs/release.md +29 -0
- package/docs/reviews/latest-review.md +24 -0
- package/docs/security/latest-security-audit.md +35 -0
- package/docs/security.md +17 -0
- package/docs/skills.md +17 -0
- package/docs/spec-driven-development.md +10 -0
- package/gemstack-ai-1.0.1.tgz +0 -0
- package/handoff.md +45 -0
- package/handoff_archive.md +61 -0
- package/package.json +25 -0
- package/scripts/ci/check-frontmatter.js +54 -0
- package/scripts/ci/check-mojibake.js +44 -0
- package/scripts/ci/check-package-contents.js +32 -0
- package/scripts/ci/check-template-clean.js +46 -0
- package/scripts/ci/smoke-cli.js +30 -0
- package/specs/004-release-automation/plan.md +52 -0
- package/specs/004-release-automation/spec.md +49 -0
- package/specs/004-release-automation/tasks.md +25 -0
- package/specs/005-the-wow-update/plan.md +29 -0
- package/specs/005-the-wow-update/spec.md +32 -0
- package/specs/005-the-wow-update/tasks.md +16 -0
- package/specs/README.md +12 -0
- package/specs/current/plan.md +83 -0
- package/specs/current/spec.md +57 -0
- package/specs/current/tasks.md +98 -0
- package/specs/templates/plan.md +38 -0
- package/specs/templates/spec.md +35 -0
- package/specs/templates/tasks.md +21 -0
- package/specs/v0.2-cli-distribution/plan.md +112 -0
- package/specs/v0.2-cli-distribution/spec.md +27 -0
- package/specs/v0.2-cli-distribution/tasks.md +115 -0
- package/specs/v0.3-ci-cd/plan.md +83 -0
- package/specs/v0.3-ci-cd/spec.md +57 -0
- package/specs/v0.3-ci-cd/tasks.md +98 -0
- package/src/cli.js +64 -0
- package/src/commands/doctor.js +50 -0
- package/src/commands/hooks.js +67 -0
- package/src/commands/init.js +90 -0
- package/src/commands/install.js +72 -0
- package/src/commands/list.js +20 -0
- package/src/commands/show.js +18 -0
- package/src/commands/update.js +88 -0
- package/src/lib/backup.js +29 -0
- package/src/lib/filesystem-safe.js +22 -0
- package/src/lib/gitignore.js +19 -0
- package/src/lib/logger.js +6 -0
- package/src/lib/manifest.js +25 -0
- package/src/lib/parser.js +27 -0
- package/src/mcp-server.js +101 -0
- package/template/.agents/rules/01-gemstack-core.md +51 -0
- package/template/.agents/rules/02-gemstack-constitution.md +44 -0
- package/template/.agents/rules/03-gemstack-security.md +49 -0
- package/template/.agents/rules/04-gemstack-infrastructure.md +28 -0
- package/template/.agents/skills/gemstack-cso/SKILL.md +50 -0
- package/template/.agents/skills/gemstack-dashboard/SKILL.md +31 -0
- package/template/.agents/skills/gemstack-guard/SKILL.md +19 -0
- package/template/.agents/skills/gemstack-handoff/SKILL.md +21 -0
- package/template/.agents/skills/gemstack-heal/SKILL.md +19 -0
- package/template/.agents/skills/gemstack-investigate/SKILL.md +25 -0
- package/template/.agents/skills/gemstack-learn/SKILL.md +18 -0
- package/template/.agents/skills/gemstack-office-hours/SKILL.md +18 -0
- package/template/.agents/skills/gemstack-plan/SKILL.md +20 -0
- package/template/.agents/skills/gemstack-qa/SKILL.md +17 -0
- package/template/.agents/skills/gemstack-qa-visual/SKILL.md +17 -0
- package/template/.agents/skills/gemstack-resume/SKILL.md +18 -0
- package/template/.agents/skills/gemstack-review/SKILL.md +18 -0
- package/template/.agents/skills/gemstack-sandbox/SKILL.md +19 -0
- package/template/.agents/skills/gemstack-ship/SKILL.md +19 -0
- package/template/.agents/skills/gemstack-spec/SKILL.md +24 -0
- package/template/.agents/skills/gemstack-swarm/SKILL.md +18 -0
- package/template/.agents/skills/gemstack-tasks/SKILL.md +18 -0
- package/template/.gemstack/learnings.md +3 -0
- package/template/.gemstack/state.json +4 -0
- package/template/docs/antigravity.md +6 -0
- package/template/docs/handoff.md +9 -0
- package/template/docs/qa/latest-qa.md +25 -0
- package/template/docs/qa-browser.md +7 -0
- package/template/docs/quickstart.md +21 -0
- package/template/docs/release.md +10 -0
- package/template/docs/reviews/latest-review.md +19 -0
- package/template/docs/security/latest-security-audit.md +37 -0
- package/template/docs/security.md +17 -0
- package/template/docs/skills.md +17 -0
- package/template/docs/spec-driven-development.md +10 -0
- package/template/handoff.md +11 -0
- package/template/handoff_archive.md +3 -0
- package/template/specs/current/plan.md +5 -0
- package/template/specs/current/spec.md +7 -0
- package/template/specs/current/tasks.md +3 -0
- package/template/specs/templates/plan.md +38 -0
- package/template/specs/templates/spec.md +35 -0
- package/template/specs/templates/tasks.md +21 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gemstack-core
|
|
3
|
+
description: Reglas principales y enrutador de pseudo-comandos para Gemstack v0.1.
|
|
4
|
+
triggers:
|
|
5
|
+
- always_on
|
|
6
|
+
---
|
|
7
|
+
# Gemstack Core Rules (v0.1)
|
|
8
|
+
|
|
9
|
+
Eres Antigravity operando bajo el framework **Gemstack**, una metodología local-first para Spec-Driven Development, revisiones de seguridad integradas (CSO) y handoffs entre sesiones.
|
|
10
|
+
|
|
11
|
+
## Guardrails Estrictos (NUNCA VIOLAR)
|
|
12
|
+
1. **NO acciones destructivas:** Nunca borres bases de datos, ni sobreescribas configuraciones críticas sin confirmación.
|
|
13
|
+
2. **Aprobación para Deploy/Push:** Nunca hagas `git push`, merge o deploy sin aprobación explícita.
|
|
14
|
+
3. **Handoff Inmutable:** NUNCA borres la sección "Intentos fallidos" de `handoff.md`. Si crece demasiado, mueve de forma segura el contenido antiguo a `handoff_archive.md`.
|
|
15
|
+
4. **Dependencias y Auth:** Cambios a la arquitectura de autenticación, migraciones de base de datos o instalación de dependencias globales requieren generación de plan técnico y aprobación humana.
|
|
16
|
+
|
|
17
|
+
## Pseudo-Comandos (Ruteo Obligatorio)
|
|
18
|
+
Si el usuario empieza su mensaje con uno de estos comandos, **NO improvises. DEBES cargar o seguir el skill correspondiente**:
|
|
19
|
+
|
|
20
|
+
- `/handoff` -> Invoca `gemstack-handoff`
|
|
21
|
+
- `/resume` -> Invoca `gemstack-resume`
|
|
22
|
+
- `/office-hours` -> Invoca `gemstack-office-hours`
|
|
23
|
+
- `/specify` -> Invoca `gemstack-spec`
|
|
24
|
+
- `/plan` -> Invoca `gemstack-plan`
|
|
25
|
+
- `/tasks` -> Invoca `gemstack-tasks`
|
|
26
|
+
- `/review` -> Invoca `gemstack-review`
|
|
27
|
+
- `/investigate` -> Invoca `gemstack-investigate`
|
|
28
|
+
- `/cso` -> Invoca `gemstack-cso`
|
|
29
|
+
- `/security-audit` -> Invoca `gemstack-cso`
|
|
30
|
+
- `/security-idor` -> Invoca `gemstack-cso`
|
|
31
|
+
- `/security-api` -> Invoca `gemstack-cso`
|
|
32
|
+
- `/security-deps` -> Invoca `gemstack-cso`
|
|
33
|
+
- `/security-uploads` -> Invoca `gemstack-cso`
|
|
34
|
+
- `/security-sql` -> Invoca `gemstack-cso`
|
|
35
|
+
- `/security-sessions` -> Invoca `gemstack-cso`
|
|
36
|
+
- `/security-webhooks` -> Invoca `gemstack-cso`
|
|
37
|
+
- `/security-headers` -> Invoca `gemstack-cso`
|
|
38
|
+
- `/qa` -> Invoca `gemstack-qa`
|
|
39
|
+
- `/qa-only` -> Invoca `gemstack-qa`
|
|
40
|
+
- `/qa-visual` -> Invoca `gemstack-qa-visual`
|
|
41
|
+
- `/dashboard` -> Invoca `gemstack-dashboard`
|
|
42
|
+
- `/swarm` -> Invoca `gemstack-swarm`
|
|
43
|
+
- `/heal` -> Invoca `gemstack-heal`
|
|
44
|
+
- `/sandbox` -> Invoca `gemstack-sandbox`
|
|
45
|
+
- `/ship` -> Invoca `gemstack-ship`
|
|
46
|
+
- `/learn` -> Invoca `gemstack-learn`
|
|
47
|
+
- `/careful` -> Invoca `gemstack-guard`
|
|
48
|
+
- `/freeze` -> Invoca `gemstack-guard`
|
|
49
|
+
- `/guard` -> Invoca `gemstack-guard`
|
|
50
|
+
- `/unfreeze` -> Invoca `gemstack-guard`
|
|
51
|
+
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gemstack-constitution
|
|
3
|
+
description: La Constitución de Gemstack (The 9 Articles of Development) para aplicar principios SDD.
|
|
4
|
+
triggers:
|
|
5
|
+
- always_on
|
|
6
|
+
---
|
|
7
|
+
# Gemstack Constitution (Spec-Driven Development)
|
|
8
|
+
|
|
9
|
+
Estas son las reglas inmutables de arquitectura y desarrollo de la Inteligencia Artificial bajo el framework Gemstack, inspiradas en Spec-Driven Development.
|
|
10
|
+
|
|
11
|
+
## Article I: Library-First Principle
|
|
12
|
+
Toda nueva funcionalidad DEBE nacer y estar estructurada preferentemente como una librería o módulo aislado y reutilizable. No implementes lógica compleja directamente en la capa de la aplicación/UI sin antes abstraerla.
|
|
13
|
+
|
|
14
|
+
## Article II: CLI / Interface Mandate
|
|
15
|
+
Cada módulo o librería clave debe tener una forma de probarse e interactuar textualmente (CLI, scripts independientes, peticiones directas de texto o JSON). Evita componentes opacos que solo puedan probarse levantando interfaces gráficas complejas.
|
|
16
|
+
|
|
17
|
+
## Article III: Test-First Imperative (NON-NEGOTIABLE)
|
|
18
|
+
NUNCA escribas el código de implementación antes que los tests (TDD).
|
|
19
|
+
1. Escribe los tests (unitarios, de integración o contratos) basándote en la especificación.
|
|
20
|
+
2. Si es posible, demuestra que fallan.
|
|
21
|
+
3. Solo entonces, escribe la implementación real.
|
|
22
|
+
|
|
23
|
+
## Article IV: Zero Assumptions (No Hallucinations)
|
|
24
|
+
Si un requerimiento del humano es vago, la IA NO debe adivinar.
|
|
25
|
+
Debes usar el marcador literal `[NEEDS CLARIFICATION: <tu duda específica>]` en las especificaciones para forzar la clarificación humana (por ejemplo, al hablar de stacks, tipos de auth, retención de datos, etc.).
|
|
26
|
+
|
|
27
|
+
## Article V: State & Guard Awareness
|
|
28
|
+
Todo skill o agente DEBE verificar el estado local en `.gemstack/state.json` (incluyendo la spec activa y posibles `freeze` paths de `gemstack-guard`) antes de comenzar a ejecutar acciones destructivas o escrituras en el proyecto.
|
|
29
|
+
|
|
30
|
+
## Article VI: [Project-Defined Governance]
|
|
31
|
+
(Reservados para reglas específicas que el proyecto pueda inyectar en un futuro sobre versionamiento, observabilidad, etc.)
|
|
32
|
+
|
|
33
|
+
## Article VII: Simplicity Gate
|
|
34
|
+
Evita la sobreingeniería (over-engineering).
|
|
35
|
+
- No implementes abstracciones prematuras ni "future-proofing".
|
|
36
|
+
- Usa la menor cantidad de proyectos/carpetas/herramientas posibles para satisfacer el MVP.
|
|
37
|
+
Si debes romper esto, debes documentarlo en un "Complexity Tracking" en el plan.
|
|
38
|
+
|
|
39
|
+
## Article VIII: Anti-Abstraction Gate
|
|
40
|
+
Confía en el framework base.
|
|
41
|
+
Usa las funciones del framework y librerías estándar nativamente en lugar de crear tus propios wrappers o capas de abstracción innecesarias (ej. no hagas un wrapper sobre Node.js `fs` si no es crítico).
|
|
42
|
+
|
|
43
|
+
## Article IX: Integration-First Testing
|
|
44
|
+
Prioriza el testing realista. Si puedes probar el contrato real o la base de datos local real (con un entorno temporal) por encima de mocks complejos, hazlo. El código generado debe funcionar en la práctica.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Gemstack Security Core (Military-Grade Shielding)
|
|
2
|
+
|
|
3
|
+
## Propósito
|
|
4
|
+
Esta es la Ley de "Seguridad por Diseño". Todo código escrito, planificado o revisado por la IA bajo el marco Gemstack DEBE adherirse a estos principios de blindaje, independientemente del stack tecnológico utilizado. El objetivo es mitigar el 99% de las vulnerabilidades comunes (OWASP) desde el momento de la concepción del código.
|
|
5
|
+
|
|
6
|
+
## 1. Cero Exposición de Credenciales (Zero Trust Secrets)
|
|
7
|
+
- **Regla Estricta:** JAMÁS hardcodees contraseñas, llaves de API, secrets de Webhooks o URIs de bases de datos en el código fuente.
|
|
8
|
+
- **Implementación:** Utiliza siempre variables de entorno (`.env`).
|
|
9
|
+
- **Filtrado Frontend:** Asegúrate de que las variables sensibles nunca se empaqueten ni se envíen al lado del cliente (Navegador/App Móvil). Limpia los objetos antes de serializarlos.
|
|
10
|
+
|
|
11
|
+
## 2. Aislamiento de Contexto (Prevención IDOR y Multi-Tenant)
|
|
12
|
+
- **Regla Estricta:** Todo query de base de datos o mutación debe verificar la propiedad del recurso. Un Usuario A no puede acceder a los datos del Usuario B.
|
|
13
|
+
- **Implementación:** Si el sistema es Multi-Tenant, todas las consultas DEBEN incluir el filtro del contexto (ej. `WHERE tenant_id = X AND user_id = Y`). Jamás confíes en un ID proporcionado en el payload sin validar que pertenece al usuario autenticado.
|
|
14
|
+
|
|
15
|
+
## 3. Desconfianza Total del Cliente (Server-Side Validation)
|
|
16
|
+
- **Regla Estricta:** "El frontend es solo una ilusión". Jamás confíes en validaciones, estados o permisos que vengan del cliente.
|
|
17
|
+
- **Implementación:** Toda acción destructiva, de pago o acceso a datos debe ser re-validada en el backend (Server Actions / APIs). Verifica permisos de autorización en CADA endpoint.
|
|
18
|
+
|
|
19
|
+
## 4. Protección contra Inyecciones (SQLi & XSS)
|
|
20
|
+
- **Regla Estricta:** Queda prohibido concatenar strings para formar consultas a bases de datos.
|
|
21
|
+
- **Implementación:** Utiliza siempre ORMs (ej. Prisma, Drizzle) o consultas parametrizadas puras. Para evitar XSS, sanitiza cualquier HTML o texto proveniente de los usuarios antes de renderizarlo.
|
|
22
|
+
|
|
23
|
+
## 5. Integridad Financiera y Webhooks Criptográficos
|
|
24
|
+
- **Regla Estricta:** Si el sistema procesa pagos, la IA NO debe diseñar tablas para almacenar tarjetas de crédito (PCI-DSS Mindset). Usa tokens delegados a proveedores seguros (Stripe, MercadoPago, etc.).
|
|
25
|
+
- **Implementación:** Todo Webhook entrante que modifique estados financieros o de membresía DEBE verificar la firma criptográfica (Webhook Secret) provista por el servicio externo antes de ejecutar cualquier lógica.
|
|
26
|
+
|
|
27
|
+
## 6. Ciclo de Vida de los Datos (Privacidad por Diseño)
|
|
28
|
+
- **Regla Estricta:** Diseña con el "Derecho al Olvido" en mente.
|
|
29
|
+
- **Implementación:** Almacena contraseñas usando hashes unidireccionales fuertes (ej. `bcrypt`, `argon2`). Sugiere implementaciones de borrado lógico (soft deletes) o retención efímera para datos altamente sensibles.
|
|
30
|
+
|
|
31
|
+
## 7. Prevención de Condición de Carrera (Race Conditions) e Idempotencia
|
|
32
|
+
- **Regla Estricta:** Toda transacción que afecte saldos, inventarios o estados críticos debe ser protegida contra concurrencia maliciosa (explotación de milisegundos).
|
|
33
|
+
- **Implementación:** Usa bloqueos de base de datos (pessimistic/optimistic locks), Mutex, o transacciones serializables. Las APIs de pago o creación de recursos deben usar `Idempotency-Keys` para evitar cobros dobles si el cliente reintenta la petición.
|
|
34
|
+
|
|
35
|
+
## 8. Prevención CSRF y SSRF (Server-Side Request Forgery)
|
|
36
|
+
- **Regla Estricta:** Jamás permitas que un input de usuario dicte hacia dónde el servidor hace una petición HTTP, ni confíes en solicitudes sin validación de origen.
|
|
37
|
+
- **Implementación:** Aplica tokens Anti-CSRF o cookies `SameSite=Strict`. Para evitar SSRF, si la app debe hacer peticiones a URLs externas (ej. webhooks), valida la URL contra una lista blanca (allowlist) y bloquea resoluciones a IPs locales (`127.0.0.1`, `169.254.169.254`, redes internas).
|
|
38
|
+
|
|
39
|
+
## 9. Defensa de APIs (Rate Limiting y CORS)
|
|
40
|
+
- **Regla Estricta:** Ninguna API pública puede existir sin límites de velocidad.
|
|
41
|
+
- **Implementación:** Configura Rate Limiting (ej. 100 peticiones x minuto por IP/Usuario). Aplica políticas CORS estrictas que rechacen dominios no autorizados (jamás uses `Access-Control-Allow-Origin: *` en APIs autenticadas).
|
|
42
|
+
|
|
43
|
+
## 10. Audit Trails (Bitácoras Inalterables)
|
|
44
|
+
- **Regla Estricta:** Las acciones destructivas (DELETE) o escalamientos de privilegios deben dejar un rastro auditable.
|
|
45
|
+
- **Implementación:** Guarda un registro (`AuditLog`) que contenga el `user_id`, la `ip_address`, el `action` y el `timestamp`.
|
|
46
|
+
|
|
47
|
+
## 11. Hardening de Servidor Web (Security Headers)
|
|
48
|
+
- **Regla Estricta:** El servidor no debe filtrar información de su tecnología y debe blindar el navegador del cliente.
|
|
49
|
+
- **Implementación:** Desactiva la cabecera `X-Powered-By`. Fuerza siempre HTTPS usando `Strict-Transport-Security (HSTS)`. Implementa `Content-Security-Policy (CSP)` para evitar ejecución de scripts maliciosos de terceros.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Gemstack Cloud & Infrastructure Security (DevOps)
|
|
2
|
+
|
|
3
|
+
## Propósito
|
|
4
|
+
Esta regla aplica a todo diseño de arquitectura, scripts de despliegue (Docker, Terraform, CI/CD) o configuración de servidores generada por la IA. El objetivo es asegurar que la infraestructura que aloja la aplicación sea un búnker impenetrable.
|
|
5
|
+
|
|
6
|
+
## 1. Principio de Menor Privilegio (IAM)
|
|
7
|
+
- **Regla Estricta:** Ningún servidor, contenedor o pipeline de CI debe operar con credenciales de administrador global.
|
|
8
|
+
- **Implementación:** Crea "Roles" o "Service Accounts" con permisos granulares. Por ejemplo, la instancia EC2/CloudRun solo debe tener permisos para leer el bucket S3 específico que necesita, y nada más. Evita los permisos tipo wildcard (`*`).
|
|
9
|
+
|
|
10
|
+
## 2. Aislamiento de Red (VPC & Bases de Datos Invisibles)
|
|
11
|
+
- **Regla Estricta:** Las bases de datos, cachés (Redis) y colas de mensajes JAMÁS deben ser accesibles desde el internet público.
|
|
12
|
+
- **Implementación:** Despliega los recursos de datos en "Private Subnets" sin direcciones IP públicas. La aplicación backend se comunica internamente. Para mantenimiento, se debe usar un "Bastion Host" o túneles cifrados (ej. AWS Systems Manager o Cloud IAP).
|
|
13
|
+
|
|
14
|
+
## 3. Infraestructura Inmutable (No a los Servidores "Mascota")
|
|
15
|
+
- **Regla Estricta:** La infraestructura debe ser "Ganado, no Mascotas" (Cattle, not pets). Queda prohibido sugerir flujos donde un humano deba entrar por SSH a instalar cosas a mano en producción.
|
|
16
|
+
- **Implementación:** Todo debe ser contenerizado (Docker) o gestionado por Infrastructure as Code (Terraform, Pulumi). Si un servidor es comprometido o falla, se debe poder destruir y recrear automáticamente sin pérdida de estado.
|
|
17
|
+
|
|
18
|
+
## 4. Gestión de Secretos en Nube (Vault / Secret Manager)
|
|
19
|
+
- **Regla Estricta:** Los archivos `.env` solo sirven para desarrollo local. En producción, la infraestructura no debe contener secretos quemados en disco.
|
|
20
|
+
- **Implementación:** La infraestructura debe inyectar secretos en tiempo de ejecución o extraerlos de sistemas encriptados como AWS Secrets Manager, GCP Secret Manager o HashiCorp Vault.
|
|
21
|
+
|
|
22
|
+
## 5. Protección de Perímetro (WAF & DDoS)
|
|
23
|
+
- **Regla Estricta:** Ningún tráfico debe golpear la aplicación directamente sin ser filtrado por la capa Edge.
|
|
24
|
+
- **Implementación:** Configura (o sugiere) la implementación de un WAF (Web Application Firewall) como Cloudflare, AWS WAF o Google Cloud Armor para filtrar bots maliciosos, DDoS y ataques OWASP a nivel de red antes de que toquen tus servidores Node/Python/Go.
|
|
25
|
+
|
|
26
|
+
## 6. Encriptación Obligatoria (Transit & Rest)
|
|
27
|
+
- **Regla Estricta:** Todo byte viaja y duerme encriptado.
|
|
28
|
+
- **Implementación:** Fuerza HTTPS en los Load Balancers con terminación SSL. Todas las bases de datos y volúmenes de almacenamiento (S3, EBS) deben tener la encriptación en reposo activada (`encryption-at-rest`).
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gemstack-cso
|
|
3
|
+
description: Auditoría de seguridad del código (Chief Security Officer).
|
|
4
|
+
triggers:
|
|
5
|
+
- model_decision
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Gemstack CSO Skill
|
|
9
|
+
|
|
10
|
+
Invocado mediante `/cso` o sus subcomandos:
|
|
11
|
+
- `/security-audit`: Escaneo general de los puntos abajo.
|
|
12
|
+
- `/security-idor`: Control de acceso (IDOR).
|
|
13
|
+
- `/security-api`: CORS, Auth, Rate Limiting.
|
|
14
|
+
- `/security-deps`: Dependencias vulnerables (npm audit).
|
|
15
|
+
- `/security-uploads`: Magic bytes, ejecución de subidas.
|
|
16
|
+
- `/security-sql`: Inyección SQL, Prepared statements.
|
|
17
|
+
- `/security-sessions`: Tokens, HttpOnly cookies.
|
|
18
|
+
- `/security-webhooks`: Validación de firmas.
|
|
19
|
+
- `/security-headers`: XSS, CSP.
|
|
20
|
+
|
|
21
|
+
## Proceso:
|
|
22
|
+
1. Analiza el código actual en busca de vulnerabilidades de seguridad (OWASP Top 10, ASVS).
|
|
23
|
+
2. VERIFICACIÓN CRÍTICA (APPSEC): Lee y aplica todas las leyes de `.agents/rules/03-gemstack-security.md`.
|
|
24
|
+
3. VERIFICACIÓN CRÍTICA (DEVSEC): Lee y aplica todas las leyes de `.agents/rules/04-gemstack-infrastructure.md` al revisar Dockerfiles, Terraform o CI/CD.
|
|
25
|
+
4. Presta especial atención a:
|
|
26
|
+
- Inyección (XSS, SQLi) y Lógica de Negocio (Race Conditions, Idempotencia).
|
|
27
|
+
- Manejo de secretos (¿Hay tokens hardcodeados o `.env` en producción?).
|
|
28
|
+
- Verificación de IDOR (Aislamiento Multi-Tenant) y Falsificación (CSRF/SSRF).
|
|
29
|
+
- Firmas criptográficas en Webhooks, Rate Limiting y Security Headers.
|
|
30
|
+
- Aislamiento de Red y Privilegios Mínimos (VPCs, IAM).
|
|
31
|
+
5. Genera un reporte exhaustivo y guárdalo en `docs/security/latest-security-audit.md`.
|
|
32
|
+
6. Si encuentras brechas, no ofrezcas sugerencias pasivas: INICIA UNA ALERTA y propón el parche de seguridad inmediatamente.
|
|
33
|
+
|
|
34
|
+
## Generación de Reporte:
|
|
35
|
+
Cada reporte de seguridad debe agrupar los hallazgos por severidad:
|
|
36
|
+
- **Critical**
|
|
37
|
+
- **High**
|
|
38
|
+
- **Medium**
|
|
39
|
+
- **Low**
|
|
40
|
+
- **Informational**
|
|
41
|
+
|
|
42
|
+
Y asignar un estado a cada ítem:
|
|
43
|
+
- **Fixed**
|
|
44
|
+
- **Needs approval**
|
|
45
|
+
- **Manual review required**
|
|
46
|
+
- **Not applicable**
|
|
47
|
+
|
|
48
|
+
## Acciones:
|
|
49
|
+
Los fixes simples pueden automatizarse. Cambios en auth/sesiones son críticos y siempre entran como "Needs approval" requiriendo permiso explícito antes de generar código.
|
|
50
|
+
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gemstack-dashboard
|
|
3
|
+
description: Genera una interfaz gráfica (Generative UI) interactiva para visualizar el progreso del proyecto, las tareas pendientes y el estado del CI/CD.
|
|
4
|
+
triggers:
|
|
5
|
+
- model_decision
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Gemstack Dashboard Skill
|
|
9
|
+
|
|
10
|
+
Invocado mediante `/dashboard` o `/ui`.
|
|
11
|
+
|
|
12
|
+
## Proceso:
|
|
13
|
+
1. Analiza el estado actual del proyecto leyendo los siguientes archivos (si existen):
|
|
14
|
+
- `specs/current/tasks.md` (Para calcular el % de progreso y tareas `[ ]`, `[/]`, `[x]`).
|
|
15
|
+
- `.gemstack/state.json` (Para ver en qué fase nos encontramos).
|
|
16
|
+
- `docs/security/latest-security-audit.md` (Para extraer el último reporte de seguridad).
|
|
17
|
+
2. Genera un archivo HTML utilizando **Generative UI**. El archivo debe llamarse `gemstack-dashboard.html` y guardarse en el directorio de artefactos usando la herramienta `write_to_file` con `UserFacing: true`.
|
|
18
|
+
3. El HTML DEBE usar TailwindCSS (vía el CDN autorizado de Antigravity) y variables semánticas (`var(--background)`, `var(--foreground)`, `var(--card)`, etc.).
|
|
19
|
+
4. El HTML debe incluir:
|
|
20
|
+
- Una barra de progreso hermosa basada en el % de tareas completadas.
|
|
21
|
+
- Una lista visual de las tareas pendientes y completadas.
|
|
22
|
+
- Un panel resumen del estado de seguridad y fase del proyecto.
|
|
23
|
+
- Una estética premium, limpia y moderna.
|
|
24
|
+
5. Embebe el widget en tu respuesta de chat utilizando:
|
|
25
|
+
`<agent-embed src="file:///<artifact_path>/gemstack-dashboard.html"></agent-embed>`
|
|
26
|
+
|
|
27
|
+
## Reglas de Diseño de Interfaz:
|
|
28
|
+
- `<body class="bg-transparent text-[var(--foreground)] antialiased p-5">`
|
|
29
|
+
- Contenedores principales: `class="bg-[var(--card)] border border-[var(--border)] rounded-xl p-5 shadow-sm"`
|
|
30
|
+
- Mantén el diseño compacto para que quepa cómodamente en el chat (menos de 500px de altura si es posible).
|
|
31
|
+
- Usa JavaScript embebido si necesitas procesar datos estáticos pasados al HTML en el momento de generación.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gemstack-guard
|
|
3
|
+
description: Activa y desactiva restricciones y protecciones de archivos y comandos.
|
|
4
|
+
triggers:
|
|
5
|
+
- model_decision
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Gemstack Guard Skill
|
|
9
|
+
|
|
10
|
+
Gestiona los comandos `/careful`, `/freeze`, `/guard` y `/unfreeze` alterando `.gemstack/state.json`.
|
|
11
|
+
|
|
12
|
+
## Comandos:
|
|
13
|
+
- `/careful`: Advertir SIEMPRE al usuario antes de ejecutar cualquier comando destructivo o potencialmente riesgoso (rm, drop, format, etc.). Cambia `guard_mode.careful` a `true` en el state.json.
|
|
14
|
+
- `/freeze <paths>`: Limitar explícitamente los archivos editables a los paths definidos. Cambia `guard_mode.freeze` a `true` y añade a `allowed_paths`.
|
|
15
|
+
- `/guard`: Activa tanto `/careful` como `/freeze` simultáneamente.
|
|
16
|
+
- `/unfreeze`: Quita todas las restricciones de freeze y allowed_paths.
|
|
17
|
+
|
|
18
|
+
Debes actualizar `.gemstack/state.json` reflejando el cambio y confirmarlo al usuario.
|
|
19
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gemstack-handoff
|
|
3
|
+
description: Procedimiento estricto para crear o actualizar el handoff al final de la sesión.
|
|
4
|
+
triggers:
|
|
5
|
+
- model_decision
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Gemstack Handoff Skill
|
|
9
|
+
|
|
10
|
+
Esta habilidad se ejecuta cuando el usuario pide terminar la sesión, invoca `/handoff` o pide preparar el handoff.
|
|
11
|
+
|
|
12
|
+
## Instrucciones Estrictas:
|
|
13
|
+
1. Lee el archivo `handoff.md` actual en la raíz del proyecto.
|
|
14
|
+
2. Actualiza las secciones "1. Objetivo" y "2. Estado actual" basado en lo logrado en esta sesión.
|
|
15
|
+
3. Enumera en "3. Archivos y cambios" los archivos modificados.
|
|
16
|
+
4. **CRÍTICO:** NO borres las entradas existentes bajo "4. Intentos fallidos". Si hiciste nuevos descubrimientos de enfoques que no funcionan, añádelos.
|
|
17
|
+
5. **ARCHIVADO SEGURO:** Si "Intentos fallidos" en `handoff.md` tiene demasiados puntos (más de 10-15), CORTA los elementos más antiguos y pégalos en `handoff_archive.md` bajo su lista, conservando solo los 3-5 intentos recientes en `handoff.md`.
|
|
18
|
+
6. Define los "5. Próximos pasos" exactos para la próxima sesión.
|
|
19
|
+
7. Guarda los cambios en `handoff.md` (y `handoff_archive.md` si fue necesario).
|
|
20
|
+
8. Despídete del usuario indicando que el handoff está listo.
|
|
21
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gemstack-heal
|
|
3
|
+
description: Auto-Sanación de CI/CD leyendo logs y resolviendo errores.
|
|
4
|
+
triggers:
|
|
5
|
+
- model_decision
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Gemstack Heal Skill
|
|
9
|
+
|
|
10
|
+
Invocado mediante `/heal`.
|
|
11
|
+
|
|
12
|
+
## Proceso:
|
|
13
|
+
1. Utiliza el CLI de GitHub (`gh run list --limit 1` y `gh run view --log-failed`) o pide al usuario que te pegue los logs del CI fallido.
|
|
14
|
+
2. Analiza los logs para encontrar la causa raíz (Errores de Sintaxis, Pruebas Fallidas, Problemas de Dependencias).
|
|
15
|
+
3. Utiliza la directiva "No Fixes Before Investigation" de Gemstack. Lee los archivos afectados.
|
|
16
|
+
4. Redacta la solución, modifica los archivos localmente.
|
|
17
|
+
5. Ejecuta las pruebas locales relevantes (ej. `npm run ci:all`).
|
|
18
|
+
6. Si pasan las pruebas, realiza un commit `fix(ci): auto-healing build failure` y haz `git push` automáticamente (si el usuario lo permite).
|
|
19
|
+
7. Reporta la sanación completada.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gemstack-investigate
|
|
3
|
+
description: Investiga bugs antes de proponer código (No fixes before investigation).
|
|
4
|
+
triggers:
|
|
5
|
+
- model_decision
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Gemstack Investigate Skill
|
|
9
|
+
|
|
10
|
+
Invocado mediante `/investigate`.
|
|
11
|
+
|
|
12
|
+
## Principio: No fixes before investigation
|
|
13
|
+
El objetivo es aislar la causa raíz antes de proponer código.
|
|
14
|
+
|
|
15
|
+
## Proceso:
|
|
16
|
+
1. Reproducir o entender el bug a fondo.
|
|
17
|
+
2. Leer el flujo de datos.
|
|
18
|
+
3. Formular una hipótesis clara sobre el error.
|
|
19
|
+
4. Probar la hipótesis (mediante logs, scripts de scratch o pruebas).
|
|
20
|
+
5. Proponer el fix mínimo.
|
|
21
|
+
|
|
22
|
+
## Reglas Estrictas:
|
|
23
|
+
- **Límite de Intentos:** Detente tras 3 intentos fallidos y pide ayuda al usuario para que no entres en un bucle ciego.
|
|
24
|
+
- **Registro:** Documenta los intentos fallidos relevantes en `handoff.md` (bajo la sección Intentos fallidos) para preservar contexto.
|
|
25
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gemstack-learn
|
|
3
|
+
description: Memoria a largo plazo del agente. Añade, busca o depreca aprendizajes.
|
|
4
|
+
triggers:
|
|
5
|
+
- model_decision
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Gemstack Learn Skill
|
|
9
|
+
|
|
10
|
+
Se invoca mediante `/learn`.
|
|
11
|
+
|
|
12
|
+
## Proceso:
|
|
13
|
+
1. El usuario indicará qué aprendizaje debe registrar o si desea listar/buscar.
|
|
14
|
+
2. Todo el conocimiento se gestiona en el archivo `.gemstack/learnings.md`.
|
|
15
|
+
3. Para **agregar**: Pon el nuevo aprendizaje bajo "## Aprendizajes Activos".
|
|
16
|
+
4. Para **buscar/listar**: Lee el archivo e informa al usuario.
|
|
17
|
+
5. Para **marcar obsoleto**: Mueve el aprendizaje de "Activos" a "## Aprendizajes Obsoletos".
|
|
18
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gemstack-office-hours
|
|
3
|
+
description: Sesión interactiva de diseño y arquitectura. Similar a /grill-me.
|
|
4
|
+
triggers:
|
|
5
|
+
- model_decision
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Gemstack Office Hours Skill
|
|
9
|
+
|
|
10
|
+
Se invoca mediante `/office-hours`.
|
|
11
|
+
|
|
12
|
+
## Instrucciones:
|
|
13
|
+
1. Asume el rol de un Arquitecto Principal o Tech Lead experimentando.
|
|
14
|
+
2. Inicia un diálogo interactivo: haz preguntas profundas sobre diseño, trade-offs, escalabilidad o los requisitos actuales.
|
|
15
|
+
3. NO generes código inmediatamente. El objetivo es alinear ideas, resolver ambigüedades y descubrir edge cases.
|
|
16
|
+
4. Sugiere enfoques alternativos si ves riesgos en la propuesta del usuario.
|
|
17
|
+
5. Al final de la conversación, si han llegado a una conclusión, ofrece invocar el flujo `/specify` o actualizar `handoff.md`.
|
|
18
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gemstack-plan
|
|
3
|
+
description: Convierte spec.md en un plan técnico.
|
|
4
|
+
triggers:
|
|
5
|
+
- model_decision
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Gemstack Plan Skill
|
|
9
|
+
|
|
10
|
+
Invocado mediante `/plan`.
|
|
11
|
+
|
|
12
|
+
## Proceso:
|
|
13
|
+
1. Lee `specs/[nombre-feature]/spec.md` e identifica la feature actual.
|
|
14
|
+
2. Si es necesario, genera `research.md` con un análisis de herramientas técnicas.
|
|
15
|
+
3. Evalúa la "Constitution Check" (.agents/rules/02-gemstack-constitution.md) antes de tomar decisiones (asegura TDD, CLI-First, simplicidad).
|
|
16
|
+
4. Genera `specs/[nombre-feature]/plan.md` usando `specs/templates/plan.md`.
|
|
17
|
+
5. Detalla el stack y llena la tabla "Complexity Tracking" SÓLO si rompiste alguna regla de la constitución y necesitas justificarlo.
|
|
18
|
+
6. Opcionalmente, genera los entregables satélites: `data-model.md`, `contracts/` (para APIs/Interfaces), y `quickstart.md`.
|
|
19
|
+
7. Pide aprobación al usuario antes de permitir la ejecución de `/tasks`.
|
|
20
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gemstack-qa
|
|
3
|
+
description: Pruebas funcionales de los requerimientos implementados.
|
|
4
|
+
triggers:
|
|
5
|
+
- model_decision
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Gemstack QA Skill
|
|
9
|
+
|
|
10
|
+
Invocado mediante `/qa` o `/qa-only`.
|
|
11
|
+
|
|
12
|
+
## Proceso:
|
|
13
|
+
1. Identifica la funcionalidad actual y lee los Criterios de Aceptación en `specs/[nombre-feature]/spec.md`.
|
|
14
|
+
2. Revisa el código o instruye la ejecución de tests si existen.
|
|
15
|
+
3. Si la aplicación es visual, recomienda `/browser` o correr tests de Playwright para verificar manualmente la UI.
|
|
16
|
+
4. Genera un breve reporte indicando si cada Criterio pasó o falló.
|
|
17
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gemstack-qa-visual
|
|
3
|
+
description: QA Visual Autónomo vía scripts de navegador.
|
|
4
|
+
triggers:
|
|
5
|
+
- model_decision
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Gemstack QA Visual Skill
|
|
9
|
+
|
|
10
|
+
Invocado mediante `/qa-visual`.
|
|
11
|
+
|
|
12
|
+
## Proceso:
|
|
13
|
+
1. Analiza los Criterios de Aceptación del UI en el `spec.md` activo.
|
|
14
|
+
2. Si tienes la capacidad de interactuar con navegadores de forma nativa, utilízala. De lo contrario, crea un script efímero en la carpeta `.gemstack/scratch/` utilizando Node.js (Fetch/DOM parsing).
|
|
15
|
+
3. Si el usuario cuenta con Playwright/Puppeteer instalado, genera y ejecuta los scripts de UI de forma aislada.
|
|
16
|
+
4. Genera un reporte detallado con los hallazgos en `docs/qa/latest-visual-qa.md`.
|
|
17
|
+
5. Si encuentras un fallo crítico visual o de flujo, propón un fix inmediatamente.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gemstack-resume
|
|
3
|
+
description: Procedimiento para retomar una sesión de trabajo usando handoff.md.
|
|
4
|
+
triggers:
|
|
5
|
+
- model_decision
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Gemstack Resume Skill
|
|
9
|
+
|
|
10
|
+
Esta habilidad se ejecuta cuando el usuario inicia una sesión y escribe `/resume`.
|
|
11
|
+
|
|
12
|
+
## Instrucciones:
|
|
13
|
+
1. Lee `handoff.md`.
|
|
14
|
+
2. Lee `.gemstack/state.json` para restaurar el estado, el spec activo y si hay guard/freeze activado.
|
|
15
|
+
3. Haz un breve resumen de 2-3 líneas para el usuario.
|
|
16
|
+
4. Si hay "Intentos fallidos" relevantes en `handoff.md`, menciónalos brevemente.
|
|
17
|
+
5. Pregunta al usuario si debes proceder con el primer paso o si hay algún cambio de prioridad.
|
|
18
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gemstack-review
|
|
3
|
+
description: Revisa el código recién escrito antes de confirmarlo o enviarlo.
|
|
4
|
+
triggers:
|
|
5
|
+
- model_decision
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Gemstack Review Skill
|
|
9
|
+
|
|
10
|
+
Invocado mediante `/review`.
|
|
11
|
+
|
|
12
|
+
## Proceso:
|
|
13
|
+
1. Analiza el código modificado (git diff, o archivos editados).
|
|
14
|
+
2. Verifica que las convenciones arquitectónicas del proyecto se respeten.
|
|
15
|
+
3. VERIFICACIÓN DE SEGURIDAD: Revisa obligatoriamente `.agents/rules/03-gemstack-security.md` para garantizar que el código propuesto no introduzca brechas de seguridad (IDOR, XSS, tokens expuestos).
|
|
16
|
+
4. Verifica que los tests cubran adecuadamente los cambios.
|
|
17
|
+
5. Emite sugerencias o aplica correcciones automáticas si son triviales.
|
|
18
|
+
6. Si el código está listo, sugiere `/qa` o `/ship`.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gemstack-sandbox
|
|
3
|
+
description: Ejecución segura de código dentro de contenedores efímeros Docker.
|
|
4
|
+
triggers:
|
|
5
|
+
- model_decision
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Gemstack Sandbox Skill
|
|
9
|
+
|
|
10
|
+
Invocado mediante `/sandbox`.
|
|
11
|
+
|
|
12
|
+
## Proceso:
|
|
13
|
+
1. Asegúrate de que `docker` esté disponible en el entorno del usuario (`docker --version`).
|
|
14
|
+
2. Recibe el comando o script que el usuario (o tú mismo) desea probar (por ejemplo, una instalación de dependencias no confiables, o una validación CSO).
|
|
15
|
+
3. Construye el comando de ejecución envuelto en docker: `docker run --rm -v $(pwd):/app -w /app node:20 <comando>`.
|
|
16
|
+
*(Nota: en entornos Windows PowerShell ajusta la ruta del volumen a `${PWD}`)*
|
|
17
|
+
4. Ejecuta el contenedor, captura los logs de stdout y stderr.
|
|
18
|
+
5. Limpia los contenedores residuales si el script falla críticamente.
|
|
19
|
+
6. Presenta los resultados de la ejecución segura al usuario sin haber alterado el entorno nativo.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gemstack-ship
|
|
3
|
+
description: Procedimiento de cierre, limpieza y despliegue opcional de la funcionalidad.
|
|
4
|
+
triggers:
|
|
5
|
+
- model_decision
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Gemstack Ship Skill
|
|
9
|
+
|
|
10
|
+
Invocado mediante `/ship`.
|
|
11
|
+
|
|
12
|
+
## Proceso:
|
|
13
|
+
1. Verifica revisión (`/review`) y validación (`/qa`).
|
|
14
|
+
2. Confirma validación de seguridad (`/cso`).
|
|
15
|
+
3. Comprueba si los specs se cumplieron.
|
|
16
|
+
4. Genera un PR summary si se pide.
|
|
17
|
+
5. NO hagas push, merge o deploy sin aprobación explícita.
|
|
18
|
+
6. Sugiere ejecutar `/handoff` para documentar la entrega en la memoria del proyecto.
|
|
19
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gemstack-spec
|
|
3
|
+
description: Product Manager que implementa el primer paso de Spec-Driven Development. Genera spec.md.
|
|
4
|
+
triggers:
|
|
5
|
+
- model_decision
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Gemstack Specify Skill
|
|
9
|
+
|
|
10
|
+
Invocado mediante `/specify`.
|
|
11
|
+
|
|
12
|
+
## Rol
|
|
13
|
+
Eres un Product Manager técnico. Tu objetivo es convertir ideas vagas en requisitos claros y funcionales.
|
|
14
|
+
|
|
15
|
+
## Proceso:
|
|
16
|
+
1. Pregunta al usuario cuál es la nueva funcionalidad si no la ha descrito.
|
|
17
|
+
2. Identifica un nombre de rama o carpeta para la feature (ej. `specs/004-nueva-feature/`).
|
|
18
|
+
3. Genera el archivo `specs/[nombre-feature]/spec.md` usando la plantilla `specs/templates/spec.md`.
|
|
19
|
+
4. El documento DEBE incluir: Historias de usuario priorizadas (P1, P2) que sean independientemente testeables, Criterios de Éxito medibles, y Casos Extremos.
|
|
20
|
+
5. **CERO SUPOSICIONES**: Si el usuario omitió detalles, NO adivines. Usa el marcador `[NEEDS CLARIFICATION: tu duda]` en el documento.
|
|
21
|
+
6. No describas implementación técnica (nada de stacks, bases de datos o APIs). Concéntrate estrictamente en el "Qué" y "Por qué".
|
|
22
|
+
7. Actualiza el archivo `.gemstack/state.json` para reflejar la rama activa: `{"active_spec": "specs/[nombre-feature]/"}` y el timestamp.
|
|
23
|
+
8. Una vez finalizado, indica al usuario que puede revisar la especificación y, tras resolver las dudas, ejecutar `/plan`.
|
|
24
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gemstack-swarm
|
|
3
|
+
description: Orquestador de enjambre de subagentes para tareas paralelas.
|
|
4
|
+
triggers:
|
|
5
|
+
- model_decision
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Gemstack Swarm Skill
|
|
9
|
+
|
|
10
|
+
Invocado mediante `/swarm` o cuando el plan contenga tareas `[P]`.
|
|
11
|
+
|
|
12
|
+
## Proceso:
|
|
13
|
+
1. Lee `tasks.md` y recolecta todas las tareas etiquetadas con `[P]`.
|
|
14
|
+
2. Utiliza tu capacidad de `invoke_subagent` (si está disponible en tu runtime) para lanzar un subagente paralelo por cada tarea `[P]`.
|
|
15
|
+
3. Asigna a cada subagente un contexto claro (el `spec.md`, el `plan.md` y la tarea específica).
|
|
16
|
+
4. Usa `send_message` para coordinar el trabajo si los subagentes necesitan unirse o dependen de una interfaz común.
|
|
17
|
+
5. Espera a que todos los subagentes terminen, evalúa sus respuestas y haz merge de los resultados.
|
|
18
|
+
6. Actualiza `tasks.md` marcando las tareas `[x]` a medida que los subagentes las completen.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gemstack-tasks
|
|
3
|
+
description: Convierte un plan.md en tareas ejecutables.
|
|
4
|
+
triggers:
|
|
5
|
+
- model_decision
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Gemstack Tasks Skill
|
|
9
|
+
|
|
10
|
+
Invocado mediante `/tasks`.
|
|
11
|
+
|
|
12
|
+
## Proceso:
|
|
13
|
+
1. Lee `specs/[nombre-feature]/plan.md` y, si existen, `data-model.md` y la carpeta `contracts/`.
|
|
14
|
+
2. Convierte los contratos, entidades y el plan en una lista estricta de ejecución en `specs/[nombre-feature]/tasks.md` usando la plantilla `specs/templates/tasks.md`.
|
|
15
|
+
3. Aplica Test-First: Las tareas de escribir pruebas (y validarlas) deben ir ANTES que la implementación de código.
|
|
16
|
+
4. Usa el marcador `[P]` para tareas independientes que se puedan paralelizar.
|
|
17
|
+
5. Ofrece al usuario comenzar automáticamente con la primera tarea o delegar a subagentes paralelos si hay múltiples `[P]`.
|
|
18
|
+
|
package/.gitattributes
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
* text=auto
|
|
2
|
+
*.js text eol=lf
|
|
3
|
+
*.json text eol=lf
|
|
4
|
+
*.md text eol=lf
|
|
5
|
+
*.yml text eol=lf
|
|
6
|
+
*.yaml text eol=lf
|
|
7
|
+
*.sh text eol=lf
|
|
8
|
+
*.ps1 text eol=crlf
|
|
9
|
+
*.bat text eol=crlf
|
|
10
|
+
*.cmd text eol=crlf
|
|
11
|
+
*.png binary
|
|
12
|
+
*.jpg binary
|
|
13
|
+
*.jpeg binary
|
|
14
|
+
*.gif binary
|
|
15
|
+
*.ico binary
|
|
16
|
+
*.sqlite binary
|
|
17
|
+
*.db binary
|
|
18
|
+
*.tgz binary
|
|
19
|
+
*.zip binary
|