Skip to content

Commit 5a1c8e7

Browse files
committed
Reorganize docs
1 parent aff25ee commit 5a1c8e7

3 files changed

Lines changed: 49 additions & 43 deletions

File tree

AUTHORING.md renamed to CONTRIBUTING.md

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,40 @@
1-
# Authoring AMD Skills
1+
# Contributing to AMD Skills
22

3-
A short guide for writing skills that agents pick up reliably and execute well. For repository structure and contribution paths, see the [README](README.md). For the full Anthropic reference, see [Skill authoring best practices](https://docs.anthropic.com/en/docs/agents-and-tools/agent-skills/best-practices).
3+
This guide covers everything you need to ship a skill: how to choose a contribution path, what to validate locally, and the writing conventions every AMD skill should follow.
4+
5+
For repository structure and the broader catalog model, see the [README](README.md). For the upstream reference, see Anthropic's [Skill authoring best practices](https://docs.anthropic.com/en/docs/agents-and-tools/agent-skills/best-practices).
6+
7+
We welcome contributions from AMD engineers and selected partners.
8+
9+
## Contribution paths
10+
11+
There are two contribution paths, matching how the catalog is organized.
12+
13+
### Path A: Skills authored in this repository
14+
15+
Best for cross-cutting skills that do not have a natural product home.
16+
17+
1. Copy an existing skill folder under `skills/` as a starting point and rename it.
18+
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.
19+
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.
20+
4. Register the skill in `.claude-plugin/marketplace.json` with a human-readable description (the marketplace description is for humans browsing the catalog; the `SKILL.md` description is what the agent uses for routing).
21+
5. Regenerate the Cursor manifest so it tracks the new skill:
22+
```bash
23+
./scripts/publish.sh # writes .cursor-plugin/plugin.json
24+
```
25+
6. Validate the skill locally before pushing:
26+
```bash
27+
./scripts/check.sh # validates every SKILL.md and that manifests are in sync
28+
```
29+
7. Open a pull request. The `validate` GitHub Actions workflow runs `./scripts/check.sh` and must pass before merge. See [Validating locally](#validating-locally) for the full set of enforced rules.
30+
31+
### Path B: Skills authored in a product repository
32+
33+
Best for skills that should ship and version with a product (HIP, MIGraphX, Ryzen AI, Lemonade, etc.).
34+
35+
1. Add the skill folder to your product repository; a common location is `.agents/skills/<skill-name>/`.
36+
2. Open a pull request here that adds an entry to `catalog/` pointing at the skill's location and pinning a tag.
37+
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.
438

539
## Is this task a good fit for a skill?
640

@@ -168,4 +202,4 @@ The validator checks every skill under `skills/` for:
168202
It also checks the plugin manifests:
169203

170204
- every skill under `skills/` has a matching entry in `.claude-plugin/marketplace.json` (and vice versa), with `source` set to `./skills/<name>` and a non-empty human-readable `description`
171-
- `.cursor-plugin/plugin.json` is up to date with `.claude-plugin/plugin.json` and the discovered skills (regenerate with `./scripts/publish.sh`) (push longer reference material into sibling files)
205+
- `.cursor-plugin/plugin.json` is up to date with `.claude-plugin/plugin.json` and the discovered skills (regenerate with `./scripts/publish.sh`)

README.md

Lines changed: 9 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ So skills here are **federated**: each skill is owned and versioned by the team
110110
┌───────────────┬───────────────┼───────────────┬────────────────┐
111111
│ │ │ │ │
112112
ROCm/ROCm ROCm/HIP Ryzen AI repo lemonade-sdk ...more
113-
rocm-doctor/ cuda-to-hip/ ryzen-ai-deploy/ local-ai-app- product
113+
rocm-doctor/ cuda-to-hip/ ryzen-ai-tools/ local-ai-app- product
114114
gfx-target-... triton-amd-... ... integration/ repos
115115
```
116116

@@ -126,8 +126,10 @@ This repo also acts as an **incubator**: a skill can start its life under `skill
126126

127127
### What this means if you contribute
128128

129-
- **In-repo skills** (Path A below) are best for cross-cutting workflows that do not have a natural product home.
130-
- **Product-repo skills** (Path B below) are best for skills that should live and version with a specific product. You add the skill folder to your product repo and open a small PR here that registers it in `catalog/` with a pinned tag. CI validates the linked skill against the same rules as in-repo skills, and the central plugin manifests surface it through the same one install.
129+
- **In-repo skills** (Path A) are best for cross-cutting workflows that do not have a natural product home.
130+
- **Product-repo skills** (Path B) are best for skills that should live and version with a specific product. You add the skill folder to your product repo and open a small PR here that registers it in `catalog/` with a pinned tag. CI validates the linked skill against the same rules as in-repo skills, and the central plugin manifests surface it through the same one install.
131+
132+
See [CONTRIBUTING.md](CONTRIBUTING.md) for the step-by-step contribution flow for each path.
131133

132134
### Repository layout
133135

@@ -181,42 +183,12 @@ The agent loads the matching `SKILL.md` and any helper scripts, then carries out
181183

182184
## Contributing a skill
183185

184-
We welcome contributions from AMD engineers, and selected partners. There are two contribution paths, matching how the catalog is organized.
185-
186-
### Path A: Skills authored in this repository
187-
188-
Best for cross-cutting skills that do not have a natural product home.
189-
190-
1. Copy an existing skill folder under `skills/` as a starting point and rename it.
191-
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.
192-
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.
193-
4. Register the skill in `.claude-plugin/marketplace.json` with a human-readable description (the marketplace description is for humans browsing the catalog; the `SKILL.md` description is what the agent uses for routing).
194-
5. Regenerate the Cursor manifest so it tracks the new skill:
195-
```bash
196-
./scripts/publish.sh # writes .cursor-plugin/plugin.json
197-
```
198-
6. Validate the skill locally before pushing:
199-
```bash
200-
./scripts/check.sh # validates every SKILL.md and that manifests are in sync
201-
```
202-
7. 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.
203-
204-
### Path B: Skills authored in a product repository
205-
206-
Best for skills that should ship and version with a product (HIP, MIGraphX, Ryzen AI, vLLM-AMD, etc.).
207-
208-
1. Add the skill folder to your product repository; a common location is `.agents/skills/<skill-name>/`.
209-
2. Open a pull request here that adds an entry to `catalog/` pointing at the skill's location and pinning a tag.
210-
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.
211-
212-
### Writing tips
186+
We welcome contributions from AMD engineers and selected partners. There are two paths, matching how the catalog is organized:
213187

214-
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:
188+
- **Path A — In-repo skills.** Authored directly under `skills/` in this repository. Best for cross-cutting workflows that do not have a natural product home.
189+
- **Path B — Product-repo skills.** Authored in a product repository and registered here through `catalog/` with a pinned tag. Best for skills that should ship and version with a specific product (HIP, ROCm, Ryzen AI, Lemonade, etc.).
215190

216-
- Optimize the `description` for *agent routing*, not marketing copy. Describe the user's goal, not how the skill works internally.
217-
- Be explicit about prerequisites: ROCm version, kernel, GPU architecture, container image.
218-
- Prefer scripts and runnable commands over prose where possible.
219-
- Call out known pitfalls: driver mismatches, unsupported architectures, and environment variables that silently change behavior.
191+
See [CONTRIBUTING.md](CONTRIBUTING.md) for step-by-step instructions, the full authoring guide, and the rules CI enforces on every pull request.
220192

221193
## Status
222194

scripts/validate_skills.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
# ///
66
"""Validate AMD skills against the standardized Agent Skills format.
77
8-
Enforces the rules documented in AUTHORING.md:
8+
Enforces the rules documented in CONTRIBUTING.md:
99
1010
- SKILL.md exists at the skill root
1111
- YAML frontmatter is parseable
@@ -42,7 +42,7 @@
4242
DEFAULT_SKILLS_DIR = REPO_ROOT / "skills"
4343
CLAUDE_MARKETPLACE = REPO_ROOT / ".claude-plugin" / "marketplace.json"
4444

45-
# Limits from AUTHORING.md and the standardized Agent Skills format.
45+
# Limits from CONTRIBUTING.md and the standardized Agent Skills format.
4646
MAX_NAME_LEN = 64
4747
MAX_DESCRIPTION_LEN = 1024
4848
MAX_BODY_LINES = 500
@@ -163,7 +163,7 @@ def validate_claude_marketplace(skill_dirs: list[Path]) -> list[str]:
163163
"""Return error strings if marketplace entries don't match skills/ on disk.
164164
165165
The marketplace's human-readable `description` is intentionally allowed
166-
to differ from the SKILL.md description (per AUTHORING.md), so this only
166+
to differ from the SKILL.md description (per CONTRIBUTING.md), so this only
167167
enforces that names and source paths line up.
168168
"""
169169
if not CLAUDE_MARKETPLACE.exists():

0 commit comments

Comments
 (0)