alphaFeedback

WorksComputer Science

One Skill Takes Over: Clashing Agent Skills and a One-File Fix

AI contributions
Not recorded for this paper
View details
Ancillary data
1 code link
View

Abstract

Agent Skills are instruction files that tell a coding agent how to do one job. Users install skills from many authors, so two skills for the same job can be active at the same time. We ask what a model does when both skill files are in its context: does it combine their compatible rules, or follow one skill and drop the other? We build SkillClash, 16 pairs of same-job skills in which code checks every rule and a reference output shows the best result that can be reached. On seven models from five families, from 4B open models to Qwen3-235B and GPT-4.1, a skill's rules are followed 93 to 99% of the time when it is loaded alone and 61 to 62% when a same-job skill is loaded next to it. Most outputs show takeover: every rule that only one skill asks for is followed, and every rule that only the other skill asks for is dropped. The worked examples inside the skills drive this. When each skill file instead ends with one example that follows both skills, takeover falls to 1 to 15% on the six models we tested. Telling the model which skill has priority does not bring the dropped skill back, and telling it to apply both skills brings the dropped skill back only on the two strong models and leaves the interacting rules broken. One merged skill file written by the strongest model we used, Claude Opus 5.5, lets all seven models follow 96 to 99% of the achievable rules. Most of its gain over a plain list of both skills' rules comes from its one worked example, and such an example helps only when it is correct. Code and data: https://github.com/prazmara/skillclash

Introduction

Agent Skills give coding agents reusable instructions for jobs such as writing commit messages, reviewing code or documenting an API [4]. A skill is a small folder with a SKILL.md file that holds a short description and free-form instructions, and the agent loads it when a matching task comes in [1]. In practice the instructions are a list of rules, often followed by a worked example. Skills come from many authors and are installed side by side, and nothing stops two skills for the same job from being active together. A developer may have a personal commit-message skill and a team one, or a vendor’s code-review skill and a house one. Some of their rules conflict, but most can be followed together. When both skills are available, does the model combine their compatible rules, or does it follow one skill at the expense of the other?

Yan et al. [22] measured this situation in practice. They installed pairs of public same-job skills in Claude Code and found that the second skill took about one run in five away from the first. The first skill’s own requirements were met less often, while the tasks were still completed. Their fix is a hook that blocks the competing skill. In their harness the agent opens skill files on demand, most of the loss comes from runs that never open the first skill, and only the first skill is scored. This leaves two questions open: what does a model do when both skill files are actually in its context, and can a fix keep the rules of both skills instead of blocking one?

Preprint.

Figure 1 shows what we find on one case. With both skills loaded, the model writes skill B’s format in full and ignores skill A, including the rules of A that conflict with nothing. We call this pattern takeover. With the two skills merged into one file, the same model follows the rules of both. Yan et al. [22] already report that one skill can take the place of another. We measure takeover with both files in the context and both skills scored, so the choice of which file to open plays no role.

Comparison of two skills and a merged meta-skill

Figure 1. A case from SkillClash. Top: two skills for the same job, with each rule shortened and labeled by its kind (§ 3). Bottom: outputs of Qwen3-4B for the request “Write the commit message: add pagination to the audit log API. Ticket AUD-77. Author: Omar Haddad. Component: audit-api.” Lines are shaded by the skill whose rule they follow (blue for A, orange for B, gray for the shared rule). Left: with both skills loaded, the model follows all six rules of B and only the shared rule of A, in either load order. Right: with one meta-skill written by Claude Opus 5.5 (§ 5), with A as the primary, the output follows all ten achievable rules.

Contributions.

  1. A benchmark. SkillClash has 16 pairs of same-job skills. Code checks every rule, and for every pair a reference output shows that the best achievable result can be reached. A co-author who had not seen our labels found every contradictory and shared rule pair we planted (§ 3).

  1. A diagnosis that holds across models. On seven models from five families, from 4B open models to GPT-4.1, a same-job skill cuts the share of a skill’s rules that are followed by about a third, while an unrelated skill changes nothing. In most outputs one skill’s own rules are all followed and the other’s are all dropped. The worked examples inside the skills drive most of this. When only one skill keeps its example, that skill wins most takeovers, and when each file ends with an example that follows both skills, takeover falls to 1 to 15%, on the small and the strong models alike (§ 4).

  1. What brings the rules back. A priority instruction does not, on any model. An “apply both” instruction does on the two strong models, but the rules that interact stay broken. One merged file, a meta-skill, written by Claude Opus 5.5 works on all seven models. Its worked example, which follows both skills, accounts for most of its gain over a plain list of both skills’ rules, and it helps only when it is correct. A step-by-step merge that labels rule pairs is only as good as its labels, so who writes the merge matters more than how (§ 5).

  1. A look inside. One direction in the activations of three small models flips which skill wins in up to half of the takeovers, but steering along it does not make the models follow both skills (§ 6).

Related work

Agent Skills and how they fail. Curated skills raise task pass rates, but tasks that use four or more skills gain less, and conflicting guidance has been suggested as a cause [13]. On real software engineering tasks, most public skills give little or no gain [10]. A single loaded skill can make an agent leave out or wrongly fill required parts of a task [8]. In a large skill library, most of the damage comes from picking a wrong skill or no skill [17]. The closest work is Yan et al. [22], which studies conflicts between co-installed same-job skills and measures, requirement by requirement, what the installed skill loses. Our study differs in three ways: both skill files are in the context, both skills are scored against a known best output, and the fixes we test keep both skills.

Conflicting instructions. The instruction hierarchy trains a model to follow the more privileged of two conflicting instructions [19], yet models often do not enforce a stated priority, even between simple formatting rules [9]. Our priority instruction fails in the same way. Patterns shown earlier in a conversation can override an explicit instruction [7], and in our setting the worked example inside each skill plays this role. These works study one instruction against another. We study two whole skill files of equal rank, where most of what is lost conflicts with nothing.

Merging and improving skills. SkillOps merges skills whose bodies are identical [14]. SkillSmith estimates from task scores whether two retrieved skills help or hurt each other, and its skills do different jobs [20]. SkillComposer rewrites two similar skills into one more general skill and judges the result by task pass rate [24]. Closest to our fix, SkillFusion labels pairs of constraints in co-loaded skills as hard conflicts, soft conflicts or redundancy, compiles the skills into one, and beats concatenation and a one-call rewrite on task success [11]. GEPA improves prompts by reflecting on failed runs and their feedback [2], and SkillOpt edits one skill document under a validation gate [23]. On repository skills, the gains of both could not be told apart from run-to-run noise [12]. These works score task success or the merged file itself. We score every output on the rules of both source skills against a known best output. This shows what each fix keeps and what it drops, and it shows what makes a merge work: correct labels and one correct example that follows both skills. Our feedback loop is a small loop of the GEPA kind, reported with intervals over jobs and with a control for how its practice requests are chosen.

SkillClash

Jobs and skills. A job is one kind of text, such as a commit message, a pull request description, a SQL query or a bug report. SkillClash has 16 jobs (Appendix § 8). Each job has two skills, A and B, with different house rules. Each skill is a SKILL.md file with six rules and one worked example that follows them. We constructed the skills for this benchmark rather than collecting them from public repositories, so that we control how their rules interact.

Four kinds of rules. As in IFEval [25], a small program checks every rule. Relative to the other skill, each rule is one of four kinds (Figure 1):

  • contradictory: no output can satisfy it together with its partner in the other skill, for example two different required starts of the first line (one per skill);

  • shared: the other skill asks for the same thing (one per skill);

  • entangled: both rules can hold, but only if the output is arranged with care, for example two lines that each want to come last (one per skill);

  • exclusive: nothing in the other skill touches it (three per skill).

