* Enforce description size limits (per-skill 1024, per-plugin 15K)
Add infrastructure to reject skills with oversized descriptions, per issue #222:
- SkillProfiler: check description length, flag DescriptionTooLong
- ValidateCommand: block oversized descriptions (survives --verdict-warn-only)
- New eng/validate-descriptions.ps1: validates per-skill and per-plugin aggregate limits
- New CI workflow: runs validation on PRs touching plugins/
- build.ps1: adds size checks to local build validation
- Unit tests for all new SkillProfiler behavior
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Update --verdict-warn-only help text to mention description_too_long
Address review feedback: the option description now lists description_too_long
alongside execution errors and --require-evals as conditions that remain
fatal even when --verdict-warn-only is enabled.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add agentskills.io spec conformance checks to SkillProfiler
Validate name rules (max 64 chars, lowercase+hyphens, no edge/consecutive
hyphens, must match directory), compatibility field max 500 chars, body
max 500 lines, and file reference depth.
Scan of existing skills found 2 violations:
- dotnet-msbuild/msbuild-antipatterns: 582 lines (max 500)
- dotnet-msbuild/directory-build-organization: cross-skill ref 3 levels deep
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address review feedback on spec conformance checks
- Fix MakeSkill SkillMdPath to derive from resolved path (SkillProfileTests.cs)
- Fix RepoRoot in build.ps1 to be actual repo root (was agentic-workflows/)
- Fix body line count off-by-one: trim trailing newlines before splitting
- Fix file ref depth: normalize paths, handle .. traversals, strip #anchor,
compute depth from directory segments only
- Add tests for parent traversal, anchor fragments, ./ normalization,
and trailing newline body count
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Consolidate description validation into skill-validator C#
Move the per-plugin aggregate description limit (15K chars) from the
standalone PowerShell script into ValidateCommand, where it runs after
skill discovery. This eliminates the separate validate-descriptions.ps1,
its CI workflow, its PowerShell tests, and the delegation from build.ps1.
Also rename FailureKind from "description_too_long" to the generic
"spec_conformance_failure" so future spec checks reuse the same kind.
Deleted:
- eng/validate-descriptions.ps1
- eng/tests/validate-descriptions.tests.ps1
- .github/workflows/validate-descriptions.yml
Added:
- ValidateCommand.CheckAggregateDescriptionLimits()
- ValidateCommand.DerivePluginName()
- 6 C# tests for aggregate limit + DerivePluginName
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Upgrade body-lines and file-ref-depth from warnings to blocking errors
Now that #247 has merged and fixed the two existing violations
(msbuild-antipatterns 582 lines, directory-build-organization cross-ref),
these spec conformance checks can be blocking.
Also replaces the DescriptionTooLong bool with a general Errors list on
SkillProfile, so all spec conformance violations (description length,
body lines, file ref depth) flow through the same mechanism.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Revert unrelated lock file changes
The lock file diffs were side effects of running build.ps1 to verify
the validation changes — they picked up upstream content changes
unrelated to this PR.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>