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 ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 guild-agents
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,149 @@
1
+ # Guild
2
+
3
+ [![npm version](https://img.shields.io/npm/v/guild-agents)](https://www.npmjs.com/package/guild-agents)
4
+ [![CI](https://github.com/guild-agents/guild/actions/workflows/ci.yml/badge.svg)](https://github.com/guild-agents/guild/actions/workflows/ci.yml)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
6
+ [![Node.js >= 18](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](https://nodejs.org)
7
+
8
+ A multi-agent framework for Claude Code.
9
+
10
+ Sets up 8 specialized agents and 10 skill-based workflows as `.claude/` files in any project.
11
+
12
+ ## Installation
13
+
14
+ ```bash
15
+ npm install -g guild-agents
16
+ ```
17
+
18
+ Or run directly without installing:
19
+
20
+ ```bash
21
+ npx guild-agents init
22
+ ```
23
+
24
+ ## Quick Start
25
+
26
+ ```bash
27
+ npx guild-agents init
28
+ ```
29
+
30
+ Interactive onboarding asks for project name, type, stack, and repo details, then generates the full agent and skill structure.
31
+
32
+ Open Claude Code in your project and run:
33
+
34
+ ```
35
+ /guild-specialize
36
+ ```
37
+
38
+ This explores your actual codebase and enriches CLAUDE.md with real conventions, patterns, and stack details.
39
+
40
+ Then start building:
41
+
42
+ ```
43
+ /build-feature Add user authentication with JWT
44
+ ```
45
+
46
+ This runs the full pipeline: evaluation, spec, implementation, review, and QA.
47
+
48
+ `guild init` generates: CLAUDE.md, PROJECT.md, SESSION.md, `.claude/agents/` (8 agents), `.claude/skills/` (10 skills).
49
+
50
+ ## How It Works
51
+
52
+ **Agents** are the WHO. Each agent is a flat `.md` file in `.claude/agents/` that defines identity, responsibilities, and process. Skills invoke agents via the Task tool when their expertise is needed.
53
+
54
+ **Skills** are the HOW. Each skill is a workflow defined in `.claude/skills/*/SKILL.md` and invoked as a slash command. Skills orchestrate one or more agents through a structured process.
55
+
56
+ **State** is maintained across sessions through three files:
57
+ - `CLAUDE.md` — central enriched context (stack, conventions, rules)
58
+ - `PROJECT.md` — project metadata (name, type, architecture)
59
+ - `SESSION.md` — session continuity (current task, progress, next steps)
60
+
61
+ After init, agents are generic. Running `/guild-specialize` reads the real codebase and tailors each agent to the project's specific stack and patterns.
62
+
63
+ ## Agents
64
+
65
+ | Agent | Role |
66
+ |---|---|
67
+ | advisor | Evaluates ideas and provides strategic direction |
68
+ | product-owner | Turns approved ideas into concrete tasks |
69
+ | tech-lead | Defines technical approach and architecture |
70
+ | developer | Implements features following project conventions |
71
+ | code-reviewer | Reviews quality, patterns, and technical debt |
72
+ | qa | Testing, edge cases, regression validation |
73
+ | bugfix | Bug diagnosis and resolution |
74
+ | db-migration | Schema changes and safe migrations |
75
+
76
+ ## Skills
77
+
78
+ | Skill | Description |
79
+ |---|---|
80
+ | `/guild-specialize` | Explores codebase, enriches CLAUDE.md with real stack and conventions |
81
+ | `/build-feature` | Full pipeline: evaluation, spec, implementation, review, QA |
82
+ | `/new-feature` | Creates branch and scaffold for a new feature |
83
+ | `/council` | Convenes multiple agents to debate a decision |
84
+ | `/qa-cycle` | QA and bugfix loop until clean |
85
+ | `/review` | Code review on the current diff |
86
+ | `/dev-flow` | Shows current pipeline phase and next step |
87
+ | `/status` | Project and session state overview |
88
+ | `/session-start` | Loads context and resumes work |
89
+ | `/session-end` | Saves state to SESSION.md |
90
+
91
+ ## CLI Commands
92
+
93
+ ```bash
94
+ guild init # Interactive project onboarding
95
+ guild new-agent <name> # Create a custom agent
96
+ guild status # Show project status
97
+ ```
98
+
99
+ ## Generated Structure
100
+
101
+ Running `guild init` creates the following in your project root:
102
+
103
+ ```
104
+ CLAUDE.md
105
+ PROJECT.md
106
+ SESSION.md
107
+ .claude/
108
+ agents/
109
+ advisor.md
110
+ product-owner.md
111
+ tech-lead.md
112
+ developer.md
113
+ code-reviewer.md
114
+ qa.md
115
+ bugfix.md
116
+ db-migration.md
117
+ skills/
118
+ guild-specialize/SKILL.md
119
+ build-feature/SKILL.md
120
+ new-feature/SKILL.md
121
+ council/SKILL.md
122
+ qa-cycle/SKILL.md
123
+ review/SKILL.md
124
+ dev-flow/SKILL.md
125
+ status/SKILL.md
126
+ session-start/SKILL.md
127
+ session-end/SKILL.md
128
+ ```
129
+
130
+ All files are markdown, tracked by git, and work fully offline.
131
+
132
+ ## Requirements
133
+
134
+ - Node.js >= 18
135
+ - Claude Code
136
+ - `gh` CLI (optional, for GitHub integration)
137
+
138
+ ## Contributing
139
+
140
+ Two types of contributions:
141
+
142
+ - **Agent and skill templates** (`src/templates/`) — improve agent definitions or skill workflows.
143
+ - **CLI code** (`src/`, `bin/`) — bug fixes, new commands, onboarding improvements.
144
+
145
+ See [CONTRIBUTING.md](.github/CONTRIBUTING.md) for details.
146
+
147
+ ## License
148
+
149
+ MIT — see [LICENSE](LICENSE).
package/bin/guild.js ADDED
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Guild v1 — CLI entry point
5
+ * Usage:
6
+ * guild init — onboarding interactivo v1
7
+ * guild new-agent — crear un nuevo agente
8
+ * guild status — ver estado del proyecto
9
+ */
10
+
11
+ import { program } from 'commander';
12
+ import { readFileSync } from 'fs';
13
+ import { fileURLToPath } from 'url';
14
+ import { dirname, join } from 'path';
15
+
16
+ const __dirname = dirname(fileURLToPath(import.meta.url));
17
+ const pkg = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf8'));
18
+
19
+ program
20
+ .name('guild')
21
+ .description('Multi-agent framework for Claude Code')
22
+ .version(pkg.version);
23
+
24
+ // guild init
25
+ program
26
+ .command('init')
27
+ .description('Inicializar Guild v1 en el proyecto actual')
28
+ .action(async () => {
29
+ const { runInit } = await import('../src/commands/init.js');
30
+ await runInit();
31
+ });
32
+
33
+ // guild new-agent
34
+ program
35
+ .command('new-agent')
36
+ .description('Crear un nuevo agente')
37
+ .argument('<name>', 'Nombre del agente (lowercase, guiones)')
38
+ .action(async (name) => {
39
+ const { runNewAgent } = await import('../src/commands/new-agent.js');
40
+ await runNewAgent(name);
41
+ });
42
+
43
+ // guild status
44
+ program
45
+ .command('status')
46
+ .description('Ver estado del proyecto Guild')
47
+ .action(async () => {
48
+ const { runStatus } = await import('../src/commands/status.js');
49
+ await runStatus();
50
+ });
51
+
52
+ program.parse();
package/package.json CHANGED
@@ -1,13 +1,65 @@
1
1
  {
2
2
  "name": "guild-agents",
3
- "version": "0.0.1",
4
- "description": "A multi-agent framework for Claude Code",
5
- "main": "index.js",
6
- "keywords": ["claude", "claude-code", "agents", "ai", "workflow"],
7
- "author": "tu-nombre",
3
+ "version": "0.1.0",
4
+ "description": "A multi-agent framework for Claude Code — specialized AI teams for every project",
5
+ "type": "module",
6
+ "files": [
7
+ "bin/",
8
+ "src/commands/",
9
+ "src/templates/",
10
+ "src/utils/",
11
+ "!src/utils/__tests__/"
12
+ ],
13
+ "bin": {
14
+ "guild": "./bin/guild.js"
15
+ },
16
+ "scripts": {
17
+ "test": "vitest run",
18
+ "test:watch": "vitest",
19
+ "test:coverage": "vitest run --coverage",
20
+ "lint": "eslint src/",
21
+ "dev": "node bin/guild.js",
22
+ "prepublishOnly": "npm test && npm run lint"
23
+ },
24
+ "keywords": [
25
+ "claude",
26
+ "claude-code",
27
+ "agents",
28
+ "ai",
29
+ "workflow",
30
+ "multi-agent",
31
+ "developer-tools",
32
+ "cli",
33
+ "framework",
34
+ "anthropic",
35
+ "ai-agents",
36
+ "automation",
37
+ "code-review",
38
+ "nodejs"
39
+ ],
40
+ "author": "",
8
41
  "license": "MIT",
9
42
  "repository": {
10
43
  "type": "git",
11
- "url": "https://github.com/guild-ai/guild"
44
+ "url": "git+https://github.com/guild-agents/guild.git"
45
+ },
46
+ "homepage": "https://github.com/guild-agents/guild",
47
+ "bugs": {
48
+ "url": "https://github.com/guild-agents/guild/issues"
49
+ },
50
+ "dependencies": {
51
+ "@clack/prompts": "^0.9.0",
52
+ "chalk": "^5.3.0",
53
+ "commander": "^12.0.0",
54
+ "fs-extra": "^11.2.0",
55
+ "picocolors": "^1.0.0"
56
+ },
57
+ "engines": {
58
+ "node": ">=18.0.0"
59
+ },
60
+ "devDependencies": {
61
+ "@eslint/js": "^10.0.1",
62
+ "eslint": "^10.0.1",
63
+ "vitest": "^4.0.18"
12
64
  }
13
- }
65
+ }
@@ -0,0 +1,141 @@
1
+ /**
2
+ * guild init — Onboarding interactivo v1
3
+ *
4
+ * Flujo:
5
+ * 1. Verificar que no existe ya una instalacion de Guild
6
+ * 2. Recopilar: nombre, tipo, stack, GitHub, codigo existente
7
+ * 3. Generar PROJECT.md, CLAUDE.md, SESSION.md
8
+ * 4. Copiar agentes y skills
9
+ * 5. Instrucciones para /guild-specialize
10
+ */
11
+
12
+ import * as p from '@clack/prompts';
13
+ import chalk from 'chalk';
14
+ import { existsSync } from 'fs';
15
+ import { generateProjectMd, generateSessionMd, generateClaudeMd } from '../utils/generators.js';
16
+ import { copyTemplates } from '../utils/files.js';
17
+
18
+ export async function runInit() {
19
+ console.log('');
20
+ p.intro(chalk.bold.cyan('Guild v1 — Nuevo proyecto'));
21
+
22
+ // Verificar instalacion existente
23
+ if (existsSync('.claude/agents')) {
24
+ const overwrite = await p.confirm({
25
+ message: 'Guild ya esta instalado en este proyecto. Reinicializar?',
26
+ initialValue: false,
27
+ });
28
+
29
+ if (p.isCancel(overwrite) || !overwrite) {
30
+ p.cancel('Cancelado.');
31
+ process.exit(0);
32
+ }
33
+ }
34
+
35
+ // ─── Nombre ─────────────────────────────────────────────────────────────────
36
+ const name = await p.text({
37
+ message: 'Nombre del proyecto:',
38
+ placeholder: 'mi-proyecto',
39
+ validate: (val) => {
40
+ if (!val) return 'El nombre es requerido';
41
+ },
42
+ });
43
+ if (p.isCancel(name)) { p.cancel('Cancelado.'); process.exit(0); }
44
+
45
+ // ─── Tipo ───────────────────────────────────────────────────────────────────
46
+ const type = await p.select({
47
+ message: 'Tipo de proyecto:',
48
+ options: [
49
+ { value: 'webapp', label: 'Web app (React/Vue/Angular)' },
50
+ { value: 'api', label: 'API / Backend service' },
51
+ { value: 'cli', label: 'CLI tool' },
52
+ { value: 'mobile', label: 'Mobile (React Native)' },
53
+ { value: 'fullstack', label: 'Otro / Fullstack' },
54
+ ],
55
+ });
56
+ if (p.isCancel(type)) { p.cancel('Cancelado.'); process.exit(0); }
57
+
58
+ // ─── Stack ──────────────────────────────────────────────────────────────────
59
+ const stack = await p.text({
60
+ message: 'Stack principal:',
61
+ placeholder: 'ej: Next.js, Supabase, Vercel',
62
+ validate: (val) => {
63
+ if (!val) return 'El stack es requerido';
64
+ },
65
+ });
66
+ if (p.isCancel(stack)) { p.cancel('Cancelado.'); process.exit(0); }
67
+
68
+ // ─── GitHub ─────────────────────────────────────────────────────────────────
69
+ let github = null;
70
+ const hasRepo = await p.confirm({
71
+ message: 'Tiene repositorio GitHub?',
72
+ initialValue: true,
73
+ });
74
+
75
+ if (!p.isCancel(hasRepo) && hasRepo) {
76
+ const repoUrl = await p.text({
77
+ message: 'URL del repositorio:',
78
+ placeholder: 'https://github.com/org/repo',
79
+ validate: (val) => {
80
+ if (!val) return 'La URL es requerida';
81
+ if (!val.includes('github.com')) return 'Debe ser una URL de GitHub';
82
+ },
83
+ });
84
+ if (!p.isCancel(repoUrl)) {
85
+ github = { repoUrl };
86
+ }
87
+ }
88
+
89
+ // ─── Codigo existente ───────────────────────────────────────────────────────
90
+ const hasExistingCode = await p.confirm({
91
+ message: 'Tiene codigo existente?',
92
+ initialValue: true,
93
+ });
94
+
95
+ // ─── Generacion ─────────────────────────────────────────────────────────────
96
+ const spinner = p.spinner();
97
+ spinner.start('Generando estructura Guild v1...');
98
+
99
+ const projectData = {
100
+ name,
101
+ type,
102
+ stack,
103
+ github,
104
+ hasExistingCode: !p.isCancel(hasExistingCode) && hasExistingCode,
105
+ };
106
+
107
+ try {
108
+ await copyTemplates();
109
+ spinner.message('Generando CLAUDE.md...');
110
+ await generateClaudeMd(projectData);
111
+
112
+ spinner.message('Generando PROJECT.md...');
113
+ await generateProjectMd(projectData);
114
+
115
+ spinner.message('Generando SESSION.md...');
116
+ await generateSessionMd();
117
+
118
+ spinner.stop('Estructura creada.');
119
+ } catch (error) {
120
+ spinner.stop('Error durante la inicializacion.');
121
+ p.log.error(error.message);
122
+ process.exit(1);
123
+ }
124
+
125
+ // ─── Resumen ────────────────────────────────────────────────────────────────
126
+ p.log.success('CLAUDE.md');
127
+ p.log.success('PROJECT.md');
128
+ p.log.success('SESSION.md');
129
+ p.log.success('.claude/agents/ (8 agentes base)');
130
+ p.log.success('.claude/skills/ (10 skills)');
131
+
132
+ p.note(
133
+ 'Abre Claude Code en este directorio y ejecuta:\n\n' +
134
+ ' /guild-specialize\n\n' +
135
+ 'Este skill explorara tu codigo y enriquecera CLAUDE.md\n' +
136
+ 'con la informacion real del proyecto.',
137
+ 'Siguiente paso'
138
+ );
139
+
140
+ p.outro(chalk.bold.cyan('Guild v1 listo.'));
141
+ }
@@ -0,0 +1,97 @@
1
+ /**
2
+ * new-agent.js — Crea un nuevo agente v1 (archivo plano)
3
+ *
4
+ * Flujo:
5
+ * 1. Validar nombre (lowercase, guiones, sin espacios)
6
+ * 2. Verificar que Guild esta instalado
7
+ * 3. Verificar que el agente NO existe
8
+ * 4. Pedir descripcion del agente
9
+ * 5. Crear .claude/agents/[nombre].md con placeholder
10
+ */
11
+
12
+ import * as p from '@clack/prompts';
13
+ import chalk from 'chalk';
14
+ import { existsSync, writeFileSync } from 'fs';
15
+ import { join } from 'path';
16
+
17
+ const AGENTS_DIR = join('.claude', 'agents');
18
+
19
+ export async function runNewAgent(agentName) {
20
+ p.intro(chalk.bold.cyan('Guild — Nuevo agente'));
21
+
22
+ // Validar nombre
23
+ if (!isValidAgentName(agentName)) {
24
+ p.log.error(`Nombre invalido: "${agentName}". Solo lowercase, numeros y guiones.`);
25
+ p.log.info('Ejemplo: guild new-agent security-auditor');
26
+ process.exit(1);
27
+ }
28
+
29
+ // Verificar Guild instalado
30
+ if (!existsSync(AGENTS_DIR)) {
31
+ p.log.error('Guild no esta instalado. Ejecuta: guild init');
32
+ process.exit(1);
33
+ }
34
+
35
+ // Verificar que el agente NO existe
36
+ const agentPath = join(AGENTS_DIR, `${agentName}.md`);
37
+ if (existsSync(agentPath)) {
38
+ p.log.error(`El agente "${agentName}" ya existe.`);
39
+ process.exit(1);
40
+ }
41
+
42
+ // Pedir descripcion
43
+ const description = await p.text({
44
+ message: `Que hace "${agentName}"? (descripcion corta):`,
45
+ placeholder: 'ej: Evalua oportunidades de trading basado en analisis tecnico',
46
+ validate: (val) => !val ? 'La descripcion es requerida' : undefined,
47
+ });
48
+ if (p.isCancel(description)) { p.cancel('Cancelado.'); process.exit(0); }
49
+
50
+ // Crear agente
51
+ const spinner = p.spinner();
52
+ spinner.start(`Creando agente "${agentName}"...`);
53
+
54
+ try {
55
+ const content = `---
56
+ name: ${agentName}
57
+ description: "${description}"
58
+ ---
59
+
60
+ # ${agentName}
61
+
62
+ Eres ${agentName} de [PROYECTO].
63
+
64
+ ## Responsabilidades
65
+ [Definir con /guild-specialize]
66
+
67
+ ## Lo que NO haces
68
+ [Definir con /guild-specialize]
69
+
70
+ ## Proceso
71
+ [Definir con /guild-specialize]
72
+
73
+ ## Reglas de comportamiento
74
+ - Siempre lee CLAUDE.md y SESSION.md al inicio de la sesion
75
+ `;
76
+
77
+ writeFileSync(agentPath, content, 'utf8');
78
+
79
+ spinner.stop(`Agente "${agentName}" creado.`);
80
+
81
+ p.log.success(`Archivo: ${agentPath}`);
82
+ p.note(
83
+ `Ejecuta /guild-specialize para que Claude\n` +
84
+ `genere las instrucciones completas de "${agentName}".`,
85
+ 'Especializacion pendiente'
86
+ );
87
+ p.outro(chalk.bold.cyan(`Agente ${agentName} listo.`));
88
+ } catch (error) {
89
+ spinner.stop('Error al crear agente.');
90
+ p.log.error(error.message);
91
+ process.exit(1);
92
+ }
93
+ }
94
+
95
+ function isValidAgentName(name) {
96
+ return /^[a-z][a-z0-9-]*$/.test(name);
97
+ }
@@ -0,0 +1,58 @@
1
+ /**
2
+ * status.js — Muestra el estado actual del proyecto v1
3
+ */
4
+
5
+ import * as p from '@clack/prompts';
6
+ import chalk from 'chalk';
7
+ import { existsSync, readdirSync, readFileSync } from 'fs';
8
+ import { join } from 'path';
9
+
10
+ export async function runStatus() {
11
+ if (!existsSync('PROJECT.md')) {
12
+ p.log.error('Guild no esta instalado. Ejecuta: guild init');
13
+ process.exit(1);
14
+ }
15
+
16
+ const projectMd = readFileSync('PROJECT.md', 'utf8');
17
+ const nameMatch = projectMd.match(/\*\*Nombre:\*\*\s*(.+)/);
18
+ const stackMatch = projectMd.match(/\*\*Stack:\*\*\s*(.+)/);
19
+ const projectName = nameMatch ? nameMatch[1].trim() : 'Proyecto';
20
+
21
+ p.intro(chalk.bold.cyan(`Guild — ${projectName}`));
22
+
23
+ if (stackMatch) {
24
+ p.log.info(chalk.gray(`Stack: ${stackMatch[1].trim()}`));
25
+ }
26
+
27
+ // Sesion activa
28
+ if (existsSync('SESSION.md')) {
29
+ p.log.step('Sesion activa');
30
+ const sessionMd = readFileSync('SESSION.md', 'utf8');
31
+ const taskMatch = sessionMd.match(/\*\*Tarea en curso:\*\*\s*(.+)/);
32
+ const stateMatch = sessionMd.match(/\*\*Estado:\*\*\s*(.+)/);
33
+ if (taskMatch && taskMatch[1].trim() !== '—') p.log.info(` Tarea: ${taskMatch[1].trim()}`);
34
+ if (stateMatch) p.log.info(chalk.gray(` ${stateMatch[1].trim()}`));
35
+ }
36
+
37
+ // Agentes
38
+ const agentsDir = join('.claude', 'agents');
39
+ if (existsSync(agentsDir)) {
40
+ p.log.step('Agentes');
41
+ const agents = readdirSync(agentsDir)
42
+ .filter(f => f.endsWith('.md'))
43
+ .map(f => f.replace('.md', ''));
44
+ p.log.info(chalk.gray(` ${agents.join(', ')}`));
45
+ }
46
+
47
+ // Skills
48
+ const skillsDir = join('.claude', 'skills');
49
+ if (existsSync(skillsDir)) {
50
+ p.log.step('Skills');
51
+ const skills = readdirSync(skillsDir, { withFileTypes: true })
52
+ .filter(d => d.isDirectory())
53
+ .map(d => d.name);
54
+ p.log.info(chalk.gray(` ${skills.join(', ')}`));
55
+ }
56
+
57
+ p.outro('');
58
+ }
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: advisor
3
+ description: "Evalua ideas y da direccion estrategica antes de comprometer trabajo"
4
+ ---
5
+
6
+ # Advisor
7
+
8
+ Eres el guardian de dominio de [PROYECTO]. Tu trabajo es evaluar ideas y propuestas antes de que el equipo comprometa esfuerzo, asegurando coherencia con la vision y viabilidad del producto.
9
+
10
+ ## Responsabilidades
11
+
12
+ - Evaluar propuestas de features y cambios contra la vision del proyecto
13
+ - Identificar riesgos de negocio, dependencias ocultas y conflictos con funcionalidad existente
14
+ - Aprobar, rechazar o ajustar ideas antes de que pasen a planificacion
15
+ - Detectar scope creep y mantener el foco del proyecto
16
+ - Validar que las prioridades propuestas tienen sentido estrategico
17
+
18
+ ## Lo que NO haces
19
+
20
+ - No defines arquitectura ni approach tecnico — eso es del Tech Lead
21
+ - No priorizas backlog ni escribes criterios de aceptacion — eso es del Product Owner
22
+ - No revisas codigo — eso es del Code Reviewer
23
+ - No implementas nada — eso es del Developer
24
+
25
+ ## Proceso
26
+
27
+ 1. Lee CLAUDE.md y SESSION.md para entender el estado actual del proyecto
28
+ 2. Analiza la propuesta en contexto del dominio y la vision de [PROYECTO]
29
+ 3. Identifica riesgos, dependencias y conflictos
30
+ 4. Emite tu evaluacion con el formato de salida
31
+
32
+ ## Formato de salida
33
+
34
+ - **Evaluacion**: Aprobado / Rechazado / Requiere ajustes
35
+ - **Razonamiento**: Por que esta decision (2-3 oraciones)
36
+ - **Ajustes sugeridos**: Cambios concretos si aplica
37
+ - **Riesgos identificados**: Lista priorizada de riesgos
38
+
39
+ ## Reglas de comportamiento
40
+
41
+ - Siempre lee CLAUDE.md y SESSION.md antes de evaluar
42
+ - Se conciso — el equipo necesita decisiones, no ensayos
43
+ - Fundamenta cada evaluacion con razones concretas, no opiniones vagas
44
+ - Si no tienes suficiente contexto, pide clarificacion antes de evaluar
45
+ - Distingue entre riesgos reales y preferencias personales
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: bugfix
3
+ description: "Diagnostico y resolucion de bugs"
4
+ ---
5
+
6
+ # Bugfix
7
+
8
+ Eres el especialista en diagnostico y resolucion de bugs de [PROYECTO]. Llegas a cada bug sin el sesgo cognitivo del Developer original, lo que te da perspectiva fresca para encontrar la causa raiz.
9
+
10
+ ## Responsabilidades
11
+
12
+ - Reproducir el bug de forma consistente antes de investigar
13
+ - Identificar la causa raiz, no solo el sintoma
14
+ - Proponer el fix minimo que resuelve el problema sin efectos secundarios
15
+ - Implementar la correccion y verificar que no introduce regresiones
16
+ - Documentar la causa raiz para prevenir bugs similares
17
+
18
+ ## Lo que NO haces
19
+
20
+ - No implementas features nuevas — eso es del Developer
21
+ - No validas comportamiento general — eso es de QA
22
+ - No investigas errores triviales de compilacion o sintaxis
23
+ - No defines approach tecnico — eso es del Tech Lead
24
+
25
+ ## Proceso
26
+
27
+ 1. Lee CLAUDE.md y SESSION.md para entender el contexto del proyecto
28
+ 2. Reproduce el bug con los pasos exactos del reporte
29
+ 3. Investiga la causa raiz: traza el flujo desde el sintoma hasta el origen
30
+ 4. Propone el fix minimo que resuelve el problema
31
+ 5. Implementa la correccion
32
+ 6. Verifica que el bug esta resuelto y no hay regresiones
33
+
34
+ ## Formato de resolucion
35
+
36
+ - **Bug**: Descripcion del problema
37
+ - **Causa raiz**: Que lo provoca y por que
38
+ - **Fix aplicado**: Que se cambio y por que ese approach
39
+ - **Verificacion**: Como se verifico que esta resuelto
40
+ - **Prevencion**: Que se puede hacer para evitar bugs similares
41
+
42
+ ## Reglas de comportamiento
43
+
44
+ - Siempre lee CLAUDE.md y SESSION.md antes de investigar
45
+ - Nunca asumas la causa — reproduce primero, investiga despues
46
+ - El fix debe ser minimo: resuelve el bug, no refactoriza el modulo
47
+ - Si el fix requiere cambios grandes, escala al Tech Lead
48
+ - Documenta la causa raiz aunque sea obvia — el equipo aprende de los bugs