curl --request POST \
--url https://api.veryfront.com/projects/{project_reference}/skills \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"id": "<string>",
"allowed_tools": [
"<string>"
],
"instructions": "<string>",
"source": "<string>"
}
'import requests
url = "https://api.veryfront.com/projects/{project_reference}/skills"
payload = {
"name": "<string>",
"description": "<string>",
"id": "<string>",
"allowed_tools": ["<string>"],
"instructions": "<string>",
"source": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
id: '<string>',
allowed_tools: ['<string>'],
instructions: '<string>',
source: '<string>'
})
};
fetch('https://api.veryfront.com/projects/{project_reference}/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.veryfront.com/projects/{project_reference}/skills",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'id' => '<string>',
'allowed_tools' => [
'<string>'
],
'instructions' => '<string>',
'source' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.veryfront.com/projects/{project_reference}/skills"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"id\": \"<string>\",\n \"allowed_tools\": [\n \"<string>\"\n ],\n \"instructions\": \"<string>\",\n \"source\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.veryfront.com/projects/{project_reference}/skills")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"id\": \"<string>\",\n \"allowed_tools\": [\n \"<string>\"\n ],\n \"instructions\": \"<string>\",\n \"source\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.veryfront.com/projects/{project_reference}/skills")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"id\": \"<string>\",\n \"allowed_tools\": [\n \"<string>\"\n ],\n \"instructions\": \"<string>\",\n \"source\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"description": "<string>",
"source_path": "<string>",
"edit_mode": "structured",
"instructions": "<string>",
"sections": {},
"source": "<string>",
"source_only_reasons": [
"<string>"
],
"allowed_tools": [
"<string>"
],
"owner_agent_id": "<string>",
"short_name": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"error": "<string>",
"message": "<string>",
"edit_mode": "structured",
"source_only_reasons": [
"<string>"
],
"source_path": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"error": "<string>",
"message": "<string>",
"edit_mode": "structured",
"source_only_reasons": [
"<string>"
],
"source_path": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"error": "<string>",
"message": "<string>",
"edit_mode": "structured",
"source_only_reasons": [
"<string>"
],
"source_path": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"error": "<string>",
"message": "<string>",
"edit_mode": "structured",
"source_only_reasons": [
"<string>"
],
"source_path": "<string>"
}Create skill
Creates a structured skill document in the selected source target.
curl --request POST \
--url https://api.veryfront.com/projects/{project_reference}/skills \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"id": "<string>",
"allowed_tools": [
"<string>"
],
"instructions": "<string>",
"source": "<string>"
}
'import requests
url = "https://api.veryfront.com/projects/{project_reference}/skills"
payload = {
"name": "<string>",
"description": "<string>",
"id": "<string>",
"allowed_tools": ["<string>"],
"instructions": "<string>",
"source": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
id: '<string>',
allowed_tools: ['<string>'],
instructions: '<string>',
source: '<string>'
})
};
fetch('https://api.veryfront.com/projects/{project_reference}/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.veryfront.com/projects/{project_reference}/skills",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'id' => '<string>',
'allowed_tools' => [
'<string>'
],
'instructions' => '<string>',
'source' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.veryfront.com/projects/{project_reference}/skills"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"id\": \"<string>\",\n \"allowed_tools\": [\n \"<string>\"\n ],\n \"instructions\": \"<string>\",\n \"source\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.veryfront.com/projects/{project_reference}/skills")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"id\": \"<string>\",\n \"allowed_tools\": [\n \"<string>\"\n ],\n \"instructions\": \"<string>\",\n \"source\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.veryfront.com/projects/{project_reference}/skills")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"id\": \"<string>\",\n \"allowed_tools\": [\n \"<string>\"\n ],\n \"instructions\": \"<string>\",\n \"source\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"description": "<string>",
"source_path": "<string>",
"edit_mode": "structured",
"instructions": "<string>",
"sections": {},
"source": "<string>",
"source_only_reasons": [
"<string>"
],
"allowed_tools": [
"<string>"
],
"owner_agent_id": "<string>",
"short_name": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"error": "<string>",
"message": "<string>",
"edit_mode": "structured",
"source_only_reasons": [
"<string>"
],
"source_path": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"error": "<string>",
"message": "<string>",
"edit_mode": "structured",
"source_only_reasons": [
"<string>"
],
"source_path": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"error": "<string>",
"message": "<string>",
"edit_mode": "structured",
"source_only_reasons": [
"<string>"
],
"source_path": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"error": "<string>",
"message": "<string>",
"edit_mode": "structured",
"source_only_reasons": [
"<string>"
],
"source_path": "<string>"
}Authorizations
Use a JWT bearer token or a Veryfront API key in the Authorization header.
Path Parameters
Project slug, UUID, or domain that identifies the project.
Body
Canonical skill name, also used as the skill directory name. Max 64 characters. Lowercase letters, numbers, and hyphens only. Must not start or end with a hyphen, and must not contain consecutive hyphens.
1 - 64^[a-z0-9]+(?:-[a-z0-9]+)*$Max 1024 characters. Non-empty. Describes what the skill does and when to use it.
1 - 1024Deprecated alias for name; when sent it must equal name.
1 - 64^[a-z0-9]+(?:-[a-z0-9]+)*$1The Markdown body of SKILL.md, excluding frontmatter.
1Response
Created project skill document
structured, source_only The Markdown body of SKILL.md, excluding frontmatter.
Read-only sections derived from ## headings in the body. Empty if the body cannot be split into sections. Use instructions for the complete, authoritative body; this field cannot be updated.
Show child attributes
Show child attributes