diff --git a/codex-rs/app-server/README.md b/codex-rs/app-server/README.md index b8f7de90a..88d96dda5 100644 --- a/codex-rs/app-server/README.md +++ b/codex-rs/app-server/README.md @@ -11,6 +11,8 @@ - [Initialization](#initialization) - [API Overview](#api-overview) - [Events](#events) +- [Approvals](#approvals) +- [Skills](#skills) - [Auth endpoints](#auth-endpoints) ## Protocol @@ -196,6 +198,25 @@ You can optionally specify config overrides on the new turn. If specified, these } } } ``` +### Example: Start a turn (invoke a skill) + +Invoke a skill by sending a text input that begins with `$`. + +```json +{ "method": "turn/start", "id": 33, "params": { + "threadId": "thr_123", + "input": [ + { "type": "text", "text": "$skill-creator Add a new skill for triaging flaky CI and include step-by-step usage." } + ] +} } +{ "id": 33, "result": { "turn": { + "id": "turn_457", + "status": "inProgress", + "items": [], + "error": null +} } } +``` + ### Example: Interrupt an active turn You can cancel a running Turn with `turn/interrupt`. @@ -405,6 +426,30 @@ Order of messages: UI guidance for IDEs: surface an approval dialog as soon as the request arrives. The turn will proceed after the server receives a response to the approval request. The terminal `item/completed` notification will be sent with the appropriate status. +## Skills + +Skills are invoked by sending a text input that starts with `$`. The rest of the text is passed to the skill as its input. + +Example: + +``` +$skill-creator Add a new skill for triaging flaky CI and include step-by-step usage. +``` + +Use `skills/list` to fetch the available skills (optionally scoped by `cwd` and/or with `forceReload`). + +```json +{ "method": "skills/list", "id": 25, "params": { + "cwd": "/Users/me/project", + "forceReload": false +} } +{ "id": 25, "result": { + "skills": [ + { "name": "skill-creator", "description": "Create or update a Codex skill" } + ] +} } +``` + ## Auth endpoints The JSON-RPC auth/account surface exposes request/response methods plus server-initiated notifications (no `id`). Use these to determine auth state, start or cancel logins, logout, and inspect ChatGPT rate limits.