# Routing Card Authoring

Use whenever a build emits or repairs .agentlas/routing-card.json, the shared card...

- Repository: https://github.com/agentlas-ai/Agentlas-OS (1593 stars)
- Category: AI and agents
- License: Apache-2.0
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add agentlas-ai/Agentlas-OS --skill routing-card-authoring -g -a claude-code -y`
Codex: `npx skills add agentlas-ai/Agentlas-OS --skill routing-card-authoring -g -a codex -y`
Cursor: `npx skills add agentlas-ai/Agentlas-OS --skill routing-card-authoring -g -a cursor -y`
Gemini CLI: `npx skills add agentlas-ai/Agentlas-OS --skill routing-card-authoring -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add agentlas-ai/Agentlas-OS`

## Description

Use whenever a build emits or repairs .agentlas/routing-card.json, the shared card contract for the single-agent builder, the team builder, and the packager. States what belongs in every field, which fields the hub can actually match on, and which fields silently break matching when a sentence leaks into them.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Routing Card Field Spec, what goes in every field, and where it lands

One card, four builders. `10-single-agent-builder`, `20-multi-agent-team-builder`,
`30-agentlas-packager`, and `40-session-agent-builder` differ in what they
assemble, but the routing card is the same artifact with the same rules in all
four. This file is the reference
they share, and `templates/routing-card.example.json` is a complete card that
passes `schemas/routing-card.schema.json`.

## Why the fields behave the way they do

**The real matching is sentence-to-sentence.** The slot's `task` text is
   compared semantically against the card's `summary`. A card whose summary
   names its actual deliverable outranks a card with a perfect id list.

So the card has two jobs, and mixing them is the classic defect: **short ids
for retrieval, whole sentences for judgement.** A sentence that leaks into an
id field becomes a slug nothing else can ever match.

## Field table

Columns: what the field is for · what the hub does with it · what to write.

### Identity and display

| Field | Hub use | What to write |
|---|---|---|
| `schemaVersion` | none | Exactly `"routing-card/2.0"`. |
| `card_version` | none | Semver of this card's content, bumped when you edit it. |
| `id` | identity | `local/<package-slug>` before upload. |
| `canonical_id` | identity | Stable cross-registry id when one exists, else omit. |
| `type` | hard filter (`entityKind`) | `"agent"`, `"team"`, or `"plugin"`. A team means an orchestrator owns workers; do not label a single worker a team. |
| `name` / `name_ko` | display + lexical retrieval | The job title a human would search for. Not a product pun. |
| `aliases` | lexical retrieval | Other phrasings a requester might type, including Korean. Cheap and safe to add. |
| `supersedes` | lineage | Ids this card replaces. |

### The sentences that actually win matches

The rest: https://github.com/agentlas-ai/Agentlas-OS/blob/HEAD/.agents/skills/routing-card-authoring/SKILL.md
