List Skills From Bound Repo
curl --request GET \
--url https://api.replicas.dev/v1/environments/{environmentId}/repo-skills \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.replicas.dev/v1/environments/{environmentId}/repo-skills"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.replicas.dev/v1/environments/{environmentId}/repo-skills', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.replicas.dev/v1/environments/{environmentId}/repo-skills",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.replicas.dev/v1/environments/{environmentId}/repo-skills"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.replicas.dev/v1/environments/{environmentId}/repo-skills")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.replicas.dev/v1/environments/{environmentId}/repo-skills")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"repo_skills": [
{
"id": "<string>",
"repository_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"repository_full_name": "<string>",
"branch": "<string>",
"path": "<string>",
"name": "<string>",
"description": "<string>",
"framework": "claude",
"kind": "skill",
"html_url": "<string>"
}
],
"error": "<string>"
}{
"error": "<string>",
"details": "<string>",
"code": "<string>"
}{
"error": "<string>",
"details": "<string>",
"code": "<string>"
}{
"error": "<string>",
"details": "<string>",
"code": "<string>"
}{
"error": "<string>",
"details": "<string>",
"code": "<string>"
}Environments
List Skills From Bound Repo
Returns skills, agents, commands, prompts, and rule files committed to the repository (or repository set) the environment is bound to. Resolved live from the repo’s default branch via GitHub. Read-only: these are sourced from the user’s git tree, not from skills.sh. When the environment is not bound to a repo, returns an empty list with no error.
GET
/
v1
/
environments
/
{environmentId}
/
repo-skills
List Skills From Bound Repo
curl --request GET \
--url https://api.replicas.dev/v1/environments/{environmentId}/repo-skills \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.replicas.dev/v1/environments/{environmentId}/repo-skills"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.replicas.dev/v1/environments/{environmentId}/repo-skills', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.replicas.dev/v1/environments/{environmentId}/repo-skills",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.replicas.dev/v1/environments/{environmentId}/repo-skills"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.replicas.dev/v1/environments/{environmentId}/repo-skills")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.replicas.dev/v1/environments/{environmentId}/repo-skills")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"repo_skills": [
{
"id": "<string>",
"repository_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"repository_full_name": "<string>",
"branch": "<string>",
"path": "<string>",
"name": "<string>",
"description": "<string>",
"framework": "claude",
"kind": "skill",
"html_url": "<string>"
}
],
"error": "<string>"
}{
"error": "<string>",
"details": "<string>",
"code": "<string>"
}{
"error": "<string>",
"details": "<string>",
"code": "<string>"
}{
"error": "<string>",
"details": "<string>",
"code": "<string>"
}{
"error": "<string>",
"details": "<string>",
"code": "<string>"
}Authorizations
API key authentication. Obtain your API key from the Replicas dashboard under Organization → Settings → API Keys.
Path Parameters
Environment UUID, or the literal string global.
Response
Successful response. error is populated when discovery encountered a partial failure (e.g. the repo has no GitHub App installation); the UI surfaces it inline rather than treating it as a 5xx.
⌘I