Agent skill

Porting Agent To Hub

by amd in amd/gaia

A skill your agent uses when taking an existing in-repo GAIA agent to a published, day-one-usable hub package — porting a legacy agent under hub/agents/<id/, deciding whether an agent should ship at…

MITAuto-check passedDevelopment

Install Porting Agent To Hub

skills CLI
$ npx skills add amd/gaia --skill porting-agent-to-hub -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install amd/gaia porting-agent-to-hub --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/amd/gaia.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/porting-agent-to-hub .claude/skills/porting-agent-to-hub && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
porting-agent-to-hub
GitHub stars
1.6k
Token cost
~2.4k tokens
SKILL.md length
1,254 words
Files
1
Skills in repo
44
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when taking an existing in-repo GAIA agent to a published, day-one-usable hub package — porting a legacy agent under hub/agents/<id/, deciding whether an agent should ship at…

  • Works in 8 steps: Decide whether it should ship at all → Capability-truth audit → Generalize and harden → …
  • Taking an existing in-repo GAIA agent to a published
  • SKILL.md covers The Iron Rule, Phase 0 — Decide whether it…, Phase 1 — Capability-truth audit and Phase 2 — Generalize and harden, plus 8 more sections
  • Calls docker

What it does

Porting Agent To Hub is an agent skill from amd/gaia. Use when taking an existing in-repo GAIA agent to a published, day-one-usable hub package — porting a legacy agent under hub/agents/<id/, deciding whether an agent should ship at all, or answering why an agent 'is not ready to publish'. Also use when an agent's manifest advertises capability its code does not deliver, or when an agent has a README but no SPEC/SKILL/CHANGELOG/SCORECARD.

Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Changelog and release notes and Technical documentation. The repository describes itself as: Build AI agents for your PC. The licence is MIT.

When your agent uses it

  • Taking an existing in-repo GAIA agent to a published
  • Day-one-usable hub package — porting a legacy agent under hub/agents/<id/
  • Deciding whether an agent should ship at all
  • Answering why an agent is not ready to publish

Example prompts

  • “is not ready to publish”
  • “/porting-agent-to-hub”

Requirements

  • Python 3
  • Docker

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Decide whether it should ship at all
  2. Capability-truth audit
  3. Generalize and harden
  4. Behavioral tests
  5. Eval: corpus first, then scorecard
  6. The parity kit (what email has)
  7. Versioning and CI/CD
  8. Day-one usability gate

What it can do on your machine

Read from SKILL.md and the folder at commit 05fb50b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • docker

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use docker, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Porting Agent To Hub loads about 2.4k tokens when it runs. Until then it costs about 103 tokens; SKILL.md has 1,254 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~103
When it runs · the whole SKILL.md, loaded when a task matches
~2.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from amd/gaia at commit 05fb50b, republished under its MIT licence (© amd). 1,254 words, ~2,439 tokens.

