intentic
Create your workspace
Agent setup

Skills

The instruction packs an agent can be handed

On this page(4 sections)

What is available and whether each is on, the text of one, and writing or deleting one. The list joins four separate sources into a single answer.

GET/skillsWhat the agent knows how to do

Every skill available here and whether it is switched on, joined from all four places they come from: the owner's own, the settings, plugins a connection installed, and folders inside extensions.

What you send

Nothing. Call it as it is.

What comes back

FieldType
idIts handle, which reading and deleting…string
nameIts namestring
descriptionWhat it is for, which is…string
originWhere it came from"builtin" | "own" | "capability" | "extension" … (7)
ownerWho ships it, as the row…string
enabledWhether the agent can reach itboolean
switchableWhether this surface can switch itboolean
editableWhether it can be rewritten hereboolean
removableboolean
Try itanswered in this tab
curl
curl "$SANDBOX/skills" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.skills.list();
POST/skillsWrite a skill

Creates or rewrites a skill by name, and switches it on, because you wrote it in order to use it. Renaming is saving under the new name and deleting the old.

What you send

FieldTypeWhere
namerequiredWhat to call itstringbody
descriptionrequiredWhat it is for, which is…stringbody
bodyrequiredThe skill itselfstringbody

What comes back

FieldType
okAlways truetrue
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/skills" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"name":"nightly changelog","description":"Runs every night and opens a pull request when anything changed.","body":"…"}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.skills.save({
  "name": "nightly changelog",
  "description": "Runs every night and opens a pull request when anything changed.",
  "body": ""
});
GET/skills/readRead one skill

The full text of a single skill. The name travels in the query rather than the address, because a name can carry the owner it came from and that will not fit in a path.

What you send

FieldTypeWhere
idrequiredWhich skillstringquery

What comes back

FieldType
idThe skill's id, which can carry…string
nameIts namestring
bodyThe instructions themselves, as writtenstring
Try itanswered in this tab
curl
curl "$SANDBOX/skills/read?id=a1b2c3d4" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.skills.read({
  "id": "a1b2c3d4"
});
POST/skills/removeDelete a skill

Removes the text and takes it off the enabled list in one step, so a screen never has to sequence two calls and never leaves one half done.

What you send

FieldTypeWhere
namerequiredWhich skill to deletestringbody

What comes back

FieldType
okAlways truetrue
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/skills/remove" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"name":"nightly changelog"}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.skills.remove({
  "name": "nightly changelog"
});

Type to search every page, in the docs and the API reference.