skillfed

Checking what a value is for, not just whether it changed, cuts drift false alarms from 40% to zero

Notes on Skill Drift Is Contract Violation: Proactive Maintenance for LLM Agent Skill Libraries (arXiv:2605.10990) — Linfeng Fan, Yuan Tian, Ziwei Li, Zhiwu Lu · May 2026

Note published · written by SkillFed’s research pipeline from the paper above · how these notes are made

AI-assisted notes · reviewed by SkillFed Skill evolution Bridge: evolution × benchmarks

Agent skill libraries decay quietly. An API migrates, a pinned dependency bumps a version, and the skill built against the old one keeps executing — misfiring in small ways until something downstream finally breaks. The real problem is granularity, not coverage: existing monitors flag whether an external value changed at all, not whether the skill actually depends on it. A version string sitting in a comment and the same string pinned inside a dependency spec look identical to a value-level monitor, but only one of them is an operational obligation. SkillGuard reframes this as skill drift-as-contract violation: it parses a skill document into environment contracts — typed records of which external values the skill's execution actually relies on — labels each operational or incidental, and checks only the operational ones against known drift events or live registry and URL evidence. Failed contracts double as repair instructions, pointing an LLM at exactly which assumption went stale rather than asking it to guess. The benchmark behind these numbers, DriftBench, releases 880 pairs: 174 constructed drift cases, 107 real drifts pulled straight from PyPI, npm, GitHub Actions, and Docker Hub changelogs, and 599 no-drift and hard-negative pairs built specifically to catch a monitor that over-fires on incidental change.

Value-level monitoring is the failure mode the paper measures directly: a contract-free CI probe that checks every extracted URL, version, and config value produces a 40% false-positive rate. Filtering by role eliminates it — SkillGuard raises zero false alarms across all 599 no-drift and hard-negative cases (Wilson 95% CI [0, 0.6]%), including 250 semantic hard negatives where the actual value changes (an alias URL, a non-breaking version bump) but the operational contract does not. On drift it's supposed to catch, the strongest backbone (Qwen3.6-Plus) hits 100% precision and 76% recall against known drift specs. In a pre-registered scan of 49 real, currently deployed skills, it surfaces live drift at 86% precision and 55% recall — flagging 14 skills, 12 of them genuine (the other 2 "false positives" were later adjudicated as real drift too). The repair payoff is the sharpest number here: telling a model only that a skill is stale fixes it in one round 10% of the time; handing it the specific violated contract instead gets that to 78%, at roughly half the token cost of a three-round self-refine loop that reaches a comparable 80%.

Key numbers

Contract-free CI probe false-positive rate40%
SkillGuard false alarms over 599 no-drift/hard-negative cases0% (Wilson 95% CI [0, 0.6%])
Known-drift precision / recall, best backbone100% / 76%
Live discovery precision / recall, 49 real skills86% / 55%
One-round repair success, no localization → contract-guided10% → 78%

Skills related to this research

Related notes

References

  1. Fan, Tian, Li & Lu, "Skill Drift Is Contract Violation: Proactive Maintenance for LLM Agent Skill Libraries" (arXiv:2605.10990, 2026)
  2. Han et al., "SWE-Skills-Bench: Do Agent Skills Actually Help in Real-World Software Engineering?" (arXiv:2603.15401, 2026)
  3. Madaan et al., "Self-Refine: Iterative Refinement with Self-Feedback" (NeurIPS 2023)
  4. Fruntke & Krinke, "Automatically Fixing Dependency Breaking Changes" (Proc. ACM on Software Engineering, FSE 2025)