Download SKILL.mdSave it as .claude/skills/porting-agent-to-hub/SKILL.md (or your agent's skills folder).
name
porting-agent-to-hub
description
Use when taking an existing in-repo GAIA agent to a published, day-one-usable hub package — porting a legacy agent under hub/agents/<id>/, deciding whether an agent should ship at all, or answering why an agent 'is not ready to publish'. Also use when an agent's manifest advertises capability its code does not deliver, or when an agent has a README but no SPEC/SKILL/CHANGELOG/SCORECARD.

Porting an Agent to a Hub-Native Package

Take an agent that exists only as in-repo Python and make it a published package a user can install from the Agent Hub and use in Agent UI v2 immediately.

The email agent is the template — hub/agents/email/python/ + hub/agents/email/npm/ + .github/workflows/release_agent_email.yml. It is the only agent in the repo that clears the bar; every phase below points at the file in it you are mirroring.

This skill is the porting flow. For adjacent work use: gaia-build-agent (a NEW agent) · agent-hub-release (cutting the release) · adding-eval-scorecard (the scorecard mechanics) · integrate-hub-agent (consuming one from an app).

The Iron Rule

Generalize before you document.

Docs, SPEC, SKILL and SCORECARD written against behavior that is about to change are wasted work — and a scorecard is meaningless until the capability is stable. Phases run in order. Do not jump to the parity kit because it looks mechanical.

Phase 0 — Decide whether it should ship at all

Not every agent should be ported. Before any work, get a verdict: PORT / MERGE INTO <target> / DISCARD (keep as in-repo example) / DEFER.

Check for a more general agent that already covers the use case — in in the other hub agents, and in ChatAgent's profiles. Duplicating a capability into the catalog is worse than not shipping.

Signals it is not a catalog agent: category: examples / security_tier: experimental; absent from setup.py's AGENT_WHEEL_PACKAGES; no gaia.agent entry point; a module docstring saying it exists to validate some other feature; a named successor already in flight.

Phase 1 — Capability-truth audit

Read the manifest's description, tags, tools_count and interfaces:, then prove each claim against the code. Assume the manifest is lying until checked — in the 2026-07 fleet audit it was wrong for most agents, in both directions.

  • Does every advertised verb have a reachable tool? (An agent advertising CSV analysis that composes no file mixin cannot open a file.)
  • Does every conversation_starter have a tool behind it? Agent UI shows these as first-run prompts, so a starter for a missing capability means the user's first click fails. Worse than a stale description — check these first.
  • Does tools_count match the real @tool surface plus composed mixins? It lives in two places — gaia-agent.yaml and the build_registration() call in __init__.py. Check both; the registry copy is what the UI reads.
  • Do the agent's own defaults work end to end? (A language="python" default that fails a TypeScript-only validator is a mis-scope, not a bug.)
  • Does interfaces: claim a mode nothing serves — and is the dependency for that mode even declared? api_server/mcp_server need amd-gaia[api] in both pyproject.toml and the manifest's python.dependencies. Most agents declare the interface against plain amd-gaia, so the mode is not merely unimplemented, it is uninstallable — and it fails on a clean install, not in CI. word-count is the package that gets this right.
  • Are preflights checking the right thing? docker --version tests the binary; the agent needs the daemon. A preflight can be present and still wrong.

Record every gap. This list is the port's actual scope.

Phase 2 — Generalize and harden

  • Close every Phase 1 gap: implement the advertised capability, or narrow the manifest to the truth. Both are valid; shipping the mismatch is not.
  • Remove single-instance / single-machine assumptions — an author's own service schema baked into a system prompt is the canonical case.
  • Inject configuration instead of hardcoding paths, URLs, models, ports.
  • Fail loudly (CLAUDE.md): no except …: pass, no default-to-empty, no swallowed retry. Errors name what failed, what to do, and where to look.
  • Declare and preflight external dependencies (a daemon, a binary, credentials, VRAM). Check the service, not just the binary on PATH.

Phase 3 — Behavioral tests

The fleet-wide failure mode: tests import the agent, construct it, and assert a tool name appears in the registry. They never call a tool.

Every @tool needs a test that invokes it, over a fixture harness (temp FS, mocked network, temp scratchpad DB) with _TOOL_REGISTRY isolation. Cover the cold state a new user is in — empty index, empty DB, first run.

Phase 4 — Eval: corpus first, then scorecard

Two halves, and the expensive one is not the code:

  • The oracle (not automatable): a labelled, human-curated ground-truth corpus plus a deterministic fixture harness so the eval needs no live service and no LLM judge. Email's lives in tests/fixtures/email/ — _stub_inbox.mbox plus a per-task ground truth (action_items_, briefing_, drafting_, followups_, longthread_) driven through FakeGmailBackend. ls it; there is no single ground_truth.json.
  • The mechanism: the adapter, SCORECARD.md, the scorecard_gate.py wiring and a refresh workflow → use adding-eval-scorecard.

Pick the metric before starting, and prefer deterministic exact-match over a judge. Where no honest metric exists, say so in the scorecard rather than reporting a number that means nothing.

Beware the measurement trap: an agent_type in the scenario corpus may name a ChatAgent prompt profile, not your package. A green scenario can be measuring something else entirely.

Show full SKILL.md (457 more words)Show less

Phase 5 — The parity kit (what email has)

SurfaceMirror from emailConsumed by
README SPEC SKILL CHANGELOG EVALUATIONhub/agents/email/npm/hub page + Agent UI (the Worker reads all of them)
CAPABILITY_MATRIX.mdpackaging/capability_matrix.pythe "what can it do" surface
SCORECARD.mdpackaging/gen_scorecard.pyrelease gate
server.py, api_routes.py, query_routes.py/health, /version, POST /v1/<id>/query (SSE)the daemon + UI chat
openapi.<id>.json, specification.htmlexport_openapi.py, spec_html.pythe contract
playground + playground_urlplayground_html.py"try before install"
packaging/freeze, stamp_version, smoke_test, lock, publishthe release
npm clienthub/agents/email/npm/src/integrators

Generate these; do not hand-write them per agent. Anything derivable from the manifest and the tool registry should be — tools_count especially. A number a human types is a number that drifts.

Doc-root gotcha: email's canonical docs live in its npm package, not the Python one. Do not assume python/README.md is the source of truth.

Phase 6 — Versioning and CI/CD

Each agent versions and ships independently.

  • One source of version truth (version.py), propagated by a stamp script, with a test asserting pyproject.toml ≡ gaia-agent.yaml ≡ version.py.
  • Tag namespace agent-pkg-<id>-v* — never v*, which fires the core release.
  • Its own test / eval / scorecard-refresh / release workflows, generated from the manifest. → agent-hub-release for the release lane itself.
  • After publishing, assert the live catalog entry matches the repo manifest for that version. Published-vs-repo drift is real and silent.

Phase 7 — Day-one usability gate

Publishing is not the finish line — usable on install is. Script it:

catalog index → install → daemon spawns the sidecar → /health passes → /query returns a rendered SSE stream in the UI → the playground URL loads.

If any step needs a human, the agent is not day-one usable. Also confirm an AgentSidecarSpec exists (or the spec table is manifest-driven), every declared renderTypes[] has a renderer with a fallback, and conversation_starters are present.

Red flags — stop and go back a phase

  • Writing SPEC/SKILL/SCORECARD while the capability is still being changed
  • Typing a tools_count by hand
  • A scorecard produced without a corpus, or with hand-authored numbers
  • "The tests pass" when no test calls a tool
  • Copy-pasting another agent's workflow instead of generating it
  • Porting an agent nobody gave a Phase 0 verdict for
  • Treating interfaces: api_server: true as satisfied because the manifest says so
  • Checking a capability claim in gaia-agent.yaml only — the same claims are duplicated, unguarded, in build_registration()
  • Concluding "it works" from a dev box that already has the extras installed

Reporting the port

The docs you write (README/SPEC/SKILL/CHANGELOG) and your report back to the user both follow CLAUDE.md → How You Communicate: lead with what the agent now does for a user and what still doesn't work, then the phase-by-phase evidence underneath. Name any gate you skipped — an unstated skip reads as a pass.

Reference

  • Template: hub/agents/email/python/, hub/agents/email/npm/
  • Generic 5-interface server (TUI/CLI/pipe/API/MCP, manifest-gated): src/gaia/agents/base/server.py — run_agent_cli()
  • Sidecar registration: src/gaia/daemon/sidecars/spec.py
  • Manifest parsing: src/gaia/hub/manifest.py
  • Catalog readers: workers/agent-hub/src/storage.ts
  • Scorecard format: docs/reference/eval-scorecard.mdx

© amd, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/porting-agent-to-hub of amd/gaia.

Open the folder on GitHubat commit 05fb50b

Compare with similar skills

Porting Agent To Hub next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Porting Agent To Hub compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Porting Agent To Hub this skillamd/gaia1.6k—~2.4kAutomated safety check: PassMIT
Simple Englishmoeru-ai/airi50k2 repos~4.6kAutomated safety check: PassMIT
Ccb GitHubSeemSeam/claude_codex_bridge3.6k—~4.9kAutomated safety check: PassCustom licence
Golang Documentationunxed/f42413 repos~3.5kAutomated safety check: PassMIT
Simple Englishropensci/ckanr1043 repos~2kAutomated safety check: PassMIT
Opik Documentation Patternscomet-ml/opik22k—~1.3kAutomated safety check: PassApache-2.0

Similar skills

  • Simple English

    moeru-ai/airi

    Write or rewrite technical text with the rules of ASD-STE100 Simplified Technical English so it is clear, unambiguous, and free of AI slop.

    50k GitHub starsUsed in 2 repos~4.6k tokens
    DevelopmentAuto-check passed
  • Ccb GitHub

    SeemSeam/claude_codex_bridge

    Maintain this CCB project's GitHub-facing release and npm publication surface.

    3.6k GitHub stars~4.9k tokensUpdated today
    DevelopmentAuto-check passed
  • Comprehensive documentation guide for Golang projects, covering godoc comments, README, CONTRIBUTING, CHANGELOG, Go Playground, Example tests, API docs, and llms.txt.

    241 GitHub starsUsed in 3 repos~3.5k tokens
    DevelopmentAuto-check passed
  • Simple English

    ropensci/ckanr

    Write or rewrite text in plain, layman-readable English in the spirit of ASD-STE100 Simplified Technical English: short sentences, active voice, simple tenses, one word one meaning, condition before…

    104 GitHub starsUsed in 3 repos~2k tokens
    DevelopmentAuto-check passed
  • Rules for writing PR descriptions, changelog entries and feature documentation in the Opik repository, including the exact headings that CI requires.

    22k GitHub stars~1.3k tokensUpdated today
    DevelopmentAuto-check passed
  • Release

    jrswab/axe

    Prepare code for release (version bumps, changelog, README updates) and create an annotated tag to trigger the GoReleaser workflow.

    895 GitHub stars~1.4k tokensUpdated 3 days ago
    DevelopmentAuto-check passed

More from amd/gaia

All 44 skills in this repo
  • Adds a release eval scorecard to a GAIA hub agent by writing a harness adapter, running a real eval, and wiring the result into the agent's README and release gate.

    1.6k GitHub stars~2.6k tokensUpdated today
    Auto-check passed
  • Walks through releasing a GAIA sidecar agent as a frozen binary plus npm client through the tag-triggered Agent Hub CI pipeline, with a human gate before publishing.

    1.6k GitHub stars~3.6k tokensUpdated today
    Auto-check passed
  • Mines local Claude Code session transcripts with a deterministic Python pipeline to show what the agent is actually used for, how often it fails and what it costs.

    1.6k GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Benchmarks AMD's GAIA agent against Claude Code and across models on quality, honesty, steps, tokens, time and real cost, using gaia eval tasks.

    1.6k GitHub stars~1.8k tokensUpdated today
    Auto-check passed
  • Guides safe code changes by finding the right file with grep or semantic search, reading before editing, reproducing bugs first, and proving a fix with a real test run.

    1.6k GitHub stars~2.1k tokensUpdated today
    Auto-check passed
  • Walks through scaffolding, writing and testing a new GAIA agent as a Python class with the SDK, from the base Agent subclass to registered tool methods.

    1.6k GitHub stars~1.5k tokensUpdated today
    Auto-check passed

Categories

Questions about Porting Agent To Hub

What does Porting Agent To Hub do?

A skill your agent uses when taking an existing in-repo GAIA agent to a published, day-one-usable hub package — porting a legacy agent under hub/agents/<id/, deciding whether an agent should ship at…. Porting Agent To Hub is an agent skill from amd/gaia. Use when taking an existing in-repo GAIA agent to a published, day-one-usable hub package — porting a legacy agent under hub/agents/<id/, deciding whether an agent should ship at all, or answering why an agent 'is not ready to publish'.

When should I use Porting Agent To Hub?

Porting Agent To Hub fits situations like: taking an existing in-repo GAIA agent to a published; day-one-usable hub package — porting a legacy agent under hub/agents/<id/; deciding whether an agent should ship at all; answering why an agent is not ready to publish.

How do I install Porting Agent To Hub in Claude Code?

Run `npx skills add amd/gaia --skill porting-agent-to-hub -a claude-code`. Or copy the skill folder (.claude/skills/porting-agent-to-hub in amd/gaia) into .claude/skills/porting-agent-to-hub in your project. Claude Code loads it when a task matches its description.

How do I install Porting Agent To Hub in Codex?

Run `npx skills add amd/gaia --skill porting-agent-to-hub -a codex`. Or copy the skill folder (.claude/skills/porting-agent-to-hub in amd/gaia) into .agents/skills/porting-agent-to-hub in your project. Codex loads it when a task matches its description.

Can I use Porting Agent To Hub in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add amd/gaia --skill porting-agent-to-hub -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/porting-agent-to-hub, .gemini/skills/porting-agent-to-hub, .github/skills/porting-agent-to-hub and .opencode/skills/porting-agent-to-hub in your project.

What does Porting Agent To Hub need to run?

Going by SKILL.md and its folder, Porting Agent To Hub needs the command-line tools its instructions call (docker). Our summary lists: Python 3; Docker.

Does Porting Agent To Hub access the network?

SKILL.md contains no URLs. Its commands use docker, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Porting Agent To Hub safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Porting Agent To Hub use?

Porting Agent To Hub is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Porting Agent To Hub use?

About 2.4k tokens (SKILL.md is roughly 9.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Porting Agent To Hub?

Skills that share tags, products or a category with Porting Agent To Hub: Simple English (moeru-ai/airi, 50k stars), Ccb GitHub (SeemSeam/claude_codex_bridge, 3.6k stars), Golang Documentation (unxed/f4, 241 stars) and Simple English (ropensci/ckanr, 104 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Porting Agent To Hub?

amd (a GitHub organization) maintains it in amd/gaia, which has 1,580 GitHub stars. The repository holds 44 skills in this directory. The repository was last updated on October 8, 2026.

Source: amd/gaia on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.