---
title: "Add Skill Registry"
method: POST
path: "/v1/environments/{environmentId}/skills-registries"
tags: ["Environments"]
---

# Add Skill Registry

`POST /v1/environments/{environmentId}/skills-registries`

Adds a GitHub repository as a skill registry on the environment. Skills discovered in the repository are installed into workspaces at provisioning time.

## Path parameters

- `environmentId` string, required

## Request body

- object
  - `url` string, required — GitHub repository URL (e.g. https://github.com/org/skills-repo).

## Response `200`

Registry created

- CreateEnvironmentSkillsRegistryResponse
  - `registry` EnvironmentSkillsRegistry, required — A GitHub repository registered as a skill registry on an environment.
    - `id` string, uuid, required
    - `organization_id` string, uuid, required
    - `environment_id` string, uuid, required
    - `name` string, required
    - `url` string, uri, required
    - `repository_full_name` string, required
    - `default_branch` string, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `repo_skills` RepoSkill[], required
    - `id` string, required — Stable id, formed from the repository UUID and the in-repo path.
    - `repository_id` string, uuid, required
    - `repository_full_name` string, required — Repo's `owner/name` (denormalized for the UI).
    - `branch` string, required — Default branch the file was resolved against.
    - `path` string, required — Repo-relative path of the discovered file or skill directory.
    - `name` string, required — Human-friendly name (from YAML frontmatter when present, otherwise the filename or directory).
    - `description` string, nullable, required — Single-line description, populated from frontmatter when available.
    - `framework` 'claude' | 'codex' | 'cursor' | 'agents', required — Which AI tool owns the discovered file's on-disk convention.
    - `kind` 'skill' | 'agent' | 'command' | 'prompt' | 'plugin', required — Sub-kind within the framework.
    - `html_url` string, uri, required — Direct GitHub blob link.
  - `error` string, nullable, required

## Other responses

- `400` — Bad request - Missing or invalid parameters
- `401` — Unauthorized - Invalid or missing API key
- `409` — Conflict - Resource already exists or operation conflicts with current state
- `500` — Internal server error

---

[API](https://skmtc.net/tryreplicas/apis/replica-api.md) · [All operations](https://skmtc.net/tryreplicas/apis/replica-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tryreplicas/replica-api/versions/aa3b4c932f7a/schema)
