Problem
Skill body prose still names Claude tools directly (notably Task and WebFetch). When skills are installed for non-Claude platforms, these names render literally, instructing the agent to call tools that don't exist on the target platform.
Context
PR #601 introduced the {tool:NAME} placeholder mechanism. The install pipeline rewrites placeholders through a per-platform _tools: mapping (content/subagents/_data/{platform}.yml), with an unmapped name producing a fatal, file-and-line-anchored install error. Subagent body prose was migrated as part of #601; skill body prose was wired through the rewriter but not migrated, on the expectation that a follow-up would do the content sweep. This ticket is that follow-up.
Two distinct cases need handling, and they merit different mechanisms:
- A Claude tool with a direct cross-platform counterpart (e.g.,
Task → Rovo Dev's invoke_subagent) is exactly what the placeholder mechanism is built for.
- A Claude tool with no counterpart on another supported platform (e.g.,
WebFetch on Rovo Dev, where web access goes through MCP or shell tools) is not a name-swap problem. Forcing it through the mapping would require an awkward stand-in.
Proposed solution
Migrate Claude-specific tool names in skill prose using whichever mechanism fits the case:
- Placeholder migration for tools that exist on every supported platform. Extend each platform's
_tools: mapping with the new entries; rewrite the affected prose to use {tool:NAME}.
- Tool-neutral rewording for tools without a cross-platform counterpart. Replace the named tool reference with a description of the operation, matching the style already used by neighboring instructions (which prefer English verbs and specific commands over tool identifiers).
The audit must distinguish references that name a tool as a tool from incidental uses of the same word for unrelated concepts (e.g., a "task" as a unit of work). Apply the same audit boundary used in #601.
Acceptance criteria
Problem
Skill body prose still names Claude tools directly (notably
TaskandWebFetch). When skills are installed for non-Claude platforms, these names render literally, instructing the agent to call tools that don't exist on the target platform.Context
PR #601 introduced the
{tool:NAME}placeholder mechanism. The install pipeline rewrites placeholders through a per-platform_tools:mapping (content/subagents/_data/{platform}.yml), with an unmapped name producing a fatal, file-and-line-anchored install error. Subagent body prose was migrated as part of #601; skill body prose was wired through the rewriter but not migrated, on the expectation that a follow-up would do the content sweep. This ticket is that follow-up.Two distinct cases need handling, and they merit different mechanisms:
Task→ Rovo Dev'sinvoke_subagent) is exactly what the placeholder mechanism is built for.WebFetchon Rovo Dev, where web access goes through MCP or shell tools) is not a name-swap problem. Forcing it through the mapping would require an awkward stand-in.Proposed solution
Migrate Claude-specific tool names in skill prose using whichever mechanism fits the case:
_tools:mapping with the new entries; rewrite the affected prose to use{tool:NAME}.The audit must distinguish references that name a tool as a tool from incidental uses of the same word for unrelated concepts (e.g., a "task" as a unit of work). Apply the same audit boundary used in #601.
Acceptance criteria
_tools:mapping for every supported platform; install does not fail on any platform.