SkillFusion: Towards Reliable Multi-Skill Composition for LLM Agents
Organizations: Zhejiang University · Nanjing University · Nanyang Technological University · City University of Hong Kong
Abstract
Independently authored skills can impose incompatible requirements, competing preferences, and redundant instructions when jointly loaded by an LLM agent. We propose SkillFusion, an offline compiler that reconciles these interactions into a reusable merged skill. Its central idea is to make composition decisions explicit through typed, scoped constraints linked to their source directives. A type-scope gate selects candidate interactions, while selective fallback revisits pairs potentially missed by structural pruning. A classifier identifies interaction types, and an adversarial verifier re-examines uncertain judgments. The resolver applies conditional routing or explicit priorities to hard conflicts, verified abstraction to soft conflicts, and deduplication to redundant instructions. Source-linked checks guide synthesis and compression, and metadata synthesis supports discovery of the merged skill. The resulting artifact retains associated scripts and resources and can be reused across tasks and executor models. SkillFusion achieves the highest mean Success among evaluated non-oracle methods on all three agent benchmarks and on both transfer benchmarks across three executor models. At the largest tested instruction configurations, it achieves over 2.5 times the Success of unresolved multi-skill loading, highlighting the growing value of reconciliation as composition becomes more demanding. The code will be open-sourced after the review process concludes.
Figures & tables
| SpreadsheetBench | WebArena | SWE-bench | ||||
|---|---|---|---|---|---|---|
| Method | C | R | C | R | C | R |
| No Skill | – | – | – | – | – | – |
| Single-Skill Oracle | 53.4 | – | 77.1 | – | 99.1 | – |
| MSL | 48.7 | 0.0 | 74.9 | 0.0 | 99.3 | 0.0 |
| Naive Concat | 62.1 | 0.0 | 78.3 | 0.0 | 100.0 | 0.0 |
| LLM Rewrite | 57.3 | 22.3 | 79.4 | 38.9 | 99.7 | 15.8 |
| Variant | P / R / F1 | Candidates | API | Pres. | S60 | Sheet |
|---|---|---|---|---|---|---|
| SF-strict | 0.878 /0.600/0.713 | 612 | 1.000 | 0.883 | 0.773 | 0.476 |
| No gate | 0.696/ 0.917 /0.791 | 5,216 | 7.610 | 0.717 | 0.787 | 0.457 |
| SF-final | 0.847/0.833/ 0.840 | 1,184 | 1.820 | 0.900 | 0.799 | 0.488 |
| Condition | Success | Compliance |
|---|---|---|
| Single-skill reference | 0.823 | 0.887 |
| Hard conflict | 0.716 | 0.745 |
| Redundancy / dilution | 0.758 | 0.802 |
| Soft conflict / ambiguity | 0.776 | 0.816 |
| Joint condition | 0.631 | 0.654 |
Appendix figures & tables17 assets
Supplementary material from the paper’s appendix.
Appendix
| Variant | Rcl. | Pres. | Act. | Compr. |
|---|---|---|---|---|
| SF-final | 0.833 | 0.900 | 1.000 | 0.108 |
| SF-strict | 0.583 | 0.883 | 1.000 | 0.113 |
| w/o typed repr. | 0.767 | 0.883 | 1.000 | 0.104 |
| w/o scope norm. | 0.717 | 0.867 | 0.988 | 0.096 |
| No gate | 0.917 | 0.717 | 0.957 | 0.000 |
| w/o conflict types | 0.833 | 0.850 | 1.000 | 0.075 |
| SpreadsheetBench | WebArena | SWE-bench |
| +4.8 pp [2.9, 6.6] | +4.0 pp [2.0, 6.0] | +3.8 pp [1.3, 6.3] |
| Benchmark | RCR | Strict | Final | RCR/strict | Final/strict | RCR/final |
|---|---|---|---|---|---|---|
| SpreadsheetBench | 92,000 | 100,000 | 174,000 | 0.920 | 1.740 | 0.529 |
| WebArena | 96,000 | 100,000 | 168,000 | 0.960 | 1.680 | 0.571 |
| SWE-bench | 88,000 | 100,000 | 155,000 | 0.880 | 1.550 | 0.568 |
| Variant | TP | FP | FN | TN | Precision | Recall | F1 |
|---|---|---|---|---|---|---|---|
| SF-strict | 36 | 5 | 24 | 235 | 0.878 | 0.600 | 0.713 |
| No gate | 55 | 24 | 5 | 216 | 0.696 | 0.917 | 0.791 |
| SF-final | 50 | 9 | 10 | 231 | 0.847 | 0.833 | 0.840 |
| Variant | Candidates | API ratio | S60 Pres. | S60 Success | Spreadsheet Success |
|---|---|---|---|---|---|
| SF-strict | 612 | 1.000 | 0.883 | 0.773 [0.761, 0.785] | 0.476 [0.457, 0.495] |
| No gate | 5,216 | 7.610 | 0.717 | 0.787 [0.773, 0.800] | 0.457 [0.438, 0.476] |
| SF-final | 1,184 | 1.820 | 0.900 | 0.799 [0.788, 0.810] | 0.488 [0.467, 0.510] |
| Cause | Strict misses | Recovered | Remaining |
|---|---|---|---|
| Type assignment | 8 | 5 | 3 |
| Scope normalization | 6 | 4 | 2 |
| Cross-type conflicts | 5 | 3 | 2 |
| Scope overlap | 3 | 2 | 1 |
| Classifier | 1 | 0 | 1 |
| Annotation ambiguity | 1 | 0 | 1 |
| Threshold | TP | FP | Triggered | Rate | Flipped | Rate | P / R / F1 | API |
|---|---|---|---|---|---|---|---|---|
| 0.50 | 49 | 10 | 232 | 19.6% | 45 | 3.8% | 0.831/0.817/0.824 | 1.610 |
| 0.65 | 50 | 9 | 412 | 34.8% | 84 | 7.1% | 0.847/ 0.833 / 0.840 | 1.820 |
| 0.80 | 49 | 8 | 726 | 61.3% | 126 | 10.6% | 0.860 /0.817/0.838 | 2.190 |
| Benchmark | Source | Covered | Preservation |
|---|---|---|---|
| SpreadsheetBench | 160 | 143 | 0.894 |
| WebArena | 78 | 71 | 0.910 |
| SWE-bench | 108 | 100 | 0.926 |
| Category | Count |
|---|---|
| Omitted scope | 9 |
| Vague compromise | 7 |
| Unresolved priority | 5 |
| Deduplication semantic change | 4 |
| Global/local confusion | 3 |
| Unsupported directive | 2 |
| Statistic | SpreadsheetBench | WebArena | SWE-bench |
|---|---|---|---|
| Source | 160 | 78 | 108 |
| Behavior | 134 | 75 | 103 |
| Format | 17 | 0 | 5 |
| Tool | 3 | 1 | 0 |
| Priority | 0 | 2 | 0 |
| Style | 6 | 0 | 0 |
| Skill | Source | Description |
| SpreadsheetBench Verified : spreadsheet and data workflows | ||
| xlsx | fcakyon/claude-codex-settings | Read, edit, create, and convert spreadsheet files (.xlsx, .xlsm, .csv, .tsv) with formula-aware workflows. |
| spreadsheet | fcakyon/claude-codex-settings | Spreadsheet creation, editing, analysis, and formatting with cached recalculation and visual review. |
| xlsx-toolkit | borghei/claude-skills | Audit Excel workbooks for sheet count, formula density, external references, named ranges, and data validation. |
| data-analysis | claude-office-skills/skills | Analyze spreadsheet data, generate insights, create visualizations, and build reports from Excel/CSV data. |
| chart-designer | claude-office-skills/skills | Design data visualizations and chart configurations for ECharts, Chart.js, and other charting libraries. |
| # | Seed Name | Creation Prompt (abbreviated) |
|---|---|---|
| 1 | Type Safety | Enforce comprehensive type annotations on all parameters and returns; enable strict mypy-level checking; add runtime type guards for public APIs. |
| 2 | Functional Purity | Write pure functions with no side effects; prefer immutable data structures; use function composition over imperative control flow. (contrast: #10) |
| 3 | Defensive Validation | Validate all inputs at function boundaries; check boundary conditions explicitly; raise informative errors for degenerate cases. (contrast: #6, #11) |
| 4 | Performance First | Prefer iterative over recursive solutions; use generators for memory efficiency; avoid unnecessary object allocations. (contrast: #12) |
| 5 | Documentation & Readability | Require NumPy-style docstrings; use descriptive variable names ( 3 chars); add inline comments for non-obvious logic. (contrast: #6) |
| 6 | Maximal Conciseness | Favor single-expression solutions; use list comprehensions and ternary operators; minimize line count while preserving correctness. (contrast: #3, #5) |
LLM Agents
Large language model agents use language models to plan, use tools, and act across multi-step tasks and environments.
See all 681 papers