What a correct output follows. Following both skills cannot mean following all twelve rules, because the two contradictory rules cannot both hold. Each pair is therefore run with a stated primary skill, whose side of the contradiction is the correct one. This is the only place where a skill should lose, and we run every pair twice, once with each skill as the primary. A correct output then follows ten distinct rules: all six rules of the primary, plus the three exclusive rules and the entangled rule of the other skill. The other skill’s shared rule asks for the same thing as the primary’s, so it is already counted. For every pair and each choice of primary, the benchmark includes a reference output, such as a complete commit message, and the same code confirms that it follows all ten rules. For the pair in Figure 1, the two reference outputs differ only in their first line. Takeover is different from this priority: it also drops the other skill’s exclusive rules, which conflict with nothing.

Checking the rule labels. Because we planted the rule relations, we asked whether they are the ones a careful reader sees. A co-author who did not write the skills and had not seen our labels read the 16 pairs and listed every pair of rules that interact, with a label. The rater found all 16 contradictory and all 16 shared pairs with the right label and listed no pair that we had not planted. Entangled pairs were harder to see. The rater labeled 8 of the 16 entangled pairs as entangled and 4 as contradictory, and did not list 4. In the pairs called contradictory, one rule asks for an exact position, such as the first line, and the other only for a nearby one, such as “at the top”; both can hold if the lines are placed with care. The pairs not listed are length and format limits. The models also find entangled pairs the hardest to satisfy (§ 5).

What we measure. Rules followed is the share of a skill’s six rules that an output follows. Takeover means that one skill’s three exclusive rules are all followed and the other skill’s are all dropped. Achievable rules followed is the share of the ten achievable rules that an output follows; an output that follows only the primary skill gets 60%. An output is fully correct when it follows all ten. The last measure is stricter: a fix can follow most achievable rules on average while few outputs follow all of them.

Setup. Both skill files are placed in the system prompt, which says that every rule of every loaded skill must be followed (Appendix § 8). This removes skill selection as a source of failure. We use eight requests per job and test seven models from five families with greedy decoding: five open models (Qwen3-4B, Qwen2.5-7B, Mistral-7B, Llama-3.1-8B and Phi-4-mini) and two strong models called through an API (Qwen3-235B and GPT-4.1). Qwen3-235B is the large model of the same release as Qwen3-4B. GPT-4.1 was run on four of the eight requests per job. The 16 jobs are the unit of analysis. All intervals are 95% bootstrap intervals over jobs, and all comparisons are paired by job.

One skill takes over

A same-job skill hurts every model, and an unrelated skill does not. Alone, a skill is followed almost perfectly (Figure 2a). Adding a skill for a different job changes nothing, so a longer context is not the cause. Adding a skill for the same job cuts the rules followed to 61 to 62% on all seven models. A model with sixty times more parameters and a strong closed model lose as much as the 4B model. One side of the contradiction has to lose, but that explains little: on the five rules per skill that can always hold, the drop is still 28 to 35 points. The drop is about the same when both files are given in the user message instead of the system prompt (32 to 37 points on Qwen3-4B, Qwen2.5-7B, Llama-3.1-8B, Phi-4-mini, Qwen3-235B and GPT-4.1).

Bar chart showing rules followed (%) for Qwen3 4B, Qwen 2.5-7B, Mistral 7B, Llama 3.1-8B, Phi-4 mini, Qwen3 235B, and GPT 4.1, with skill alone, + unrelated skill, and + same-job skill; panels (b) Qwen3-4B, (c) Qwen3-235B, and (d) GPT-4.1 show counts by A's exclusive rules met and B's exclusive rules met.

Figure 2. (a) Share of a skill’s rules that are followed on seven models, with 95% intervals over the 16 jobs. (b to d) Outputs with both skills loaded, counted by how many exclusive rules of each skill they follow. Most outputs sit in the two corners where one skill has everything and the other has nothing, for a 4B model and for the two strong models alike. Appendix § 11 gives every model by job.

The loss is mostly all or nothing. The outputs are rarely blends: in 45 to 78% of outputs, one skill’s exclusive rules are all followed and the other skill’s are all dropped (Figure 2b to Figure 2d). The exclusive rules conflict with nothing, and they are still dropped.

Worked examples drive most of the takeover. On the five open models and Qwen3-235B, takeover is 45 to 78% with the examples and 7 to 41% when we remove the examples from both skill files (Appendix § 10). Three more tests on Qwen3-4B, Qwen2.5-7B, Llama-3.1-8B, Phi-4-mini, Qwen3-235B and GPT-4.1 show that the examples, and not the two separate files, cause it (Figure 3). First, when both full skill files are placed in one file, examples included, takeover is still 34 to 73%. Second, when only one skill keeps its example, that skill wins 67 to 93% of the takeovers over both load orders, and moving the example to the other skill moves the winner with it. The one exception is Phi-4-mini, which follows the second-listed skill in almost every takeover. Each example shows an output that follows one skill only, and the model writes in that format. Third, the content of the example decides. When each of the two files ends with the same example, one that follows both skills, takeover falls to 1 to 15% and 90 to 96% of the achievable rules are followed, without merging the two files. On the two strong models, this one change raises the share of fully correct outputs from 1% to 76 and 60%, while the “apply both” instruction reaches only 22 and 21%.

Three-panel plot showing takeovers, first-listed skill wins, and fully correct outputs across six models

Figure 3. What the worked examples do, on Qwen3-4B, Qwen2.5-7B, Llama-3.1-8B, Phi-4-mini, Qwen3-235B and GPT-4.1 (95% intervals over the 16 jobs). (a) Takeover with the same rules shown as two skill files or as one file, with and without the skills’ examples, and as two files that each end with the example of Claude’s merged file, which follows both skills. (b) Both skills loaded and only one keeps its example: share of the takeovers won by the first-listed skill when only it keeps its example, when both keep theirs, and when only the other skill does. (c) One merged file, fully correct outputs. The first two rows show the rule union without and with the two original examples, the next two the rule union with a priority line, without and with Claude’s example, and the last two Claude’s file without and with its example.

Takeover does not vanish without examples. Even with no interacting rules left, four of the six models in Appendix § 10 (Qwen3-4B, Qwen2.5-7B, Phi-4-mini and Qwen3-235B) follow both skills’ exclusive rules in full 24 to 33 points less often than their single-skill runs predict, with intervals that exclude zero. So two skills for the same job can get in each other’s way even when none of their rules conflict.

The winner depends on the pair and the load order, not on the request. With greedy decoding, the same skill wins on almost every request for a fixed pair and load order (§ 6). Swapping the load order often changes the winner, and which position wins depends on the model. The first-listed skill wins 74 and 77% of the takeovers on Llama-3.1-8B and GPT-4.1, but only 24% on Qwen2.5-7B and 3% on Phi-4-mini. A user who does not control the load order cannot know which skill will be followed.

Takeover varies by job. Takeover is at least 75% in 5 to 12 of the 16 jobs, depending on the model. For SQL queries it is at most 19% on every model. There the two rule sets constrain different parts of one statement, and the models blend them (Appendix § 11).

From two files to one

We compare two families of fixes. The first keeps both skill files and adds an instruction. A priority instruction says that the primary wins if the skills conflict, and an “apply both” instruction says that the skills are complementary and that every rule of both must be followed. The second family replaces the two files with one file, which we call a meta-skill. We build it in three ways.

  • Rule union. Code copies the rules of both skills into one file under two headings, without the examples, and adds a line that says which skill wins in a conflict, with no model involved.

  • Feedback loop. A small reflective loop in the style of GEPA and SkillOpt [2, 23] improves a meta-skill. In each of six rounds, it runs the file on three practice requests, lists the rules that each output broke, asks the model to rewrite the file, and keeps the rewrite only if more rules are followed. Qwen3-4B both answers the practice requests and rewrites the file.

  • Merge by a model. A model reads the two skill files and writes one merged skill. We tried a plain request to merge, and a step-by-step merge that lists the rules, labels the pairs that interact, writes one combined rule for each entangled pair, and copies the other rules word for word. Each of the seven models merges for itself. An eighth merger, Claude Opus 5.5, saw only the skill files, and its files are given to all seven models.

Figure 4 shows the results, and Appendix § 9 lists every condition with its interval.

A priority instruction does not bring the dropped skill back on any model. With it, the achievable rules followed stay at 62 to 71%, close to what following one skill alone gives, and one skill still takes over in 36 to 82% of outputs.

Asking for both skills works on the strong models, up to a point. With the “apply both” instruction, the open models reach 69 to 78%, and one skill still takes over in up to 46% of outputs. The strong models reach 88 to 89% with no takeover, so the dropped skill comes back. The rules that interact stay broken. Both entangled rules are followed in only 38 and 32% of outputs, the primary keeps its side of the contradiction in 59 and 73%, and only about one output in five is fully correct (22 and 21%).

A plain rule list in one file helps. The rule union reaches 66 to 79% on the open models and 86 to 90% on the strong ones, and takeover drops to 1 to 16%. It needs both of its changes (Figure 3a). With the examples kept, one file gains 0.6 to 9.6 points over two files, and one skill still takes over in 34 to 73% of outputs. Without the examples, one file gains 6 to 18 points over two files on the five open models and Qwen3-235B, with intervals above zero on all of them except Phi-4-mini (Appendix § 9). On Qwen3-4B, the feedback loop lifts the union further, to 92%, and Llama-3.1-8B reading the same files reaches 89%. The loop needs rule checks for its feedback, which for real skills means a judge model or hand-written checks.

Share of the achievable rules that are followed across open and strong models

Figure 4. Share of the achievable rules that are followed, with 95% intervals over the 16 jobs. The dashed line at 60% is what following one skill alone gives, and the line at 100% is every achievable rule. Shaded rows use one meta-skill file. “Merged by the model itself” is the plain merge, and “Merged by Claude” is the step-by-step merge by Claude Opus 5.5. The feedback loop was run with Qwen3-4B, and its files were read by Qwen3-4B and Llama-3.1-8B.

A file merged by the strongest model is the only fix near the ceiling on every model. The meta-skills written by Claude Opus 5.5 reach 96 to 99% of the achievable rules on all seven models, with no takeover, and 68 to 94% of outputs are fully correct. That is 11 to 29 points above the “apply both” instruction, and on the strong models it gives four times as many fully correct outputs. A model that merges for itself does less well. Its plain merge reaches 71 to 95%, which is 5 to 25 points below Claude’s file. The quality of a meta-skill follows the strength of the model that merges, and this holds with the reader fixed: Qwen3-4B follows 79, 87, 94, 92 and 98% of the achievable rules when the plain merge was written by Qwen3-4B itself, Llama-3.1-8B, Qwen3-235B, GPT-4.1 and Claude Opus 5.5, and Llama-3.1-8B as the reader shows the same pattern (Appendix § 9).

The example in the merged file does most of the work. Each of Claude’s files ends with one worked example that follows both skills. On the four open models with this run, removing the example costs 9 to 25 points of achievable rules; on the two strong models it costs about 2. On all six models it lowers the share of fully correct outputs, by 14 to 52 points (Figure 3c). Adding the same example to the rule union written by code lifts the union by 9 to 24 points, to within 8 points of Claude’s full file on all six models. On GPT-4.1, it raises the fully correct outputs of the rule union from 30 to 89%. The original examples do the opposite. Added to the rule union, they cost 0 to 14 points and bring takeover back to 32 to 55%. Examples therefore cut both ways: an example that follows one skill causes takeover, and an example that follows both skills is the main part of a good merge.

The example helps only when it is correct. We added each merger’s own example to the same rule union. The gain follows how often a merger’s examples meet every achievable rule. The examples of Mistral-7B, none of which does, add nothing or cost points, and those of Claude Opus 5.5, which almost always do, add the most (Figure 5). Over all merged files, a correct example adds 12 to 17 points and an incorrect one adds little or nothing. For the same job and primary, a correct example written by another merger helps as much as Claude’s (within 1 point on each of the three readers). A strong merger helps mainly because it writes a correct example that follows both skills far more often.

Gain in achievable rules from merger examples, comparing rule union plus one merger's example with per merged file

Figure 5. A merged file’s example helps only when it is correct. (a) Gain in achievable rules followed when one merger’s example is added to the rule union, with 95% intervals over the 16 jobs, for files read by Qwen3-4B, Qwen2.5-7B and Llama-3.1-8B. Mergers are ordered by the share of their examples that meet every achievable rule, given under each name. (b) The same gain per merged file, for examples that meet every achievable rule and for examples that do not, with the reader colors of (a).

The step-by-step merge is only as good as its labels. We expected the step-by-step merge to beat the plain merge. It does so only for the strongest merger. For Claude Opus 5.5 the two are within about one point, and the step-by-step files give more fully correct outputs on all seven models (68 to 94% against 60 to 86%). For the seven models that merge for themselves, the step-by-step merge is level with their plain merge or below it (Appendix § 9).

The reason is the labeling step. Claude Opus 5.5 labels all 48 interacting rule pairs correctly and adds none. The seven models label 2 to 39 of the 48 pairs correctly, report 8 to 61 pairs that do not interact, and treat every rule correctly in at most 14 of their 32 files. The typical errors are an entangled pair that is missed and left as two separate rules, two independent rules that are rewritten into one, and a contradiction that is labeled as entangled. Where a file has no such error, the step-by-step merge nearly matches the plain merge (96 against 96% for Qwen3-235B, and 94 against 96% for GPT-4.1). Where it has one, it loses (84 against 94%, and 88 against 94%). Given the correct labels, the step-by-step merge of Qwen3-4B gains 8 to 10 points on all seven models, and those of Qwen3-235B and GPT-4.1 gain 4 and 3 points on their own models, which brings them to within 4 and 1 points of their plain merges. Structure helps only when the labels are right, and only the strongest merger got them right.

Choosing the practice requests of the feedback loop so that they provoke a clash, in the spirit of curriculum generation [21], gave the same gain as plain requests when we tested it on the merged file of Qwen3-4B.

Inside the model

Can the winner be read from the activations? In conflicts between system and user instructions, the winning side can be read from the activations and moved by steering [6]. For two skills in one prompt we ask for more: can steering make the model follow both? We take the model’s activations at the last prompt token, before it writes anything, and train a linear probe [3] to predict whether the first-listed or the second-listed skill will win. For a pair and load order that the probe has seen on other requests, there is nothing left to learn: guessing that pair’s usual winner is already right for 96 to 99% of the takeover outputs on Qwen3-4B, Qwen2.5-7B and Llama-3.1-8B. For a pair it has not seen, we could not show on any of the three models that the probe beats always guessing the first-listed skill (Appendix § 12). With 16 held-out pairs this test is weak, and the steering result below suggests that some general signal exists.

Can the winner be moved? Activation steering adds a fixed vector to the output of one layer while the model runs [15, 18]. Steering at a single layer can be unstable [5, 16]. We steer toward the skill that lost, on requests that were not used to choose the layer and the strength (Appendix E). A general direction, computed from the other 15 jobs as “first-listed skill won” minus “second-listed skill won”, flips the winner in 38 to 49% of takeovers on the three models. A random direction of the same size at the same layer flips 0 to 3% (Figure 6). A direction built for the specific job flips about as many as its own random control. Steering does not make the model follow both skills. That happens in at most 13% of steered outputs on any of the three models, and on Llama-3.1-8B a random direction does as well. On Qwen3-4B, stronger steering breaks the text.

Activation steering toward the skill that lost

Figure 6. Activation steering toward the skill that lost, on requests not used for tuning (89 to 100 outputs per model, all of which end in a takeover without steering). Each random control is a random direction added at the same layer and with the same strength as the row above it. Numbers inside the bars are percentages.

So takeover behaves like a choice between two alternatives. It can be tipped the other way, but steering does not turn it into following both skills. This matches § 5, where the fixes that work give the model one file, and one example, instead of two.

Discussion

What this means for skill tooling. Takeover happens after both files are loaded, so better skill selection would not fix it, and blocking one skill [22] gives up that skill’s rules. For the small models, the instructions we added recover only part of the dropped skill. For the strong models an explicit instruction brings it back, but it leaves the interacting rules broken. On every model, the best result came from merging the two skills once, with the strongest model at hand, and loading the merged file. The merged file should end with one correct worked example that follows both skills, and it should not copy the examples of the source skills. Where the files cannot be merged, giving each file such an example already removes most of the takeover.

What is not solved. The step-by-step merge depends on labeling the rule pairs, and only one merger labeled them well enough. Two repairs look cheap and remain to be tested: checking each combined rule and the example against the source rules before the file is saved, and falling back to a plain merge when the labels are in doubt. Checking a merge on real skills also needs a judge model or hand-written checks, since real skills come without rule checkers.

Real skills. In the public run summaries of Yan et al. [22], Claude Code runs that used both skills met the requirements that only the first skill states about 8 points less often than the paired run with that skill alone (Appendix F). This is observational, and the effect is smaller than in our benchmark, but it points the same way.

Benchmark details

Jobs. Commit message, pull request description, SQL query, incident report, Python function, support reply, changelog entry, JSON error body, code review comment, test case specification, standup update, bug report, Dockerfile, endpoint documentation, on-call alert and user story.

Checks before any model is run. A self-test confirms for every pair that each skill’s example follows its own rules, that the contradiction and the entangled pair are real on the examples, and that the reference output for each choice of primary follows its ten rules.

Prompts. The system prompt is: “You are an assistant working in a software team’s workspace. The skills below are installed and loaded for this session. Follow every rule of every loaded skill that applies to the request.” The skill files follow, each inside a <skill> tag. The priority instruction adds: “If two loaded skills give conflicting instructions, the skill X takes precedence. Otherwise follow all rules of all loaded skills.” The “apply both” instruction adds: “The loaded skills are complementary, not alternatives. Apply every rule of BOTH skills in the same output. Only where two rules cannot both hold does the rule from X win.” The user turn is the request plus “Reply with the [kind of text] only, with no commentary before or after it.” The plain merge request is: “Two agent skills will be installed together. Merge them into ONE skill file that replaces both. Keep every rule of both skills. Where two rules cannot both hold, the rule from X wins. Write a complete SKILL.md with frontmatter, a rules section and one example.”

Run details. Qwen3-235B (qwen/qwen3-235b-a22b-2507) and GPT-4.1 (openai/gpt-4.1) were called through OpenRouter at temperature 0. GPT-4.1 ran four of the eight requests per job. Qwen2.5-7B and Mistral-7B-v0.3 ran on a cloud GPU with pinned model revisions. We replayed every answer of these runs from the saved generations with the benchmark’s own prompts and checkers and found no difference.

Feedback loop. The model proposes 16 practice requests per job, of which 12 are kept. Six of them give the feedback, and the other six pick the final file. The loop runs six rounds with three feedback requests per round.

Rules the model follows anyway. A few rules are followed even with no skill loaded. If we keep only the rules that the model follows with the skill and not without it (162 to 174 of 192), the takeover rate is 52.1 to 84.4% across the seven models, close to the main numbers.

All conditions

conditionmodel: Qwen3-235B achievableent.allt.o.model: GPT-4.1 achievableent.allt.o.
two skill files
Both skills loaded59.6 [56.2, 63.6]717358.9 [56.4, 61.7]7177
Both skills loaded, examples removed71.4 [65.4, 77.1]37741––––
Both skills loaded, each with Claude’s example96.2 [93.9, 98.2]9176189.9 [84.7, 94.5]836015
Write with the primary skill, revise with the other59.6 [55.1, 64.5]1505267.3 [62.4, 72.5]19038
Only the primary skill60.7 [59.8, 61.8]508960.9 [59.9, 62.3]5092
Priority instruction70.6 [65.3, 76.3]1995662.6 [60.5, 64.8]11082
“Apply both” instruction87.6 [84.4, 90.6]3822088.6 [85.7, 91.3]32210
“Apply both” instruction, primary listed first88.4 [85.0, 91.6]3521089.1 [86.0, 92.0]31201
Rule checklist first, primary listed first71.1 [65.5, 77.5]26146063.4 [60.5, 67.1]12184
one meta-skill file
Both full skill files inside one file (no model)69.1 [64.0, 74.5]1964760.5 [57.6, 63.9]12173
Rule union + both original examples (no model)76.6 [70.5, 82.6]40133272.7 [65.2, 80.3]421249
Rule union in one file (no model)86.2 [81.1, 90.2]6925286.6 [83.0, 89.8]60214
Rule union + priority line (no model)85.7 [81.6, 89.4]7219189.7 [86.9, 92.2]68305
Plain merge, by Qwen3-4B80.8 [75.2, 86.2]34132481.6 [75.6, 87.3]381627
Step-by-step merge, by Qwen3-4B78.4 [72.2, 84.4]4317080.0 [73.8, 85.9]44150
Step-by-step merge, Qwen3-4B, true rule kinds given87.4 [82.7, 91.9]4829089.4 [85.7, 92.9]49300
Plain merge, by Qwen3-235B94.3 [92.6, 96.1]64510––––
Step-by-step merge, by Qwen3-235B86.6 [79.5, 92.3]54310––––
Step-by-step merge, Qwen3-235B, true rule kinds given90.7 [84.4, 95.5]59480––––
Plain merge, by GPT-4.1––––94.7 [92.0, 97.2]59570
Step-by-step merge, by GPT-4.1––––90.8 [82.0, 96.6]62530
Step-by-step merge, GPT-4.1, true rule kinds given––––93.9 [89.1, 97.6]76630
one meta-skill file, after the feedback loop
Step-by-step merge, Qwen3-4B, after the loop (clash requests)88.0 [81.5, 93.0]6939088.8 [82.2, 93.8]72410
one meta-skill file, merged by Claude Opus 5.5
Plain merge, by Claude Opus 5.597.7 [96.3, 98.9]9180098.6 [97.6, 99.5]92860
Step-by-step merge, by Claude Opus 5.599.0 [98.1, 99.8]9991099.4 [98.6, 100.0]98940
Step-by-step merge, by Claude Opus 5.5, example removed96.7 [94.4, 98.7]9873097.7 [95.6, 99.3]97800
Rule union + priority line + Claude’s example97.5 [95.5, 99.1]9779098.9 [98.0, 99.7]97890

Table 2. Strong models, with the same layout as Table 1. GPT-4.1 was run on four requests per job.

conditionmodel: Qwen3-4B achievableent.allt.o.model: Llama-3.1-8B achievableent.allt.o.
two skill files
Both skills loaded58.1 [55.7, 61.2]1207859.1 [55.8, 62.9]13066
Both skills loaded, examples removed64.7 [59.7, 69.6]2913463.1 [57.5, 69.1]30334
Both skills loaded, each with Claude’s example92.9 [89.5, 96.1]9060694.2 [91.2, 96.6]92632
Write with the primary skill, revise with the other53.3 [50.5, 56.7]607562.5 [58.3, 67.0]14040
Only the primary skill60.0 [58.9, 61.6]508760.5 [59.3, 61.9]7088
Priority instruction62.1 [60.3, 64.3]1007461.5 [58.6, 64.9]12066
“Apply both” instruction69.5 [65.0, 73.7]1944672.0 [66.6, 76.5]17328
“Apply both” instruction, primary listed first68.2 [64.4, 72.4]1736074.2 [69.7, 78.3]19533
Rule checklist first, primary listed first61.7 [59.5, 64.1]1007974.0 [67.0, 79.8]231027
one meta-skill file
Both full skill files inside one file (no model)62.1 [58.1, 66.5]2037159.7 [56.5, 63.4]9071
Rule union + both original examples (no model)69.0 [63.9, 74.2]2654269.9 [66.6, 73.4]27238
Rule union in one file (no model)77.1 [70.2, 83.4]56131381.1 [76.2, 85.5]50124
Rule union + priority line (no model)78.6 [72.7, 83.9]5571679.4 [74.2, 84.3]47114
Plain merge, by Qwen3-4B79.3 [73.8, 84.6]33102779.7 [74.0, 85.3]371128
Step-by-step merge, by Qwen3-4B78.5 [72.3, 84.5]4116078.3 [71.9, 84.6]41150
Step-by-step merge, Qwen3-4B, true rule kinds given87.0 [82.3, 91.6]5025086.5 [81.4, 91.4]50250
Plain merge, by Llama-3.1-8B87.0 [83.2, 90.7]4322086.9 [82.5, 91.1]46250
Step-by-step merge, by Llama-3.1-8B80.5 [74.3, 86.0]4611381.2 [75.2, 86.7]45143
Plain merge, by Qwen3-235B93.9 [91.5, 96.2]6651093.5 [90.8, 96.1]64510
Step-by-step merge, by Qwen3-235B87.1 [80.4, 92.5]5432086.9 [79.7, 92.5]56330
Step-by-step merge, Qwen3-235B, true rule kinds given91.2 [85.1, 95.7]6151091.3 [85.3, 95.9]65540
Plain merge, by GPT-4.192.5 [88.8, 96.1]5953192.9 [89.4, 96.2]57510
Step-by-step merge, by GPT-4.189.5 [80.9, 95.5]5945089.6 [81.0, 95.5]65500
Step-by-step merge, GPT-4.1, true rule kinds given92.9 [88.2, 96.5]7356093.0 [88.3, 96.8]76590
one meta-skill file, after the feedback loop
Rule union + priority line, after the loop92.4 [88.8, 95.5]6047189.1 [83.8, 94.0]63464
Step-by-step merge, Qwen3-4B, after the loop (plain requests)88.4 [81.2, 94.1]6743087.9 [81.0, 93.6]68390
Step-by-step merge, Qwen3-4B, after the loop (plain requests)88.2 [81.6, 93.3]7040087.0 [80.4, 92.6]69380
one meta-skill file, merged by Claude Opus 5.5
Plain merge, by Claude Opus 5.597.7 [96.6, 98.8]9079098.0 [96.5, 99.3]93830
Step-by-step merge, by Claude Opus 5.598.4 [97.0, 99.5]9887098.6 [97.0, 99.6]98880
Step-by-step merge, by Claude Opus 5.5, example removed89.1 [84.1, 93.4]8844288.8 [83.3, 93.8]81460
Rule union + priority line + Claude’s example90.9 [87.3, 94.3]8049695.5 [92.7, 98.0]93710

Table 1. Qwen3-4B and Llama-3.1-8B, evaluation requests (%). Achievable: achievable rules followed, with the 95% interval. Ent.: both entangled rules followed. All: fully correct outputs. T.o.: takeover. The rule union of the main text is the row with a priority line. “Write with the primary skill, revise with the other” is two passes. “Rule checklist first” asks the model to list the rules before it answers. “True rule kinds given” is the step-by-step merge with the labeling step replaced by the correct labels. Rows without a note average the two load orders.

conditionmodel: Qwen2.5-7B achievableent.allt.o.model: Mistral-7B achievableent.allt.o.model: Phi-4-mini achievableent.allt.o.
two skill files
Both skills loaded58.6 [55.4, 62.2]806960.3 [51.4, 67.4]1624559.9 [56.4, 63.5]19049
Both skills loaded, examples removed65.7 [60.1, 71.3]4832268.4 [60.6, 75.4]435759.3 [49.3, 68.1]43319
Both skills loaded, each with Claude’s example90.7 [87.5, 93.6]8749554.0 [55.0, 65.6]–––91.0 [87.6, 94.1]81502
Write with the primary skill, revise with the other59.2 [54.8, 64.5]1605660.4 [55.0, 65.6]1904656.5 [53.4, 59.8]15062
Only the primary skill59.8 [58.5, 61.2]408557.8 [53.9, 60.8]508259.7 [58.4, 61.1]6082
Priority instruction64.6 [61.0, 68.5]1105564.9 [60.1, 69.8]1514864.2 [60.3, 68.1]20136
“Apply both” instruction73.1 [67.6, 78.2]2132178.1 [72.8, 82.7]237869.3 [65.1, 73.6]23221
“Apply both” instruction, primary listed first73.3 [66.8, 78.8]1832080.1 [74.2, 85.4]25101069.0 [64.6, 73.7]24313
Rule checklist first, primary listed first74.1 [70.3, 77.9]2242068.5 [66.5, 73.0]1822966.8 [62.5, 71.2]16118
one meta-skill file
Both full skill files inside one file (no model)60.3 [56.5, 64.7]14169––––61.2 [57.0, 65.4]23034
Rule union + both original examples (no model)62.4 [59.3, 65.8]15155––––65.1 [60.5, 70.2]20234
Rule union in one file (no model)75.3 [68.5, 81.6]5013375.3 [69.0, 81.1]438464.9 [51.7, 76.3]3875
Rule union + priority line (no model)73.2 [67.0, 79.5]507364.6 [69.9, 78.9]4641465.9 [53.7, 77.0]4394
Plain merge, by Qwen3-4B78.6 [72.3, 84.6]32102876.6 [71.0, 82.2]27102577.2 [71.3, 83.0]34925
Step-by-step merge, by Qwen3-4B77.8 [71.7, 83.9]4114074.5 [68.3, 80.6]3511076.8 [70.7, 83.2]40150
Step-by-step merge, Qwen3-4B, true rule kinds given86.1 [80.9, 91.2]4823084.1 [77.8, 90.0]5023085.0 [79.5, 90.2]50251
one meta-skill file, after the feedback loop
Step-by-step merge, Qwen3-4B, after the loop (clash requests)86.6 [80.0, 92.2]6835083.6 [77.3, 89.2]6129085.3 [78.9, 90.7]66300
one meta-skill file, merged by Claude Opus 5.5
Plain merge, by Claude Opus 5.596.4 [94.1, 98.3]9068095.0 [92.5, 97.3]8460095.4 [93.0, 97.7]85650
Step-by-step merge, by Claude Opus 5.596.7 [94.1, 98.8]9676096.8 [93.9, 99.1]9177095.9 [93.9, 97.7]95680
Step-by-step merge, by Claude Opus 5.5, example removed83.2 [76.8, 89.3]85310––––71.2 [60.7, 80.8]68174
Rule union + priority line + Claude’s example94.3 [91.2, 97.0]90610––––90.0 [87.2, 92.8]84390

Table 3. Qwen2.5-7B, Mistral-7B and Phi-4-mini, with the same layout as Table 1.

mergerrules copiedright labelsfalse pairsclean filesgood examplesfiles read by the merger itself step-by-stepfiles read by the merger itself plainfiles read by Qwen3-4B step-by-stepfiles read by Qwen3-4B plainfiles read by Llama-3.1-8B step-by-stepfiles read by Llama-3.1-8B plain
Qwen3-4B190/19224/48382/325/3278.579.378.579.378.379.7
Qwen2.5-7B189/1928/4880/323/3275.475.0––––
Mistral-7B117/1924/48610/320/3265.280.2––––
Llama-3.1-8B182/1928/48330/324/3281.286.980.587.081.286.9
Phi-4-mini120/1922/48300/322/3252.471.1––––
Qwen3-235B188/19232/48186/3210/3286.694.387.193.986.993.5
GPT-4.1192/19239/48814/3217/3290.894.789.592.589.692.9
Claude Opus 5.5192/19248/48032/3230/3297.897.098.497.798.698.0

Table 4. The seven mergers and Claude Opus 5.5. The step-by-step columns count, out of 192 rules, 48 interacting rule pairs and 32 files, the rules copied word for word, the pairs given the right label, the pairs reported that do not interact, the files in which every rule is treated correctly, and the files whose example follows every achievable rule. The right-hand columns give the achievable rules followed (%) when the files are read by the merger itself (for Claude Opus 5.5, the mean over the seven models), by Qwen3-4B or by Llama-3.1-8B.

comparison (points)Qwen3-4BQwen2.5-7BMistral-7BLlama-3.1-8BPhi-4-miniQwen3-235BGPT-4.1
One file against two
One file vs. two files (same rules, no examples)+12.5 [7.8, 17.5]+9.6 [5.1, 14.3]+6.9 [0.8, 14.7]+17.9 [13.6, 22.4]+5.6 [-1.2, 11.4]+14.8 [8.6, 21.2]–
Rule union vs. “apply both” instruction+9.1 [3.3, 14.9]+0.1 [-6.5, 7.0]−3.5 [-9.7, 2.3]+7.4 [2.8, 11.7]−3.4 [-14.6, 6.2]−1.9 [-6.6, 2.3]+1.1 [-2.6, 4.4]
Claude’s file vs. “apply both” instruction+28.9 [24.5, 33.5]+23.6 [19.0, 28.7]+18.7 [14.6, 23.5]+26.5 [22.2, 31.9]+26.6 [22.9, 30.3]+11.4 [8.8, 14.3]+10.8 [8.0, 13.8]
Who merges and how
Claude’s file vs. the model’s own plain merge+19.1 [14.1, 24.6]+21.7 [15.7, 28.7]+16.6 [11.6, 22.7]+11.7 [8.1, 15.3]+24.8 [19.7, 29.9]+4.7 [3.0, 6.4]+4.7 [2.3, 7.3]
Step-by-step vs. plain merge, the model merges for itself−0.8 [-6.7, 5.1]+0.3 [-6.9, 8.3]−15.0 [-23.0, -7.2]−5.7 [-10.0, -1.4]−18.8 [-29.5, -8.0]−7.7 [-14.6, -2.0]−3.9 [-13.1, 2.1]
Step-by-step vs. plain merge, Claude merges+0.7 [-0.3, 1.7]+0.4 [-0.5, 1.3]+0.8 [0.4, 3.3]+0.5 [-0.3, 1.5]+0.5 [-0.4, 1.6]+0.7 [0.5, 2.2]+0.8 [0.1, 1.7]
Step-by-step merge with the correct rule kinds
Qwen3-4B’s merge: correct vs. own labels+8.6 [0.8, 16.6]+8.3 [0.6, 16.4]+9.6 [3.1, 16.4]+8.2 [0.5, 16.3]+8.1 [0.7, 15.8]+9.1 [1.8, 16.8]+9.4 [2.0, 16.8]
Qwen3-235B’s merge: correct vs. own labels+4.1 [1.4, 7.1]––+4.4 [1.6, 7.6]–+4.0 [1.2, 7.2]–
Qwen3-235B’s merge: correct labels vs. its plain merge−2.7 [-8.0, 1.9]––−2.2 [-7.8, 2.6]–−3.7 [-9.8, 1.4]–
GPT-4.1’s merge: correct vs. own labels+3.4 [0.2, 7.8]––+3.5 [0.1, 7.9]––+3.1 [-0.1, 7.5]
GPT-4.1’s merge: correct labels vs. its plain merge+0.4 [-6.3, 5.9]––+0.2 [-5.8, 5.0]––−0.8 [-6.6, 3.7]
Feedback loop (Qwen3-4B’s files)
Rule union after vs. before the loop+13.8 [10.4, 17.3]––+9.7 [5.7, 14.6]–––
Clash-provoking vs. plain practice requests−0.2 [-2.1, 1.6]––−0.9 [-3.8, 1.4]–––

Table 5. Paired differences behind the claims in § 5: achievable rules followed, in points, as the mean over the 16 jobs with the 95% interval below it. Each column is the model that reads the files. –: not run.

What triggers the takeover

modelskills shownalonebothtakeoverboth fullyexpectedboth fully − expected
Qwen3-4Bfull skills, with examples96.953.478.1 [62.1, 91.4]0.486.7−86.3 [−96.9, −73.0]
examples removed92.863.533.6 [19.5, 49.2]16.062.5−46.5 [−69.5, −21.5]
+ contradictory rules removed93.868.825.4 [13.3, 39.8]26.268.8−42.6 [−59.4, −25.4]
+ entangled rules removed (fully compatible)92.470.823.0 [9.4, 39.1]30.563.3−32.8 [−50.8, −16.4]
Qwen2.5-7Bfull skills, with examples95.854.668.8 [52.0, 84.4]5.978.9−73.0 [−88.7, −55.5]
examples removed87.062.222.3 [12.1, 35.2]14.157.0−43.0 [−60.5, −25.0]
+ contradictory rules removed89.772.015.2 [3.9, 30.1]24.265.6−41.4 [−58.2, −25.0]
+ entangled rules removed (fully compatible)88.273.46.2 [0.0, 17.6]34.057.8−23.8 [−39.8, −8.6]
Mistral-7Bfull skills, with examples92.459.445.3 [27.7, 63.7]18.074.2−56.2 [−74.6, −36.7]
examples removed81.469.16.6 [0.8, 14.8]25.042.2−17.2 [−28.9, −6.6]
+ contradictory rules removed78.672.61.6 [0.0, 4.7]34.834.4+0.4 [−20.7, 19.5]
+ entangled rules removed (fully compatible)78.670.84.3 [0.4, 10.9]32.028.1+3.9 [−11.7, 17.6]
Llama-3.1-8Bfull skills, with examples97.355.166.4 [51.6, 79.7]3.989.1−85.2 [−95.7, −71.5]
examples removed94.063.834.4 [19.1, 50.8]19.571.1−51.6 [−69.1, −32.0]
+ contradictory rules removed86.567.828.5 [14.1, 45.3]31.661.7−30.1 [−54.3, −4.3]
+ entangled rules removed (fully compatible)82.768.226.6 [10.9, 44.9]29.748.4−18.8 [−41.8, 5.5]
Phi-4-minifull skills, with examples95.255.348.8 [32.0, 66.4]1.276.6−75.4 [−90.6, −57.8]
examples removed70.456.619.1 [7.4, 33.2]12.137.5−25.4 [−41.4, −10.5]
+ contradictory rules removed81.156.717.2 [6.2, 31.2]10.250.0−39.8 [−59.4, −20.7]
+ entangled rules removed (fully compatible)80.160.79.8 [2.0, 21.9]20.345.3−25.0 [−39.1, −11.7]
Qwen3-235Bfull skills, with examples98.356.572.7 [53.1, 89.5]6.290.6−84.4 [−95.7, −71.1]
examples removed96.171.340.6 [21.5, 60.5]30.582.0−51.6 [−70.7, −32.4]
+ contradictory rules removed96.575.527.7 [12.5, 44.9]41.483.6−42.2 [−62.9, −22.7]
+ entangled rules removed (fully compatible)96.179.320.3 [6.2, 37.5]47.780.5−32.8 [−51.2, −15.6]

