Bundled plugin guides
Skill-workshop-Plugin
Skill Workshop is experimenteel. Het is standaard uitgeschakeld, de vastleggingsheuristieken en beoordelaarsprompts kunnen tussen releases veranderen, en automatische schrijfacties mogen alleen worden gebruikt in vertrouwde werkruimten nadat de uitvoer in pending-modus eerst is beoordeeld.
Skill Workshop is procedureel geheugen voor werkruimte-Skills. Hiermee kan een agent herbruikbare workflows, gebruikerscorrecties, moeizaam gevonden oplossingen en terugkerende valkuilen omzetten in SKILL.md-bestanden onder:
<workspace>/skills/<skill-name>/SKILL.mdDit verschilt van langetermijngeheugen:
- Geheugen slaat feiten, voorkeuren, entiteiten en eerdere context op.
- Skills slaan herbruikbare procedures op die de agent bij toekomstige taken moet volgen.
- Skill Workshop is de brug van een nuttige beurt naar een duurzame werkruimte-Skill, met veiligheidscontroles en optionele goedkeuring.
Skill Workshop is nuttig wanneer de agent een procedure leert, zoals:
- hoe extern verkregen geanimeerde GIF-assets te valideren
- hoe screenshot-assets te vervangen en afmetingen te verifiëren
- hoe een repospecifiek QA-scenario uit te voeren
- hoe een terugkerende providerfout te debuggen
- hoe een verouderde lokale workflownotitie te herstellen
Het is niet bedoeld voor:
- feiten zoals "de gebruiker houdt van blauw"
- breed autobiografisch geheugen
- ruwe transcriptarchivering
- geheimen, referenties of verborgen prompttekst
- eenmalige instructies die zich niet zullen herhalen
Standaardstatus
De meegeleverde plugin is experimenteel en standaard uitgeschakeld, tenzij deze expliciet is ingeschakeld in plugins.entries.skill-workshop.
Het pluginmanifest stelt enabledByDefault: true niet in. De standaardwaarde enabled: true binnen het pluginconfiguratieschema geldt pas nadat de pluginvermelding al is geselecteerd en geladen.
Experimenteel betekent:
- de plugin wordt voldoende ondersteund voor opt-in testen en dogfooding
- voorstelopslag, beoordelaarsdrempels en vastleggingsheuristieken kunnen evolueren
- goedkeuring in pending-status is de aanbevolen startmodus
- automatisch toepassen is bedoeld voor vertrouwde persoonlijke of werkruimte-instellingen, niet voor gedeelde of vijandige omgevingen met veel invoer
Inschakelen
Minimale veilige configuratie:
{ plugins: { entries: { "skill-workshop": { enabled: true, config: { autoCapture: true, approvalPolicy: "pending", reviewMode: "hybrid", }, }, }, },}Met deze configuratie:
- is de tool
skill_workshopbeschikbaar - worden expliciete herbruikbare correcties in de wachtrij gezet als pending-voorstellen
- kunnen beoordelaarspasses op basis van drempels Skill-updates voorstellen
- wordt er geen Skill-bestand geschreven totdat een pending-voorstel wordt toegepast
Gebruik automatische schrijfacties alleen in vertrouwde werkruimten:
{ plugins: { entries: { "skill-workshop": { enabled: true, config: { autoCapture: true, approvalPolicy: "auto", reviewMode: "hybrid", }, }, }, },}approvalPolicy: "auto" gebruikt nog steeds dezelfde scanner en hetzelfde quarantainepad. Het past geen voorstellen toe met kritieke bevindingen.
Configuratie
| Sleutel | Standaard | Bereik / waarden | Betekenis |
|---|---|---|---|
enabled |
true |
boolean | Schakelt de plugin in nadat de pluginvermelding is geladen. |
autoCapture |
true |
boolean | Schakelt vastlegging/beoordeling na de beurt in bij geslaagde agentbeurten. |
approvalPolicy |
"pending" |
"pending", "auto" |
Zet voorstellen in de wachtrij of schrijf veilige voorstellen automatisch. |
reviewMode |
"hybrid" |
"off", "heuristic", "llm", "hybrid" |
Kiest expliciete correctievastlegging, LLM-beoordelaar, beide of geen van beide. |
reviewInterval |
15 |
1..200 |
Voer de beoordelaar uit na zoveel geslaagde beurten. |
reviewMinToolCalls |
8 |
1..500 |
Voer de beoordelaar uit na zoveel waargenomen toolaanroepen. |
reviewTimeoutMs |
45000 |
5000..180000 |
Time-out voor de ingebedde beoordelaarsrun. |
maxPending |
50 |
1..200 |
Maximaal aantal pending-/quarantainevoorstellen dat per werkruimte wordt bewaard. |
maxSkillBytes |
40000 |
1024..200000 |
Maximale grootte van gegenereerd Skill-/ondersteuningsbestand. |
Aanbevolen profielen:
// Conservative: explicit tool use only, no automatic capture.{ autoCapture: false, approvalPolicy: "pending", reviewMode: "off",}// Review-first: capture automatically, but require approval.{ autoCapture: true, approvalPolicy: "pending", reviewMode: "hybrid",}// Trusted automation: write safe proposals immediately.{ autoCapture: true, approvalPolicy: "auto", reviewMode: "hybrid",}// Low-cost: no reviewer LLM call, only explicit correction phrases.{ autoCapture: true, approvalPolicy: "pending", reviewMode: "heuristic",}Vastleggingspaden
Skill Workshop heeft drie vastleggingspaden.
Toolsuggesties
Het model kan skill_workshop direct aanroepen wanneer het een herbruikbare procedure ziet of wanneer de gebruiker vraagt om een Skill op te slaan of bij te werken.
Dit is het meest expliciete pad en werkt zelfs met autoCapture: false.
Heuristische vastlegging
Wanneer autoCapture is ingeschakeld en reviewMode heuristic of hybrid is, scant de plugin geslaagde beurten op expliciete correctiezinnen van gebruikers:
next timefrom now onremember tomake sure toalways ... use/check/verify/record/save/preferprefer ... when/for/instead/usewhen asked
De heuristiek maakt een voorstel op basis van de nieuwste overeenkomende gebruikersinstructie. Deze gebruikt onderwerpaanwijzingen om Skill-namen te kiezen voor veelvoorkomende workflows:
- geanimeerde GIF-taken ->
animated-gif-workflow - screenshot- of assettaken ->
screenshot-asset-workflow - QA- of scenariotaken ->
qa-scenario-workflow - GitHub PR-taken ->
github-pr-workflow - fallback ->
learned-workflows
Heuristische vastlegging is bewust smal. Het is bedoeld voor duidelijke correcties en herhaalbare procesnotities, niet voor algemene transcriptsamenvatting.
LLM-beoordelaar
Wanneer autoCapture is ingeschakeld en reviewMode llm of hybrid is, voert de plugin een compacte ingebedde beoordelaar uit nadat drempels zijn bereikt.
De beoordelaar ontvangt:
- de recente transcripttekst, beperkt tot de laatste 12.000 tekens
- maximaal 12 bestaande werkruimte-Skills
- maximaal 2.000 tekens uit elke bestaande Skill
- instructies uitsluitend in JSON
De beoordelaar heeft geen tools:
disableTools: truetoolsAllow: []disableMessageTool: true
De beoordelaar retourneert óf { "action": "none" } óf één voorstel. Het veld action is create, append of replace - geef de voorkeur aan append/replace wanneer er al een relevante Skill bestaat; gebruik create alleen wanneer geen bestaande Skill past.
Voorbeeld van create:
{ "action": "create", "skillName": "media-asset-qa", "title": "Media Asset QA", "reason": "Reusable animated media acceptance workflow", "description": "Validate externally sourced animated media before product use.", "body": "## Workflow\n\n- Verify true animation.\n- Record attribution.\n- Store a local approved copy.\n- Verify in product UI before final reply."}append voegt section + body toe. replace vervangt oldText door newText in de genoemde Skill.
Levenscyclus van voorstellen
Elke gegenereerde update wordt een voorstel met:
idcreatedAtupdatedAtworkspaceDir- optioneel
agentId - optioneel
sessionId skillNametitlereasonsource:tool,agent_endofreviewerstatuschange- optioneel
scanFindings - optioneel
quarantineReason
Voorstelstatussen:
pending- wacht op goedkeuringapplied- geschreven naar<workspace>/skillsrejected- afgewezen door operator/modelquarantined- geblokkeerd door kritieke scannerbevindingen
Status wordt per werkruimte opgeslagen onder de Gateway-statusmap:
<stateDir>/skill-workshop/<workspace-hash>.jsonWachtende en in quarantaine geplaatste voorstellen worden ontdubbeld op skillnaam en wijzigingspayload. De opslag bewaart de nieuwste wachtende/in quarantaine geplaatste voorstellen tot maximaal maxPending.
Toolreferentie
De Plugin registreert één agenttool:
skill_workshopstatus
Tel voorstellen per status voor de actieve werkruimte.
{ "action": "status" }Resultaatvorm:
{ "workspaceDir": "/path/to/workspace", "pending": 1, "quarantined": 0, "applied": 3, "rejected": 0}list_pending
Geef wachtende voorstellen weer.
{ "action": "list_pending" }Om een andere status weer te geven:
{ "action": "list_pending", "status": "applied" }Geldige status-waarden:
pendingappliedrejectedquarantined
list_quarantine
Geef in quarantaine geplaatste voorstellen weer.
{ "action": "list_quarantine" }Gebruik dit wanneer automatische vastlegging niets lijkt te doen en de logs
skill-workshop: quarantined <skill> vermelden.
inspect
Haal een voorstel op op id.
{ "action": "inspect", "id": "proposal-id"}suggest
Maak een voorstel. Met approvalPolicy: "pending" (standaard) wordt dit in de wachtrij gezet in plaats van geschreven.
{ "action": "suggest", "skillName": "animated-gif-workflow", "title": "Animated GIF Workflow", "reason": "User established reusable GIF validation rules.", "description": "Validate animated GIF assets before using them.", "body": "## Workflow\n\n- Verify the URL resolves to image/gif.\n- Confirm it has multiple frames.\n- Record attribution and license.\n- Avoid hotlinking when a local asset is needed."}Onmiddellijk schrijven aanvragen in automatische modus (apply: true)
{"action": "suggest","apply": true,"skillName": "animated-gif-workflow","description": "Validate animated GIF assets before using them.","body": "## Workflow\n\n- Verify true animation.\n- Record attribution."}Met approvalPolicy: "pending" zet apply: true het voorstel nog steeds in de wachtrij. Beoordeel het en gebruik daarna
de actie apply na goedkeuring.
Wachtend afdwingen onder automatisch beleid (apply: false)
{"action": "suggest","apply": false,"skillName": "screenshot-asset-workflow","description": "Screenshot replacement workflow.","body": "## Workflow\n\n- Verify dimensions.\n- Optimize the PNG.\n- Run the relevant gate."}Toevoegen aan een benoemde sectie
{"action": "suggest","skillName": "qa-scenario-workflow","section": "Workflow","description": "QA scenario workflow.","body": "- For media QA, verify generated assets render and pass final assertions."}Exacte tekst vervangen
{"action": "suggest","skillName": "github-pr-workflow","oldText": "- Check the PR.","newText": "- Check unresolved review threads, CI status, linked issues, and changed files before deciding."}apply
Pas een wachtend voorstel toe.
Met approvalPolicy: "pending" vraagt deze actie om goedkeuring van de operator voordat de
werkruimte-skill wordt geschreven.
{ "action": "apply", "id": "proposal-id"}apply weigert in quarantaine geplaatste voorstellen:
quarantined proposal cannot be appliedreject
Markeer een voorstel als afgewezen.
{ "action": "reject", "id": "proposal-id"}write_support_file
Schrijf een ondersteunend bestand binnen een bestaande of voorgestelde skillmap.
Toegestane ondersteunende mappen op het hoogste niveau:
references/templates/scripts/assets/
Voorbeeld:
{ "action": "write_support_file", "skillName": "release-workflow", "relativePath": "references/checklist.md", "body": "# Release Checklist\n\n- Run release docs.\n- Verify changelog.\n"}Supportbestanden zijn werkruimte-gebonden, worden op pad gecontroleerd, zijn door
maxSkillBytes begrensd in bytes, worden gescand en atomair geschreven.
Skill-schrijfacties
Skill Workshop schrijft alleen onder:
<workspace>/skills/<normalized-skill-name>/Skillnamen worden genormaliseerd:
- naar kleine letters omgezet
- reeksen die niet
[a-z0-9_-]zijn, worden- - niet-alfanumerieke tekens aan het begin/einde worden verwijderd
- maximale lengte is 80 tekens
- uiteindelijke naam moet overeenkomen met
[a-z0-9][a-z0-9_-]{1,79}
Voor create:
- als de skill niet bestaat, schrijft Skill Workshop een nieuwe
SKILL.md - als deze al bestaat, voegt Skill Workshop de body toe aan
## Workflow
Voor append:
- als de skill bestaat, voegt Skill Workshop toe aan de gevraagde sectie
- als deze niet bestaat, maakt Skill Workshop een minimale skill en voegt daarna toe
Voor replace:
- de skill moet al bestaan
oldTextmoet exact aanwezig zijn- alleen de eerste exacte overeenkomst wordt vervangen
Alle schrijfacciones zijn atomair en verversen de in-memory skills-snapshot onmiddellijk, zodat de nieuwe of bijgewerkte skill zichtbaar kan worden zonder een Gateway-herstart.
Veiligheidsmodel
Skill Workshop heeft een veiligheidsscanner voor gegenereerde SKILL.md-inhoud en supportbestanden.
Kritieke bevindingen plaatsen voorstellen in quarantaine:
| Regel-id | Blokkeert inhoud die... |
|---|---|
prompt-injection-ignore-instructions |
de agent vertelt eerdere/hogere instructies te negeren |
prompt-injection-system |
verwijst naar systeemprompts, ontwikkelaarsberichten of verborgen instructies |
prompt-injection-tool |
aanmoedigt om tooltoestemming/-goedkeuring te omzeilen |
shell-pipe-to-shell |
curl/wget bevat die naar sh, bash of zsh worden gepiped |
secret-exfiltration |
env-/process-env-gegevens via het netwerk lijkt te versturen |
Waarschuwingsbevindingen blijven behouden maar blokkeren op zichzelf niet:
| Regel-id | Waarschuwt bij... |
|---|---|
destructive-delete |
brede opdrachten in rm -rf-stijl |
unsafe-permissions |
permissiegebruik in chmod 777-stijl |
Voorstellen in quarantaine:
- behouden
scanFindings - behouden
quarantineReason - verschijnen in
list_quarantine - kunnen niet via
applyworden toegepast
Om te herstellen van een voorstel in quarantaine, maak je een nieuw veilig voorstel waarbij de onveilige inhoud is verwijderd. Bewerk de store-JSON niet handmatig.
Promptrichtlijnen
Wanneer ingeschakeld, injecteert Skill Workshop een korte promptsectie die de agent vertelt
skill_workshop te gebruiken voor duurzame procedurele herinnering.
De richtlijn benadrukt:
- procedures, geen feiten/voorkeuren
- correcties van gebruikers
- niet voor de hand liggende succesvolle procedures
- terugkerende valkuilen
- reparatie van verouderde/dunne/verkeerde skills via append/replace
- herbruikbare procedure opslaan na lange tool-lussen of moeilijke fixes
- korte imperatieve skilltekst
- geen transcriptdumps
De schrijfmodustekst verandert met approvalPolicy:
- pending-modus: suggesties in de wachtrij zetten; gebruik
applyna expliciete goedkeuring - auto-modus: veilige werkruimte-skillupdates toepassen, tenzij
apply: falseze in plaats daarvan in de wachtrij zet
Kosten en runtimegedrag
Heuristische vastlegging roept geen model aan.
LLM-review gebruikt een ingebedde run op het actieve/standaard agentmodel. Deze is drempelgebaseerd, zodat hij standaard niet bij elke beurt draait.
De reviewer:
- gebruikt dezelfde geconfigureerde provider-/modelcontext wanneer beschikbaar
- valt terug op runtime-agentstandaarden
- heeft
reviewTimeoutMs - gebruikt lichte bootstrapcontext
- heeft geen tools
- schrijft niets rechtstreeks
- kan alleen een voorstel uitgeven dat via de normale scanner- en goedkeurings-/quarantaineflow loopt
Als de reviewer faalt, een time-out krijgt of ongeldige JSON retourneert, logt de plugin een waarschuwings-/debugbericht en slaat die reviewpass over.
Gebruikspatronen
Gebruik Skill Workshop wanneer de gebruiker zegt:
- "volgende keer, doe X"
- "voortaan, geef de voorkeur aan Y"
- "zorg dat je Z verifieert"
- "sla dit op als workflow"
- "dit duurde even; onthoud het proces"
- "werk de lokale skill hiervoor bij"
Goede skilltekst:
## Workflow - Verify the GIF URL resolves to `image/gif`.- Confirm the file has multiple frames.- Record source URL, license, and attribution.- Store a local copy when the asset will ship with the product.- Verify the local asset renders in the target UI before final reply.Slechte skilltekst:
The user asked about a GIF and I searched two websites. Then one was blocked byCloudflare. The final answer said to check attribution.Redenen waarom de slechte versie niet moet worden opgeslagen:
- transcriptvormig
- niet imperatief
- bevat ruisende eenmalige details
- vertelt de volgende agent niet wat te doen
Debuggen
Controleer of de plugin is geladen:
openclaw plugins list --enabledControleer voorstelcounts vanuit een agent-/toolcontext:
{ "action": "status" }Inspecteer wachtende voorstellen:
{ "action": "list_pending" }Inspecteer voorstellen in quarantaine:
{ "action": "list_quarantine" }Veelvoorkomende symptomen:
| Symptoom | Waarschijnlijke oorzaak | Controle |
|---|---|---|
| Tool is niet beschikbaar | Plugin-entry is niet ingeschakeld | plugins.entries.skill-workshop.enabled en openclaw plugins list |
| Er verschijnt geen automatisch voorstel | autoCapture: false, reviewMode: "off" of drempels niet gehaald |
Configuratie, voorstelstatus, Gateway-logs |
| Heuristiek heeft niets vastgelegd | Gebruikersformulering kwam niet overeen met correctiepatronen | Gebruik expliciet skill_workshop.suggest of schakel LLM-reviewer in |
| Reviewer heeft geen voorstel gemaakt | Reviewer retourneerde none, ongeldige JSON of kreeg een time-out |
Gateway-logs, reviewTimeoutMs, drempels |
| Voorstel wordt niet toegepast | approvalPolicy: "pending" |
list_pending, daarna apply |
| Voorstel verdween uit pending | Dubbel voorstel hergebruikt, pruning door max pending, of toegepast/geweigerd/in quarantaine gezet | status, list_pending met statusfilters, list_quarantine |
| Skillbestand bestaat maar model mist het | Skills-snapshot is niet ververst of skill-gating sluit het uit | openclaw skills-status en geschiktheid van werkruimte-skill |
Relevante logs:
skill-workshop: queued <skill>skill-workshop: applied <skill>skill-workshop: quarantined <skill>skill-workshop: heuristic capture skipped: ...skill-workshop: reviewer skipped: ...skill-workshop: reviewer found no update
QA-scenario's
Repo-ondersteunde QA-scenario's:
qa/scenarios/plugins/skill-workshop-animated-gif-autocreate.mdqa/scenarios/plugins/skill-workshop-pending-approval.mdqa/scenarios/plugins/skill-workshop-reviewer-autonomous.md
Voer de deterministische dekking uit:
pnpm openclaw qa suite \ --scenario skill-workshop-animated-gif-autocreate \ --scenario skill-workshop-pending-approval \ --concurrency 1Voer reviewerdekking uit:
pnpm openclaw qa suite \ --scenario skill-workshop-reviewer-autonomous \ --concurrency 1Het reviewerscenario is bewust apart, omdat het
reviewMode: "llm" inschakelt en de ingebedde reviewerpass uitvoert.
Wanneer auto apply niet moet worden ingeschakeld
Vermijd approvalPolicy: "auto" wanneer:
- de werkruimte gevoelige procedures bevat
- de agent aan niet-vertrouwde input werkt
- skills binnen een breed team worden gedeeld
- je prompts of scannerregels nog aan het afstemmen bent
- het model vaak vijandige web-/e-mailinhoud verwerkt
Gebruik eerst pending-modus. Schakel pas over naar auto-modus nadat je het soort skills hebt beoordeeld dat de agent in die werkruimte voorstelt.