Skip to content

Rulebook library: Generate project-scope rovodev prompts.yml for skill delivery #747

Description

@williamthorsen

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

  • When rovodev is a targeted platform, sync generates and updates {projectRoot}/.rovodev/prompts.yml listing the rulebook skills it installs.
  • The prompts.yml content generation is shared with install — reused directly, or extracted into a common helper when direct reuse is not possible — with no duplicated rendering logic.
  • Re-running sync with unchanged content does not rewrite prompts.yml (idempotent).
  • Retracting a rulebook skill removes its prompts.yml entry.
  • New and changed behavior in this change is covered by tests.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions