Product

Skills

Built-in and custom skill definitions, sync flow, and dashboard browsing

Source of truth

The dashboard is a browser for skill definitions. It is not the canonical authoring surface for SKILL.md bodies.

Skills are reusable AI workflows that the dashboard can browse and that operators can invoke through compose or web dispatch.

Skill origins

The UI distinguishes between two synced origins:

built_incustom

That origin comes from the synced skill definition, not from hard-coded UI lists.

Source: apps/app/src/app/skills/page.tsx

Current dashboard behavior

Browse

The skills surface supports list and grid views so operators can switch between scanability and density.

Filter

Origin tabs and category filters are derived from synced frontmatter instead of static UI configuration.

Inspect

Clicking a skill opens a detail overlay that renders the synced body and metadata.

Invoke

The page keeps a compose entrypoint nearby so browsing and invocation feel like one workflow.

Relevant files:

  • apps/app/src/app/skills/page.tsx
  • apps/app/src/components/skill-overlay.tsx

Sync flow

The dashboard is not the source of truth for skill bodies. Local SKILL.md files are read and synced into Convex.

agents sync skills

The sync command:

  • reads local skill definitions
  • derives descriptions and frontmatter
  • upserts them into Convex

Source files:

  • packages/cli/src/cli/commands/sync/skills.ts
  • packages/backend/convex/sync/skills.ts
  • packages/backend/convex/agentSystem/skills.ts

Important metadata

Skill frontmatter currently supports fields such as:

  • triggers
  • category
  • version
  • outputMode
  • emoji

That metadata powers filters, grouping, and display hints in the dashboard.

If a skill is missing

If a skill exists locally but does not appear in the web dashboard, verify the sync path first before debugging the UI surface.