Table 6. Exclusive rules only (%), for the five open models and Qwen3-235B. Alone: followed with the skill alone. Both: followed on average with both skills loaded. Both fully: outputs that follow all exclusive rules of both skills. Expected: the same share if each skill were followed as it is when loaded alone. Each row removes more from both skill files.

Takeover by job

jobartifactQwen3-4B takeoverQwen3-4B both fullyQwen2.5-7B takeoverQwen2.5-7B both fullyMistral-7B takeoverMistral-7B both fullyLlama-3.1-8B takeoverLlama-3.1-8B both fullyPhi-4-mini takeoverPhi-4-mini both fullyQwen3-235B takeoverQwen3-235B both fullyGPT-4.1 takeoverGPT-4.1 both fully
commitcommit message1000100010031100019010006238
prpull request description8109401244503138010007525
sqlSQL query006250120191960121212
incidentincident report3861205005000012000
pythonPython function310250120120190316620
supportsupport reply50062060620310380880
changelogchangelog entry1000100094069050010001000
apierrorJSON error response body940100081681050610001000
reviewcode review comment94019506694050610001000
testcasetest case specification88010006885609408801000
standardsdaily standup update1000100010001000100010001000
bugreportbug report10007505631940100088121000
docxDockerfile810561294081694012625025
apidocREST endpoint documentation entry100010003166209401000500
alerton-call alert notification10008863169100025010001000
userstoryuser story ticket94075010005005009467525

Table 7. Both skills loaded, both load orders (% of outputs; 16 outputs per cell, 8 for GPT-4.1).

Steering details

We add one vector to the output of one transformer block at every position, while the model reads the prompt and while it writes. The general direction is the mean activation at the last prompt token over prompts with both skills loaded where the first-listed skill won, minus the mean where the second-listed skill won, taken from the other 15 jobs. The job-specific direction is the mean activation while the model writes with the target skill alone, minus the same for the other skill. Each vector is scaled to a fraction cc of the mean activation norm of its block. We choose the block (13, 19 or 24 of 36 on Qwen3-4B; 10, 15 or 20 of 28 on Qwen2.5-7B; 12, 17 or 22 of 32 on Llama-3.1-8B) and cc on four requests per job and report the other four. We always steer toward the skill that lost without steering, so this is a test of mechanism and not a fix. On Qwen3-4B we also tried c=0.8c = 0.8 on the tuning requests. At that strength, up to 44% of outputs follow no exclusive rule of either skill.

modelheld outbaselinetext featuresprobeprobe − baselinebest block, post hoc
Qwen3-4Bnew skill pair58.050.067.0+6.2 [−15.0, 24.4]74.0 (26)
Qwen3-4Bnew request96.558.096.0−1.3 [−4.0, 0.0]96.5 (22)
Qwen2.5-7Bnew skill pair76.175.676.1−2.2 [−15.5, 9.7]88.6 (22)
Qwen2.5-7Bnew request98.979.098.3−1.6 [−4.7, 0.0]98.3 (18)
Llama-3.1-8Bnew skill pair74.167.170.6−5.0 [−15.4, 0.9]79.4 (16)
Llama-3.1-8Bnew request97.172.996.5−0.8 [−2.5, 0.0]97.1 (15)

Table 8. Linear probe at the last prompt token: accuracy (%) in predicting which skill wins a takeover, for requests of a seen pair and for pairs held out. Baseline: the usual winner of that pair and order (seen pair) or always the first-listed skill (held-out pair). The best block is picked after the fact, so its accuracy is optimistic.

modelsteeringstaysflipsbothpartialneitherachievable
Qwen3-4Bno steering1000.0 [0.0, 0.0]00056.8
Qwen3-4Bjob-specific direction, best for both (block 13, c=0.4)4614.6 [5.0, 25.2]534060.0
Qwen3-4Bjob-specific direction, best for flipping (block 13, c=0.6)3215.9 [3.3, 32.0]245551.2
Qwen3-4Brandom control for the row above (block 13, c=0.6)4611.4 [3.3, 21.4]635259.3
Qwen3-4Bgeneral direction, best for both (block 19, c=0.4)3523.3 [8.8, 38.9]1328162.4
Qwen3-4Bgeneral direction, best for flipping (block 24, c=0.4)1348.8 [29.6, 68.3]830059.2
Qwen3-4Brandom control for the row above (block 24, c=0.4)862.9 [0.0, 6.1]110056.0
Qwen2.5-7Bno steering1000.0 [0.0, 0.0]00056.4
Qwen2.5-7Bjob-specific direction, best for both (block 15, c=0.4)2811.8 [3.9, 21.2]1050056.7
Qwen2.5-7Bjob-specific direction, best for flipping (block 10, c=0.6)257.0 [0.0, 16.4]065248.1
Qwen2.5-7Brandom control for the row above (block 10, c=0.6)617.5 [0.8, 17.7]032056.2
Qwen2.5-7Bgeneral direction, best for both (block 10, c=0.4)4913.0 [3.6, 23.9]038058.9
Qwen2.5-7Bgeneral direction, best for flipping (block 20, c=0.4)948.1 [28.6, 68.1]041255.6
Qwen2.5-7Brandom control for the row above (block 20, c=0.4)910.0 [0.0, 0.0]09055.5
Llama-3.1-8Bno steering1000.0 [0.0, 0.0]00056.7
Llama-3.1-8Bjob-specific direction, best for both (block 12, c=0.4)464.2 [0.0, 11.2]1039062.1
Llama-3.1-8Brandom control for the row above (block 12, c=0.4)649.4 [0.0, 21.0]1313061.1
Llama-3.1-8Bgeneral direction, best for both (block 17, c=0.6)2637.7 [22.4, 54.7]828061.9
Llama-3.1-8Brandom control for the row above (block 17, c=0.6)890.0 [0.0, 0.0]17355.2

Table 9. Held-out requests whose prompts end in a takeover without steering (% of outputs). “Best for both” and “best for flipping” are the two settings chosen on the tuning requests for each direction.

Public run summaries of One Skill Too Many

Change in the share of the installed skill A's requirements fulfilled versus the paired A-only run

Figure 7. Our reanalysis of the public run summaries of Yan et al. [22] (Claude Code, real skills, both install orders): change in the share of the installed skill A’s requirements that are fulfilled, against the paired run with A alone, by which skills the run used. “Exclusive to A” follows that paper’s labels. Which skills a run uses is not randomized.

