Parent: #576 · Depends on: #732 (S2 skill delivery)
Problem
Rovo Dev discovers skills through a generated prompts.yml index, not by walking directories. S2 (#732) writes thin-wrapper rulebook skills into the project-local .rovodev/skills/ directory, but sync produces no project-scope prompts.yml, so those skills are not discoverable by Rovo Dev. The files are written but inert.
Context
install already generates a home-scope prompts.yml via generatePromptsYml in packages/agents/src/commands/install.ts. That function is coupled to install's manifest and drift machinery (ManifestEntry, drift detection, install options) and writes to the platform home. sync needs the same index built from the project-local .rovodev/skills/ directory and written to {projectRoot}/.rovodev/prompts.yml.
Proposed solution
Reuse the existing prompts.yml generation. If the current generatePromptsYml cannot be reused directly because it is coupled to install's manifest/drift flow, extract its core — scan a skills directory for user-invocable skills and render the prompts.yml content — into a shared helper that both install and sync call, leaving no duplicated rendering logic. sync then writes and updates {projectRoot}/.rovodev/prompts.yml whenever rovodev is a targeted platform, idempotently, keeping entries in step as rulebook skills are added or retracted.
A design decision for this ticket: whether sync owns the entire project-scope prompts.yml or merges its rulebook-skill entries with any hand-authored ones, mirroring the marker-based ownership used for the skill files themselves.
Acceptance criteria
Must have
Parent: #576 · Depends on: #732 (S2 skill delivery)
Problem
Rovo Dev discovers skills through a generated
prompts.ymlindex, not by walking directories. S2 (#732) writes thin-wrapper rulebook skills into the project-local.rovodev/skills/directory, butsyncproduces no project-scopeprompts.yml, so those skills are not discoverable by Rovo Dev. The files are written but inert.Context
installalready generates a home-scopeprompts.ymlviageneratePromptsYmlinpackages/agents/src/commands/install.ts. That function is coupled to install's manifest and drift machinery (ManifestEntry, drift detection, install options) and writes to the platform home.syncneeds the same index built from the project-local.rovodev/skills/directory and written to{projectRoot}/.rovodev/prompts.yml.Proposed solution
Reuse the existing prompts.yml generation. If the current
generatePromptsYmlcannot be reused directly because it is coupled to install's manifest/drift flow, extract its core — scan a skills directory for user-invocable skills and render theprompts.ymlcontent — into a shared helper that bothinstallandsynccall, leaving no duplicated rendering logic.syncthen writes and updates{projectRoot}/.rovodev/prompts.ymlwhenever rovodev is a targeted platform, idempotently, keeping entries in step as rulebook skills are added or retracted.A design decision for this ticket: whether
syncowns the entire project-scopeprompts.ymlor merges its rulebook-skill entries with any hand-authored ones, mirroring the marker-based ownership used for the skill files themselves.Acceptance criteria
Must have
syncgenerates and updates{projectRoot}/.rovodev/prompts.ymllisting the rulebook skills it installs.prompts.ymlcontent generation is shared withinstall— reused directly, or extracted into a common helper when direct reuse is not possible — with no duplicated rendering logic.prompts.yml(idempotent).prompts.ymlentry.