docs(skill): show a UI-shaped create in the recording example

The example created its object with a request step, and agents copied it
even where the UI writes the fields the server needs (EspoCRM). It now
fills a form and saves the id from the response the Save click triggers.
A request-step write coverage withholds is recorded through the UI
instead, and Basic credentials are no longer offered as a way around the
UI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Edgar ArakelyanandClaude Opus 5.5 committed 2026-10-25 11:11:06 -07:00
1 parent d2e9b68043
commit 6984068bcb
1 file changed
+28 -19
@@ -81,20 +81,28 @@ shape, with the application's own locators, paths and headers:
"expected_status": [200]
},
{
"step_id": "create-folder-1",
"action": "request",
"step_id": "new-folder-1",
"action": "click",
"timeout_ms": 15000,
"method": "POST",
"path": "/api/folders",
"json": { "title": "Scratch folder 1" },
"headers": [
{
"name": "X-CSRFToken",
"value": { "source": "cookie", "name": "csrftoken" }
}
],
"save": [{ "name": "folder_1", "json_pointer": "/id" }],
"expected_status": [200, 201]
"locator": { "kind": "role", "role": "button", "name": "New folder" }
},
{
"step_id": "folder-title-1",
"action": "fill",
"timeout_ms": 15000,
"locator": { "kind": "css", "selector": "input[name=title]" },
"value": { "source": "literal", "value": "Scratch folder 1" }
},
{
"step_id": "create-folder-1",
"action": "click",
"timeout_ms": 15000,
"locator": { "kind": "role", "role": "button", "name": "Create" },
"save_response": {
"method": "POST",
"path": "/api/folders",
"save": [{ "name": "folder_1", "json_pointer": "/id" }]
}
},
{
"step_id": "read-folder-1",
@@ -127,8 +135,10 @@ client with it. Match `wait_for` locators to exactly one element.
`request` steps instead only when the UI cannot reach the operation (an
API-only resource, or a UI that does not call the JSON API), or when coverage
withholds the UI-shaped write as `unexplained-change` or `contradicted`;
that counts as one of the two re-recordings. If a journey cannot be
scripted, leave the write unserved and report the limitation.
that counts as one of the two re-recordings. A `request` step write that
coverage withholds that way usually lacks fields the UI sends: record it
through the UI instead. If a journey cannot be scripted, leave the write
unserved and report the limitation.
Record two numbered scratch objects per write type,
with varied free text. After each write, and before the next one, read the
object back by id and then its list: create 1, read 1, list, create 2,
@@ -149,10 +159,9 @@ About `request` steps:
base64 of `username:password` and redacted), with an optional `prefix` such as
`"Bearer "` or `"Basic "`. Each credential part is a literal, secret, saved
value, cookie or local storage entry, so a header the frontend builds from a
login token (the username and the token) can be copied too. An API that
takes Basic auth needs no session from the UI. Copy the
headers the application's own requests send (a CSRF header, a bearer
token). Values read from the page are redacted from records made after they
login token (the username and the token) can be copied too. Copy the
headers the application's own requests send (a CSRF header such as
`X-CSRFToken` from the `csrftoken` cookie, a bearer token). Values read from the page are redacted from records made after they
are read, not from the login response that returned them, and values
shorter than 8 characters are not redacted at all.
- `save: [{name, json_pointer, secret}]` keeps a string or number from the