Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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

SkillLanguageStatusDescription
java-x86-to-gravitonJavaStableFull x86-to-Graviton migration: dependency audit, native library validation, JVM optimization, ARM64 build validation
python-x86-to-gravitonPythonBetaFull 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.NETBetaFull 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:

  1. Create a folder under languages/ named to match the skill’s name field
  2. Create SKILL.md with Agent Skills frontmatter (name, description, optional metadata)
  3. Add a summaries.md listing every file in the skill, each with its purpose and when it is read. This is the canonical inventory — link it from SKILL.md, and do not duplicate the file list elsewhere in the skill
  4. Add a README.md with a human-readable overview that points at summaries.md for the file map
  5. Keep the main entry point under 500 lines — split detailed instructions into references/ or scripts/ subdirectories
  6. Link each supporting file inline from the step that needs it, so an agent reading top to bottom reaches it just in time. summaries.md serves 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.