vtcode-skills

June 17, 2026 · View on GitHub

Skill types, discovery, loading, and validation for VT Code.

Overview

Provides the core skill system including skill manifests, validation, bundling, template rendering, native plugin support, and versioning. Integration-point modules remain in vtcode-core.

Key Modules

ModulePurpose
types.rsCore types: Skill, SkillManifest, SkillContext, SkillScope
manifest.rsSKILL.md parsing, SkillYaml, template generation
authoring.rsSkill authoring, frontmatter parsing, validation
bundle.rsSkill bundling, import/export, index management
templates.rsTemplate engine, traditional/CLI-tool templates
container.rsSkill container management, versioning
container_validation.rsContainer skills compatibility validation
context_manager.rsMemory-efficient skill loading with LRU eviction
validation.rsSkill validation rules and reports
enhanced_validator.rsComprehensive skill validator
native_plugin.rsNative plugin loading via libloading
system.rsSystem skills embedding and installation
versioning.rsSkill version resolution and lockfiles
injection.rsSkill injection into prompts
prompt_integration.rsSkills prompt rendering modes

Skill Lifecycle

  1. Discovery — Skills are discovered from filesystem locations and embedded system skills
  2. Loading — Skills are loaded with LRU eviction for memory efficiency
  3. Validation — Skills are validated against manifest rules and compatibility checks
  4. Injection — Skills are injected into prompts for agent context
  5. Execution — Skills are executed by the skill executor in vtcode-core

Architecture Notes

  • Partial extraction from vtcode-core; vtcode-core's skills/mod.rs re-exports everything from this crate
  • templates/ directory contains traditional and CLI-tool template files
  • src/skills/assets/samples/ contains embedded system skill samples
  • SkillManifest uses serde-saphyr for YAML frontmatter parsing

Dependencies

  • vtcode-commons — filesystem, SHA256, paths
  • vtcode-config — skill configuration, PromptFormat

Coding Conventions

  • Use anyhow::Result for fallible operations
  • Use serde for serialization/deserialization
  • Use tracing for logging
  • Template paths are relative to templates/ directory

See Also