intentic
Download the app
Download the app
Agent setup

Skills

The instruction packs an agent can be handed

On this page(5 sections)

What is available and whether each is on, the text of one, and writing, switching or deleting one of your own. The list joins every separate source 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 the places they come from: the owner's own, the settings, plugins a connection installed, folders inside extensions, and persona kits.

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. A new one starts switched on, because you wrote it in order to use it; rewriting one you switched off leaves it off. 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/switchSwitch one of your own skills on or off

Off takes the agent's copy away and keeps your text; on writes the copy back from it. Built-in tools are switched in the agent settings instead, and nothing else has a switch.

What you send

FieldTypeWhere
namerequiredWhich skill of your own to…stringbody
onrequiredOn writes the agent's copy from…booleanbody

What comes back

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

const result = await sandbox.skills.switch({
  "name": "nightly changelog",
  "on": true
});
POST/skills/removeDelete a skill

Removes the text and the agent's copy 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.