guild-agents 0.0.1 → 0.1.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/LICENSE +21 -0
- package/README.md +149 -0
- package/bin/guild.js +52 -0
- package/package.json +59 -7
- package/src/commands/init.js +141 -0
- package/src/commands/new-agent.js +97 -0
- package/src/commands/status.js +58 -0
- package/src/templates/agents/advisor.md +45 -0
- package/src/templates/agents/bugfix.md +48 -0
- package/src/templates/agents/code-reviewer.md +50 -0
- package/src/templates/agents/db-migration.md +48 -0
- package/src/templates/agents/developer.md +48 -0
- package/src/templates/agents/product-owner.md +49 -0
- package/src/templates/agents/qa.md +48 -0
- package/src/templates/agents/tech-lead.md +48 -0
- package/src/templates/skills/build-feature/SKILL.md +114 -0
- package/src/templates/skills/council/SKILL.md +113 -0
- package/src/templates/skills/dev-flow/SKILL.md +55 -0
- package/src/templates/skills/guild-specialize/SKILL.md +113 -0
- package/src/templates/skills/new-feature/SKILL.md +59 -0
- package/src/templates/skills/qa-cycle/SKILL.md +54 -0
- package/src/templates/skills/review/SKILL.md +48 -0
- package/src/templates/skills/session-end/SKILL.md +54 -0
- package/src/templates/skills/session-start/SKILL.md +53 -0
- package/src/templates/skills/status/SKILL.md +62 -0
- package/src/utils/files.js +82 -0
- package/src/utils/generators.js +104 -0
- package/src/utils/github.js +126 -0
- package/index.js +0 -1
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: guild-specialize
|
|
3
|
+
description: "Enriquece CLAUDE.md explorando el proyecto y especializa los agentes al stack real"
|
|
4
|
+
user-invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Guild Specialize
|
|
8
|
+
|
|
9
|
+
Explora el proyecto real del usuario y enriquece toda la configuracion de Guild con informacion concreta del stack, arquitectura y convenciones detectadas.
|
|
10
|
+
|
|
11
|
+
Este skill se ejecuta una vez despues de `guild init`. Transforma los placeholders genericos en informacion real del proyecto.
|
|
12
|
+
|
|
13
|
+
## Cuando usarlo
|
|
14
|
+
|
|
15
|
+
- Inmediatamente despues de ejecutar `guild init`
|
|
16
|
+
- Cuando se agrega un stack nuevo al proyecto (nueva base de datos, nuevo framework)
|
|
17
|
+
- Cuando la estructura del proyecto cambio significativamente
|
|
18
|
+
|
|
19
|
+
## Proceso
|
|
20
|
+
|
|
21
|
+
### Paso 1 — Leer contexto base
|
|
22
|
+
|
|
23
|
+
Lee los archivos de configuracion de Guild:
|
|
24
|
+
|
|
25
|
+
- `CLAUDE.md` — instrucciones actuales (contiene placeholders `[PENDIENTE: guild-specialize]`)
|
|
26
|
+
- `PROJECT.md` — identidad y stack declarado durante init
|
|
27
|
+
- `SESSION.md` — estado de sesion actual
|
|
28
|
+
|
|
29
|
+
### Paso 2 — Explorar el proyecto real
|
|
30
|
+
|
|
31
|
+
Investiga la estructura real del proyecto buscando:
|
|
32
|
+
|
|
33
|
+
**Dependencias y versiones:**
|
|
34
|
+
- `package.json` (Node.js/frontend)
|
|
35
|
+
- `pom.xml` o `build.gradle` (Java)
|
|
36
|
+
- `requirements.txt` o `pyproject.toml` (Python)
|
|
37
|
+
- `Gemfile` (Ruby)
|
|
38
|
+
- `go.mod` (Go)
|
|
39
|
+
- `Cargo.toml` (Rust)
|
|
40
|
+
|
|
41
|
+
**Arquitectura y estructura:**
|
|
42
|
+
- Carpetas `src/`, `app/`, `lib/`, `pkg/`, `internal/`
|
|
43
|
+
- Patron de organizacion: por capas, por features, por dominio
|
|
44
|
+
- Entry points del proyecto
|
|
45
|
+
|
|
46
|
+
**Configuracion y convenciones:**
|
|
47
|
+
- `tsconfig.json`, `eslint.config.*`, `.prettierrc`
|
|
48
|
+
- `.env.example`, `.env.local` (variables de entorno — NO leer `.env` real)
|
|
49
|
+
- `Dockerfile`, `docker-compose.yml`
|
|
50
|
+
- CI/CD: `.github/workflows/`, `.gitlab-ci.yml`
|
|
51
|
+
|
|
52
|
+
**Base de datos y migraciones:**
|
|
53
|
+
- Carpeta `migrations/`, `db/`, `prisma/`, `drizzle/`
|
|
54
|
+
- ORM o query builder configurado
|
|
55
|
+
- Schema existente
|
|
56
|
+
|
|
57
|
+
**Documentacion existente:**
|
|
58
|
+
- `README.md` — vision general del proyecto
|
|
59
|
+
- Documentacion interna en `docs/`
|
|
60
|
+
|
|
61
|
+
### Paso 3 — Enriquecer CLAUDE.md
|
|
62
|
+
|
|
63
|
+
Reemplaza todos los placeholders `[PENDIENTE: guild-specialize]` en CLAUDE.md con informacion real:
|
|
64
|
+
|
|
65
|
+
- **Stack con versiones exactas**: extraidas de los archivos de dependencias
|
|
66
|
+
- **Estructura de carpetas explicada**: que hace cada carpeta principal
|
|
67
|
+
- **Convenciones de codigo detectadas**: linter, formatter, estilo de imports
|
|
68
|
+
- **Patrones de arquitectura identificados**: MVC, hexagonal, modular, etc.
|
|
69
|
+
- **Variables de entorno conocidas**: listadas desde `.env.example`
|
|
70
|
+
- **Limitaciones y deuda tecnica visible**: dependencias desactualizadas, TODOs encontrados
|
|
71
|
+
- **Comandos utiles del proyecto**: scripts de npm/make/cargo detectados
|
|
72
|
+
|
|
73
|
+
### Paso 4 — Especializar agentes
|
|
74
|
+
|
|
75
|
+
Para cada agente en `.claude/agents/*.md`, agrega contexto especifico del proyecto:
|
|
76
|
+
|
|
77
|
+
- **advisor.md**: dominio real del proyecto, usuarios objetivo
|
|
78
|
+
- **tech-lead.md**: stack especifico, patrones detectados, decisiones de arquitectura
|
|
79
|
+
- **product-owner.md**: funcionalidades existentes, backlog visible
|
|
80
|
+
- **developer.md**: convenciones de codigo, framework principal, estructura de archivos
|
|
81
|
+
- **code-reviewer.md**: reglas de lint, patrones del proyecto, anti-patrones a vigilar
|
|
82
|
+
- **qa.md**: framework de testing, comandos para ejecutar tests, cobertura actual
|
|
83
|
+
- **bugfix.md**: stack de debugging, logs, herramientas disponibles
|
|
84
|
+
- **db-migration.md**: ORM, herramienta de migraciones, schema actual (si aplica)
|
|
85
|
+
|
|
86
|
+
Usa el tool `Task` para invocar cada agente leyendo su `.claude/agents/[nombre].md` si necesitas perspectiva especializada para enriquecer su configuracion.
|
|
87
|
+
|
|
88
|
+
### Paso 5 — Confirmar
|
|
89
|
+
|
|
90
|
+
Presenta un resumen de lo detectado:
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
Guild v1 especializado para [nombre-proyecto]
|
|
94
|
+
|
|
95
|
+
Stack detectado:
|
|
96
|
+
- [lista de tecnologias con versiones]
|
|
97
|
+
|
|
98
|
+
Arquitectura:
|
|
99
|
+
- [patron identificado]
|
|
100
|
+
- [estructura principal]
|
|
101
|
+
|
|
102
|
+
Agentes actualizados:
|
|
103
|
+
- [lista de agentes con su especializacion aplicada]
|
|
104
|
+
|
|
105
|
+
Ejecuta /status para ver el estado completo.
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Notas importantes
|
|
109
|
+
|
|
110
|
+
- NUNCA leas archivos `.env` reales — solo `.env.example` o `.env.local`
|
|
111
|
+
- Si no puedes detectar algo con certeza, pregunta al usuario en vez de asumir
|
|
112
|
+
- Prioriza precision sobre completitud — es mejor decir "no detectado" que inventar
|
|
113
|
+
- Los agentes deben quedar especializados al stack real, no generico
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: new-feature
|
|
3
|
+
description: "Crea branch y scaffold para una nueva feature"
|
|
4
|
+
user-invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# New Feature
|
|
8
|
+
|
|
9
|
+
Prepara el entorno para trabajar en una nueva feature: crea branch, actualiza SESSION.md y opcionalmente crea un GitHub Issue.
|
|
10
|
+
|
|
11
|
+
## Cuando usarlo
|
|
12
|
+
|
|
13
|
+
- Al iniciar una feature nueva antes de escribir codigo
|
|
14
|
+
- Cuando quieres dejar registrado el contexto de la feature en SESSION.md
|
|
15
|
+
|
|
16
|
+
## Uso
|
|
17
|
+
|
|
18
|
+
`/new-feature [nombre-de-la-feature]`
|
|
19
|
+
|
|
20
|
+
## Proceso
|
|
21
|
+
|
|
22
|
+
### Paso 1 — Obtener nombre
|
|
23
|
+
|
|
24
|
+
Si el usuario no proporciono nombre, preguntale:
|
|
25
|
+
- Nombre corto para la feature (se usara en el nombre del branch)
|
|
26
|
+
- Descripcion breve (1-2 oraciones)
|
|
27
|
+
|
|
28
|
+
### Paso 2 — Crear branch
|
|
29
|
+
|
|
30
|
+
Crea un branch git para la feature:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
git checkout -b feature/[nombre-de-la-feature]
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Si el branch ya existe, pregunta si quiere cambiarse a el o crear uno nuevo.
|
|
37
|
+
|
|
38
|
+
### Paso 3 — Actualizar SESSION.md
|
|
39
|
+
|
|
40
|
+
Actualiza SESSION.md con el contexto de la nueva feature:
|
|
41
|
+
|
|
42
|
+
- **Fecha:** fecha actual
|
|
43
|
+
- **Tarea en curso:** nombre de la feature
|
|
44
|
+
- **Estado:** Feature iniciada — pendiente de implementacion
|
|
45
|
+
|
|
46
|
+
### Paso 4 — GitHub Issue (opcional)
|
|
47
|
+
|
|
48
|
+
Si el proyecto tiene integracion GitHub configurada en PROJECT.md:
|
|
49
|
+
1. Pregunta si quiere crear un GitHub Issue para la feature
|
|
50
|
+
2. Si acepta, crea el issue con `gh issue create`
|
|
51
|
+
3. Registra la URL del issue en SESSION.md
|
|
52
|
+
|
|
53
|
+
### Paso 5 — Confirmar
|
|
54
|
+
|
|
55
|
+
Confirma al usuario:
|
|
56
|
+
- Branch creado: `feature/[nombre]`
|
|
57
|
+
- SESSION.md actualizado
|
|
58
|
+
- GitHub Issue creado (si aplica)
|
|
59
|
+
- Sugiere: "Ejecuta /build-feature para implementar la feature completa"
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa-cycle
|
|
3
|
+
description: "Ciclo QA + bugfix hasta que pase"
|
|
4
|
+
user-invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# QA Cycle
|
|
8
|
+
|
|
9
|
+
Ejecuta un ciclo de validacion QA seguido de bugfix hasta que todos los criterios pasen limpio. Util para validar implementaciones sin el pipeline completo de build-feature.
|
|
10
|
+
|
|
11
|
+
## Cuando usarlo
|
|
12
|
+
|
|
13
|
+
- Despues de implementar cambios que necesitan validacion
|
|
14
|
+
- Para verificar que una correccion de bug no introdujo regresiones
|
|
15
|
+
- Como ciclo final antes de crear un PR
|
|
16
|
+
|
|
17
|
+
## Uso
|
|
18
|
+
|
|
19
|
+
`/qa-cycle`
|
|
20
|
+
|
|
21
|
+
## Proceso
|
|
22
|
+
|
|
23
|
+
### Paso 1 — Validacion QA
|
|
24
|
+
|
|
25
|
+
Invoca el agente QA usando Task tool:
|
|
26
|
+
1. Lee `.claude/agents/qa.md` para asumir el rol de QA
|
|
27
|
+
2. Lee CLAUDE.md y SESSION.md para contexto
|
|
28
|
+
3. Revisa los criterios de aceptacion de la tarea en curso (si existen en SESSION.md)
|
|
29
|
+
4. Ejecuta los tests del proyecto
|
|
30
|
+
5. Valida edge cases y escenarios de error
|
|
31
|
+
6. Reporta resultados
|
|
32
|
+
|
|
33
|
+
### Paso 2 — Bugfix (si hay bugs)
|
|
34
|
+
|
|
35
|
+
Si QA reporta bugs, invoca el agente Bugfix usando Task tool:
|
|
36
|
+
1. Lee `.claude/agents/bugfix.md` para asumir el rol de Bugfix
|
|
37
|
+
2. Recibe el reporte de bugs de QA como input
|
|
38
|
+
3. Diagnostica la causa raiz de cada bug
|
|
39
|
+
4. Implementa la correccion minima
|
|
40
|
+
5. Verifica que el fix resuelve el problema
|
|
41
|
+
|
|
42
|
+
### Paso 3 — Re-validacion
|
|
43
|
+
|
|
44
|
+
Vuelve al Paso 1 para re-validar despues del bugfix.
|
|
45
|
+
Maximo 3 ciclos de QA-bugfix para evitar loops infinitos.
|
|
46
|
+
|
|
47
|
+
### Paso 4 — Resultado final
|
|
48
|
+
|
|
49
|
+
Presenta el resultado:
|
|
50
|
+
- **Aprobado**: Todos los criterios pasan, no hay bugs pendientes
|
|
51
|
+
- **Con advertencias**: Pasa pero hay warnings menores
|
|
52
|
+
- **Rechazado**: Hay bugs criticos que no se pudieron resolver — escalar al Tech Lead
|
|
53
|
+
|
|
54
|
+
Actualiza SESSION.md con el resultado del ciclo QA.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review
|
|
3
|
+
description: "Code review standalone sobre el diff actual"
|
|
4
|
+
user-invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Review
|
|
8
|
+
|
|
9
|
+
Ejecuta un code review independiente sobre los cambios actuales del proyecto. Invoca al agente Code Reviewer para analizar calidad, patrones, seguridad y deuda tecnica.
|
|
10
|
+
|
|
11
|
+
## Cuando usarlo
|
|
12
|
+
|
|
13
|
+
- Antes de crear un PR
|
|
14
|
+
- Para revisar cambios propios antes de pedir review a otros
|
|
15
|
+
- Cuando quieres una segunda opinion sobre el codigo que escribiste
|
|
16
|
+
|
|
17
|
+
## Uso
|
|
18
|
+
|
|
19
|
+
`/review`
|
|
20
|
+
|
|
21
|
+
## Proceso
|
|
22
|
+
|
|
23
|
+
### Paso 1 — Obtener diff
|
|
24
|
+
|
|
25
|
+
Obtiene los cambios actuales:
|
|
26
|
+
1. Primero intenta `git diff --staged` (cambios en staging)
|
|
27
|
+
2. Si no hay cambios en staging, usa `git diff` (cambios sin stage)
|
|
28
|
+
3. Si no hay ningun cambio, informa que no hay nada que revisar
|
|
29
|
+
|
|
30
|
+
### Paso 2 — Invocar Code Reviewer
|
|
31
|
+
|
|
32
|
+
Invoca al agente Code Reviewer usando Task tool:
|
|
33
|
+
1. Lee `.claude/agents/code-reviewer.md` para asumir el rol
|
|
34
|
+
2. Lee CLAUDE.md para entender las convenciones del proyecto
|
|
35
|
+
3. Revisa el diff completo
|
|
36
|
+
4. Clasifica cada hallazgo por severidad:
|
|
37
|
+
- **Blocker**: Debe corregirse antes de merge
|
|
38
|
+
- **Warning**: Deberia corregirse, introduce deuda tecnica
|
|
39
|
+
- **Suggestion**: Mejora opcional
|
|
40
|
+
|
|
41
|
+
### Paso 3 — Presentar hallazgos
|
|
42
|
+
|
|
43
|
+
Presenta el reporte organizado por severidad:
|
|
44
|
+
- Cantidad total de hallazgos por tipo
|
|
45
|
+
- Detalle de cada hallazgo: archivo, descripcion, sugerencia de correccion
|
|
46
|
+
- Veredicto final: Aprobado / Aprobado con warnings / Bloqueado
|
|
47
|
+
|
|
48
|
+
Si hay blockers, sugiere corregirlos y ejecutar `/review` de nuevo.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: session-end
|
|
3
|
+
description: "Guarda estado actual en SESSION.md"
|
|
4
|
+
user-invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Session End
|
|
8
|
+
|
|
9
|
+
Guarda el estado actual del trabajo en SESSION.md para poder retomarlo en la siguiente sesion. Ejecuta este skill antes de cerrar la sesion de trabajo.
|
|
10
|
+
|
|
11
|
+
## Cuando usarlo
|
|
12
|
+
|
|
13
|
+
- Antes de cerrar la sesion de trabajo
|
|
14
|
+
- Cuando necesitas pausar y quieres guardar el contexto
|
|
15
|
+
|
|
16
|
+
## Uso
|
|
17
|
+
|
|
18
|
+
`/session-end`
|
|
19
|
+
|
|
20
|
+
## Proceso
|
|
21
|
+
|
|
22
|
+
### Paso 1 — Recopilar estado actual
|
|
23
|
+
|
|
24
|
+
Analiza el estado actual del trabajo:
|
|
25
|
+
- Que tarea estaba en curso
|
|
26
|
+
- En que fase del pipeline se encuentra (si aplica)
|
|
27
|
+
- Que archivos se modificaron (via `git status`)
|
|
28
|
+
- Que commits se hicieron en esta sesion
|
|
29
|
+
|
|
30
|
+
### Paso 2 — Actualizar SESSION.md
|
|
31
|
+
|
|
32
|
+
Actualiza SESSION.md con la siguiente informacion:
|
|
33
|
+
|
|
34
|
+
- **Fecha:** fecha actual
|
|
35
|
+
- **Tarea en curso:** nombre de la tarea o "ninguna"
|
|
36
|
+
- **GitHub Issue:** URL del issue asociado (si existe)
|
|
37
|
+
- **Agente activo:** ultimo agente utilizado o "ninguno"
|
|
38
|
+
- **Estado:** descripcion concreta de donde quedo el trabajo
|
|
39
|
+
|
|
40
|
+
**Contexto relevante:**
|
|
41
|
+
- Decisiones tomadas en esta sesion
|
|
42
|
+
- Problemas encontrados y como se resolvieron
|
|
43
|
+
- Informacion importante para retomar
|
|
44
|
+
|
|
45
|
+
**Proximos pasos:**
|
|
46
|
+
- Las 2-3 acciones concretas mas importantes al retomar
|
|
47
|
+
- Skill sugerido para continuar (ej: "ejecutar /build-feature para continuar desde Fase 4")
|
|
48
|
+
|
|
49
|
+
### Paso 3 — Confirmar
|
|
50
|
+
|
|
51
|
+
Confirma al usuario:
|
|
52
|
+
- SESSION.md actualizado con el estado actual
|
|
53
|
+
- Proximos pasos registrados
|
|
54
|
+
- Puedes cerrar la sesion con seguridad
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: session-start
|
|
3
|
+
description: "Carga contexto y retoma trabajo desde SESSION.md"
|
|
4
|
+
user-invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Session Start
|
|
8
|
+
|
|
9
|
+
Carga el contexto del proyecto y retoma el trabajo desde donde se dejo en la sesion anterior. Este es el primer skill que debes ejecutar al iniciar una sesion de trabajo.
|
|
10
|
+
|
|
11
|
+
## Cuando usarlo
|
|
12
|
+
|
|
13
|
+
- Al inicio de cada sesion de trabajo con el proyecto
|
|
14
|
+
- Cuando quieres retomar el contexto despues de una pausa
|
|
15
|
+
|
|
16
|
+
## Uso
|
|
17
|
+
|
|
18
|
+
`/session-start`
|
|
19
|
+
|
|
20
|
+
## Proceso
|
|
21
|
+
|
|
22
|
+
### Paso 1 — Cargar contexto
|
|
23
|
+
|
|
24
|
+
Lee los archivos de estado de Guild:
|
|
25
|
+
- `CLAUDE.md` — instrucciones, convenciones y reglas del proyecto
|
|
26
|
+
- `SESSION.md` — estado de la ultima sesion, tarea en curso, proximos pasos
|
|
27
|
+
- `PROJECT.md` — identidad del proyecto, stack, agentes configurados
|
|
28
|
+
|
|
29
|
+
### Paso 2 — Presentar estado
|
|
30
|
+
|
|
31
|
+
Muestra un resumen de la sesion anterior:
|
|
32
|
+
- Fecha de la ultima sesion
|
|
33
|
+
- Tarea en curso (si existe)
|
|
34
|
+
- Estado en que quedo el trabajo
|
|
35
|
+
- Decisiones tomadas previamente
|
|
36
|
+
- Proximos pasos registrados
|
|
37
|
+
|
|
38
|
+
### Paso 3 — Sugerir como continuar
|
|
39
|
+
|
|
40
|
+
Si hay tarea en curso:
|
|
41
|
+
- Muestra el estado de la tarea
|
|
42
|
+
- Sugiere continuar con el skill apropiado (ej: `/build-feature` si esta en implementacion)
|
|
43
|
+
- Muestra los proximos pasos registrados en SESSION.md
|
|
44
|
+
|
|
45
|
+
Si no hay tarea en curso, sugiere opciones:
|
|
46
|
+
- `/build-feature [descripcion]` — para implementar una feature nueva
|
|
47
|
+
- `/new-feature [nombre]` — para preparar el entorno de una feature
|
|
48
|
+
- `/status` — para ver el estado general del proyecto
|
|
49
|
+
- `/council [pregunta]` — para debatir una decision importante
|
|
50
|
+
|
|
51
|
+
### Paso 4 — Actualizar sesion
|
|
52
|
+
|
|
53
|
+
Actualiza SESSION.md con la fecha actual para registrar que la sesion inicio.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: status
|
|
3
|
+
description: "Muestra estado actual del proyecto y sesion"
|
|
4
|
+
user-invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Status
|
|
8
|
+
|
|
9
|
+
Muestra un resumen completo del estado actual del proyecto, la sesion activa y los recursos disponibles de Guild.
|
|
10
|
+
|
|
11
|
+
## Cuando usarlo
|
|
12
|
+
|
|
13
|
+
- Al inicio de una sesion para orientarte
|
|
14
|
+
- Para verificar que Guild esta correctamente configurado
|
|
15
|
+
- Para ver que agentes y skills estan disponibles
|
|
16
|
+
|
|
17
|
+
## Uso
|
|
18
|
+
|
|
19
|
+
`/status`
|
|
20
|
+
|
|
21
|
+
## Proceso
|
|
22
|
+
|
|
23
|
+
### Paso 1 — Leer archivos de estado
|
|
24
|
+
|
|
25
|
+
Lee los archivos de configuracion de Guild:
|
|
26
|
+
- `CLAUDE.md` — instrucciones y convenciones del proyecto
|
|
27
|
+
- `PROJECT.md` — identidad, stack y agentes configurados
|
|
28
|
+
- `SESSION.md` — estado de la sesion actual
|
|
29
|
+
|
|
30
|
+
### Paso 2 — Presentar estado
|
|
31
|
+
|
|
32
|
+
Muestra el resumen con el siguiente formato:
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
Guild v1 — [nombre del proyecto]
|
|
36
|
+
|
|
37
|
+
Sesion actual:
|
|
38
|
+
- Fecha: [fecha de SESSION.md]
|
|
39
|
+
- Tarea en curso: [tarea o "ninguna"]
|
|
40
|
+
- Estado: [estado actual]
|
|
41
|
+
|
|
42
|
+
Stack:
|
|
43
|
+
- [tecnologias listadas en PROJECT.md]
|
|
44
|
+
|
|
45
|
+
Agentes disponibles:
|
|
46
|
+
- [lista de archivos .md en .claude/agents/]
|
|
47
|
+
|
|
48
|
+
Skills disponibles:
|
|
49
|
+
- [lista de directorios en .claude/skills/]
|
|
50
|
+
|
|
51
|
+
Proximos pasos:
|
|
52
|
+
- [extraidos de SESSION.md]
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Paso 3 — Sugerir acciones
|
|
56
|
+
|
|
57
|
+
Si no hay tarea en curso, sugiere:
|
|
58
|
+
- `/build-feature` para implementar algo nuevo
|
|
59
|
+
- `/new-feature` para preparar el entorno de una feature
|
|
60
|
+
- `/council` para debatir una decision
|
|
61
|
+
|
|
62
|
+
Si hay tarea en curso, sugiere continuar con el skill apropiado segun el estado.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* files.js — Utilidades de sistema de archivos para Guild v1
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { mkdirSync, copyFileSync, existsSync, readdirSync, readFileSync } from 'fs';
|
|
6
|
+
import { join, dirname } from 'path';
|
|
7
|
+
import { fileURLToPath } from 'url';
|
|
8
|
+
|
|
9
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
10
|
+
const TEMPLATES_DIR = join(__dirname, '..', 'templates');
|
|
11
|
+
const AGENTS_DIR = join('.claude', 'agents');
|
|
12
|
+
const SKILLS_DIR = join('.claude', 'skills');
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Lista los nombres de los 8 agentes v1.
|
|
16
|
+
*/
|
|
17
|
+
export function getAgentNames() {
|
|
18
|
+
return [
|
|
19
|
+
'advisor',
|
|
20
|
+
'product-owner',
|
|
21
|
+
'tech-lead',
|
|
22
|
+
'developer',
|
|
23
|
+
'code-reviewer',
|
|
24
|
+
'qa',
|
|
25
|
+
'bugfix',
|
|
26
|
+
'db-migration',
|
|
27
|
+
];
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Copia los templates de agentes y skills al proyecto del usuario.
|
|
32
|
+
*/
|
|
33
|
+
export async function copyTemplates() {
|
|
34
|
+
mkdirSync(AGENTS_DIR, { recursive: true });
|
|
35
|
+
mkdirSync(SKILLS_DIR, { recursive: true });
|
|
36
|
+
|
|
37
|
+
// Copy flat agent .md files
|
|
38
|
+
for (const name of getAgentNames()) {
|
|
39
|
+
const src = join(TEMPLATES_DIR, 'agents', `${name}.md`);
|
|
40
|
+
const dest = join(AGENTS_DIR, `${name}.md`);
|
|
41
|
+
if (existsSync(src)) {
|
|
42
|
+
copyFileSync(src, dest);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Copy skill directories with SKILL.md
|
|
47
|
+
const skillsTemplate = join(TEMPLATES_DIR, 'skills');
|
|
48
|
+
if (existsSync(skillsTemplate)) {
|
|
49
|
+
const skills = readdirSync(skillsTemplate, { withFileTypes: true })
|
|
50
|
+
.filter(d => d.isDirectory())
|
|
51
|
+
.map(d => d.name);
|
|
52
|
+
|
|
53
|
+
for (const skill of skills) {
|
|
54
|
+
const skillDir = join(SKILLS_DIR, skill);
|
|
55
|
+
mkdirSync(skillDir, { recursive: true });
|
|
56
|
+
|
|
57
|
+
const src = join(skillsTemplate, skill, 'SKILL.md');
|
|
58
|
+
const dest = join(skillDir, 'SKILL.md');
|
|
59
|
+
if (existsSync(src)) {
|
|
60
|
+
copyFileSync(src, dest);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Lee el contenido de PROJECT.md si existe.
|
|
68
|
+
*/
|
|
69
|
+
export function readProjectMd() {
|
|
70
|
+
const path = 'PROJECT.md';
|
|
71
|
+
if (!existsSync(path)) return null;
|
|
72
|
+
return readFileSync(path, 'utf8');
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Lee el contenido de SESSION.md si existe.
|
|
77
|
+
*/
|
|
78
|
+
export function readSessionMd() {
|
|
79
|
+
const path = 'SESSION.md';
|
|
80
|
+
if (!existsSync(path)) return null;
|
|
81
|
+
return readFileSync(path, 'utf8');
|
|
82
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* generators.js — Genera los archivos de estado del proyecto (v1)
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { writeFileSync } from 'fs';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Genera PROJECT.md con los datos del onboarding.
|
|
9
|
+
* V1: solo metadata cruda — CLAUDE.md tiene el contexto enriquecido.
|
|
10
|
+
*/
|
|
11
|
+
export async function generateProjectMd(data) {
|
|
12
|
+
const date = new Date().toISOString().split('T')[0];
|
|
13
|
+
|
|
14
|
+
let content = `# PROJECT.md
|
|
15
|
+
> Generado por Guild v1 el ${date}
|
|
16
|
+
|
|
17
|
+
## Proyecto
|
|
18
|
+
- **Nombre:** ${data.name}
|
|
19
|
+
- **Tipo:** ${data.type}
|
|
20
|
+
- **Stack:** ${data.stack}
|
|
21
|
+
- **Codigo existente:** ${data.hasExistingCode ? 'Si' : 'No'}
|
|
22
|
+
`;
|
|
23
|
+
|
|
24
|
+
if (data.github?.repoUrl) {
|
|
25
|
+
content += `
|
|
26
|
+
## GitHub
|
|
27
|
+
- **Repositorio:** ${data.github.repoUrl}
|
|
28
|
+
`;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
writeFileSync('PROJECT.md', content, 'utf8');
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Genera CLAUDE.md — documento central con placeholders para guild-specialize.
|
|
36
|
+
*/
|
|
37
|
+
export async function generateClaudeMd(data) {
|
|
38
|
+
const content = `# ${data.name}
|
|
39
|
+
|
|
40
|
+
## Framework
|
|
41
|
+
Este proyecto usa Guild. Leer SESSION.md al inicio de cada sesion.
|
|
42
|
+
|
|
43
|
+
## Stack
|
|
44
|
+
${data.stack}
|
|
45
|
+
|
|
46
|
+
## Estructura del proyecto
|
|
47
|
+
[PENDIENTE: guild-specialize]
|
|
48
|
+
|
|
49
|
+
## Convenciones de codigo
|
|
50
|
+
[PENDIENTE: guild-specialize]
|
|
51
|
+
|
|
52
|
+
## Patrones de arquitectura
|
|
53
|
+
[PENDIENTE: guild-specialize]
|
|
54
|
+
|
|
55
|
+
## Variables de entorno
|
|
56
|
+
[PENDIENTE: guild-specialize]
|
|
57
|
+
|
|
58
|
+
## Reglas globales
|
|
59
|
+
- No implementar sin plan aprobado
|
|
60
|
+
- Actualizar SESSION.md al cerrar cada sesion
|
|
61
|
+
- ESModules en todo el codigo
|
|
62
|
+
- path.join() siempre para construir paths
|
|
63
|
+
|
|
64
|
+
## Skills disponibles
|
|
65
|
+
- /guild-specialize — enriquecer CLAUDE.md explorando el proyecto real
|
|
66
|
+
- /build-feature — pipeline completo de desarrollo
|
|
67
|
+
- /new-feature — crear branch y scaffold para feature
|
|
68
|
+
- /council — debatir decisiones con multiples agentes
|
|
69
|
+
- /review — code review sobre el diff actual
|
|
70
|
+
- /qa-cycle — ciclo QA + bugfix
|
|
71
|
+
- /status — ver estado del proyecto
|
|
72
|
+
- /dev-flow — ver fase actual del pipeline
|
|
73
|
+
- /session-start — cargar contexto y retomar trabajo
|
|
74
|
+
- /session-end — guardar estado en SESSION.md
|
|
75
|
+
`;
|
|
76
|
+
|
|
77
|
+
writeFileSync('CLAUDE.md', content, 'utf8');
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Genera SESSION.md inicial.
|
|
82
|
+
*/
|
|
83
|
+
export async function generateSessionMd() {
|
|
84
|
+
const date = new Date().toISOString().split('T')[0];
|
|
85
|
+
|
|
86
|
+
const content = `# SESSION.md
|
|
87
|
+
|
|
88
|
+
## Sesion activa
|
|
89
|
+
- **Fecha:** ${date}
|
|
90
|
+
- **Tarea en curso:** —
|
|
91
|
+
- **Agente activo:** —
|
|
92
|
+
- **Estado:** Proyecto recien inicializado con Guild v1
|
|
93
|
+
|
|
94
|
+
## Contexto relevante
|
|
95
|
+
- Onboarding completado. Ver PROJECT.md para datos del proyecto.
|
|
96
|
+
- CLAUDE.md tiene placeholders — ejecutar /guild-specialize para enriquecer.
|
|
97
|
+
|
|
98
|
+
## Proximos pasos
|
|
99
|
+
1. Abrir Claude Code y ejecutar /guild-specialize
|
|
100
|
+
2. Definir la primera feature con /build-feature
|
|
101
|
+
`;
|
|
102
|
+
|
|
103
|
+
writeFileSync('SESSION.md', content, 'utf8');
|
|
104
|
+
}
|