@tacuchi/agent-factory 0.2.0 → 0.3.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tacuchi/agent-factory",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "CLI to create AI agents for Claude Code, Codex, Gemini CLI and more",
5
5
  "bin": {
6
6
  "agent-factory": "bin/agent-factory.js"
@@ -25,9 +25,14 @@ async function runCreate(options = {}) {
25
25
  stackResult = await detect(scope);
26
26
  }
27
27
 
28
+ const techLabel = stackResult.framework
29
+ ? `${stackResult.framework} (${stackResult.primaryTech})`
30
+ : stackResult.primaryTech;
31
+
28
32
  const templateData = {
29
33
  name,
30
34
  primary_tech: stackResult.primaryTech,
35
+ tech_label: techLabel,
31
36
  framework: stackResult.framework,
32
37
  scope: scope || '.',
33
38
  stack_list: stackResult.stackParts.length > 0
@@ -38,8 +43,6 @@ async function runCreate(options = {}) {
38
43
  specialist_list: formatSpecialistList(specialists),
39
44
  N: repoCount ? String(repoCount) : '',
40
45
  repos_word: repoCount === 1 ? 'repositorio' : 'repositorios',
41
- skills_section: '',
42
- mcp_section: '',
43
46
  };
44
47
 
45
48
  const templateFile = `${role}.md.tmpl`;
@@ -37,7 +37,12 @@ function buildSkillsFormat(name, description, body) {
37
37
  return `---\nname: ${name}\ndescription: "${description}"\n---\n\n${body}\n`;
38
38
  }
39
39
 
40
- async function writeAgent({ name, role, model, tools, body, outputDir, target, description: customDesc }) {
40
+ function ensureAgentSuffix(name) {
41
+ return name.endsWith('-agent') ? name : `${name}-agent`;
42
+ }
43
+
44
+ async function writeAgent({ name: rawName, role, model, tools, body, outputDir, target, description: customDesc }) {
45
+ const name = ensureAgentSuffix(rawName);
41
46
  const results = { claude: null, codex: null, skills: null };
42
47
  const description = customDesc || body.split('\n').find((l) => l.trim() && !l.startsWith('#'))?.trim() || name;
43
48
 
@@ -73,4 +78,4 @@ async function writeAgent({ name, role, model, tools, body, outputDir, target, d
73
78
  return results;
74
79
  }
75
80
 
76
- module.exports = { writeAgent, buildClaudeFormat, buildCodexFormat, buildSkillsFormat, buildDescription, TOOLS_BY_ROLE };
81
+ module.exports = { writeAgent, buildClaudeFormat, buildCodexFormat, buildSkillsFormat, buildDescription, ensureAgentSuffix, TOOLS_BY_ROLE };
@@ -32,5 +32,3 @@ Cada especialista opera exclusivamente dentro de su repo asignado. Para ejecutar
32
32
  ## Agentes globales (gestionados por el usuario)
33
33
 
34
34
  Si el usuario ha creado agentes globales/personales en el workspace (por ejemplo, agentes transversales de arquitectura, estilo o revision de codigo), puedes invocarlos para obtener analisis cross-repo. Estos agentes son gestionados directamente por el usuario y pueden no estar presentes en todos los workspaces.
35
- {{skills_section}}
36
- {{mcp_section}}
@@ -1,6 +1,6 @@
1
1
  # {{name}}
2
2
 
3
- Especialista {{primary_tech}} — scope exclusivo: `{{scope}}`
3
+ Especialista {{tech_label}} — scope exclusivo: `{{scope}}`
4
4
 
5
5
  ## Stack
6
6