Repo2Skill-Evo: Repository Skills Go Stale in Silence
Organizations: ByteDance · Peking University · Beijing Jiaotong University
Abstract
Large language model (LLM) agents increasingly operate over evolving software repositories, where success depends on repository-specific procedural knowledge: which APIs to call, which scripts to run, and which conventions the current release expects. Agent skills externalize this knowledge into reusable units, and prior work shows that they can improve agent performance. What remains unclear is whether that improvement is durable. The same version specificity that makes a skill useful also makes it fragile: after a release, it may become stale without raising any explicit signal, while continuing to provide obsolete guidance. Externalizing knowledge into a skill can therefore make its decay invisible. We study whether agents can keep this externalized knowledge current. Repo2Skill-Evo casts each release transition as a skill-maintenance task: given a V1 skill set and the official V1-to-V2 patch, an agent must update obsolete skill content while preserving guidance that remains valid. Across 57 real-world repositories and 105 selected release transitions, every evaluated transition invalidates part of the V1 skill set. Yet six frontier agents reach only 29.9%-69.7% avg@3 macro F1 under a patch-grounded removal metric that balances stale-content recall against over-editing precision. Across runs, two opposing errors dominate: incomplete coverage of affected files in the skill set leaves stale content untouched, while overbroad editing is associated with higher recall but lower precision. Repository skills go stale in silence, and even frontier agents cannot reliably maintain them.
Figures & tables
| Group | #repos | baseline | skill-only | source-only | source+skill | skill | source | skill |
|---|---|---|---|---|---|---|---|---|
| All repositories | 10 | 5.88 | 8.68 | 8.64 | 9.01 | +2.80 | +2.76 | +0.37 |
| Low-baseline repositories | 5 | 4.48 | 8.46 | 8.46 | 8.86 | +3.98 | +3.98 | +0.40 |
| High-baseline repositories | 5 | 7.28 | 8.89 | 8.82 | 9.15 | +1.61 | +1.54 | +0.33 |
| avg@3 macro | best@3 macro | |||||
|---|---|---|---|---|---|---|
| Model | R | P | R | P | ||
| Claude-opus-4.6 | 70.4 | 75.7 | 69.7 | 79.3 | 82.2 | 76.1 |
| GLM-5.1 | 64.1 | 72.4 | 64.3 | 78.1 | 80.9 | 73.9 |
| GPT-5.4 | 74.6 | 55.7 | 58.8 | 87.9 | 67.9 | 70.4 |
| Kimi-K2.5 | 40.4 | 71.6 | 47.0 | 55.0 | 84.9 | 60.7 |
| Doubao-Seed2-pro | 31.9 | 73.3 | 39.8 | 44.7 | 85.0 | 53.4 |
| Model | GPT-5.4 judge | Claude-opus-4.6 judge | Invalid |
|---|---|---|---|
| Claude-opus-4.6 | 7.54 | 7.86 | 9 |
| GLM-5.1 | 7.09 | 6.98 | 7 |
| GPT-5.4 | 7.18 | 7.31 | 26 |
| Kimi-K2.5 | 6.49 | 6.24 | 14 |
| Doubao-Seed2-pro | 6.54 | 6.22 | 15 |
| MiniMax-M2.5 | 6.01 | 5.27 | 8 |
| Model | mean file cov. | full file cov. | removal load | off-target | no-removal | budget exh. | turns |
|---|---|---|---|---|---|---|---|
| Claude-opus-4.6 | 0.95 | 75.9 | 1.01 | 24.0 | 0.6 | 1.9 | 25.3 |
| GLM-5.1 | 0.95 | 78.1 | 1.01 | 27.6 | 0.6 | 41.3 | 42.4 |
| GPT-5.4 | 0.93 | 69.2 | 2.84 | 44.3 | 0.0 | 0.0 | 17.8 |
| Kimi-K2.5 | 0.74 | 25.7 | 0.60 | 28.6 | 2.9 | 47.3 | 43.5 |
| Doubao-Seed2-pro | 0.53 | 10.5 | 0.42 | 25.9 | 4.1 | 14.6 | 33.1 |
| MiniMax-M2.5 | 0.51 | 9.5 | 0.30 | 22.7 | 20.0 | 68.6 | 47.0 |
| Baseline | Oracle | Gain | |||||||
|---|---|---|---|---|---|---|---|---|---|
| Model | R | P | R | P | R | P | |||
| Claude-opus-4.6 | 55.4 | 64.4 | 53.6 | 63.5 | 68.2 | 62.3 | +8.1 | +3.8 | +8.7 |
| GLM-5.1 | 46.2 | 65.2 | 48.7 | 54.8 | 66.0 | 55.9 | +8.6 | +0.7 | +7.2 |
| GPT-5.4 | 65.6 | 47.9 | 48.2 | 73.3 | 50.5 | 54.6 | +7.7 | +2.6 | +6.3 |
| Kimi-K2.5 | 14.2 | 50.4 | 19.0 | 31.8 | 61.9 | 36.6 | +17.6 | +11.5 | +17.6 |
| Doubao-Seed2-pro | 11.5 | 58.6 | 16.9 | 30.2 | 68.9 | 37.6 | +18.7 | +10.3 | +20.8 |
| Repository | baseline | skill-only | source-only | source+skill | skill | source | skill |
|---|---|---|---|---|---|---|---|
| agentmemory | 3.43 | 8.57 | 8.83 | 9.07 | +5.13 | +5.40 | +0.23 |
| oh-my-pi | 4.33 | 8.73 | 7.90 | 9.10 | +4.40 | +3.57 | +1.20 |
| harbor | 4.70 | 8.20 | 8.50 | 8.63 | +3.50 | +3.80 | +0.13 |
| deer-flow | 4.73 | 8.47 | 9.07 | 9.17 | +3.73 | +4.33 | +0.10 |
| hermes-agent | 5.20 | 8.33 | 8.00 | 8.33 | +3.13 | +2.80 | +0.33 |
| browser-use | 6.37 | 8.70 | 8.73 | 9.00 | +2.33 | +2.37 | +0.27 |
| Condition | Utility | Mean tokens | Mean iterations |
|---|---|---|---|
| Baseline | 5.88 | 21,057 | 4.4 |
| Skill-only | 8.68 | 51,821 | 3.9 |
| Source-only | 8.64 | 272,620 | 10.8 |
| Source+skill | 9.01 | 237,020 | 9.3 |
| Repository change | Example effect on guidance |
|---|---|
| API or interface change | Referenced functions, classes, modules, or interfaces are removed or renamed |
| Signature or default change | Arguments, defaults, return contracts, or invocation patterns become invalid |
| File or entry-point change | Referenced paths, scripts, modules, or entry points move or disappear |
| Command or configuration change | Flags, commands, configuration keys, or schemas change |
| Behavioral contract change | Previously documented behavior is contradicted by the updated implementation |
| Metric | Definition |
|---|---|
| mean file cov. | Run-level affected-file coverage, reported as the mean across runs. |
| full file cov. | Run-level indicator that every gold-affected skill file is localized, reported as the percentage of runs satisfying the indicator. |
| removal load | Run-level ratio , reported as the mean across runs. |
| off-target | Run-level fraction , defined when and reported as the mean over defined runs. |
| no-removal | Run-level indicator that , reported as the percentage of runs satisfying the indicator. |
| budget exh. | Run-level indicator that run_outcome=max_iterations , corresponding to 50 agent turns without a standalone finish , reported as the percentage of runs satisfying the indicator. |
| Dimension scores (0–2) | Total | Count | |||||
| Model | API | Files | Info | Prompt | NL | Sum | Invalid |
| GPT-5.4 judge | |||||||
| Claude-opus-4.6 | 1.38 | 1.00 | 1.75 | 1.65 | 1.76 | 7.54 | 9 |
| GLM-5.1 | 1.20 | 1.03 | 1.76 | 1.37 | 1.74 | 7.09 | 7 |
| GPT-5.4 | 1.25 | 1.04 | 1.52 | 1.66 | 1.70 | 7.18 | 26 |
| Kimi-K2.5 | 1.06 | 0.92 | 1.74 | 1.20 | 1.57 | 6.49 | 14 |
| Model | Transition-macro | 95% CI (cluster) | Repository-macro |
|---|---|---|---|
| Claude-opus-4.6 | 69.7 | [65.7, 73.8] | 72.7 |
| GLM-5.1 | 64.3 | [60.5, 68.2] | 67.2 |
| GPT-5.4 | 58.8 | [55.1, 62.8] | 62.3 |
| Kimi-K2.5 | 47.0 | [42.8, 51.3] | 49.0 |
| Doubao-Seed2-pro | 39.8 | [35.3, 44.8] | 40.7 |
| MiniMax-M2.5 | 29.9 | [26.0, 34.0] | 31.8 |
| (obsolete skill lines) | Transitions | Share |
|---|---|---|
| 5–19 | 7 | 6.7% |
| 20–49 | 22 | 21.0% |
| 50–99 | 28 | 26.7% |
| 100–199 | 29 | 27.6% |
| 19 | 18.1% | |
| All | 105 | 100% |
| Group | Transition | Gold lines | Mean |
|---|---|---|---|
| Hard | DeepSpeed-0.17.6-0.18.0 | 9 | 5.9 |
| Hard | peft-v0.15.0-v0.16.0 | 29 | 11.5 |
| Hard | agentmemory-0.9.13-0.9.16 | 5 | 12.1 |
| Hard | pydantic-v2.7.1-v2.9.1 | 29 | 18.7 |
| Hard | datasets-3.0.0-4.0.0 | 144 | 21.6 |
| Easy | openhuman-v0.53.35-v0.53.40 | 35 | 88.9 |
Software Engineering Agents
Software Engineering Agents are AI systems that use code, tools, and feedback to perform software development tasks.
See all 347 papersSkill Issue: Lessons from Optimizing Repository SKILLs for Coding Agents
.md files versioned alongside the code. Recent work synthesizes these files automatically, by optimizing the document against a benchmark. A bare repository comes with no benchmark, and the synthetic tasks prior work builds are small enough that a capable agent saturates them with no document at all. We mine harder tasks --- merged pull requests of the repository, reverted at a single frozen base commit; and score a candidate document by whether the same agent does better with it than without it. On three Kotlin repositories, the documents GEPA finds raise this score by pp on average, and the ones SkillOpt finds leave it where it started, pp above the seed. The GEPA gain matches what prior work reports with the same optimizer, and at the dataset size a single repository supplies it cannot be separated from the agent's run-to-run variance; settling that would take more tasks than one repository's history yields. The documents themselves read better than the score: a maintainer of one repository found in them knowledge one only gets by working in the project.