In Agent Registry, a skill represents a standalone,
executable capability that an agent can have. It contains instructions in a
SKILL.md file, code scripts, and assets that extend an agent's reasoning. By
registering standalone skills in Agent Registry, you can centrally govern,
version, and share capabilities across your organization's AI agents.
Google-created skills are visible immediately when you set up Agent Registry. This document explains how to manually register your own standalone skills in Agent Registry.
Before you begin
Before you start, set up Agent Registry. You need the project ID to perform these tasks.
To use the Google Cloud CLI commands in this document, make sure you have set up your gcloud CLI environment.
Required roles
To get the permissions that
you need to register skills in Agent Registry,
ask your administrator to grant you the
Agent Registry User (roles/agentregistry.user) IAM role on the project.
For more information about granting roles, see Manage access to projects, folders, and organizations.
You might also be able to get the required permissions through custom roles or other predefined roles.
Ingestion payload constraints
To register a skill, you must package the capability's source files into a ZIP
archive. The archive must include a SKILL.md instruction file at its root.
During the ingestion phase of the skill registration process, Agent Registry
validates that the payload complies with the following constraints:
- ZIP archive size: Maximum compressed archive size of 500 KB.
- Total uncompressed payload size: Maximum uncompressed size of 10 MB.
- Individual file size: Maximum uncompressed size of 1 MB per file.
- Deep nesting: Maximum directory nesting depth of 8 levels.
- Specification compliance: The
SKILL.mdfile must contain a valid YAML front matter section defining the name, description, and metadata as defined in the Agent Skills Specification.
Register a skill
Google-created skills are visible immediately when you set up Agent Registry. However, you can also manually register your own skills. Each skill has a default revision and can contain multiple versioned skill revisions.
To register your own skills, you create a logical skill container and upload the initial revision payload in a single operation. Later, you can manage your registered skills and their subsequent skill revisions.
The skills that you or other users create are automatically assigned to the
default private publisher to avoid name collisions with Google-created skills.
For that reason, the published ID of a particular skill becomes
private-SKILL_ID. You can't specify a custom publisher
during skill creation.
For example, if you create a skill with the ID workspace-tools, the resource
name is created as
projects/PROJECT_ID/locations/LOCATION/skills/private-workspace-tools.
The logical Uniform Resource Name (URN) is assigned as
urn:skill:projects-PROJECT_NUMBER:locations:LOCATION:private-workspace-tools.
You must use this published ID (private-workspace-tools) for all subsequent
skill operations.
To register a skill, follow these steps:
Console
In the Google Cloud console, go to the Agent Registry page:
From the project picker, select your Google Cloud project.
Select the Skills tab.
In the Skills tab, the Add skill button displays two options. You can choose one of the following:
- Add skill: Create a new skill container in the registry. You can optionally upload a skill package to create the first revision.
- Import skill: Onboard a new custom skills package by uploading a
ZIP bundle containing your code or prompt instructions (
SKILL.md) file.
In the Create skill or Import skill panel, specify the following details:
- Display name: Enter a user-friendly name for the skill.
- Description: Enter a brief summary explaining the skill capabilities.
- Location: Select the geographic region, for example,
global,us, oreu.
In the Payload source section, choose one of the following:
- File: Drag your packaged skill ZIP file, or browse your local directory.
Bucket: Enter the path to your ZIP archive stored in a Cloud Storage bucket, in the format
gs://BUCKET_NAME/SKILL_PACKAGE.zip.
Click Create.
Your skill is created. For all subsequent skill operations, refer to your
skill as private-SKILL_ID, as displayed in the
Google Cloud console.
gcloud
To register a skill and upload its initial payload, you can upload either a local ZIP file or import a package stored in Cloud Storage.
Replace the following:
SKILL_ID: The resource ID of the skill, for example,workspace-docs-skill. After creation, the registry automatically prepends theprivate-prefix. You must use the prefixed ID in all subsequent skill commands, for exampleprivate-workspace-docs-skill.PROJECT_ID: The project ID.LOCATION: The geographic region, for example,global,us, oreu.DISPLAY_NAME: A user-friendly name for the skill.DESCRIPTION: A brief summary explaining the skill capabilities.Upload a local ZIP file: To register a skill using a local ZIP payload:
gcloud alpha agent-registry skills create SKILL_ID \ --project=PROJECT_ID \ --location=LOCATION \ --display-name="DISPLAY_NAME" \ --description="DESCRIPTION" \ --payload="LOCAL_ZIP_PATH"Replace
LOCAL_ZIP_PATHwith the path to your packaged skill archive on your local machine, for example,./workspace-docs-skill.zip.Import from a Cloud Storage bucket: To register a skill using a ZIP archive hosted in a Cloud Storage bucket:
gcloud alpha agent-registry skills create SKILL_ID \ --project=PROJECT_ID \ --location=LOCATION \ --display-name="DISPLAY_NAME" \ --description="DESCRIPTION" \ --gcs-source-uri="gs://BUCKET_NAME/SKILL_PACKAGE.zip"Replace the following:
BUCKET_NAME: The Cloud Storage bucket name that contains the ZIP bundle.SKILL_PACKAGE: The name of the skill package containing the skill payload.
REST
To create a skill with an initial revision inline:
HTTP method and URL
POST https://agentregistry.googleapis.com/v1alpha/projects/{project}/locations/{location}/skills?skillId={skillId}
Request JSON body (local file upload)
To create a skill by uploading local ZIP archive bytes directly, use the
archiveUploadSource payload:
{
"displayName": "DISPLAY_NAME",
"description": "DESCRIPTION",
"type": "SIMPLE",
"targetState": "TARGET_STATE_ACTIVE",
"initialRevision": {
"archiveUploadSource": {
"archiveContent": "BASE64_ZIP_BYTES"
}
}
}
Replace BASE64_ZIP_BYTES with the base64-encoded
string representation of your local ZIP archive.
Request JSON body (import from Cloud Storage)
Alternatively, to create a skill using an archive stored in a Cloud Storage
bucket, use gcsSource:
{
"displayName": "DISPLAY_NAME",
"description": "DESCRIPTION",
"type": "SIMPLE",
"targetState": "TARGET_STATE_ACTIVE",
"initialRevision": {
"gcsSource": {
"uri": "gs://BUCKET_NAME/SKILL_PACKAGE.zip"
}
}
}
Replace the following:
BUCKET_NAME: The Cloud Storage bucket name that contains the ZIP bundle.SKILL_PACKAGE: The name of the skill package containing the skill payload.
curl command (local file upload)
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"displayName": "DISPLAY_NAME",
"description": "DESCRIPTION",
"type": "SIMPLE",
"targetState": "TARGET_STATE_ACTIVE",
"initialRevision": {
"archiveUploadSource": {
"archiveContent": "$(base64 -w0 local_skill.zip)"
}
}
}' \
"https://agentregistry.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/skills?skillId=SKILL_ID"
For a Cloud Storage bucket file upload, replace the request JSON body with the corresponding fields and values.
What's next
- Learn how to manage your registered skills.
- Learn how to add and manage skill revisions.
- Review verified publisher details.