From 1f1bd908f71e331c8fe0841a82ec2d531c4f62c5 Mon Sep 17 00:00:00 2001 From: Daniel Holanda Date: Mon, 4 May 2026 14:49:53 -0700 Subject: [PATCH 1/4] improve documentation --- AUTHORING.md | 18 ++++---- README.md | 48 +++++++++++++------- skills/local-ai-app-integration/SKILL.md | 40 ++++++++-------- skills/local-ai-app-integration/reference.md | 8 ++-- 4 files changed, 64 insertions(+), 50 deletions(-) diff --git a/AUTHORING.md b/AUTHORING.md index 6c6cf1e..405940e 100644 --- a/AUTHORING.md +++ b/AUTHORING.md @@ -11,10 +11,10 @@ Skills earn their keep on repeated, opinionated workflows. Before writing one, c - **Tool-bounded.** Uses only the tools and data it truly needs. Fewer moving parts means fewer ways to fail. - **Deterministic where possible.** Same input should produce a similar output across runs. Lean on scripts for the deterministic parts. - **Short execution path.** Few steps, low latency, low token cost. Long workflows belong in a checklist or split skills. -- **Recoverable failures.** Detects errors and either retries or exits cleanly with a useful message — never leaves the user mid-state. +- **Recoverable failures.** Detects errors and either retries or exits cleanly with a useful message - never leaves the user mid-state. - **Context-light.** Works from the user's prompt and the skill body. Doesn't require long conversation history or hidden setup. -If the task fails several of these, it is probably documentation, a runbook, or a one-off prompt — not a skill. +If the task fails several of these, it is probably documentation, a runbook, or a one-off prompt - not a skill. ## Write the description for the goal, not the mechanics @@ -25,13 +25,13 @@ The `description` is the only part of the skill always loaded into context. The The agent matches descriptions against what the user is trying to *achieve*. Internal mechanics (which library, which container, which API) belong in the body of `SKILL.md`. ```yaml -# Good — names the goal and the trigger surface +# Good - names the goal and the trigger surface description: >- Port a CUDA kernel to HIP and flag anything that needs manual review. Use when the user wants to run CUDA code on AMD GPUs, mentions hipify, HIP, ROCm porting, or asks how to convert a .cu file. -# Bad — describes how the skill works internally +# Bad - describes how the skill works internally description: >- Runs hipify-perl on .cu files, parses the output, and post-processes the result with regex rules. @@ -41,8 +41,8 @@ description: >- - **Third person.** The description is injected into the system prompt. Use *"Ports CUDA kernels..."*, not *"I help you port..."* or *"You can use this to..."*. - **State WHAT and WHEN.** What the skill produces, and the situations in which the agent should reach for it. -- **Include the trigger surface.** List the words and phrases a user is likely to say — product names, file extensions, API names, error messages. Missing triggers cause under-triggering. -- **Add negative triggers when boundaries are easily crossed.** *"Do not use for system-wide installs — see X instead."* +- **Include the trigger surface.** List the words and phrases a user is likely to say - product names, file extensions, API names, error messages. Missing triggers cause under-triggering. +- **Add negative triggers when boundaries are easily crossed.** *"Do not use for system-wide installs - see X instead."* - **Be pushy when the use case is ambiguous.** It is better to err toward being invoked than to be silently skipped. - **Stay under ~1024 characters** (the hard cap on Anthropic-compatible runtimes). @@ -75,7 +75,7 @@ Database migrations want low freedom. Code review wants high freedom. Mismatched ### Use progressive disclosure, one level deep -Link from `SKILL.md` directly to reference files. Do not chain references through intermediate files — agents may only partially read deeply nested content. +Link from `SKILL.md` directly to reference files. Do not chain references through intermediate files - agents may only partially read deeply nested content. ``` skill-name/ @@ -132,7 +132,7 @@ Test the skill the way users will hit it: 1. Run a fresh agent against ~10 prompts that *should* trigger the skill and ~10 that *shouldn't*. The description should route both sets correctly. 2. Run the skill end-to-end on a real machine. Watch where the agent hesitates, asks unnecessary questions, or goes off-script. -3. Bring those observations back into the skill — usually as a sharper description, a clearer default, or a missing prerequisite — rather than adding more prose. +3. Bring those observations back into the skill - usually as a sharper description, a clearer default, or a missing prerequisite - rather than adding more prose. ## Pre-publish checklist @@ -152,7 +152,7 @@ Test the skill the way users will hit it: ## Validating locally -The structural rules from this guide — frontmatter shape, name format, description length, and `SKILL.md` body size — are enforced by `scripts/validate_skills.py` and run on every pull request. Run them locally before pushing: +The structural rules from this guide - frontmatter shape, name format, description length, and `SKILL.md` body size - are enforced by `scripts/validate_skills.py` and run on every pull request. Run them locally before pushing: ```bash ./scripts/check.sh # validates every skill (same command CI runs) diff --git a/README.md b/README.md index 10bbb8c..756bf4a 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,28 @@ # AMD Skills -AMD Skills package the knowledge, scripts, and conventions for working with AMD hardware and software — ROCm, HIP, MIGraphX, ROCm-aware PyTorch and JAX, Instinct GPUs, Ryzen AI, Lemonade, and the broader AMD developer stack — and deliver them in a form AI coding agents can load on demand. +
+ +![AMD](https://img.shields.io/badge/AMD-Skills-ED1C24?logo=amd&logoColor=white) +![ROCm](https://img.shields.io/badge/ROCm-Enabled-green) +![Ryzen AI](https://img.shields.io/badge/Ryzen_AI-Ready-1F6FEB) +![Agent Skills](https://img.shields.io/badge/Agent_Skills-Format-7B2D8E) +![License](https://img.shields.io/badge/License-MIT-blue) + +Production-minded skills for AI coding agents working across the AMD software and hardware stack. + +[**Browse the Skill Catalog ->**](#the-catalog) • [**Authoring Guide ->**](AUTHORING.md) + +
+ +AMD Skills package the knowledge, scripts, and conventions for working with AMD hardware and software - ROCm, HIP, MIGraphX, ROCm-aware PyTorch and JAX, Instinct GPUs, Ryzen AI, Lemonade, and the broader AMD developer stack - and deliver them in a form AI coding agents can load on demand. When a developer asks an agent to "set up ROCm in this container," "port this CUDA kernel to HIP," "tune this model for an MI300X," or "integrate local AI into my app," the agent pulls in an AMD-authored skill instead of guessing. -Skills in this repository follow the standardized [Agent Skills](https://github.com/anthropics/skills) format and are designed to interoperate with the major coding agents — Cursor, Claude Code, OpenAI Codex, and Gemini CLI. +Skills in this repository follow the standardized [Agent Skills](https://github.com/anthropics/skills) format and are designed to interoperate with the major coding agents - Cursor, Claude Code, OpenAI Codex, and Gemini CLI. ## What is a skill? -A skill is a self-contained folder that bundles everything an agent needs to perform a focused task: instructions, helper scripts, prompts, templates, and references. At its core is a `SKILL.md` file with YAML frontmatter — a `name` and a short `description` that tells the agent *when* the skill should activate — followed by the guidance the agent reads while the skill is in use. +A skill is a self-contained folder that bundles everything an agent needs to perform a focused task: instructions, helper scripts, prompts, templates, and references. At its core is a `SKILL.md` file with YAML frontmatter - a `name` and a short `description` that tells the agent *when* the skill should activate - followed by the guidance the agent reads while the skill is in use. ``` skills/ @@ -22,9 +36,9 @@ When an agent decides a skill is relevant (or you invoke it explicitly), it load ## Why a skill, not a doc? -Documentation describes an API surface — every flag, every option, neutral by design. A skill encodes the opinionated path: which flags, which container image, which `gfx` target, which environment variables, in what order. It captures the decisions a senior AMD engineer makes without thinking, in a form the agent can apply consistently across teams and repositories. +Documentation describes an API surface - every flag, every option, neutral by design. A skill encodes the opinionated path: which flags, which container image, which `gfx` target, which environment variables, in what order. It captures the decisions a senior AMD engineer makes without thinking, in a form the agent can apply consistently across teams and repositories. -Skills earn their keep on repeated, opinionated workflows — exactly where the AMD stack lives. +Skills earn their keep on repeated, opinionated workflows - exactly where the AMD stack lives. ## The catalog @@ -38,7 +52,7 @@ Diagnose, configure, and tune AMD silicon directly. | --- | --- | | `rocm-doctor` | Detect driver / kernel / ROCm / framework mismatches and propose fixes. | | `gfx-target-chooser` | Pick the right `gfx942` / `gfx90a` / `gfx1100` target and matching compiler flags. | -| `mi300x-tuner` | Opinionated training and inference tuning for MI300X — TunableOp, FSDP, FlashAttention. | +| `mi300x-tuner` | Opinionated training and inference tuning for MI300X - TunableOp, FSDP, FlashAttention. | | `rocm-container-picker` | Map a workload to a known-good `rocm/*` container image. | | `ryzen-ai-deploy` | Prepare, quantize, and deploy models to Ryzen AI NPUs across the ONNX, PyTorch, and hybrid CPU/NPU/iGPU paths. | @@ -72,11 +86,11 @@ Close the loop from trace to fix to ship. | `migraphx-deploy` | Compile an ONNX model with MIGraphX and benchmark it on a target. | | `rocm-ci-template` | Drop-in GitHub Actions for AMD-targeted projects. | -> Skills land incrementally — see [Status](#status) for what is available today. +> Skills land incrementally - see [Status](#status) for what is available today. ## A federated catalog -The AMD stack is large and moves fast. ROCm, HIP, MIGraphX, vLLM-AMD, Ryzen AI, the framework integrations — each has its own team, release cadence, and validation matrix. A single monorepo of skills, maintained by one central team, would always be a step behind. +The AMD stack is large and moves fast. ROCm, HIP, MIGraphX, vLLM-AMD, Ryzen AI, the framework integrations - each has its own team, release cadence, and validation matrix. A single monorepo of skills, maintained by one central team, would always be a step behind. So skills here are **federated**: each skill is owned and versioned by the team that owns the product it describes, and this repository is the **catalog** that brings them together. @@ -108,11 +122,11 @@ Concretely: Each skill stays close to the engineers who ship the underlying product, the CI that validates it, and the release tag that pins it. -This repo also acts as an **incubator**: a skill can start its life under `skills/` here to iterate quickly, then graduate to its product repo and be re-pointed from `catalog/` once it has a clear owner — no change for installed users. +This repo also acts as an **incubator**: a skill can start its life under `skills/` here to iterate quickly, then graduate to its product repo and be re-pointed from `catalog/` once it has a clear owner - no change for installed users. ### What this means for you -- **One install, full coverage.** You add this repository through the plugin flow of your agent and you get the whole AMD catalog — you do not need to track and install skills product by product. +- **One install, full coverage.** You add this repository through the plugin flow of your agent and you get the whole AMD catalog - you do not need to track and install skills product by product. - **Skills update with the products they describe.** When ROCm cuts a new release, the ROCm team updates the ROCm skills as part of that release. You see the new behavior the next time you pull the catalog. - **Skills you can trust.** Each skill is signed off by the team that owns the underlying product, not assembled second-hand by a separate documentation team. @@ -171,19 +185,19 @@ Once a skill is installed, reference it in plain language while talking to your - "Use the `migraphx-deploy` skill to compile this ONNX model for `gfx942` and benchmark it." - "Use the `omniperf-tune` skill to find the bottleneck in this training step." -The agent loads the matching `SKILL.md` and any helper scripts, then carries out the task. In most cases the agent will pick the right skill on its own from the description — explicit invocation is a fallback, not a requirement. +The agent loads the matching `SKILL.md` and any helper scripts, then carries out the task. In most cases the agent will pick the right skill on its own from the description - explicit invocation is a fallback, not a requirement. ## Contributing a skill We welcome contributions from AMD engineers, partners, and the community. There are two contribution paths, matching how the catalog is organized. -### Path A — Skills authored in this repository +### Path A - Skills authored in this repository Best for cross-cutting skills that do not have a natural product home. 1. Copy an existing skill folder under `skills/` as a starting point and rename it. 2. Update the `SKILL.md` frontmatter so the `name` and `description` clearly explain *what* the skill does and *when* an agent should reach for it. -3. Add the supporting scripts, templates, and reference docs your instructions point to. Keep skills focused — one well-scoped task per skill is better than one mega-skill. +3. Add the supporting scripts, templates, and reference docs your instructions point to. Keep skills focused - one well-scoped task per skill is better than one mega-skill. 4. Register the skill in `.claude-plugin/marketplace.json` with a human-readable description. 5. Validate the skill locally before pushing: ```bash @@ -191,22 +205,22 @@ Best for cross-cutting skills that do not have a natural product home. ``` 6. Open a pull request. The `validate` GitHub Actions workflow runs `./scripts/check.sh` and must pass before merge. See [AUTHORING.md](AUTHORING.md#validating-locally) for the full set of enforced rules. -### Path B — Skills authored in a product repository +### Path B - Skills authored in a product repository Best for skills that should ship and version with a product (HIP, MIGraphX, Ryzen AI, vLLM-AMD, etc.). -1. Add the skill folder to your product repository — a common location is `.agents/skills//`. +1. Add the skill folder to your product repository - a common location is `.agents/skills//`. 2. Open a pull request here that adds an entry to `catalog/` pointing at the skill's location and pinning a tag. 3. CI will validate the linked skill against the same rules as in-repo skills, and the central plugin manifests will surface it through one install. ### Writing tips -See [AUTHORING.md](AUTHORING.md) for the full authoring guide — when a task is a good fit for a skill, how to write a description that routes correctly, and the conventions every AMD skill should follow. The essentials: +See [AUTHORING.md](AUTHORING.md) for the full authoring guide - when a task is a good fit for a skill, how to write a description that routes correctly, and the conventions every AMD skill should follow. The essentials: - Optimize the `description` for *agent routing*, not marketing copy. Describe the user's goal, not how the skill works internally. - Be explicit about prerequisites: ROCm version, kernel, GPU architecture, container image. - Prefer scripts and runnable commands over prose where possible. -- Call out known pitfalls — driver mismatches, unsupported architectures, environment variables that silently change behavior. +- Call out known pitfalls - driver mismatches, unsupported architectures, environment variables that silently change behavior. ## Status diff --git a/skills/local-ai-app-integration/SKILL.md b/skills/local-ai-app-integration/SKILL.md index 495b258..cf518b6 100644 --- a/skills/local-ai-app-integration/SKILL.md +++ b/skills/local-ai-app-integration/SKILL.md @@ -13,8 +13,8 @@ description: >- # Local AI App Integration (Embeddable Lemonade) Add a local AI mode to an existing app that already talks to a cloud AI API -(OpenAI, Anthropic, or Ollama-compatible). The app launches `lemond` — the -Embeddable Lemonade binary — as a private subprocess and the existing client +(OpenAI, Anthropic, or Ollama-compatible). The app launches `lemond` - the +Embeddable Lemonade binary - as a private subprocess and the existing client talks to it on `http://localhost:PORT/api/v1`. The user gets local, private, hardware-optimized inference (CPU, AMD iGPU/dGPU, XDNA2 NPU) with no separate install. @@ -26,11 +26,11 @@ Use this skill when **all** of the following are true: - The app already calls a cloud AI service over HTTP (OpenAI Chat Completions, Anthropic Messages, or Ollama). - The user wants that AI to run on the end-user's PC, with the AI engine - bundled into the app — not as a separate user install. + bundled into the app - not as a separate user install. - The target platform is Windows x64 or Linux x64 (macOS embeddable is in beta). If the user instead wants a **system-wide** Lemonade Server (one install, -shared across apps), do not use this skill — point them at +shared across apps), do not use this skill - point them at `https://lemonade-server.ai/install_options.html` and the standard OpenAI base URL `http://localhost:13305/api/v1`. @@ -52,7 +52,7 @@ Track progress against this checklist. Move on only when each step verifies. --- -## Step 1 — Survey the app +## Step 1 - Survey the app Find every place the app currently calls a cloud AI API. Search the repo for: @@ -65,16 +65,16 @@ Record three things before continuing: 1. **Client library and language** (e.g., `openai-python`, `openai-node`, `@anthropic-ai/sdk`, `go-openai`, raw `fetch`). -2. **Modalities used** — text chat, tool calling, embeddings, image gen, +2. **Modalities used** - text chat, tool calling, embeddings, image gen, transcription, TTS. This drives the model + backend choice in Step 2. 3. **One single place** where the base URL and API key are constructed. If there isn't one, refactor to one before going further. Local-mode toggling must flip exactly one config object. -## Step 2 — Pick a model + backend profile +## Step 2 - Pick a model + backend profile Choose **one** default profile based on the app's primary modality. Do not -ship a buffet — ship one good default and document how the user can override +ship a buffet - ship one good default and document how the user can override it. | App's primary need | Default model | Recipe | Why | @@ -93,7 +93,7 @@ unset. Override only if the app has hard hardware requirements. For more options and tradeoffs, see [reference.md](reference.md). -## Step 3 — Place Embeddable Lemonade in the app's tree +## Step 3 - Place Embeddable Lemonade in the app's tree Get the embeddable artifact from the latest Lemonade release: @@ -118,12 +118,12 @@ vendor/lemonade/ models--unsloth--Qwen3-4B-GGUF/ ``` -**Bundle decisions — pick deliberately:** +**Bundle decisions - pick deliberately:** - **Backends:** Bundle `llamacpp:vulkan` at packaging time (works on every GPU). Install `llamacpp:rocm` at first run on supported AMD systems via `POST /v1/install` after probing `GET /v1/system-info`. Never ship every - backend — the artifact balloons. + backend - the artifact balloons. - **Models:** Either bundle the default model under `models/` (offline install, larger installer) **or** pull on first run with `POST /v1/pull` (smaller installer, needs network). Pick one and document it. @@ -135,7 +135,7 @@ Strip what you don't ship: delete the `lemonade` CLI and `resources/defaults.json` from the shipping artifact once `config.json` is initialized. -## Step 4 — Add a `lemond` launcher +## Step 4 - Add a `lemond` launcher The launcher is a thin process supervisor. Its only jobs: @@ -227,9 +227,9 @@ async function waitForHealth(port, key, timeoutMs) { } ``` -## Step 5 — Re-point the existing client at `lemond` +## Step 5 - Re-point the existing client at `lemond` -Change exactly two values in the app's existing client config — the base URL +Change exactly two values in the app's existing client config - the base URL and the API key. Nothing else. | Existing client | New `base_url` | New auth | @@ -257,7 +257,7 @@ resp = client.chat.completions.create( ) ``` -## Step 6 — Wait for health, then preload the default model +## Step 6 - Wait for health, then preload the default model `lemond` lazy-loads models on first inference. To eliminate cold-start latency on the user's first message, preload right after the health check @@ -273,7 +273,7 @@ Content-Type: application/json If the model isn't downloaded yet, follow the recovery flow in Step 7. -## Step 7 — Lifecycle and recovery +## Step 7 - Lifecycle and recovery These are the only failure modes worth handling. Do not over-engineer. @@ -283,13 +283,13 @@ These are the only failure modes worth handling. Do not over-engineer. | `/v1/load` returns 500 with backend error | Backend not installed for this hardware | `GET /v1/system-info`, pick a supported backend, `POST /v1/install` with `{"recipe": "...", "backend": "..."}`, retry | | Subprocess exits immediately | Port already in use by another `lemond` | Pick a new free port and retry once | | `/v1/health` never returns 200 | First-run backend extraction is slow on cold disk | Extend timeout to 90s on first launch, 30s after | -| HTTP 401 on every request | Forgot the `Authorization: Bearer` header | Audit the client config — Lemonade rejects unauth'd calls when `LEMONADE_API_KEY` is set | +| HTTP 401 on every request | Forgot the `Authorization: Bearer` header | Audit the client config - Lemonade rejects unauth'd calls when `LEMONADE_API_KEY` is set | **Shutdown:** On app exit, `proc.terminate()` (Unix) or `proc.kill()` (Windows). `lemond` flushes config and exits cleanly within a -couple of seconds. Always wait on the process — never orphan it. +couple of seconds. Always wait on the process - never orphan it. -**Do not** parse `lemond` stdout to detect readiness — use the HTTP +**Do not** parse `lemond` stdout to detect readiness - use the HTTP `/v1/health` probe. Stdout format is not a stable contract. --- @@ -302,7 +302,7 @@ The integration is done when **all** of these are true: - [ ] `GET /api/v1/health` returns 200 within the timeout. - [ ] The default model loads successfully via `POST /v1/load`. - [ ] The existing client's chat / image / speech call returns a valid - response with the base URL and key swapped — no other code changed. + response with the base URL and key swapped - no other code changed. - [ ] Killing the parent process leaves no `lemond` subprocess behind. - [ ] On a fresh machine without the optimal backend, the app still works via the Vulkan fallback bundled in `bin/`. diff --git a/skills/local-ai-app-integration/reference.md b/skills/local-ai-app-integration/reference.md index 43745cc..da3da8a 100644 --- a/skills/local-ai-app-integration/reference.md +++ b/skills/local-ai-app-integration/reference.md @@ -1,4 +1,4 @@ -# Local AI App Integration — Reference +# Local AI App Integration - Reference Detailed reference material for the `local-ai-app-integration` skill. Read this only when the main `SKILL.md` flow needs a decision that isn't covered @@ -32,7 +32,7 @@ hardware-optimized one at first run after a system probe. | `cpu` | x86_64 CPU | Windows, Linux | Install only if you need a non-Vulkan CPU path. | | `metal` | Apple Silicon | macOS (beta) | macOS-only path. | -### Text generation (NPU recipes — Windows only) +### Text generation (NPU recipes - Windows only) | Recipe | Backend | Hardware | Notes | |---|---|---|---| @@ -64,7 +64,7 @@ hardware-optimized one at first run after a system probe. ## Model picker by use case -Pick **one** model as the app default. Do not list options to the user — +Pick **one** model as the app default. Do not list options to the user - ship a default and document how to override. | Use case | Recommended model | Approx size | Recipe | @@ -177,7 +177,7 @@ hand-editing `config.json`, or at runtime via `POST /internal/set`. | `host` | string | Default `127.0.0.1`. **Do not** expose on `0.0.0.0` from an embedded app. | | `log_level` | enum | `trace`/`debug`/`info`/`warning`/`error`/`fatal`/`none` | | `global_timeout` | int seconds | HTTP client timeout for backend installs and pulls | -| `no_broadcast` | bool | **Set `true` for embedded apps** — disables UDP discovery beacon | +| `no_broadcast` | bool | **Set `true` for embedded apps** - disables UDP discovery beacon | | `extra_models_dir` | string | Search path for arbitrary GGUFs (see below) | ### Deferred (apply on next load) From 634231e49b4fa20afb8f992b6beb47e374d85f9b Mon Sep 17 00:00:00 2001 From: Daniel Holanda Date: Mon, 4 May 2026 14:52:50 -0700 Subject: [PATCH 2/4] Documentation --- AUTHORING.md | 18 ++++----- README.md | 40 ++++++++++---------- skills/local-ai-app-integration/SKILL.md | 40 ++++++++++---------- skills/local-ai-app-integration/reference.md | 8 ++-- 4 files changed, 52 insertions(+), 54 deletions(-) diff --git a/AUTHORING.md b/AUTHORING.md index 405940e..5572da5 100644 --- a/AUTHORING.md +++ b/AUTHORING.md @@ -11,10 +11,10 @@ Skills earn their keep on repeated, opinionated workflows. Before writing one, c - **Tool-bounded.** Uses only the tools and data it truly needs. Fewer moving parts means fewer ways to fail. - **Deterministic where possible.** Same input should produce a similar output across runs. Lean on scripts for the deterministic parts. - **Short execution path.** Few steps, low latency, low token cost. Long workflows belong in a checklist or split skills. -- **Recoverable failures.** Detects errors and either retries or exits cleanly with a useful message - never leaves the user mid-state. +- **Recoverable failures.** Detects errors and either retries or exits cleanly with a useful message, and never leaves the user mid-state. - **Context-light.** Works from the user's prompt and the skill body. Doesn't require long conversation history or hidden setup. -If the task fails several of these, it is probably documentation, a runbook, or a one-off prompt - not a skill. +If the task fails several of these, it is probably documentation, a runbook, or a one-off prompt, not a skill. ## Write the description for the goal, not the mechanics @@ -25,13 +25,13 @@ The `description` is the only part of the skill always loaded into context. The The agent matches descriptions against what the user is trying to *achieve*. Internal mechanics (which library, which container, which API) belong in the body of `SKILL.md`. ```yaml -# Good - names the goal and the trigger surface +# Good: names the goal and the trigger surface description: >- Port a CUDA kernel to HIP and flag anything that needs manual review. Use when the user wants to run CUDA code on AMD GPUs, mentions hipify, HIP, ROCm porting, or asks how to convert a .cu file. -# Bad - describes how the skill works internally +# Bad: describes how the skill works internally description: >- Runs hipify-perl on .cu files, parses the output, and post-processes the result with regex rules. @@ -41,8 +41,8 @@ description: >- - **Third person.** The description is injected into the system prompt. Use *"Ports CUDA kernels..."*, not *"I help you port..."* or *"You can use this to..."*. - **State WHAT and WHEN.** What the skill produces, and the situations in which the agent should reach for it. -- **Include the trigger surface.** List the words and phrases a user is likely to say - product names, file extensions, API names, error messages. Missing triggers cause under-triggering. -- **Add negative triggers when boundaries are easily crossed.** *"Do not use for system-wide installs - see X instead."* +- **Include the trigger surface.** List the words and phrases a user is likely to say, including product names, file extensions, API names, and error messages. Missing triggers cause under-triggering. +- **Add negative triggers when boundaries are easily crossed.** *"Do not use for system-wide installs; see X instead."* - **Be pushy when the use case is ambiguous.** It is better to err toward being invoked than to be silently skipped. - **Stay under ~1024 characters** (the hard cap on Anthropic-compatible runtimes). @@ -75,7 +75,7 @@ Database migrations want low freedom. Code review wants high freedom. Mismatched ### Use progressive disclosure, one level deep -Link from `SKILL.md` directly to reference files. Do not chain references through intermediate files - agents may only partially read deeply nested content. +Link from `SKILL.md` directly to reference files. Do not chain references through intermediate files because agents may only partially read deeply nested content. ``` skill-name/ @@ -132,7 +132,7 @@ Test the skill the way users will hit it: 1. Run a fresh agent against ~10 prompts that *should* trigger the skill and ~10 that *shouldn't*. The description should route both sets correctly. 2. Run the skill end-to-end on a real machine. Watch where the agent hesitates, asks unnecessary questions, or goes off-script. -3. Bring those observations back into the skill - usually as a sharper description, a clearer default, or a missing prerequisite - rather than adding more prose. +3. Bring those observations back into the skill, usually as a sharper description, a clearer default, or a missing prerequisite, rather than adding more prose. ## Pre-publish checklist @@ -152,7 +152,7 @@ Test the skill the way users will hit it: ## Validating locally -The structural rules from this guide - frontmatter shape, name format, description length, and `SKILL.md` body size - are enforced by `scripts/validate_skills.py` and run on every pull request. Run them locally before pushing: +The structural rules from this guide (frontmatter shape, name format, description length, and `SKILL.md` body size) are enforced by `scripts/validate_skills.py` and run on every pull request. Run them locally before pushing: ```bash ./scripts/check.sh # validates every skill (same command CI runs) diff --git a/README.md b/README.md index 756bf4a..cd570a7 100644 --- a/README.md +++ b/README.md @@ -8,21 +8,19 @@ ![Agent Skills](https://img.shields.io/badge/Agent_Skills-Format-7B2D8E) ![License](https://img.shields.io/badge/License-MIT-blue) -Production-minded skills for AI coding agents working across the AMD software and hardware stack. +Give your AI agents the power of AMD's optimized ecosystem. -[**Browse the Skill Catalog ->**](#the-catalog) • [**Authoring Guide ->**](AUTHORING.md) +[**Browse the Skill Catalog ->**](#the-catalog) -AMD Skills package the knowledge, scripts, and conventions for working with AMD hardware and software - ROCm, HIP, MIGraphX, ROCm-aware PyTorch and JAX, Instinct GPUs, Ryzen AI, Lemonade, and the broader AMD developer stack - and deliver them in a form AI coding agents can load on demand. +AMD Skills provide agents with knowledge, scripts, and conventions for working with AMD hardware and software. -When a developer asks an agent to "set up ROCm in this container," "port this CUDA kernel to HIP," "tune this model for an MI300X," or "integrate local AI into my app," the agent pulls in an AMD-authored skill instead of guessing. - -Skills in this repository follow the standardized [Agent Skills](https://github.com/anthropics/skills) format and are designed to interoperate with the major coding agents - Cursor, Claude Code, OpenAI Codex, and Gemini CLI. +Skills in this repository follow the standardized [Agent Skills](https://github.com/anthropics/skills) format and are designed to interoperate with the major coding agents like Cursor, Claude Code, OpenAI Codex, and Gemini CLI. ## What is a skill? -A skill is a self-contained folder that bundles everything an agent needs to perform a focused task: instructions, helper scripts, prompts, templates, and references. At its core is a `SKILL.md` file with YAML frontmatter - a `name` and a short `description` that tells the agent *when* the skill should activate - followed by the guidance the agent reads while the skill is in use. +A skill is a self-contained folder that bundles everything an agent needs to perform a focused task: instructions, helper scripts, prompts, templates, and references. At its core is a `SKILL.md` file with YAML frontmatter, a `name`, and a short `description` that tells the agent *when* the skill should activate, followed by the guidance the agent reads while the skill is in use. ``` skills/ @@ -36,9 +34,9 @@ When an agent decides a skill is relevant (or you invoke it explicitly), it load ## Why a skill, not a doc? -Documentation describes an API surface - every flag, every option, neutral by design. A skill encodes the opinionated path: which flags, which container image, which `gfx` target, which environment variables, in what order. It captures the decisions a senior AMD engineer makes without thinking, in a form the agent can apply consistently across teams and repositories. +Documentation describes an API surface: every flag, every option, neutral by design. A skill encodes the opinionated path: which flags, which container image, which `gfx` target, which environment variables, in what order. It captures the decisions a senior AMD engineer makes without thinking, in a form the agent can apply consistently across teams and repositories. -Skills earn their keep on repeated, opinionated workflows - exactly where the AMD stack lives. +Skills earn their keep on repeated, opinionated workflows, exactly where the AMD stack lives. ## The catalog @@ -52,7 +50,7 @@ Diagnose, configure, and tune AMD silicon directly. | --- | --- | | `rocm-doctor` | Detect driver / kernel / ROCm / framework mismatches and propose fixes. | | `gfx-target-chooser` | Pick the right `gfx942` / `gfx90a` / `gfx1100` target and matching compiler flags. | -| `mi300x-tuner` | Opinionated training and inference tuning for MI300X - TunableOp, FSDP, FlashAttention. | +| `mi300x-tuner` | Opinionated training and inference tuning for MI300X, including TunableOp, FSDP, and FlashAttention. | | `rocm-container-picker` | Map a workload to a known-good `rocm/*` container image. | | `ryzen-ai-deploy` | Prepare, quantize, and deploy models to Ryzen AI NPUs across the ONNX, PyTorch, and hybrid CPU/NPU/iGPU paths. | @@ -86,11 +84,11 @@ Close the loop from trace to fix to ship. | `migraphx-deploy` | Compile an ONNX model with MIGraphX and benchmark it on a target. | | `rocm-ci-template` | Drop-in GitHub Actions for AMD-targeted projects. | -> Skills land incrementally - see [Status](#status) for what is available today. +> Skills land incrementally; see [Status](#status) for what is available today. ## A federated catalog -The AMD stack is large and moves fast. ROCm, HIP, MIGraphX, vLLM-AMD, Ryzen AI, the framework integrations - each has its own team, release cadence, and validation matrix. A single monorepo of skills, maintained by one central team, would always be a step behind. +The AMD stack is large and moves fast. ROCm, HIP, MIGraphX, vLLM-AMD, Ryzen AI, and framework integrations each have their own team, release cadence, and validation matrix. A single monorepo of skills, maintained by one central team, would always be a step behind. So skills here are **federated**: each skill is owned and versioned by the team that owns the product it describes, and this repository is the **catalog** that brings them together. @@ -122,11 +120,11 @@ Concretely: Each skill stays close to the engineers who ship the underlying product, the CI that validates it, and the release tag that pins it. -This repo also acts as an **incubator**: a skill can start its life under `skills/` here to iterate quickly, then graduate to its product repo and be re-pointed from `catalog/` once it has a clear owner - no change for installed users. +This repo also acts as an **incubator**: a skill can start its life under `skills/` here to iterate quickly, then graduate to its product repo and be re-pointed from `catalog/` once it has a clear owner, with no change for installed users. ### What this means for you -- **One install, full coverage.** You add this repository through the plugin flow of your agent and you get the whole AMD catalog - you do not need to track and install skills product by product. +- **One install, full coverage.** You add this repository through the plugin flow of your agent and you get the whole AMD catalog, so you do not need to track and install skills product by product. - **Skills update with the products they describe.** When ROCm cuts a new release, the ROCm team updates the ROCm skills as part of that release. You see the new behavior the next time you pull the catalog. - **Skills you can trust.** Each skill is signed off by the team that owns the underlying product, not assembled second-hand by a separate documentation team. @@ -185,19 +183,19 @@ Once a skill is installed, reference it in plain language while talking to your - "Use the `migraphx-deploy` skill to compile this ONNX model for `gfx942` and benchmark it." - "Use the `omniperf-tune` skill to find the bottleneck in this training step." -The agent loads the matching `SKILL.md` and any helper scripts, then carries out the task. In most cases the agent will pick the right skill on its own from the description - explicit invocation is a fallback, not a requirement. +The agent loads the matching `SKILL.md` and any helper scripts, then carries out the task. In most cases the agent will pick the right skill on its own from the description; explicit invocation is a fallback, not a requirement. ## Contributing a skill We welcome contributions from AMD engineers, partners, and the community. There are two contribution paths, matching how the catalog is organized. -### Path A - Skills authored in this repository +### Path A: Skills authored in this repository Best for cross-cutting skills that do not have a natural product home. 1. Copy an existing skill folder under `skills/` as a starting point and rename it. 2. Update the `SKILL.md` frontmatter so the `name` and `description` clearly explain *what* the skill does and *when* an agent should reach for it. -3. Add the supporting scripts, templates, and reference docs your instructions point to. Keep skills focused - one well-scoped task per skill is better than one mega-skill. +3. Add the supporting scripts, templates, and reference docs your instructions point to. Keep skills focused: one well-scoped task per skill is better than one mega-skill. 4. Register the skill in `.claude-plugin/marketplace.json` with a human-readable description. 5. Validate the skill locally before pushing: ```bash @@ -205,22 +203,22 @@ Best for cross-cutting skills that do not have a natural product home. ``` 6. Open a pull request. The `validate` GitHub Actions workflow runs `./scripts/check.sh` and must pass before merge. See [AUTHORING.md](AUTHORING.md#validating-locally) for the full set of enforced rules. -### Path B - Skills authored in a product repository +### Path B: Skills authored in a product repository Best for skills that should ship and version with a product (HIP, MIGraphX, Ryzen AI, vLLM-AMD, etc.). -1. Add the skill folder to your product repository - a common location is `.agents/skills//`. +1. Add the skill folder to your product repository; a common location is `.agents/skills//`. 2. Open a pull request here that adds an entry to `catalog/` pointing at the skill's location and pinning a tag. 3. CI will validate the linked skill against the same rules as in-repo skills, and the central plugin manifests will surface it through one install. ### Writing tips -See [AUTHORING.md](AUTHORING.md) for the full authoring guide - when a task is a good fit for a skill, how to write a description that routes correctly, and the conventions every AMD skill should follow. The essentials: +See [AUTHORING.md](AUTHORING.md) for the full authoring guide, including when a task is a good fit for a skill, how to write a description that routes correctly, and the conventions every AMD skill should follow. The essentials: - Optimize the `description` for *agent routing*, not marketing copy. Describe the user's goal, not how the skill works internally. - Be explicit about prerequisites: ROCm version, kernel, GPU architecture, container image. - Prefer scripts and runnable commands over prose where possible. -- Call out known pitfalls - driver mismatches, unsupported architectures, environment variables that silently change behavior. +- Call out known pitfalls: driver mismatches, unsupported architectures, and environment variables that silently change behavior. ## Status diff --git a/skills/local-ai-app-integration/SKILL.md b/skills/local-ai-app-integration/SKILL.md index cf518b6..c3b12d6 100644 --- a/skills/local-ai-app-integration/SKILL.md +++ b/skills/local-ai-app-integration/SKILL.md @@ -13,8 +13,8 @@ description: >- # Local AI App Integration (Embeddable Lemonade) Add a local AI mode to an existing app that already talks to a cloud AI API -(OpenAI, Anthropic, or Ollama-compatible). The app launches `lemond` - the -Embeddable Lemonade binary - as a private subprocess and the existing client +(OpenAI, Anthropic, or Ollama-compatible). The app launches `lemond`, the +Embeddable Lemonade binary, as a private subprocess and the existing client talks to it on `http://localhost:PORT/api/v1`. The user gets local, private, hardware-optimized inference (CPU, AMD iGPU/dGPU, XDNA2 NPU) with no separate install. @@ -26,11 +26,11 @@ Use this skill when **all** of the following are true: - The app already calls a cloud AI service over HTTP (OpenAI Chat Completions, Anthropic Messages, or Ollama). - The user wants that AI to run on the end-user's PC, with the AI engine - bundled into the app - not as a separate user install. + bundled into the app, not as a separate user install. - The target platform is Windows x64 or Linux x64 (macOS embeddable is in beta). If the user instead wants a **system-wide** Lemonade Server (one install, -shared across apps), do not use this skill - point them at +shared across apps), do not use this skill; point them at `https://lemonade-server.ai/install_options.html` and the standard OpenAI base URL `http://localhost:13305/api/v1`. @@ -52,7 +52,7 @@ Track progress against this checklist. Move on only when each step verifies. --- -## Step 1 - Survey the app +## Step 1: Survey the app Find every place the app currently calls a cloud AI API. Search the repo for: @@ -65,16 +65,16 @@ Record three things before continuing: 1. **Client library and language** (e.g., `openai-python`, `openai-node`, `@anthropic-ai/sdk`, `go-openai`, raw `fetch`). -2. **Modalities used** - text chat, tool calling, embeddings, image gen, +2. **Modalities used:** text chat, tool calling, embeddings, image gen, transcription, TTS. This drives the model + backend choice in Step 2. 3. **One single place** where the base URL and API key are constructed. If there isn't one, refactor to one before going further. Local-mode toggling must flip exactly one config object. -## Step 2 - Pick a model + backend profile +## Step 2: Pick a model + backend profile Choose **one** default profile based on the app's primary modality. Do not -ship a buffet - ship one good default and document how the user can override +ship a buffet. Ship one good default and document how the user can override it. | App's primary need | Default model | Recipe | Why | @@ -93,7 +93,7 @@ unset. Override only if the app has hard hardware requirements. For more options and tradeoffs, see [reference.md](reference.md). -## Step 3 - Place Embeddable Lemonade in the app's tree +## Step 3: Place Embeddable Lemonade in the app's tree Get the embeddable artifact from the latest Lemonade release: @@ -118,12 +118,12 @@ vendor/lemonade/ models--unsloth--Qwen3-4B-GGUF/ ``` -**Bundle decisions - pick deliberately:** +**Bundle decisions: pick deliberately** - **Backends:** Bundle `llamacpp:vulkan` at packaging time (works on every GPU). Install `llamacpp:rocm` at first run on supported AMD systems via `POST /v1/install` after probing `GET /v1/system-info`. Never ship every - backend - the artifact balloons. + backend, or the artifact balloons. - **Models:** Either bundle the default model under `models/` (offline install, larger installer) **or** pull on first run with `POST /v1/pull` (smaller installer, needs network). Pick one and document it. @@ -135,7 +135,7 @@ Strip what you don't ship: delete the `lemonade` CLI and `resources/defaults.json` from the shipping artifact once `config.json` is initialized. -## Step 4 - Add a `lemond` launcher +## Step 4: Add a `lemond` launcher The launcher is a thin process supervisor. Its only jobs: @@ -227,9 +227,9 @@ async function waitForHealth(port, key, timeoutMs) { } ``` -## Step 5 - Re-point the existing client at `lemond` +## Step 5: Re-point the existing client at `lemond` -Change exactly two values in the app's existing client config - the base URL +Change exactly two values in the app's existing client config: the base URL and the API key. Nothing else. | Existing client | New `base_url` | New auth | @@ -257,7 +257,7 @@ resp = client.chat.completions.create( ) ``` -## Step 6 - Wait for health, then preload the default model +## Step 6: Wait for health, then preload the default model `lemond` lazy-loads models on first inference. To eliminate cold-start latency on the user's first message, preload right after the health check @@ -273,7 +273,7 @@ Content-Type: application/json If the model isn't downloaded yet, follow the recovery flow in Step 7. -## Step 7 - Lifecycle and recovery +## Step 7: Lifecycle and recovery These are the only failure modes worth handling. Do not over-engineer. @@ -283,13 +283,13 @@ These are the only failure modes worth handling. Do not over-engineer. | `/v1/load` returns 500 with backend error | Backend not installed for this hardware | `GET /v1/system-info`, pick a supported backend, `POST /v1/install` with `{"recipe": "...", "backend": "..."}`, retry | | Subprocess exits immediately | Port already in use by another `lemond` | Pick a new free port and retry once | | `/v1/health` never returns 200 | First-run backend extraction is slow on cold disk | Extend timeout to 90s on first launch, 30s after | -| HTTP 401 on every request | Forgot the `Authorization: Bearer` header | Audit the client config - Lemonade rejects unauth'd calls when `LEMONADE_API_KEY` is set | +| HTTP 401 on every request | Forgot the `Authorization: Bearer` header | Audit the client config because Lemonade rejects unauth'd calls when `LEMONADE_API_KEY` is set | **Shutdown:** On app exit, `proc.terminate()` (Unix) or `proc.kill()` (Windows). `lemond` flushes config and exits cleanly within a -couple of seconds. Always wait on the process - never orphan it. +couple of seconds. Always wait on the process; never orphan it. -**Do not** parse `lemond` stdout to detect readiness - use the HTTP +**Do not** parse `lemond` stdout to detect readiness; use the HTTP `/v1/health` probe. Stdout format is not a stable contract. --- @@ -302,7 +302,7 @@ The integration is done when **all** of these are true: - [ ] `GET /api/v1/health` returns 200 within the timeout. - [ ] The default model loads successfully via `POST /v1/load`. - [ ] The existing client's chat / image / speech call returns a valid - response with the base URL and key swapped - no other code changed. + response with the base URL and key swapped, with no other code changed. - [ ] Killing the parent process leaves no `lemond` subprocess behind. - [ ] On a fresh machine without the optimal backend, the app still works via the Vulkan fallback bundled in `bin/`. diff --git a/skills/local-ai-app-integration/reference.md b/skills/local-ai-app-integration/reference.md index da3da8a..cf15a9d 100644 --- a/skills/local-ai-app-integration/reference.md +++ b/skills/local-ai-app-integration/reference.md @@ -1,4 +1,4 @@ -# Local AI App Integration - Reference +# Local AI App Integration: Reference Detailed reference material for the `local-ai-app-integration` skill. Read this only when the main `SKILL.md` flow needs a decision that isn't covered @@ -32,7 +32,7 @@ hardware-optimized one at first run after a system probe. | `cpu` | x86_64 CPU | Windows, Linux | Install only if you need a non-Vulkan CPU path. | | `metal` | Apple Silicon | macOS (beta) | macOS-only path. | -### Text generation (NPU recipes - Windows only) +### Text generation (NPU recipes, Windows only) | Recipe | Backend | Hardware | Notes | |---|---|---|---| @@ -64,7 +64,7 @@ hardware-optimized one at first run after a system probe. ## Model picker by use case -Pick **one** model as the app default. Do not list options to the user - +Pick **one** model as the app default. Do not list options to the user; ship a default and document how to override. | Use case | Recommended model | Approx size | Recipe | @@ -177,7 +177,7 @@ hand-editing `config.json`, or at runtime via `POST /internal/set`. | `host` | string | Default `127.0.0.1`. **Do not** expose on `0.0.0.0` from an embedded app. | | `log_level` | enum | `trace`/`debug`/`info`/`warning`/`error`/`fatal`/`none` | | `global_timeout` | int seconds | HTTP client timeout for backend installs and pulls | -| `no_broadcast` | bool | **Set `true` for embedded apps** - disables UDP discovery beacon | +| `no_broadcast` | bool | **Set `true` for embedded apps**, disables UDP discovery beacon | | `extra_models_dir` | string | Search path for arbitrary GGUFs (see below) | ### Deferred (apply on next load) From 174af0e9a9a22f1a44ff2a5b73c1f143e837ce0b Mon Sep 17 00:00:00 2001 From: Daniel Holanda Date: Mon, 4 May 2026 14:55:02 -0700 Subject: [PATCH 3/4] Documentation --- LICENSE | 21 +++++++++++++++++++++ README.md | 6 +++++- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..1d65b4b --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 dholanda + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index cd570a7..90853d0 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,11 @@ ![ROCm](https://img.shields.io/badge/ROCm-Enabled-green) ![Ryzen AI](https://img.shields.io/badge/Ryzen_AI-Ready-1F6FEB) ![Agent Skills](https://img.shields.io/badge/Agent_Skills-Format-7B2D8E) -![License](https://img.shields.io/badge/License-MIT-blue) +[![Cursor](https://img.shields.io/badge/Cursor-Compatible-000000?logo=cursor&logoColor=white)](https://cursor.com) +[![Claude Code](https://img.shields.io/badge/Claude_Code-Compatible-D97757)](https://www.anthropic.com/claude-code) +[![OpenAI Codex](https://img.shields.io/badge/OpenAI_Codex-Compatible-412991)](https://openai.com/codex/) +[![Gemini CLI](https://img.shields.io/badge/Gemini_CLI-Compatible-4285F4)](https://ai.google.dev/gemini-api/docs/cli) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) Give your AI agents the power of AMD's optimized ecosystem. From 79d5266143bc3ca8f486bb8ba588c5ab30d5f968 Mon Sep 17 00:00:00 2001 From: Daniel Holanda Date: Mon, 4 May 2026 15:17:09 -0700 Subject: [PATCH 4/4] Add assets --- README.md | 2 +- assets/banner.jpg | Bin 0 -> 89267 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 assets/banner.jpg diff --git a/README.md b/README.md index 90853d0..bf13b7b 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ [![OpenAI Codex](https://img.shields.io/badge/OpenAI_Codex-Compatible-412991)](https://openai.com/codex/) [![Gemini CLI](https://img.shields.io/badge/Gemini_CLI-Compatible-4285F4)](https://ai.google.dev/gemini-api/docs/cli) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) - +AMD Skills Give your AI agents the power of AMD's optimized ecosystem. [**Browse the Skill Catalog ->**](#the-catalog) diff --git a/assets/banner.jpg b/assets/banner.jpg new file mode 100644 index 0000000000000000000000000000000000000000..accec6e34a630c7313ccfa15e0579b68150404a6 GIT binary patch literal 89267 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