• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stacklok / toolhive / 21825315201
62%

Build:
DEFAULT BRANCH: main
Ran 09 Feb 2026 12:43PM UTC
Jobs 1
Files 512
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

09 Feb 2026 12:35PM UTC coverage: 61.201% (+0.2%) from 61.045%
21825315201

push

github

web-flow
Add SKILL.md parser and skill directory validator (#3702)

* Add SKILL.md parser and skill directory validator

Implement SKILL.md frontmatter parsing (YAML extraction) and skill
directory validation for the skills lifecycle management feature.

Parser:
- Extract YAML frontmatter between --- delimiters
- Parse name, description, version, allowed-tools, license,
  compatibility, and metadata fields
- Support allowed-tools as space-delimited, comma-delimited,
  or YAML array (StringOrSlice custom unmarshaler)
- Parse skillet.requires from metadata as OCI dependencies
- Enforce 64KB frontmatter size limit and 100 dependency limit

Validator:
- Validate SKILL.md existence in skill directory
- Validate name matches directory name
- Validate name regex (2-64 chars, lowercase alphanumeric + hyphens,
  no consecutive hyphens)
- Enforce required fields (name, description)
- Enforce field constraints (description <= 1024 chars,
  compatibility <= 500 chars)
- Detect symlinks and path traversal patterns
- Warn on large SKILL.md (> 500 lines)

Closes #3646

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Regenerate swagger docs for ValidationResult.Warnings

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Address PR review feedback

- Add early size-limited search for closing delimiter to avoid scanning
  arbitrarily large inputs (defense-in-depth)
- Document comma-over-space delimiter precedence in StringOrSlice
- Document metadata map[string]string limitation for extension fields
- Combine checkSymlinks and checkPathTraversal into single WalkDir call
- Switch from filepath.Walk to filepath.WalkDir for efficiency

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Promote requires to top-level frontmatter field

Move dependency declarations from metadata to a top-level
toolhive.requires frontmatter field using StringOrSlice. This
supports both YAML arrays and newline-delimited strings, consiste... (continued)

193 of 207 new or added lines in 3 files covered. (93.24%)

41969 of 68576 relevant lines covered (61.2%)

78.47 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
5
84.38
pkg/skills/types.go
9
91.74
pkg/skills/validator.go
Jobs
ID Job ID Ran Files Coverage
1 21825315201.1 09 Feb 2026 12:43PM UTC 512
61.2
GitHub Action Run
Source Files on build 21825315201
  • Tree
  • List 512
  • Changed 7
  • Source Changed 1
  • Coverage Changed 7
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #21825315201
  • cc306eaa on github
  • Prev Build on main (#21823809347)
  • Next Build on main (#21827497925)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc