Turns a conversation you had with the project assistant into a skill in the standard skill format (a SKILL.md with a name and a one-line description). Anything shaped like a secret or token is removed from the text first; the result says how many were. The draft is not used by any task until it is approved with overlane skill approve. Only your own conversations can be saved.
Usage
overlane assistant save-skill conversation [--service URL] [--team TENANT_ID] [--project PROJECT_ID] --name NAME [--description TEXT] [--dry-run]Arguments
| Argument | Required | Description |
|---|---|---|
conversation |
yes | The conversation ID (shown in the app’s assistant panel) |
Flags
| Flag | Type | Required | Default | Description |
|---|---|---|---|---|
--service |
string | no | The service address (default: OVERLANE_SERVICE_URL, then the project’s binding, then the hosted service) | |
--team |
string | no | The team (tenant) to act on (default: the one your token belongs to) | |
--project |
string | no | The project (default: the connected project in this directory) | |
--name |
string | yes | The skill’s name: lowercase words joined by hyphens | |
--description |
string | no | One line saying when to use it (default: the first question in the conversation) | |
--dry-run |
boolean | no | Print the requests and file changes this command would make, then stop. Needs no credentials. |
Examples
overlane assistant save-skill c1 --name cut-a-release-candidate
overlane assistant save-skill c1 --name cut-a-release-candidate --description 'Cut a release candidate for the web app' --dry-runBehavior
- Effect:
write(changes local or hosted state). - Needs credentials: yes. Uses the network: yes.
- Supports
--dry-run: yes. Accepts--force: no. - Machine-readable description:
overlane schema assistant save-skill.
Result
With --json (the default when stdout is not a terminal) the command prints this JSON Schema’s shape on stdout.
{
"anyOf": [
{
"type": "object",
"properties": {
"tenantId": {
"type": "string"
},
"projectId": {
"type": "string"
},
"skill": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"state": {
"type": "string"
},
"redactions": {
"type": "number"
},
"savedBy": {
"type": "string"
},
"savedAt": {
"type": "string"
},
"reviewedBy": {
"type": "string"
},
"reviewedAt": {
"type": "string"
},
"body": {
"type": "string"
}
},
"required": [
"name",
"description",
"state",
"redactions",
"savedBy",
"savedAt",
"body"
],
"additionalProperties": false
},
"next": {
"type": "string"
}
},
"required": [
"tenantId",
"projectId",
"skill",
"next"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"dryRun": {
"type": "boolean",
"const": true
},
"service": {
"type": "string"
},
"requests": {
"type": "array",
"items": {
"type": "object",
"properties": {
"method": {
"type": "string"
},
"path": {
"type": "string"
},
"body": {},
"note": {
"type": "string"
}
},
"required": [
"method",
"path"
],
"additionalProperties": false
}
},
"commands": {
"type": "array",
"items": {
"type": "string"
}
},
"writes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"path": {
"type": "string"
},
"action": {
"type": "string",
"enum": [
"write",
"append",
"delete"
]
},
"description": {
"type": "string"
}
},
"required": [
"path",
"action",
"description"
],
"additionalProperties": false
}
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"dryRun",
"requests",
"commands",
"writes",
"notes"
],
"additionalProperties": false
}
]
}See exit codes for the status the process returns.