References

  1. [1]Agent Skills. Specification. https://agentskills.io/specification, 2026.
  2. [2]Lakshya A Agrawal, Shangyin Tan, Dilara Soylu, Noah Ziems, Rishi Khare, Krista Opsahl-Ong, et al. GEPA: Reflective prompt evolution can outperform reinforcement learning. In International Conference on Learning Representations (ICLR), 2026. arXiv:2507.19457.
  3. [3]Guillaume Alain and Yoshua Bengio. Understanding intermediate layers using linear classifier probes. arXiv preprint arXiv:1610.01644, 2016.arxiv.org/abs/1610.01644
  4. [4]Anthropic. Introducing agent skills. Anthropic Research, October 2025. URL https://www.anthropic.com/research/skills.
  5. [5]Seyedamin Azizi, Arya Fayyazi, Parsa Razmara, Erfan Baghaei Potrghloo, Souvik Kundu, and Massoud Pedram. The sharp directions are against you: Curvature analysis of activation steering. arXiv preprint arXiv:2610.16084, 2026.arxiv.org/abs/2610.16084
  6. [6]Enrique Balp-Straffon, Chih-Hao Hsu, Rushiraj Gadhvi, Sunishchal Dev, Callum Stuart McDougall, and Anusha Mujumdar. How language models choose sides: Internal representations of instruction hierarchy. In ICML 2026 Workshop on Mechanistic Interpretability, 2026.
  7. [7]Carolina Camassa and Derek Shiller. Do as I say, not as I do: Instruction-induction conflict in LLMs. In Sci-FM Workshop at the Conference on Language Modeling (COLM), 2026.
  8. [8]Gen Dong, Yanjie Gao, Liqun Li, Tianyin Xu, Yu Hua, and Fan Yang. Agent skills can be harmful: An empirical study of skill-induced failures in LLM agents. arXiv preprint arXiv:2608.11888, 2026.arxiv.org/abs/2608.11888
  9. [9]Yilin Geng, Haonan Li, Honglin Mu, Xudong Han, Timothy Baldwin, Omri Abend, Eduard Hovy, and Lea Frermann. Control illusion: The failure of instruction hierarchies in large language models. In Proceedings of the AAAI Conference on Artificial Intelligence, volume 40, pages 30816–30824, 2026.
  10. [10]Tingxu Han, Yi Zhang, Wei Song, Chunrong Fang, Zhenyu Chen, Youcheng Sun, and Lijie Hu. Swe-skills-bench: Do agent skills actually help in real-world software engineering?, 2026. URL https://arxiv.org/abs/2603.15401.
  11. [11]Enhao Huang, Xinye Zhao, Yiming Li, Bingrun Yang, Nanjun Zhou, Chunshu Xia, Hongwei Yao, and Zhan Qin. SkillFusion: Towards reliable multi-skill composition for LLM agents. arXiv preprint arXiv:2610.15481, 2026.arxiv.org/abs/2610.15481
  12. [12]Mykhailo Kozyrev, Andrei Kozyrev, and Anton Podkopaev. Skill issue: Lessons from optimizing repository SKILLs for coding agents. arXiv preprint arXiv:2609.12742, 2026.arxiv.org/abs/2609.12742
  13. [13]Xiangyi Li, Yimin Liu, Wenbo Chen, Bingran You, Zonglin Di, Yifeng He, et al. SkillsBench: Benchmarking how well agent skills work across diverse tasks. arXiv preprint arXiv:2602.12670, 2026.arxiv.org/abs/2602.12670
  14. [14]Hongji Pu, Xinyuan Song, and Liang Zhao. Skillops: Managing llm agent skill libraries as self-maintaining software ecosystems. arXiv preprint arXiv:2605.13716, 2026.arxiv.org/abs/2605.13716
  15. [15]Nina Rimsky, Nick Gabrieli, Julian Schulz, Meg Tong, Evan Hubinger, and Alexander Turner. Steering llama 2 via contrastive activation addition. In Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), pages 15504–15522, 2024.arxiv.org/abs/2312.06681
  16. [16]Mehrshad Saadatinia, Parsa Razmara, Ardalan Aryashad, Ali Abbasi, and Seyedamin Azizi. Circuitsteer: Geometrically aligned multi-layer steering via sparse autoencoder circuits. arXiv preprint arXiv:2608.05732, 2026.arxiv.org/abs/2608.05732
  17. [17]Hongwen Song and Song Wei. More skills, worse agents? skill shadowing degrades performance when expanding skill libraries. arXiv preprint arXiv:2605.24050, 2026.arxiv.org/abs/2605.24050
  18. [18]Alexander Matt Turner, Lisa Thiergart, Gavin Leech, David Udell, Juan J. Vazquez, Ulisse Mini, and Monte MacDiarmid. Steering language models with activation engineering. arXiv preprint arXiv:2308.10248, 2023.arxiv.org/abs/2308.10248
  19. [19]Eric Wallace, Kai Xiao, Reimar Leike, Lilian Weng, Johannes Heidecke, and Alex Beutel. The instruction hierarchy: Training LLMs to prioritize privileged instructions. arXiv preprint arXiv:2404.13208, 2024.arxiv.org/abs/2404.13208
  20. [20]Yangbo Wei, Zhen Huang, Shaoqiang Lu, Junhong Qian, Qifan Wang, Chen Wu, and Lei He. SkillSmith: Co-evolving skills and tools for self-improving agent systems. arXiv preprint arXiv:2606.01314, 2026.arxiv.org/abs/2606.01314
  21. [21]Peng Xia, Kaide Zeng, Jiaqi Liu, Can Qin, Fang Wu, Yiyang Zhou, Caiming Xiong, and Huaxiu Yao. Agent0: Unleashing self-evolving agents from zero data via tool-integrated reasoning. In Conference on Language Modeling (COLM), 2026. arXiv:2511.16043.arxiv.org/abs/2511.16043
  22. [22]Chaoliang Yan, Zihao Xu, Yuekang Li, Shangzhi Xu, Yi Liu, Gelei Deng, and Siqi Ma. One skill too many: How co-installed skills conflict in coding agents. arXiv preprint arXiv:2610.11647, 2026.arxiv.org/abs/2610.11647
  23. [23]Yifan Yang, Ziyang Gong, Weiquan Huang, Qihou Yang, Ziwei Zhou, Zisu Huang, et al. SkillOpt: Executive strategy for self-evolving agent skills. arXiv preprint arXiv:2605.23904, 2026.arxiv.org/abs/2605.23904
  24. [24]Qi Zhang, Zhaopeng Feng, Xiaonan Shi, Xiaomeng Hu, Chu Liu, Pengjun Xie, Xiaobin Wang, Jieping Ye, Bryan Hooi, Haobo Wang, and Junbo Zhao. SkillComposer: Learning to evolve agent skills for specification and generalization. arXiv preprint arXiv:2606.06079, 2026.arxiv.org/abs/2606.06079
  25. [25]Jeffrey Zhou, Tianjian Lu, Swaroop Mishra, Siddhartha Brahma, Sujoy Basu, Yi Luan, Denny Zhou, and Le Hou. Instruction-following evaluation for large language models. arXiv preprint arXiv:2311.07911, 2023.arxiv.org/abs/2311.07911

Paper details

vlnc:W_fqedquhu
v1 · latestHistory (1)

published · Fresh — added to the Hub within the last 30 days

added ·

Usage

views · 0

downloads · 0

A view counts once per browser per day, a download each time the PDF is requested.

CC BY 4.0

Original source

  • Computer Science

Not recorded for this paper · View statement →

Looking for related papers…
Contents