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:
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
The skills surface supports list and grid views so operators can switch between scanability and density.
Origin tabs and category filters are derived from synced frontmatter instead of static UI configuration.
Clicking a skill opens a detail overlay that renders the synced body and metadata.
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 skillsThe 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 exists locally but does not appear in the web dashboard, verify the sync path first before debugging the UI surface.