Lifelong skill routing (Skill++) and HarnessRouter / UHP
Sources: Skill++, arXiv 2611.00544 (surfaced by @dair_ai with a DAIR Academy page) · HarnessRouter repo (via @akshay_pachaar) · raw: raw/twitter/feed/2026-11-03-evening-210222-ranked.json
TL;DR. Agents now carry skill libraries. Each skill has a name, a description and a body. Under progressive disclosure, a router (usually the LLM itself) picks skills by name and description alone, then loads only the bodies it picked. As the library grows, a new skill with similar metadata can displace an older one. Routing that used to work breaks, even though neither the old skill nor the router changed. Skill++ frames this as lifelong skill routing, a class-incremental continual-learning problem. Its fix touches only metadata. Each incoming skill's name and description are rewritten to say what it supports, how it differs from its closest existing neighbour, and what it excludes. There is no router training and no labelled data. With 731 skills accumulated over ten sessions, the router selects every required skill for 76.3% of queries, against 36.4% with the original metadata. Substitution errors nearly disappear and crowding errors halve. The gains hold across three benchmarks, five routers and the Codex CLI harness.
flowchart LR
N["New skill<br/><small>name + description</small>"] --> K["Nearest skill<br/><small>closest existing metadata</small>"]
K --> W["Rewrite<br/><small>supports, differs, excludes</small>"]
W --> Lib["Library<br/><small>731 skills, 10 sessions</small>"]
Q["Query"] --> R{"Router<br/><small>reads metadata only</small>"}
Lib --> R
R -->|76.3% full recall| OK["Right skills<br/><small>vs 36.4% before</small>"]
N -.->|no rewrite| X["Interference<br/><small>substitution, crowding</small>"]
classDef input fill:#d0ebff,stroke:#1971c2,color:#1b1b1b,stroke-width:2px
classDef core fill:#e5dbff,stroke:#6741d9,color:#1b1b1b,stroke-width:2px
classDef loop fill:#fff3bf,stroke:#f08c00,color:#1b1b1b,stroke-width:2px
classDef exit fill:#d3f9d8,stroke:#2f9e44,color:#1b1b1b,stroke-width:2px
classDef err fill:#ffe3e3,stroke:#e03131,color:#1b1b1b,stroke-width:2px
class N,Q input
class K,W core
class R loop
class Lib,OK exit
class X err
linkStyle 6 stroke:#2f9e44,stroke-width:2px
linkStyle 7 stroke:#e03131,stroke-width:2px
HarnessRouter / UHP (same evening, practitioner side)
- What it is. UHP (Unified Harness Protocol) is an open interface for running a task on any agent harness: Codex, Claude Code, Gemini CLI, Hermes, Pi and others. HarnessRouter is the Apache-2.0 server that implements it. The backend sends a task with a
harness_id. The router starts that harness in its own session, streams progress, and returns files, artifacts and failures through one interface. It supports 30 harness bases. - Routing claim. Its benchmarks say that changing only the harness, with the model fixed, cut cost 25-64% on healthcare-compliance tasks. Changing both harness and model widened the cost spread to 99.8%. This is vendor-reported, but it fits the wiki's growing evidence that the harness is a routing dimension in its own right.
Relation to prior wiki
- Extends LLM routing from "which model" to "which skill" and "which harness". Routed Continual Learning (FAIR, 11-01) routed each run to a cluster of past trajectories with its own memory. Skill++ adds the failure that every growing routed library must face: additions interfere with old routes. This is the same stability-plasticity tradeoff the 10-27 "Are Self-Evolving Agents Continual Learners?" study measured (r = -0.72 between plasticity and stability).
- Pairs with today's continual harness evolution study (summary), where Meta-Harness went from 94.0% to 32.0% on SWE-Bench after five rounds of evolving on another dataset. Skill++ is a local, metadata-scoped edit, which is exactly the kind of edit that study and EMMA (10-29, one owner per self-edit) suggest is safe.
- Open: Skill++ assumes the description matches the body. Public skills often do not, as the paper itself notes. A rewrite made from the body, not the stated description, is the obvious next step.