From 635790d66bf9d1dae18d09acee82a53d5ab929c9 Mon Sep 17 00:00:00 2001 From: ericnoam Date: Tue, 31 Mar 2026 20:08:41 +0200 Subject: [PATCH] fix: ensure forge alias commands have correct name in frontmatter When inject_name is enabled (for forge), alias command files must have their own name field in frontmatter, not reuse the primary command's name. This is critical for Forge's command discovery and dispatch system. Changes: - For agents with inject_name, create a deepcopy of frontmatter for each alias and set the name to the alias name - Re-render the command content with the alias-specific frontmatter - Ensures each alias file has the correct name field matching its filename This fixes command discovery issues where forge would try to invoke aliases using the primary command's name. --- src/specify_cli/agents.py | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/specify_cli/agents.py b/src/specify_cli/agents.py index 102274b11..4f574bf61 100644 --- a/src/specify_cli/agents.py +++ b/src/specify_cli/agents.py @@ -539,11 +539,30 @@ class CommandRegistrar: for alias in cmd_info.get("aliases", []): alias_output_name = self._compute_output_name(agent_name, alias, agent_config) - alias_output = output - if agent_config["extension"] == "/SKILL.md": - alias_output = self.render_skill_command( - agent_name, alias_output_name, frontmatter, body, source_id, cmd_file, project_root - ) + + # For agents with inject_name, render with alias-specific frontmatter + if agent_config.get("inject_name"): + alias_frontmatter = deepcopy(frontmatter) + alias_frontmatter["name"] = alias + + if agent_config["extension"] == "/SKILL.md": + alias_output = self.render_skill_command( + agent_name, alias_output_name, alias_frontmatter, body, source_id, cmd_file, project_root + ) + elif agent_config["format"] == "markdown": + alias_output = self.render_markdown_command(alias_frontmatter, body, source_id, context_note) + elif agent_config["format"] == "toml": + alias_output = self.render_toml_command(alias_frontmatter, body, source_id) + else: + raise ValueError(f"Unsupported format: {agent_config['format']}") + else: + # For other agents, reuse the primary output + alias_output = output + if agent_config["extension"] == "/SKILL.md": + alias_output = self.render_skill_command( + agent_name, alias_output_name, frontmatter, body, source_id, cmd_file, project_root + ) + alias_file = commands_dir / f"{alias_output_name}{agent_config['extension']}" alias_file.parent.mkdir(parents=True, exist_ok=True) alias_file.write_text(alias_output, encoding="utf-8")