Skills Bundles
A Skills Bundle points at a GitHub connection and a directory of agentskills.io-format skills within one of its repositories. Firetiger fetches those skills and exposes them to your organization’s agents on the read-only /n (/run/skills) mount, alongside the built-in library skills. The resource stores configuration only — credentials live on the referenced connection, and skill content is fetched at agent runtime.
Service: firetiger.skills_bundles.v1.SkillsBundlesService
Resource name pattern: skills-bundles/{skills_bundle_id}
Access: Read-write
Resource type: SkillsBundle
The referenced connection must be a GitHub connection; CreateSkillsBundle and UpdateSkillsBundle reject any other connection type with INVALID_ARGUMENT. A built-in skill of the same name always takes precedence over a repository-authored one.
Example flow
1. Register a skills bundle for a runbooks repository
curl -X POST "https://api.cloud.firetiger.com/firetiger.skills_bundles.v1.SkillsBundlesService/CreateSkillsBundle" \
-u "$USERNAME:$PASSWORD" \
-H "Content-Type: application/json" \
-d '{
"skills_bundle_id": "team-runbooks",
"skills_bundle": {
"display_name": "Team Runbooks",
"connection": "connections/acme-github",
"repository": "acme/runbooks"
}
}'
{
"skillsBundle": {
"name": "skills-bundles/team-runbooks",
"displayName": "Team Runbooks",
"connection": "connections/acme-github",
"repository": "acme/runbooks",
"directory": "skills",
"enabled": true,
"createTime": "2026-06-20T14:30:00Z",
"updateTime": "2026-06-20T14:30:00Z"
}
}
The server fills directory (defaults to skills) and enabled (defaults to true).
2. List skills bundles
curl -X POST "https://api.cloud.firetiger.com/firetiger.skills_bundles.v1.SkillsBundlesService/ListSkillsBundles" \
-u "$USERNAME:$PASSWORD" \
-H "Content-Type: application/json" \
-d '{"page_size": 25}'
{
"skillsBundles": [
{
"name": "skills-bundles/team-runbooks",
"displayName": "Team Runbooks",
"connection": "connections/acme-github",
"repository": "acme/runbooks",
"directory": "skills",
"enabled": true,
"createTime": "2026-06-20T14:30:00Z",
"updateTime": "2026-06-20T14:30:00Z"
}
],
"nextPageToken": ""
}
Methods
| Method | Description |
|---|---|
| CreateSkillsBundle | Register a new skills bundle |
| GetSkillsBundle | Retrieve a skills bundle by name |
| UpdateSkillsBundle | Update an existing skills bundle |
| DeleteSkillsBundle | Soft-delete a skills bundle |
| ListSkillsBundles | List skills bundles with filtering and pagination |
| ListSkillsBundleSkills | Resolve the skills discoverable in a provider’s repository |
| PreviewSkillsBundleSkills | Resolve the skills a repository configuration would expose, without saving |
CreateSkillsBundle
Register a new skills bundle. The referenced connection must be a GitHub connection.
POST /firetiger.skills_bundles.v1.SkillsBundlesService/CreateSkillsBundle
Request body
| Field | Type | Required | Description |
|---|---|---|---|
skills_bundle_id |
string | Yes | ID for the new provider (alphanumeric, hyphens, underscores) |
skills_bundle |
SkillsBundle | Yes | The provider to create |
Example
curl -X POST "https://api.cloud.firetiger.com/firetiger.skills_bundles.v1.SkillsBundlesService/CreateSkillsBundle" \
-u "$USERNAME:$PASSWORD" \
-H "Content-Type: application/json" \
-d '{
"skills_bundle_id": "platform-skills",
"skills_bundle": {
"display_name": "Platform Skills",
"connection": "connections/acme-github",
"repository": "acme/platform",
"directory": "agent-skills",
"branch": "main"
}
}'
GetSkillsBundle
Retrieve a skills bundle by name.
POST /firetiger.skills_bundles.v1.SkillsBundlesService/GetSkillsBundle
Request body
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Resource name of the provider |
Example
curl -X POST "https://api.cloud.firetiger.com/firetiger.skills_bundles.v1.SkillsBundlesService/GetSkillsBundle" \
-u "$USERNAME:$PASSWORD" \
-H "Content-Type: application/json" \
-d '{"name": "skills-bundles/team-runbooks"}'
UpdateSkillsBundle
Update an existing skills bundle. update_mask is required and must list the settable fields to modify. Server-owned fields (name, create_time, update_time, delete_time) are ignored if present in the mask; a mask with no settable fields is rejected with INVALID_ARGUMENT.
POST /firetiger.skills_bundles.v1.SkillsBundlesService/UpdateSkillsBundle
Request body
| Field | Type | Required | Description |
|---|---|---|---|
skills_bundle |
SkillsBundle | Yes | The provider with name set and updated fields |
update_mask |
string | Yes | Comma-separated list of settable fields to update. Required; output-only paths are stripped, and an empty resulting mask is rejected. |
Example
curl -X POST "https://api.cloud.firetiger.com/firetiger.skills_bundles.v1.SkillsBundlesService/UpdateSkillsBundle" \
-u "$USERNAME:$PASSWORD" \
-H "Content-Type: application/json" \
-d '{
"skills_bundle": {
"name": "skills-bundles/team-runbooks",
"enabled": false
},
"update_mask": "enabled"
}'
DeleteSkillsBundle
Soft-delete a skills bundle. The resource remains accessible via Get but is excluded from List results unless show_deleted is set, and its skills stop being served.
POST /firetiger.skills_bundles.v1.SkillsBundlesService/DeleteSkillsBundle
Request body
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Resource name of the provider to delete |
Example
curl -X POST "https://api.cloud.firetiger.com/firetiger.skills_bundles.v1.SkillsBundlesService/DeleteSkillsBundle" \
-u "$USERNAME:$PASSWORD" \
-H "Content-Type: application/json" \
-d '{"name": "skills-bundles/team-runbooks"}'
ListSkillsBundles
List skills bundles with optional filtering and pagination.
POST /firetiger.skills_bundles.v1.SkillsBundlesService/ListSkillsBundles
Request body
| Field | Type | Required | Description |
|---|---|---|---|
filter |
string | No | Filter expression |
order_by |
string | No | Field to sort by (e.g. create_time desc) |
page_size |
integer | No | Maximum results per page |
page_token |
string | No | Token for the next page of results |
show_deleted |
boolean | No | Include soft-deleted providers |
Example
curl -X POST "https://api.cloud.firetiger.com/firetiger.skills_bundles.v1.SkillsBundlesService/ListSkillsBundles" \
-u "$USERNAME:$PASSWORD" \
-H "Content-Type: application/json" \
-d '{"page_size": 25}'
ListSkillsBundleSkills
Resolve the agentskills.io skills currently discoverable in a provider’s repository directory, fetched live from GitHub. Use this to preview what a configured provider exposes to your agents. The full result set is returned in a single page (next_page_token is always empty).
POST /firetiger.skills_bundles.v1.SkillsBundlesService/ListSkillsBundleSkills
Request body
| Field | Type | Required | Description |
|---|---|---|---|
parent |
string | Yes | Resource name of the provider whose skills to list (skills-bundles/{id}) |
filter |
string | No | Accepted for API consistency; ignored (the result set is small and returned in one page) |
order_by |
string | No | Accepted for API consistency; ignored |
page_size |
integer | No | Accepted for API consistency; ignored |
page_token |
string | No | Accepted for API consistency; ignored |
Response body
| Field | Type | Description |
|---|---|---|
skills |
DiscoveredSkill[] | The skills found in the provider’s repository directory |
next_page_token |
string | Always empty; the full set is returned in one page |
DiscoveredSkill
| Field | Type | Description |
|---|---|---|
name |
string | The skill’s slug (its directory name) |
description |
string | One-line description from the SKILL.md frontmatter |
body |
string | Full SKILL.md content (frontmatter and body) |
source_ref |
string | Opaque origin, e.g. github://acme/runbooks@main/skills/deploy |
Example
curl -X POST "https://api.cloud.firetiger.com/firetiger.skills_bundles.v1.SkillsBundlesService/ListSkillsBundleSkills" \
-u "$USERNAME:$PASSWORD" \
-H "Content-Type: application/json" \
-d '{"parent": "skills-bundles/team-runbooks"}'
{
"skills": [
{
"name": "deploy",
"description": "Run a production deployment and verify rollout",
"body": "---\nname: deploy\ndescription: Run a production deployment and verify rollout\n---\n\n# Deploy\n…",
"sourceRef": "github://acme/runbooks@main/skills/deploy"
}
],
"nextPageToken": ""
}
PreviewSkillsBundleSkills
Resolve the agentskills.io skills a repository configuration would expose, without creating or updating a provider. Backs the UI’s live preview as a user edits the connection, repository, directory, or branch before saving. Like ListSkillsBundleSkills, it returns the full set in a single page.
POST /firetiger.skills_bundles.v1.SkillsBundlesService/PreviewSkillsBundleSkills
Request body
| Field | Type | Required | Description |
|---|---|---|---|
connection |
string | Yes | Resource name of the GitHub connection that grants repository access (connections/{id}) |
repository |
string | Yes | Repository holding the skills, in owner/repo form |
directory |
string | No | Directory within the repository; defaults to skills when empty |
branch |
string | No | Git ref to read from; empty uses the repository’s default branch |
Response body
A skills array of DiscoveredSkill (the same skill shape as ListSkillsBundleSkills).
Example
curl -X POST "https://api.cloud.firetiger.com/firetiger.skills_bundles.v1.SkillsBundlesService/PreviewSkillsBundleSkills" \
-u "$USERNAME:$PASSWORD" \
-H "Content-Type: application/json" \
-d '{
"connection": "connections/acme-github",
"repository": "acme/runbooks",
"directory": "skills",
"branch": "main"
}'