feat(skills): add the catalog entry skill for Hyperloom bootstrap - #1515
Open
lishuoshuo-amd wants to merge 7 commits into
Open
lishuoshuo-amd wants to merge 7 commits into
lishuoshuo-amd wants to merge 7 commits into
Conversation
amd/skills now federates every catalog skill from the product repo that owns it, so `hyperloom-workload-optimizer` has to live here and the catalog vendors a copy nightly. What it holds is only the bootstrap: confirm the workspace, install the wheel, run `/hyperloom-setup`, then hand the run to the skill that owns it. Everything after setup already ships with the runtime -- `hyperloom-setup` for credentials and run mode, the demo skills for a workload preset, `inference_optimizer` for the launcher gates, resume and monitoring -- so they stay in step with the installed version by construction. This is the agent-facing form of examples/README.md, which stays as the human quickstart. The catalog copy of this skill was written against an empty workspace and carries its own launch, resume and GPU-preflight scripts. Those are not imported: a second launch path in the product repo would drift from the CLI it wraps. The skill says so explicitly rather than leaving it to the reader. No packaging change. The entry point earns its keep before the wheel is installed, so shipping it in the wheel would only overwrite the copy the user installed from the catalog. Co-authored-by: Cursor <cursoragent@cursor.com>
… hands off to The skill's whole job is to reach the demo skills in examples/, and its prose is the agent-facing form of examples/README.md, so it reads better next to both than at the repository root. It stays out of pyproject's data-files on purpose, unlike the four demo skills one level up: this entry point is what a user follows before the wheel exists, so shipping it would only overwrite the copy they installed from the catalog. Co-authored-by: Cursor <cursoragent@cursor.com>
The run skills report the plan before starting; the walkthrough in amd/skills already promises the user is asked, and an unattended run that holds the GPU for hours should not begin on a plan nobody accepted. Co-authored-by: Cursor <cursoragent@cursor.com>
…ates amd/skills imports this folder nightly and validates it there, so until now a broken edit here would surface as a red bot pull request in that repo, where nobody on this side is watching. Nothing in this repo would have caught it either: the skill is markdown, and lint.yml and tests-coverage.yml both ignore **/*.md, so the one file that ships to the catalog was the one file no job read. The new workflow carries no paths-ignore for exactly the reason packaging.yml carries none. The four assertions are the rules the catalog enforces, and the description is the one with no room left: at 943 of 1024 characters, a single added trigger sentence takes it to 1098. Each assertion was checked against the break it exists for -- an over-long description, a name that no longer matches the directory, and a moved folder, which is the case that also needs a federation.json pull request upstream.
The workflow and its test are named for the relationship they guard -- this folder is federated out of here -- rather than for the catalog on the other end of it. Both keep their own name rather than #1482's `AMD Skills Checks`, which belongs to a workflow that really does call the catalog's skillscope harness. This one asserts four rules itself, so borrowing that name would show a green check for a harness that never ran.
The rename commit carried the git mv but not the edits inside the file, so the workflow still named itself Catalog skill and ran a test path that no longer existed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
amd/skillsnow federates every catalog skill from the product repo that owns it: the skill lives here, and the catalog imports a copy nightly. This addshyperloom-workload-optimizerto this repo so that import has a source.This is an alternative to #1482, which copies the catalog's current tree into this repo. Please take this one instead and close that.
What this skill holds
Only the bootstrap: confirm the workspace,
pip install --target ., run/hyperloom-setup, then hand the run to the skill that owns it.Everything after setup already ships with the runtime, so it stays in step with the installed version by construction:
hyperloom-setup— credentials,USER_DATA_PATH, run mode, Docker target host, bare-metal framework installinference_optimizer— launcher gates, resume, monitoringIt is the agent-facing form of
examples/README.md, which stays as the human quickstart.Placement
examples/skills/hyperloom-workload-optimizer/, beside the README it mirrors and one level up from the demo skills it hands off to.Unlike those four demo skills, it has no
data-filesentry inpyproject.toml, and that is deliberate rather than an omission: a user follows this skill before the wheel exists, so shipping it in the wheel would only overwrite the copy they installed from the catalog.What it deliberately leaves out
The catalog copy was written for a workspace with no Hyperloom in it, so it carries its own
launch.sh,resume.sh,preflight.pyand their tests. Importing those would give this repo a second launch path that drifts from the CLI it wraps, so they are not here, and the skill says so rather than leaving it to the reader.Also out:
skill-card.md(the catalog synthesizes one on import, as it does for the federated TraceLens skill) andevals/(federation does not carry it in either direction — the datasets stay inamd/skills).Notes
descriptionis kept byte-identical to the catalog's, because the catalog's routing cases are graded against it.namematches the directory, description 943/1024 chars, body 126/500 lines.Follow-up (separate PRs on
amd/skills).github/federation.json.skills/hyperloom-workload-optimizer/evals/evals.jsonthat currently grade the catalog's own scripts (hyperloom-launcher-gatespinsinstall.sh/kernel-agent.env.sh;hyperloom-workload-intakeasks aboutworkload.env). Those belong to the wheel-installed optimizer skill, which a headless run without a wheel cannot reach. The walkthrough needs the same pass.Test plan
test_packaging_lint.pypasses (7 passed); no asset undersrc/changed, so nothing new to declareexamples/README.mdresolves from the new locationLintandTests with Coverageare skipped by theirpaths-ignore