Description
actions/setup/js/extract_inline_sub_agents.cjs writes inline sub-agent blocks (## agent: \name` syntax) to engine-specific directories (.claude/agents/.mdfor theclaudeengine,.codex/agents/.mdforcodex, .gemini/agents/.mdforgemini) using preserveSubAgentFrontmatter()`, which is a literal no-op passthrough:
function preserveSubAgentFrontmatter(content) {
return content;
}
The gh-aw authoring syntax derives an agent's identifier purely from the ## agent: \name`heading — nothing requires (or even documents) an explicitname:key inside the sub-agent's own frontmatter block (see the examples inpkg/parser/sub_agent_extractor.go's doc comment, which show frontmatter with only model:/description:, no name:). But Claude Code's own custom-subagent spec requires a name:field in.claude/agents/*.mdfrontmatter for the file to register as a usable subagent type — so any workflow author who follows gh-aw's own documented syntax (frontmatter withoutname:) produces a .claude/agents/.md` file that Claude Code silently fails to register.
This is not hypothetical: .github/workflows/claude-code-user-docs-review.md defines ## agent: \doc-reader`and## agent: `engine-example-counter`with frontmatter containing onlydescription:/model:(noname:). Its own generated report (discussion #64769, and prior runs #64716/#64570) states this has failed to register as a custom agent type for 17+ consecutive days, forcing a general-purposefallback and amissing_tool report each run. The current DeepReport workflow (.github/workflows/deep-report.md) uses the identical pattern for its issues-analyst sub-agent (model: small, description:, no name:`), so it is likely silently falling back the same way.
Expected Impact
A single fix in preserveSubAgentFrontmatter (inject/ensure a name: <name> key, derived from the block's own marker, into the frontmatter before writing) would make every claude/codex/gemini-engine workflow that uses the inline ## agent: syntax actually register its sub-agents correctly — fixing a chronic, repeating failure across at least two known workflows without requiring each workflow author to manually add a redundant name: field.
Suggested Agent
GitHub Copilot coding agent (Go/JS compiler fix: actions/setup/js/extract_inline_sub_agents.cjs, plus matching unit tests in extract_inline_sub_agents.test.cjs if present).
Estimated Effort
Quick (< 1 hour)
Data Source
DeepReport Intelligence Briefing — 2026-10-01, root-caused by direct read of actions/setup/js/extract_inline_sub_agents.cjs (preserveSubAgentFrontmatter) after Claude Code User Documentation Review #64769 reported its 17th consecutive day of the name: frontmatter registration failure for .claude/agents/doc-reader.md and .claude/agents/engine-example-counter.md.
Generated by 🔬 Deep Report · claude · agent · 302 AIC · ⌖ 15.3 AIC · ⊞ 7.3K · ◷
Description
actions/setup/js/extract_inline_sub_agents.cjswrites inline sub-agent blocks (## agent: \name`syntax) to engine-specific directories (.claude/agents/.mdfor theclaudeengine,.codex/agents/.mdforcodex,.gemini/agents/.mdforgemini) usingpreserveSubAgentFrontmatter()`, which is a literal no-op passthrough:The gh-aw authoring syntax derives an agent's identifier purely from the
## agent: \name`heading — nothing requires (or even documents) an explicitname:key inside the sub-agent's own frontmatter block (see the examples inpkg/parser/sub_agent_extractor.go's doc comment, which show frontmatter with onlymodel:/description:, noname:). But Claude Code's own custom-subagent spec requires aname:field in.claude/agents/*.mdfrontmatter for the file to register as a usable subagent type — so any workflow author who follows gh-aw's own documented syntax (frontmatter withoutname:) produces a.claude/agents/.md` file that Claude Code silently fails to register.This is not hypothetical:
.github/workflows/claude-code-user-docs-review.mddefines## agent: \doc-reader`and## agent: `engine-example-counter`with frontmatter containing onlydescription:/model:(noname:). Its own generated report (discussion #64769, and prior runs #64716/#64570) states this has failed to register as a custom agent type for 17+ consecutive days, forcing ageneral-purposefallback and amissing_toolreport each run. The current DeepReport workflow (.github/workflows/deep-report.md) uses the identical pattern for itsissues-analystsub-agent (model: small,description:, noname:`), so it is likely silently falling back the same way.Expected Impact
A single fix in
preserveSubAgentFrontmatter(inject/ensure aname: <name>key, derived from the block's own marker, into the frontmatter before writing) would make everyclaude/codex/gemini-engine workflow that uses the inline## agent:syntax actually register its sub-agents correctly — fixing a chronic, repeating failure across at least two known workflows without requiring each workflow author to manually add a redundantname:field.Suggested Agent
GitHub Copilot coding agent (Go/JS compiler fix:
actions/setup/js/extract_inline_sub_agents.cjs, plus matching unit tests inextract_inline_sub_agents.test.cjsif present).Estimated Effort
Quick (< 1 hour)
Data Source
DeepReport Intelligence Briefing — 2026-10-01, root-caused by direct read of
actions/setup/js/extract_inline_sub_agents.cjs(preserveSubAgentFrontmatter) after Claude Code User Documentation Review #64769 reported its 17th consecutive day of thename:frontmatter registration failure for.claude/agents/doc-reader.mdand.claude/agents/engine-example-counter.md.