feat(skills): repair used skills in turn (#121522)

* feat(skills): repair used skills in turn
* fix(skills): bind repair to used skill receipt
* fix(skills): preserve explicit repair review

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
This commit is contained in:
Ayaan Zaidi
2026-08-10 14:42:41 +05:30
committed by GitHub
parent 6f917dfabb
commit 2d627a0c25
13 changed files with 276 additions and 41 deletions
+15
View File
@@ -19,6 +19,21 @@ them through the normal scanner-gated Workshop service without asking for
approval. Choose `propose` to review every capture before it becomes active, or
`off` to disable autonomous capture.
## Immediate repair
When the foreground agent discovers that a skill it used is wrong or incomplete,
it reads the current live skill and drafts a targeted patch through Skill
Workshop in the same turn. A runtime usage receipt prevents foreground repair of
skills that the run did not use. Autonomous mode controls the outcome: `off`
disables the repair, `propose` leaves it pending for explicit review and apply,
and `auto` scans and applies it immediately. The repair still goes through
proposal storage, hash binding, the security scanner, and rollback capture.
Immediate repair changes the live skill for new sessions. It does not rewrite the
skill snapshot already loaded into the running session. The delayed experience
review remains a fallback for durable learning that the foreground agent did not
repair itself.
## Experience review
Every autonomous capture is authored by a model reviewing real evidence. There
+10 -2
View File
@@ -110,6 +110,13 @@ Update an existing workspace skill:
Update trip-planning to also check seat maps before booking.
```
If a skill used in the current turn proves wrong or incomplete, the agent reads
the live skill and creates a targeted patch proposal. A runtime receipt limits
this flow to skills used in that run. Autonomous mode `off` disables repair,
`propose` leaves the patch pending until explicitly applied, and `auto` scans and
applies it immediately. The repaired skill is loaded by new sessions; the
running session keeps its original skill snapshot.
Iterate on a pending proposal:
```text
@@ -235,14 +242,15 @@ and paths outside the standard support folders.
## Agent tool
The model uses `skill_workshop` with one required `action`:
`create | update | revise | list | inspect | evaluate | apply | reject | quarantine`.
`create | read | patch | update | revise | list | inspect | evaluate | apply | reject | quarantine`.
Other parameters apply depending on the action:
| Parameter | Used by | Notes |
| -------------------------- | ---------------------------------------------------------------- | -------------------------------------------------------------------- |
| `name` | `create`, `inspect`, `revise` | Required for `create`; resolves a pending proposal by name otherwise |
| `description` | `create`, `update`, `revise` | Max 160 bytes |
| `skill_name` | `update` | Existing skill name or key |
| `skill_name` | `read`, `patch`, `update` | Existing skill name or key |
| `old_string`, `new_string` | `patch` | Exact current text and its replacement; read the skill first |
| `proposal_content` | `create`, `update`, `revise` | Required for create/update; omit on revise to preserve the body |
| `support_files` | `create`, `update`, `revise` | Array of `{ path, content }` |
| `goal`, `evidence` | `create`, `update`, `revise` | Free-text context |