@vdkit/oxlint-plugin-blueprints
v1.0.0
Published
Oxlint plugin for validating VDK blueprint/frontmatter contracts
Maintainers
Readme
@vdk/oxlint-plugin-blueprints
Oxlint JS plugin for validating VDK blueprint/frontmatter contracts in YAML files.
Install
pnpm add -D @vdk/oxlint-plugin-blueprints oxlintUsage
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"jsPlugins": [
{
"name": "vdk",
"specifier": "@vdk/oxlint-plugin-blueprints"
}
],
"rules": {
"vdk/validate-blueprints": [
"error",
{
"targets": ["schemas/v3.0.0/examples"],
"expectedSchemaVersion": "3.0",
"requireKind": true,
"enforceKebabCaseId": true
}
]
}
}Run with plugin import enabled:
oxlint --import-plugin -c .oxlintrc.json "lint/blueprint-lint-trigger.mjs"Auto-fix command
The package also ships a fixer CLI for deterministic frontmatter normalization.
# Dry run
vdk-blueprints-fix --target schemas/v3.0.0/examples
# Write changes
vdk-blueprints-fix --write --target schemas/v3.0.0/examplesWhat it fixes:
schemaVersionmismatch/missing → expected version- missing
kind→ default kind (skill, configurable) - missing/invalid
version→ default semver (1.0.0, configurable) idnormalization to kebab-case
Rule: vdk/validate-blueprints
Checks all YAML files in targets for:
- Frontmatter presence and YAML validity
- Required frontmatter fields (
id,title,description,schemaVersion,kind,platforms) - Required
versionwith semver-compatible format schemaVersionexact matchidkebab-caseidmax length (100)titlemax length (100)descriptionlength bounds (10-500)kindallowed list- non-empty
platformsobject - Duplicate
idcollisions across scanned files
Supported file types are configurable and include yaml, yml, md, and mdx by default.
Options
targets: string[](default:["schemas"])expectedSchemaVersion: string(default:"3.0")requireKind: boolean(default:true)requireVersion: boolean(default:true)enforceKebabCaseId: boolean(default:true)allowedKinds: string[](default: canonical VDK kinds)fileExtensions: string[](default:['yaml', 'yml', 'md', 'mdx'])
Fixer CLI options:
--target <path>(repeatable)--schema-version <value>--default-kind <value>--default-version <value>--ext <extension>(repeatable)--write(without it, runs in dry-run mode)
Publish
pnpm publish --access public