Skip to content

[DOCS] Document the catalog download trust model and the catalog.json schema #500

Description

@edenreich

Summary

Follow-up to d266380d (infer skills search plus bounding the AVAILABLE SKILLS block). Two gaps in docs/skills.md that the change surfaced.

1. Trust model for on-demand catalog downloads. The doc explains that catalog skills are fetched on activation, but not who may trigger that or what gates it. The actual behaviour (buildActiveSkillInfo, internal/agent/agent_utils.go):

  • A catalog skill downloads the moment a prompt explicitly names it (/rust, or "use the rust skill"). The model cannot trigger this on its own, since catalog entries are listed to it without a path.
  • In chat the install is confirmed by the user first (ChatMessageProcessor.confirmCatalogInstall).
  • Headless (infer agent, piped infer chat, channels, heartbeat) downloads immediately with no prompt, by design: there is nobody to ask.
  • The download is not a domain.Tool, so tools.safety.require_approval and approval_behaviour do not apply. Notably approval_behaviour: block does not prevent it.
  • Under channels the "user" doing the triggering is a remote sender.

2. The catalog.json schema. agent.skills.repository now lets anyone serve skills from their own fork, but the registry contract is written down nowhere: top-level version / release / updated / skills, per-entry name / description / source / vendor / license / tags / categories / homepage, and which of those the CLI actually reads.

Acceptance Criteria

  • The Security section of docs/skills.md states the five trust-model points above, so anyone running a CI or Telegram profile knows what a prompt containing /some-skill can cause.
  • docs/skills.md documents the catalog.json schema, marking which fields the CLI reads today (name and description per entry, release and updated for the search header) and which are ignored.
  • The derived index URL https://raw.githubusercontent.com/<repository>/main/catalog.json is documented as the single source for both the index and the skill bodies.
  • It is stated that the catalog is versioned as a whole, so there is no per-skill version to pin.

Out of scope

Whether the headless path should route through config.ResolveApprovalDelivery (IPC-approved under the channel manager, blocked in CI) is a behaviour change, not a documentation one. File separately if wanted.

Note

agent.skills.discovery.registry_url was removed in bb3d0be4 before it ever shipped on main, so agent.skills.repository is the only knob to document. It only ever redirected the index while the bodies still resolved against repository.

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationreleased

    Type

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions