@tacuchi/agent-factory 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 +37 -0
- package/README.md +142 -0
- package/bin/agent-factory.js +70 -0
- package/package.json +45 -0
- package/src/commands/create.js +99 -0
- package/src/commands/detect.js +56 -0
- package/src/commands/init.js +115 -0
- package/src/commands/list.js +117 -0
- package/src/core/agent-validator.js +162 -0
- package/src/core/agent-writer.js +62 -0
- package/src/core/stack-detector.js +319 -0
- package/src/core/template-engine.js +31 -0
- package/src/utils/logger.js +57 -0
- package/src/utils/prompts.js +96 -0
- package/templates/roles/architect.md.tmpl +26 -0
- package/templates/roles/coordinator.md.tmpl +22 -0
- package/templates/roles/reviewer.md.tmpl +28 -0
- package/templates/roles/specialist.md.tmpl +17 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
const inquirer = require('inquirer');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
|
|
4
|
+
const ROLES = [
|
|
5
|
+
{ name: 'specialist — Dedicated to a single repo/stack', value: 'specialist' },
|
|
6
|
+
{ name: 'coordinator — Orchestrates across repos', value: 'coordinator' },
|
|
7
|
+
{ name: 'reviewer — Code review and quality analysis', value: 'reviewer' },
|
|
8
|
+
{ name: 'architect — System design and technical decisions', value: 'architect' },
|
|
9
|
+
];
|
|
10
|
+
|
|
11
|
+
const MODELS = [
|
|
12
|
+
{ name: 'sonnet (balanced)', value: 'sonnet' },
|
|
13
|
+
{ name: 'opus (most capable)', value: 'opus' },
|
|
14
|
+
{ name: 'haiku (fastest)', value: 'haiku' },
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
const TARGETS = [
|
|
18
|
+
{ name: 'all — Claude Code + Codex/Gemini/Cursor', value: 'all' },
|
|
19
|
+
{ name: 'claude — Only .claude/agents/', value: 'claude' },
|
|
20
|
+
{ name: 'codex — Only .agents/', value: 'codex' },
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
async function askCreateOptions() {
|
|
24
|
+
const answers = await inquirer.prompt([
|
|
25
|
+
{
|
|
26
|
+
type: 'input',
|
|
27
|
+
name: 'name',
|
|
28
|
+
message: 'Agent name (kebab-case):',
|
|
29
|
+
validate: (v) => /^[a-z0-9]+(-[a-z0-9]+)*$/.test(v) || 'Use kebab-case (e.g., my-agent)',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
type: 'list',
|
|
33
|
+
name: 'role',
|
|
34
|
+
message: 'Agent role:',
|
|
35
|
+
choices: ROLES,
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
type: 'list',
|
|
39
|
+
name: 'model',
|
|
40
|
+
message: 'Model:',
|
|
41
|
+
choices: MODELS,
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
type: 'input',
|
|
45
|
+
name: 'scope',
|
|
46
|
+
message: 'Repository path (for stack detection, optional):',
|
|
47
|
+
default: '',
|
|
48
|
+
filter: (v) => (v ? path.resolve(v) : ''),
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
type: 'list',
|
|
52
|
+
name: 'target',
|
|
53
|
+
message: 'Output target:',
|
|
54
|
+
choices: TARGETS,
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
type: 'input',
|
|
58
|
+
name: 'output',
|
|
59
|
+
message: 'Output directory:',
|
|
60
|
+
default: process.cwd(),
|
|
61
|
+
filter: (v) => path.resolve(v),
|
|
62
|
+
},
|
|
63
|
+
]);
|
|
64
|
+
|
|
65
|
+
return answers;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
async function confirmGeneration(agentName, files) {
|
|
69
|
+
const { confirm } = await inquirer.prompt([
|
|
70
|
+
{
|
|
71
|
+
type: 'confirm',
|
|
72
|
+
name: 'confirm',
|
|
73
|
+
message: `Generate agent "${agentName}" to ${files.join(', ')}?`,
|
|
74
|
+
default: true,
|
|
75
|
+
},
|
|
76
|
+
]);
|
|
77
|
+
return confirm;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
async function askInitAgents(suggestions) {
|
|
81
|
+
const { selected } = await inquirer.prompt([
|
|
82
|
+
{
|
|
83
|
+
type: 'checkbox',
|
|
84
|
+
name: 'selected',
|
|
85
|
+
message: 'Select agents to generate:',
|
|
86
|
+
choices: suggestions.map((s) => ({
|
|
87
|
+
name: `${s.name} (${s.role})`,
|
|
88
|
+
value: s,
|
|
89
|
+
checked: true,
|
|
90
|
+
})),
|
|
91
|
+
},
|
|
92
|
+
]);
|
|
93
|
+
return selected;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
module.exports = { askCreateOptions, confirmGeneration, askInitAgents, ROLES, MODELS, TARGETS };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# {{name}}
|
|
2
|
+
|
|
3
|
+
Arquitecto de software {{primary_tech}} — diseña estructura, evalua decisiones tecnicas y define patrones.
|
|
4
|
+
|
|
5
|
+
## Stack
|
|
6
|
+
|
|
7
|
+
{{stack_list}}
|
|
8
|
+
|
|
9
|
+
## Responsabilidades
|
|
10
|
+
|
|
11
|
+
- Evaluar y proponer arquitectura del sistema.
|
|
12
|
+
- Documentar decisiones tecnicas (ADRs) en `./docs/`.
|
|
13
|
+
- Analizar dependencias entre modulos y servicios.
|
|
14
|
+
- Recomendar patrones de diseño apropiados para el stack.
|
|
15
|
+
- Identificar riesgos tecnicos y deuda tecnica.
|
|
16
|
+
- Proponer mejoras de rendimiento y escalabilidad.
|
|
17
|
+
|
|
18
|
+
## Reglas
|
|
19
|
+
|
|
20
|
+
- No implementar codigo. Solo diseñar, documentar y recomendar.
|
|
21
|
+
- Diagramas en formato Mermaid cuando sea posible.
|
|
22
|
+
- Cada decision debe incluir:
|
|
23
|
+
- Contexto y problema
|
|
24
|
+
- Alternativas consideradas
|
|
25
|
+
- Decision tomada y justificacion
|
|
26
|
+
- Consecuencias esperadas
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# {{name}}
|
|
2
|
+
|
|
3
|
+
Coordinador del workspace. Proporciona vision global, orienta sobre que especialista usar y consolida resultados.
|
|
4
|
+
|
|
5
|
+
## Reglas
|
|
6
|
+
|
|
7
|
+
- **Vision global**: este agente conoce la arquitectura completa del workspace.
|
|
8
|
+
- Puede **leer y buscar** en cualquier repo del workspace para analisis cross-repo.
|
|
9
|
+
- **No implementar cambios directamente** en repos externos. Indicar al usuario que invoque al especialista correspondiente.
|
|
10
|
+
- Siempre producir un **resumen** con:
|
|
11
|
+
- Plan de accion por repo
|
|
12
|
+
- Especialista recomendado para cada subtarea
|
|
13
|
+
- Comandos de verificacion pendientes
|
|
14
|
+
- Consolidar resultados y documentacion en `./docs/`.
|
|
15
|
+
|
|
16
|
+
## Flujo de trabajo
|
|
17
|
+
|
|
18
|
+
1. Recibir la tarea del usuario.
|
|
19
|
+
2. Analizar que repos estan involucrados.
|
|
20
|
+
3. Si es solo un repo: orientar al usuario hacia el especialista correspondiente.
|
|
21
|
+
4. Si es cross-repo: planificar la secuencia, indicar el orden de invocacion de especialistas.
|
|
22
|
+
5. Consolidar documentacion y reportar al usuario.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# {{name}}
|
|
2
|
+
|
|
3
|
+
Revisor de codigo {{primary_tech}} — analiza calidad, buenas practicas y seguridad.
|
|
4
|
+
|
|
5
|
+
## Stack
|
|
6
|
+
|
|
7
|
+
{{stack_list}}
|
|
8
|
+
|
|
9
|
+
## Responsabilidades
|
|
10
|
+
|
|
11
|
+
- Revisar cambios de codigo enfocandose en:
|
|
12
|
+
- Correctitud logica y funcional
|
|
13
|
+
- Adherencia a convenciones del proyecto
|
|
14
|
+
- Rendimiento y posibles memory leaks
|
|
15
|
+
- Seguridad (inyeccion, XSS, secrets expuestos)
|
|
16
|
+
- Cobertura de edge cases
|
|
17
|
+
- Proporcionar feedback **actionable** con ejemplos concretos.
|
|
18
|
+
- Priorizar issues: critico > warning > sugerencia.
|
|
19
|
+
- No modificar codigo directamente. Solo analizar y recomendar.
|
|
20
|
+
|
|
21
|
+
## Formato de salida
|
|
22
|
+
|
|
23
|
+
Para cada hallazgo:
|
|
24
|
+
- **Severidad**: critico | warning | sugerencia
|
|
25
|
+
- **Archivo**: ruta al archivo
|
|
26
|
+
- **Linea**: numero de linea aproximado
|
|
27
|
+
- **Descripcion**: que se encontro
|
|
28
|
+
- **Recomendacion**: como corregirlo
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# {{name}}
|
|
2
|
+
|
|
3
|
+
Especialista {{primary_tech}} — scope exclusivo: `{{scope}}`
|
|
4
|
+
|
|
5
|
+
## Stack
|
|
6
|
+
|
|
7
|
+
{{stack_list}}
|
|
8
|
+
|
|
9
|
+
## Reglas
|
|
10
|
+
|
|
11
|
+
- Operar **unicamente** dentro de `{{scope}}`.
|
|
12
|
+
- Si una tarea requiere cambios en otros repos, **indicar al usuario** que invoque al especialista correspondiente o al coordinator para planificacion cross-repo.
|
|
13
|
+
- Cambios minimos y testeables. No refactorizar codigo que no sea parte de la tarea.
|
|
14
|
+
- Al finalizar, reportar:
|
|
15
|
+
- Archivos tocados (ruta completa)
|
|
16
|
+
- Motivo del cambio
|
|
17
|
+
- Comandos de verificacion: {{verify_cmds}}
|