☰
VSuite

@vsuite/catalog

The static catalog of agents, skills, capabilities, targets, MCP servers, and stack technologies that vsuite can generate, plus resolution over that catalog and the template context schema. Non-goals: rendering artifact bodies (@vsuite/templates), target file formats (@vsuite/targets), and reading vsuite.json (@vsuite/config).

This is a private, source-only workspace package (exports → ./src/index.ts). It is bundled into the @krizic/vsuite CLI and is not published to npm. Workspace consumers depend on it with "@vsuite/catalog": "workspace:*".

Public API

Export Kind Signature Description
targetIds const readonly ["opencode", "claude-code", "github-copilot"] Supported targets.
TargetId type (typeof targetIds)[number] Target identifier.
agentIds const readonly AgentId[] (19 ids) All catalog agent ids.
AgentId type (typeof agentIds)[number] Agent identifier.
skillIds const readonly SkillId[] (36 ids) All built-in skill ids: coreSkillIds (10) plus conventionSkillIds (26).
SkillId type (typeof skillIds)[number] Built-in skill identifier.
capabilityIds const readonly ["agent-metrics", "agent-memory", "brainstorming", "context7", "playwright", "prisma"] Optional capabilities.
CapabilityId type (typeof capabilityIds)[number] Capability identifier.
neutralTools const readonly ["read", "edit", "search", "execute", "web", "browser", "todo", "agent"] The tool vocabulary of vsuite.json agents.<id>.tools.
agentTools const readonly AgentTool[] Tool names catalog agent definitions use (the neutral vocabulary plus Copilot-style MCP tool names).
AgentTool type (typeof agentTools)[number] Tool name.
preferenceKeys const readonly ["frontend.framework", "frontend.designLibrary", "tracking.provider", "documentation.location"] Preference keys an artifact can require.
PreferenceKey type (typeof preferenceKeys)[number] Preference key.
ArtifactDefinition type interface ArtifactDefinition<Id extends string> Common fields: id, description, optional label and whenToUse, defaultSelected, optional, targets.
AgentDefinition type interface extends ArtifactDefinition<AgentId> Agent metadata: required skills/capabilities, preferences, tools, handoffs.
SkillDefinition type interface extends ArtifactDefinition<SkillId> Skill metadata: required skills/capabilities, recommended agents, optional tool restriction.
CapabilityDefinition type interface extends ArtifactDefinition<CapabilityId> Capability metadata.
HandoffDefinition type { label: string; agent: AgentId; prompt: string } Suggested next step to another agent.
RenderableSkill type { id; description; content; kind: "built-in" | "project"; tools? } A skill ready to be written to a target.
ResolvedSelection type { agents: AgentId[]; skills: SkillId[]; projectSkills: string[]; capabilities: CapabilityId[] } Output of resolveSelection, each list sorted.
agents const Record<AgentId, AgentDefinition> Agent catalog.
skills const Record<SkillId, SkillDefinition> Skill catalog.
capabilities const Record<CapabilityId, CapabilityDefinition> Capability catalog.
defaultAgentIds const AgentId[] Agents with defaultSelected.
defaultSkillIds const SkillId[] Skills with defaultSelected.
defaultCapabilityIds const CapabilityId[] Capabilities with defaultSelected.
targetDirectories const Record<TargetId, string> .opencode, .claude, .github.
isKnownAgent function (id: string) => id is AgentId Catalog membership check.
isKnownSkill function (id: string) => id is SkillId Catalog membership check; unknown ids are treated as project skills.
isKnownCapability function (id: string) => id is CapabilityId Catalog membership check.
resolveSelection function (agentIds: readonly AgentId[], skillIds: readonly string[], capabilityIds?: readonly CapabilityId[]) => ResolvedSelection Expands required skills and capabilities transitively.
supportsTargets function (selection: ResolvedSelection, selectedTargets: readonly TargetId[]) => boolean True if every selected agent, skill, and capability supports every target.
mcpServerIds, mcpServers, vsuiteMcpServer, vsuitePaths, agentMemoryPaths consts MCP server catalog, the built-in vsuite server, and the project-local .vsuite/ paths.
stackTechnologies, stackCategories, resolveStack, stackOwnership, findStackTechnology consts, functions Stack registry and the ownership rules that map technologies to agents, skills, and MCP servers.
templateContextSchema, SUPPORTED_CONTEXT_VERSIONS consts Template context contract (pnpm --filter @vsuite/catalog run schema:context writes schema/template-context.v2.json; docs/packs/context-reference.md is generated from it by scripts/gen-context-reference.mjs).

src/index.ts exports further helpers (isNeutralTool, isKnownMcpServer, declarableCapabilityIds, preference choices, and others); it is the authoritative list.

Dependencies

  • Workspace: none.
  • Third-party: zod.
  • Used by: every other workspace package.

Diagrams

flowchart TD
  IN["agentIds, skillIds, capabilityIds"] --> SPLIT{"skill id known to catalog?"}
  SPLIT -- yes --> SEL["selectedSkills + pending queue"]
  SPLIT -- no --> PROJ["projectSkills"]
  IN --> AG["for each agent: add requiredSkills to selectedSkills and queue; add requiredCapabilities"]
  AG --> Q{"pending queue empty?"}
  SEL --> Q
  Q -- no --> POP["pop skill: add its requiredSkills (queue new ones) and requiredCapabilities"]
  POP --> Q
  Q -- yes --> OUT["ResolvedSelection: agents, skills, projectSkills, capabilities, each sorted"]
  PROJ --> OUT

Usage

import { resolveSelection, supportsTargets } from "@vsuite/catalog";
 
const selection = resolveSelection(["orchestrator"], ["my-project-skill"], ["context7"]);
supportsTargets(selection, ["opencode", "claude-code"]);

Testing

pnpm vitest run --project @vsuite/catalog