mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-10-15 11:22:21 +02:00
* refactor(skills): extract evaluation and audit orchestration * chore(security): scope OpenAPI digest Gitleaks exception * refactor(skills): establish domain-oriented service boundaries * refactor(skills): address architecture review feedback * fix(skills): restore prompt seams and harden signature contracts * test(skills): restore ReDoS coverage and simplify API baseline
1227 lines
31 KiB
JSON
1227 lines
31 KiB
JSON
{
|
|
"components": {
|
|
"schemas": {
|
|
"HTTPValidationError": {
|
|
"properties": {
|
|
"detail": {
|
|
"items": {
|
|
"$ref": "#/components/schemas/ValidationError"
|
|
},
|
|
"title": "Detail",
|
|
"type": "array"
|
|
}
|
|
},
|
|
"title": "HTTPValidationError",
|
|
"type": "object"
|
|
},
|
|
"SkillAddRequest": {
|
|
"properties": {
|
|
"category": {
|
|
"default": "general",
|
|
"maxLength": 40,
|
|
"title": "Category",
|
|
"type": "string"
|
|
},
|
|
"confidence": {
|
|
"default": 0.8,
|
|
"title": "Confidence",
|
|
"type": "number"
|
|
},
|
|
"description": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 200,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Description"
|
|
},
|
|
"fallback_for_toolsets": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"title": "Fallback For Toolsets",
|
|
"type": "array"
|
|
},
|
|
"name": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 80,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Name"
|
|
},
|
|
"pitfalls": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"title": "Pitfalls",
|
|
"type": "array"
|
|
},
|
|
"platforms": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"title": "Platforms",
|
|
"type": "array"
|
|
},
|
|
"problem": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 2000,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Problem"
|
|
},
|
|
"procedure": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"title": "Procedure",
|
|
"type": "array"
|
|
},
|
|
"requires_toolsets": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"title": "Requires Toolsets",
|
|
"type": "array"
|
|
},
|
|
"session_id": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Session Id"
|
|
},
|
|
"solution": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 5000,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Solution"
|
|
},
|
|
"source": {
|
|
"default": "user",
|
|
"title": "Source",
|
|
"type": "string"
|
|
},
|
|
"status": {
|
|
"default": "draft",
|
|
"title": "Status",
|
|
"type": "string"
|
|
},
|
|
"steps": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"title": "Steps",
|
|
"type": "array"
|
|
},
|
|
"tags": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"title": "Tags",
|
|
"type": "array"
|
|
},
|
|
"teacher_model": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Teacher Model"
|
|
},
|
|
"title": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 200,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Title"
|
|
},
|
|
"verification": {
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"title": "Verification",
|
|
"type": "array"
|
|
},
|
|
"version": {
|
|
"default": "1.0.0",
|
|
"title": "Version",
|
|
"type": "string"
|
|
},
|
|
"when_to_use": {
|
|
"anyOf": [
|
|
{
|
|
"maxLength": 2000,
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "When To Use"
|
|
}
|
|
},
|
|
"title": "SkillAddRequest",
|
|
"type": "object"
|
|
},
|
|
"SkillImportUrlRequest": {
|
|
"properties": {
|
|
"url": {
|
|
"maxLength": 2000,
|
|
"minLength": 8,
|
|
"title": "Url",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"url"
|
|
],
|
|
"title": "SkillImportUrlRequest",
|
|
"type": "object"
|
|
},
|
|
"SkillUpdateRequest": {
|
|
"properties": {
|
|
"body_extra": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Body Extra"
|
|
},
|
|
"category": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Category"
|
|
},
|
|
"confidence": {
|
|
"anyOf": [
|
|
{
|
|
"type": "number"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Confidence"
|
|
},
|
|
"description": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Description"
|
|
},
|
|
"fallback_for_toolsets": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Fallback For Toolsets"
|
|
},
|
|
"name": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Name"
|
|
},
|
|
"pitfalls": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Pitfalls"
|
|
},
|
|
"platforms": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Platforms"
|
|
},
|
|
"problem": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Problem"
|
|
},
|
|
"procedure": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Procedure"
|
|
},
|
|
"requires_toolsets": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Requires Toolsets"
|
|
},
|
|
"solution": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Solution"
|
|
},
|
|
"status": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Status"
|
|
},
|
|
"steps": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Steps"
|
|
},
|
|
"tags": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Tags"
|
|
},
|
|
"title": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Title"
|
|
},
|
|
"verification": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Verification"
|
|
},
|
|
"version": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "Version"
|
|
},
|
|
"when_to_use": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
],
|
|
"title": "When To Use"
|
|
}
|
|
},
|
|
"title": "SkillUpdateRequest",
|
|
"type": "object"
|
|
},
|
|
"ValidationError": {
|
|
"properties": {
|
|
"ctx": {
|
|
"title": "Context",
|
|
"type": "object"
|
|
},
|
|
"input": {
|
|
"title": "Input"
|
|
},
|
|
"loc": {
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "integer"
|
|
}
|
|
]
|
|
},
|
|
"title": "Location",
|
|
"type": "array"
|
|
},
|
|
"msg": {
|
|
"title": "Message",
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"title": "Error Type",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"loc",
|
|
"msg",
|
|
"type"
|
|
],
|
|
"title": "ValidationError",
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"info": {
|
|
"title": "FastAPI",
|
|
"version": "0.1.0"
|
|
},
|
|
"openapi": "3.1.0",
|
|
"paths": {
|
|
"/api/skills": {
|
|
"get": {
|
|
"operationId": "list_skills_api_skills_get",
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
},
|
|
"description": "Successful Response"
|
|
}
|
|
},
|
|
"summary": "List Skills",
|
|
"tags": [
|
|
"skills"
|
|
]
|
|
}
|
|
},
|
|
"/api/skills/add": {
|
|
"post": {
|
|
"operationId": "add_skill_api_skills_add_post",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SkillAddRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
},
|
|
"description": "Successful Response"
|
|
},
|
|
"422": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
},
|
|
"description": "Validation Error"
|
|
}
|
|
},
|
|
"summary": "Add Skill",
|
|
"tags": [
|
|
"skills"
|
|
]
|
|
}
|
|
},
|
|
"/api/skills/audit-all": {
|
|
"post": {
|
|
"description": "Kick off a background audit of skills: each is tested + judged; if it\nneeds work the model self-edits and retries; if a teacher model is\nconfigured it escalates; a skill that still fails is demoted to draft\n(never deleted). Poll GET /audit-status. Body:\n{scope: 'drafts'|'unchecked'|'all', names?: [...], skip_audited?: bool}. Default 'all'\nmeans every visible skill, including already-published skills, so audit\ncan publish or demote according to the confidence threshold.",
|
|
"operationId": "audit_all_skills_api_skills_audit_all_post",
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
},
|
|
"description": "Successful Response"
|
|
}
|
|
},
|
|
"summary": "Audit All Skills",
|
|
"tags": [
|
|
"skills"
|
|
]
|
|
}
|
|
},
|
|
"/api/skills/audit-all/cancel": {
|
|
"post": {
|
|
"operationId": "audit_cancel_api_skills_audit_all_cancel_post",
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
},
|
|
"description": "Successful Response"
|
|
}
|
|
},
|
|
"summary": "Audit Cancel",
|
|
"tags": [
|
|
"skills"
|
|
]
|
|
}
|
|
},
|
|
"/api/skills/audit-all/status": {
|
|
"get": {
|
|
"operationId": "audit_status_api_skills_audit_all_status_get",
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
},
|
|
"description": "Successful Response"
|
|
}
|
|
},
|
|
"summary": "Audit Status",
|
|
"tags": [
|
|
"skills"
|
|
]
|
|
}
|
|
},
|
|
"/api/skills/builtin": {
|
|
"get": {
|
|
"description": "Read-only list of the agent's built-in tool capabilities (research,\nsessions, tasks, email, etc.) \u2014 the things it natively knows how to do.\nSurfaced so the Skills tab can show them in a separate \"Built-in\"\nsection alongside the user's learned SKILL.md skills. Sourced from\nagent_loop.TOOL_SECTIONS (the same descriptions the model is given).",
|
|
"operationId": "list_builtin_skills_api_skills_builtin_get",
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
},
|
|
"description": "Successful Response"
|
|
}
|
|
},
|
|
"summary": "List Builtin Skills",
|
|
"tags": [
|
|
"skills"
|
|
]
|
|
}
|
|
},
|
|
"/api/skills/builtin/{name}": {
|
|
"delete": {
|
|
"description": "Revert a built-in tool to its shipped instruction block.",
|
|
"operationId": "reset_builtin_override_api_skills_builtin__name__delete",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "name",
|
|
"required": true,
|
|
"schema": {
|
|
"title": "Name",
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
},
|
|
"description": "Successful Response"
|
|
},
|
|
"422": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
},
|
|
"description": "Validation Error"
|
|
}
|
|
},
|
|
"summary": "Reset Builtin Override",
|
|
"tags": [
|
|
"skills"
|
|
]
|
|
},
|
|
"get": {
|
|
"description": "Full text of a built-in tool's instruction block \u2014 the override\nif one is set, plus the shipped default (for the revert button).",
|
|
"operationId": "get_builtin_skill_api_skills_builtin__name__get",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "name",
|
|
"required": true,
|
|
"schema": {
|
|
"title": "Name",
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
},
|
|
"description": "Successful Response"
|
|
},
|
|
"422": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
},
|
|
"description": "Validation Error"
|
|
}
|
|
},
|
|
"summary": "Get Builtin Skill",
|
|
"tags": [
|
|
"skills"
|
|
]
|
|
},
|
|
"put": {
|
|
"description": "Save a user override for a built-in tool's instruction block.\nWARNING surfaced in the UI \u2014 this changes how the assistant is\ntold to use a native tool.",
|
|
"operationId": "set_builtin_override_api_skills_builtin__name__put",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "name",
|
|
"required": true,
|
|
"schema": {
|
|
"title": "Name",
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
},
|
|
"description": "Successful Response"
|
|
},
|
|
"422": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
},
|
|
"description": "Validation Error"
|
|
}
|
|
},
|
|
"summary": "Set Builtin Override",
|
|
"tags": [
|
|
"skills"
|
|
]
|
|
}
|
|
},
|
|
"/api/skills/import-from-url": {
|
|
"post": {
|
|
"description": "Install a SKILL.md bundle from a public GitHub URL (skills.sh links supported).",
|
|
"operationId": "import_skill_from_url_api_skills_import_from_url_post",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SkillImportUrlRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
},
|
|
"description": "Successful Response"
|
|
},
|
|
"422": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
},
|
|
"description": "Validation Error"
|
|
}
|
|
},
|
|
"summary": "Import Skill From Url",
|
|
"tags": [
|
|
"skills"
|
|
]
|
|
}
|
|
},
|
|
"/api/skills/index": {
|
|
"get": {
|
|
"description": "The lightweight `[{name, description, category}]` list that the\nagent's system prompt sees. Useful for the UI's \"what does the model\nactually have access to?\" view.",
|
|
"operationId": "get_index_api_skills_index_get",
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
},
|
|
"description": "Successful Response"
|
|
}
|
|
},
|
|
"summary": "Get Index",
|
|
"tags": [
|
|
"skills"
|
|
]
|
|
}
|
|
},
|
|
"/api/skills/search": {
|
|
"post": {
|
|
"operationId": "search_skills_api_skills_search_post",
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
},
|
|
"description": "Successful Response"
|
|
}
|
|
},
|
|
"summary": "Search Skills",
|
|
"tags": [
|
|
"skills"
|
|
]
|
|
}
|
|
},
|
|
"/api/skills/slash-catalog": {
|
|
"get": {
|
|
"description": "Return skills that are available as slash commands.\n\nMirrors the agent prompt's published-skill index so the UI never offers\na slash command the model would not normally be allowed to discover.",
|
|
"operationId": "get_slash_catalog_api_skills_slash_catalog_get",
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
},
|
|
"description": "Successful Response"
|
|
}
|
|
},
|
|
"summary": "Get Slash Catalog",
|
|
"tags": [
|
|
"skills"
|
|
]
|
|
}
|
|
},
|
|
"/api/skills/{skill_id}": {
|
|
"delete": {
|
|
"operationId": "delete_skill_api_skills__skill_id__delete",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "skill_id",
|
|
"required": true,
|
|
"schema": {
|
|
"title": "Skill Id",
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
},
|
|
"description": "Successful Response"
|
|
},
|
|
"422": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
},
|
|
"description": "Validation Error"
|
|
}
|
|
},
|
|
"summary": "Delete Skill",
|
|
"tags": [
|
|
"skills"
|
|
]
|
|
},
|
|
"get": {
|
|
"operationId": "get_skill_api_skills__skill_id__get",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "skill_id",
|
|
"required": true,
|
|
"schema": {
|
|
"title": "Skill Id",
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
},
|
|
"description": "Successful Response"
|
|
},
|
|
"422": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
},
|
|
"description": "Validation Error"
|
|
}
|
|
},
|
|
"summary": "Get Skill",
|
|
"tags": [
|
|
"skills"
|
|
]
|
|
},
|
|
"put": {
|
|
"operationId": "update_skill_api_skills__skill_id__put",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "skill_id",
|
|
"required": true,
|
|
"schema": {
|
|
"title": "Skill Id",
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SkillUpdateRequest"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
},
|
|
"description": "Successful Response"
|
|
},
|
|
"422": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
},
|
|
"description": "Validation Error"
|
|
}
|
|
},
|
|
"summary": "Update Skill",
|
|
"tags": [
|
|
"skills"
|
|
]
|
|
}
|
|
},
|
|
"/api/skills/{skill_id}/invoke": {
|
|
"post": {
|
|
"description": "Build a skill-pinned prompt for slash-command invocation.\n\nThis is intentionally server-side so availability, ownership, and usage\naccounting use the same rules as the SkillsManager.",
|
|
"operationId": "invoke_skill_api_skills__skill_id__invoke_post",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "skill_id",
|
|
"required": true,
|
|
"schema": {
|
|
"title": "Skill Id",
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
},
|
|
"description": "Successful Response"
|
|
},
|
|
"422": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
},
|
|
"description": "Validation Error"
|
|
}
|
|
},
|
|
"summary": "Invoke Skill",
|
|
"tags": [
|
|
"skills"
|
|
]
|
|
}
|
|
},
|
|
"/api/skills/{skill_id}/markdown": {
|
|
"get": {
|
|
"description": "Return the raw SKILL.md text \u2014 used by the slash-invocation flow\nand the editor's 'view source' affordance.",
|
|
"operationId": "get_skill_markdown_api_skills__skill_id__markdown_get",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "skill_id",
|
|
"required": true,
|
|
"schema": {
|
|
"title": "Skill Id",
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
},
|
|
"description": "Successful Response"
|
|
},
|
|
"422": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
},
|
|
"description": "Validation Error"
|
|
}
|
|
},
|
|
"summary": "Get Skill Markdown",
|
|
"tags": [
|
|
"skills"
|
|
]
|
|
},
|
|
"post": {
|
|
"description": "Replace SKILL.md with new raw content. Parses + validates first.",
|
|
"operationId": "save_skill_markdown_api_skills__skill_id__markdown_post",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "skill_id",
|
|
"required": true,
|
|
"schema": {
|
|
"title": "Skill Id",
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
},
|
|
"description": "Successful Response"
|
|
},
|
|
"422": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
},
|
|
"description": "Validation Error"
|
|
}
|
|
},
|
|
"summary": "Save Skill Markdown",
|
|
"tags": [
|
|
"skills"
|
|
]
|
|
}
|
|
},
|
|
"/api/skills/{skill_id}/test": {
|
|
"post": {
|
|
"description": "Kick off a background skill test (agent run + LLM judge). Returns\nimmediately; the run executes server-side so it survives the modal being\nclosed. Poll GET /{skill_id}/test-status for progress + verdict.\nOn completion it records the verdict and nudges the skill's confidence\nto match (pass\u21920.95, needs_work\u21920.6, fail\u21920.4; inconclusive/unknown leave\nit untouched). It never changes the skill's published/draft STATUS.",
|
|
"operationId": "test_skill_api_skills__skill_id__test_post",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "skill_id",
|
|
"required": true,
|
|
"schema": {
|
|
"title": "Skill Id",
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
},
|
|
"description": "Successful Response"
|
|
},
|
|
"422": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
},
|
|
"description": "Validation Error"
|
|
}
|
|
},
|
|
"summary": "Test Skill",
|
|
"tags": [
|
|
"skills"
|
|
]
|
|
}
|
|
},
|
|
"/api/skills/{skill_id}/test-approval": {
|
|
"post": {
|
|
"description": "Resume a manual skill test with one exact server-sealed action.",
|
|
"operationId": "approve_skill_test_action_api_skills__skill_id__test_approval_post",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "skill_id",
|
|
"required": true,
|
|
"schema": {
|
|
"title": "Skill Id",
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
},
|
|
"description": "Successful Response"
|
|
},
|
|
"422": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
},
|
|
"description": "Validation Error"
|
|
}
|
|
},
|
|
"summary": "Approve Skill Test Action",
|
|
"tags": [
|
|
"skills"
|
|
]
|
|
}
|
|
},
|
|
"/api/skills/{skill_id}/test-status": {
|
|
"get": {
|
|
"description": "Current background-test state for a skill (status / log / verdict).",
|
|
"operationId": "test_skill_status_api_skills__skill_id__test_status_get",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "skill_id",
|
|
"required": true,
|
|
"schema": {
|
|
"title": "Skill Id",
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {}
|
|
}
|
|
},
|
|
"description": "Successful Response"
|
|
},
|
|
"422": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/HTTPValidationError"
|
|
}
|
|
}
|
|
},
|
|
"description": "Validation Error"
|
|
}
|
|
},
|
|
"summary": "Test Skill Status",
|
|
"tags": [
|
|
"skills"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|