@dcentralab/skill-md
v0.1.1
Published
Shared helpers for SKILL.md — frontmatter parse, env-var collection, slug + semver normalization
Readme
@dcentralab/skill-md
Shared helpers for parsing SKILL.md YAML frontmatter in the Traia skill ecosystem.
Single source of truth for:
parseFrontmatter(content)— extract the---YAML block from a SKILL.md string; returns the parsed object ornullon missing/invalid frontmatter (never throws).collectEnvKeys(node)— recursively walk the frontmatter tree and collect keys from everyenv:map at any depth. Used to derive the list of required env-var names a skill declares.toSemver(version)— normalize loose version strings to three-segment semver ("1.2"→"1.2.0").normalizeSlug(input)— URL-safe slug: lowercase, collapse whitespace/underscores, strip punctuation.
Install
pnpm add @dcentralab/skill-mdUsage
import { collectEnvKeys, parseFrontmatter, toSemver, normalizeSlug } from "@dcentralab/skill-md";
const fm = parseFrontmatter(skillMdContent);
if (!fm) throw new Error("SKILL.md must have YAML frontmatter");
const envVars = collectEnvKeys(fm);
const version = toSemver(String(fm.version ?? "0"));
const slug = normalizeSlug(String(fm.name ?? ""));Scope
Deliberately minimal — only pure helpers. Callers own:
- file I/O (
readFile, upload handlers) - domain validation (required fields, slug/name matching)
- UI-layer filtering (e.g., dropping unknown categories)
These stay next to the consumer because their shape differs between backend, CLI, and browser.
