Skip to content

Measure rubric deviation in AI agent skills.

Measures how far a skill has drifted from rubric standards. Each check maps to a drift category — the output tells you where to tighten up.

Terminal window
doraval skill drift <path> [options]
CategoryWhat it looks forPass condition
TriggerActivation phrases in descriptionContains “use when”, “trigger”, or “invoke” (case-insensitive)
StructureOrdered steps or checklists in bodyMatches numbered lists (1.) or bullet lists (-, *)
VoiceImperative languageContains verbs like Create, Add, Run, Install, Configure, Set, Build, Use, Check, Verify, Ensure
ExampleCode blocksContains ``` fenced code blocks
GuardrailExplicit constraintsContains MUST or MUST NOT (case-sensitive, uppercase)
ClarityNo ambiguous languageFree of maybe, possibly, consider, you might want to, perhaps
doraval skill drift — Measuring rubric drift
Path: ./skills/my-skill/
· Trigger Description includes activation phrases
· Structure Has step-by-step instructions
· Voice Uses imperative voice ("Do X" not "You might X")
↗ Example No code blocks found — add examples if the skill involves code
↗ Guardrail No explicit constraints — add MUST / MUST NOT guardrails
· Clarity No ambiguous language found
2/6 rubric areas have drifted.

· means the category is clean. means drift was detected.

FlagShortDescription
--format <type>-ftable (default) or json
--agent <name>-aForce a specific agent adapter
--verbose-vShow detailed diagnostics
--ciMachine-friendly output, non-zero exit on issues
Terminal window
doraval skill drift ./my-skill/ --format json

Returns:

{
"path": "./my-skill/",
"driftCount": 2,
"total": 6,
"drifts": [
{ "drifted": false, "category": "Trigger", "detail": "Description includes activation phrases" },
{ "drifted": true, "category": "Example", "detail": "No code blocks found — add examples if the skill involves code" }
]
}