Graviton Agent Skills
Portable Agent Skills that help developers migrate codebases to AWS Graviton (ARM64) processors.
What are Agent Skills?
Agent Skills are an open standard for packaging expert instructions in a format AI coding assistants can follow. Each skill is a folder containing instructions, references, and scripts that teach an agent how to perform a specific task — in this case, migrating applications to Graviton.
For the full specification, see agentskills.io.
Platform Compatibility
Each skill follows the Agent Skills specification: a single SKILL.md entry point plus optional references/ and scripts/ directories. This one format is recognized by Claude Code, Cursor, Codex, Windsurf, Gemini CLI, GitHub Copilot, and 20+ other tools. On Kiro these install as Agent Skills via Import a skill (see below); they are not packaged as Kiro Powers, which these skills do not need (no bundled MCP servers).
Available Skills
| Skill | Language | Status | Description |
|---|---|---|---|
| java-x86-to-graviton | Java | Stable | Full x86-to-Graviton migration: dependency audit, native library validation, JVM optimization, ARM64 build validation |
| python-x86-to-graviton | Python | Beta | Full x86-to-Graviton migration: aarch64 wheel verification for every pinned dependency (including transitives), native extension and vendored binary validation, runtime recommendations, ARM64 install and test validation |
| dotnet-x86-to-graviton | .NET | Beta | Full x86-to-Graviton migration: per-RID native file verification for every resolved NuGet package (including transitives), committed native file and Windows-only API validation, the move to Linux for Windows and .NET Framework starting points, runtime recommendations, ARM64 build, publish and test validation |
How to Install
Each skill installs on its own. The commands below install the Java skill; set SKILL to another folder name from Available Skills (for example python-x86-to-graviton) to install that skill instead. Run the project-level commands (GitHub Copilot, Windsurf, Roo Code, Any platform) from your project’s root directory.
Kiro
Open the Agent Steering & Skills panel, click + > Import a skill > GitHub, and paste the URL of the skill you want:
https://github.com/aws/aws-graviton-getting-started/tree/main/tools/skills/languages/java-x86-to-graviton
https://github.com/aws/aws-graviton-getting-started/tree/main/tools/skills/languages/python-x86-to-graviton
https://github.com/aws/aws-graviton-getting-started/tree/main/tools/skills/languages/dotnet-x86-to-graviton
Cursor
Open Settings (Cmd+Shift+J / Ctrl+Shift+J) > Rules > Add Rule > Remote Rule (GitHub) and paste the URL of the skill you want:
https://github.com/aws/aws-graviton-getting-started/tree/main/tools/skills/languages/java-x86-to-graviton
https://github.com/aws/aws-graviton-getting-started/tree/main/tools/skills/languages/python-x86-to-graviton
https://github.com/aws/aws-graviton-getting-started/tree/main/tools/skills/languages/dotnet-x86-to-graviton
Claude Code
SKILL=java-x86-to-graviton # or python-x86-to-graviton, dotnet-x86-to-graviton
git clone --filter=blob:none --sparse https://github.com/aws/aws-graviton-getting-started.git /tmp/graviton-skill && \
git -C /tmp/graviton-skill sparse-checkout set "tools/skills/languages/$SKILL" && \
mkdir -p ~/.claude/skills && \
rm -rf ~/.claude/skills/"$SKILL" && \
cp -r "/tmp/graviton-skill/tools/skills/languages/$SKILL" ~/.claude/skills/ && \
rm -rf /tmp/graviton-skill
GitHub Copilot / VS Code
SKILL=java-x86-to-graviton # or python-x86-to-graviton, dotnet-x86-to-graviton
git clone --filter=blob:none --sparse https://github.com/aws/aws-graviton-getting-started.git /tmp/graviton-skill && \
git -C /tmp/graviton-skill sparse-checkout set "tools/skills/languages/$SKILL" && \
mkdir -p .github/skills && \
rm -rf .github/skills/"$SKILL" && \
cp -r "/tmp/graviton-skill/tools/skills/languages/$SKILL" .github/skills/ && \
rm -rf /tmp/graviton-skill
OpenAI Codex
SKILL=java-x86-to-graviton # or python-x86-to-graviton, dotnet-x86-to-graviton
git clone --filter=blob:none --sparse https://github.com/aws/aws-graviton-getting-started.git /tmp/graviton-skill && \
git -C /tmp/graviton-skill sparse-checkout set "tools/skills/languages/$SKILL" && \
mkdir -p ~/.codex/skills && \
rm -rf ~/.codex/skills/"$SKILL" && \
cp -r "/tmp/graviton-skill/tools/skills/languages/$SKILL" ~/.codex/skills/ && \
rm -rf /tmp/graviton-skill
Windsurf
SKILL=java-x86-to-graviton # or python-x86-to-graviton, dotnet-x86-to-graviton
git clone --filter=blob:none --sparse https://github.com/aws/aws-graviton-getting-started.git /tmp/graviton-skill && \
git -C /tmp/graviton-skill sparse-checkout set "tools/skills/languages/$SKILL" && \
mkdir -p .windsurf/skills && \
rm -rf .windsurf/skills/"$SKILL" && \
cp -r "/tmp/graviton-skill/tools/skills/languages/$SKILL" .windsurf/skills/ && \
rm -rf /tmp/graviton-skill
Gemini CLI
SKILL=java-x86-to-graviton # or python-x86-to-graviton, dotnet-x86-to-graviton
git clone --filter=blob:none --sparse https://github.com/aws/aws-graviton-getting-started.git /tmp/graviton-skill && \
git -C /tmp/graviton-skill sparse-checkout set "tools/skills/languages/$SKILL" && \
mkdir -p ~/.gemini/skills && \
rm -rf ~/.gemini/skills/"$SKILL" && \
cp -r "/tmp/graviton-skill/tools/skills/languages/$SKILL" ~/.gemini/skills/ && \
rm -rf /tmp/graviton-skill
Roo Code
SKILL=java-x86-to-graviton # or python-x86-to-graviton, dotnet-x86-to-graviton
git clone --filter=blob:none --sparse https://github.com/aws/aws-graviton-getting-started.git /tmp/graviton-skill && \
git -C /tmp/graviton-skill sparse-checkout set "tools/skills/languages/$SKILL" && \
mkdir -p .roo/skills && \
rm -rf .roo/skills/"$SKILL" && \
cp -r "/tmp/graviton-skill/tools/skills/languages/$SKILL" .roo/skills/ && \
rm -rf /tmp/graviton-skill
Goose
SKILL=java-x86-to-graviton # or python-x86-to-graviton, dotnet-x86-to-graviton
git clone --filter=blob:none --sparse https://github.com/aws/aws-graviton-getting-started.git /tmp/graviton-skill && \
git -C /tmp/graviton-skill sparse-checkout set "tools/skills/languages/$SKILL" && \
mkdir -p ~/.config/goose/skills && \
rm -rf ~/.config/goose/skills/"$SKILL" && \
cp -r "/tmp/graviton-skill/tools/skills/languages/$SKILL" ~/.config/goose/skills/ && \
rm -rf /tmp/graviton-skill
Any platform (project-level)
Copy the skill folder into the cross-platform standard path:
SKILL=java-x86-to-graviton # or python-x86-to-graviton, dotnet-x86-to-graviton
git clone --filter=blob:none --sparse https://github.com/aws/aws-graviton-getting-started.git /tmp/graviton-skill && \
git -C /tmp/graviton-skill sparse-checkout set "tools/skills/languages/$SKILL" && \
mkdir -p .agents/skills && \
rm -rf .agents/skills/"$SKILL" && \
cp -r "/tmp/graviton-skill/tools/skills/languages/$SKILL" .agents/skills/ && \
rm -rf /tmp/graviton-skill
The .agents/skills/ path is supported by all Agent Skills-compatible platforms.
Skill Folder Structure
Each skill folder contains:
<skill-name>/
├── SKILL.md # Entry point (Agent Skills format)
├── summaries.md # Canonical file index for agent discovery
├── references/ # Phase instructions, scope guardrails, output standards
└── README.md # Human-readable overview
Creating New Skills
See the skill template for the boilerplate structure. When creating a new skill:
- Create a folder under
languages/named to match the skill’snamefield - Create
SKILL.mdwith Agent Skills frontmatter (name,description, optionalmetadata) - Add a
summaries.mdlisting every file in the skill, each with its purpose and when it is read. This is the canonical inventory — link it fromSKILL.md, and do not duplicate the file list elsewhere in the skill - Add a
README.mdwith a human-readable overview that points atsummaries.mdfor the file map - Keep the main entry point under 500 lines — split detailed instructions into
references/orscripts/subdirectories - Link each supporting file inline from the step that needs it, so an agent reading top to bottom reaches it just in time.
summaries.mdserves agents that enter mid-skill or need the whole map at once
Fill in language-specific details based on the existing Graviton documentation for each language.