A SKILL.md file can be portable without behaving identically everywhere. Portability has three layers: the package can be parsed, the host can discover and activate it, and the workflow can complete with the host’s tools and permissions. Marketing often collapses those layers. This map keeps them separate.
Compatibility map
| Platform | Status | Practical path |
|---|---|---|
| Claude Code | Native | .claude/skills, personal, plugin, enterprise, and synced account paths |
| OpenAI Codex | Native | .agents/skills, personal/admin/system locations, or plugins |
| Gemini CLI | Native | .gemini/skills or compatible .agents/skills locations |
| Grok | Native | .grok/skills, plugins, configured paths, and Claude-compatible discovery |
| skills.sh | Distributor | Installs public Git-hosted packages into supported agents |
| v0 | Application builder | Use project instructions, MCP, integrations, or a skill-enabled agent in its terminal |
| Meta Llama | Harness dependent | Adapt metadata and progressive loading in the Llama agent runtime you control |
Claude Code
Claude Code explicitly follows the open Agent Skills standard and adds invocation, dynamic-context, tool, subagent, plugin, and account-sync features. The core body travels well. Claude-specific frontmatter should be treated as an optional extension when moving elsewhere.
OpenAI Codex
Codex and ChatGPT use skills for reusable workflows. Codex scans repository and user .agents/skills locations, supports explicit and implicit activation, and can package reusable skills with connectors through plugins. OpenAI-specific presentation and dependency metadata belongs in agents/openai.yaml.
Gemini CLI
Gemini CLI implements discovery tiers, an activation consent step, and the same folder pattern. It accepts a shared .agents/skills alias, which reduces copying between Codex and Gemini projects. Workspace trust and host-specific commands still affect the user experience.
Grok from xAI
Grok documents native skills, plugins, marketplaces, path-specific activation, and Claude Code compatibility. Several frontmatter fields parse but do not enforce permissions. Test tool-dependent behavior rather than assuming a field has the same meaning as it does in Claude.
v0 and Vercel
v0 builds and deploys applications; Vercel runs a separate open skills ecosystem. Current v0 documentation does not present every project as a native SKILL.md runtime. Use a documented agent inside its terminal, project instructions, MCP, or integrations for that layer. Use skills.sh when the package itself should move between agents.
Meta and Llama
Meta’s Llama Stack provides components for agentic applications, tools, retrieval, and safety. The model does not define one universal skill directory. A Llama application can use the format by implementing discovery, routing, progressive loading, resource access, and permissions in its harness.
What remains portable
Keep the job, trigger description, inputs, steps, evidence rules, output contract, and finish checks in the core package. Put host-specific display fields, invocation switches, dynamic commands, and tool grants in isolated metadata or references. Test the same scenarios in every claimed host. That yields an honest compatibility statement: “verified in these runtimes,” rather than an unsupported universal claim.